зеркало из https://github.com/github/ruby.git
Expanded f_ceil
This commit is contained in:
Родитель
ffe4a6ebf9
Коммит
f9a0492b76
|
@ -1772,6 +1772,7 @@ VALUE rb_int_odd_p(VALUE num);
|
||||||
int rb_int_positive_p(VALUE num);
|
int rb_int_positive_p(VALUE num);
|
||||||
int rb_int_negative_p(VALUE num);
|
int rb_int_negative_p(VALUE num);
|
||||||
VALUE rb_num_pow(VALUE x, VALUE y);
|
VALUE rb_num_pow(VALUE x, VALUE y);
|
||||||
|
VALUE rb_float_ceil(VALUE num, int ndigits);
|
||||||
|
|
||||||
static inline VALUE
|
static inline VALUE
|
||||||
rb_num_compare_with_zero(VALUE num, ID mid)
|
rb_num_compare_with_zero(VALUE num, ID mid)
|
||||||
|
|
|
@ -2002,12 +2002,19 @@ flo_floor(int argc, VALUE *argv, VALUE num)
|
||||||
static VALUE
|
static VALUE
|
||||||
flo_ceil(int argc, VALUE *argv, VALUE num)
|
flo_ceil(int argc, VALUE *argv, VALUE num)
|
||||||
{
|
{
|
||||||
double number, f;
|
|
||||||
int ndigits = 0;
|
int ndigits = 0;
|
||||||
|
|
||||||
if (rb_check_arity(argc, 0, 1)) {
|
if (rb_check_arity(argc, 0, 1)) {
|
||||||
ndigits = NUM2INT(argv[0]);
|
ndigits = NUM2INT(argv[0]);
|
||||||
}
|
}
|
||||||
|
return rb_float_ceil(num, ndigits);
|
||||||
|
}
|
||||||
|
|
||||||
|
VALUE
|
||||||
|
rb_float_ceil(VALUE num, int ndigits)
|
||||||
|
{
|
||||||
|
double number, f;
|
||||||
|
|
||||||
number = RFLOAT_VALUE(num);
|
number = RFLOAT_VALUE(num);
|
||||||
if (number == 0.0) {
|
if (number == 0.0) {
|
||||||
return ndigits > 0 ? DBL2NUM(number) : INT2FIX(0);
|
return ndigits > 0 ? DBL2NUM(number) : INT2FIX(0);
|
||||||
|
|
18
rational.c
18
rational.c
|
@ -43,13 +43,6 @@ static ID id_abs, id_idiv, id_integer_p,
|
||||||
|
|
||||||
static VALUE nurat_to_f(VALUE self);
|
static VALUE nurat_to_f(VALUE self);
|
||||||
|
|
||||||
#define fun1(n) \
|
|
||||||
inline static VALUE \
|
|
||||||
f_##n(VALUE x)\
|
|
||||||
{\
|
|
||||||
return rb_funcall(x, id_##n, 0);\
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static VALUE
|
inline static VALUE
|
||||||
f_add(VALUE x, VALUE y)
|
f_add(VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
|
@ -1597,7 +1590,16 @@ nurat_to_r(VALUE self)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define id_ceil rb_intern("ceil")
|
#define id_ceil rb_intern("ceil")
|
||||||
#define f_ceil(x) rb_funcall((x), id_ceil, 0)
|
static VALUE
|
||||||
|
f_ceil(VALUE x)
|
||||||
|
{
|
||||||
|
if (RB_INTEGER_TYPE_P(x))
|
||||||
|
return x;
|
||||||
|
if (RB_FLOAT_TYPE_P(x))
|
||||||
|
return rb_float_ceil(x, 0);
|
||||||
|
|
||||||
|
return rb_funcall(x, id_ceil, 0);
|
||||||
|
}
|
||||||
|
|
||||||
#define id_quo rb_intern("quo")
|
#define id_quo rb_intern("quo")
|
||||||
#define f_quo(x,y) rb_funcall((x), id_quo, 1, (y))
|
#define f_quo(x,y) rb_funcall((x), id_quo, 1, (y))
|
||||||
|
|
Загрузка…
Ссылка в новой задаче