mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.
a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp> in [ruby-dev:36102]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
80abde2c89
commit
31b6ea65bb
15 changed files with 113 additions and 107 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
Sat Sep 6 06:05:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.
|
||||||
|
a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp>
|
||||||
|
in [ruby-dev:36102].
|
||||||
|
|
||||||
Sat Sep 6 03:18:17 2008 Tanaka Akira <akr@fsij.org>
|
Sat Sep 6 03:18:17 2008 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* transcode.c (allocate_converted_string): add arguments for a buffer
|
* transcode.c (allocate_converted_string): add arguments for a buffer
|
||||||
|
|
16
bignum.c
16
bignum.c
|
@ -1237,7 +1237,7 @@ rb_big2dbl(VALUE x)
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_big_to_f(VALUE x)
|
rb_big_to_f(VALUE x)
|
||||||
{
|
{
|
||||||
return DOUBLE2NUM(rb_big2dbl(x));
|
return DBL2NUM(rb_big2dbl(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1499,7 +1499,7 @@ rb_big_plus(VALUE x, VALUE y)
|
||||||
return bignorm(bigadd(x, y, 1));
|
return bignorm(bigadd(x, y, 1));
|
||||||
|
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
|
return DBL2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '+');
|
return rb_num_coerce_bin(x, y, '+');
|
||||||
|
@ -1524,7 +1524,7 @@ rb_big_minus(VALUE x, VALUE y)
|
||||||
return bignorm(bigadd(x, y, 0));
|
return bignorm(bigadd(x, y, 0));
|
||||||
|
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
|
return DBL2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '-');
|
return rb_num_coerce_bin(x, y, '-');
|
||||||
|
@ -1588,7 +1588,7 @@ rb_big_mul0(VALUE x, VALUE y)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
|
return DBL2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '*');
|
return rb_num_coerce_bin(x, y, '*');
|
||||||
|
@ -1817,7 +1817,7 @@ rb_big_divide(VALUE x, VALUE y, ID op)
|
||||||
{
|
{
|
||||||
double div = rb_big2dbl(x) / RFLOAT_VALUE(y);
|
double div = rb_big2dbl(x) / RFLOAT_VALUE(y);
|
||||||
if (op == '/') {
|
if (op == '/') {
|
||||||
return DOUBLE2NUM(div);
|
return DBL2NUM(div);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return rb_dbl2big(div);
|
return rb_dbl2big(div);
|
||||||
|
@ -2010,7 +2010,7 @@ rb_big_fdiv(VALUE x, VALUE y)
|
||||||
if (ey) y = big_shift(y, ey);
|
if (ey) y = big_shift(y, ey);
|
||||||
bignum:
|
bignum:
|
||||||
bigdivrem(x, y, &z, 0);
|
bigdivrem(x, y, &z, 0);
|
||||||
return DOUBLE2NUM(ldexp(big2dbl(z), ex - ey));
|
return DBL2NUM(ldexp(big2dbl(z), ex - ey));
|
||||||
}
|
}
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
if (isnan(RFLOAT_VALUE(y))) return y;
|
if (isnan(RFLOAT_VALUE(y))) return y;
|
||||||
|
@ -2035,7 +2035,7 @@ rb_big_fdiv(VALUE x, VALUE y)
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
|
return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
|
||||||
}
|
}
|
||||||
return DOUBLE2NUM(dx / dy);
|
return DBL2NUM(dx / dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -2148,7 +2148,7 @@ rb_big_pow(VALUE x, VALUE y)
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, rb_intern("**"));
|
return rb_num_coerce_bin(x, y, rb_intern("**"));
|
||||||
}
|
}
|
||||||
return DOUBLE2NUM(pow(rb_big2dbl(x), d));
|
return DBL2NUM(pow(rb_big2dbl(x), d));
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
8
gc.c
8
gc.c
|
@ -2696,14 +2696,14 @@ gc_profile_record_get(void)
|
||||||
|
|
||||||
for (i =0; i < objspace->profile.count; i++) {
|
for (i =0; i < objspace->profile.count; i++) {
|
||||||
prof = rb_hash_new();
|
prof = rb_hash_new();
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("GC_TIME")), DOUBLE2NUM(objspace->profile.record[i].gc_time));
|
rb_hash_aset(prof, ID2SYM(rb_intern("GC_TIME")), DBL2NUM(objspace->profile.record[i].gc_time));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("GC_INVOKE_TIME")), DOUBLE2NUM(objspace->profile.record[i].gc_invoke_time));
|
rb_hash_aset(prof, ID2SYM(rb_intern("GC_INVOKE_TIME")), DBL2NUM(objspace->profile.record[i].gc_invoke_time));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SIZE")), rb_uint2inum(objspace->profile.record[i].heap_use_size));
|
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SIZE")), rb_uint2inum(objspace->profile.record[i].heap_use_size));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_TOTAL_SIZE")), rb_uint2inum(objspace->profile.record[i].heap_total_size));
|
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_TOTAL_SIZE")), rb_uint2inum(objspace->profile.record[i].heap_total_size));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_TOTAL_OBJECTS")), rb_uint2inum(objspace->profile.record[i].heap_total_objects));
|
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_TOTAL_OBJECTS")), rb_uint2inum(objspace->profile.record[i].heap_total_objects));
|
||||||
#if GC_PROFILE_MORE_DETAIL
|
#if GC_PROFILE_MORE_DETAIL
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("GC_MARK_TIME")), DOUBLE2NUM(objspace->profile.record[i].gc_mark_time));
|
rb_hash_aset(prof, ID2SYM(rb_intern("GC_MARK_TIME")), DBL2NUM(objspace->profile.record[i].gc_mark_time));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("GC_SWEEP_TIME")), DOUBLE2NUM(objspace->profile.record[i].gc_sweep_time));
|
rb_hash_aset(prof, ID2SYM(rb_intern("GC_SWEEP_TIME")), DBL2NUM(objspace->profile.record[i].gc_sweep_time));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("ALLOCATE_INCREASE")), rb_uint2inum(objspace->profile.record[i].allocate_increase));
|
rb_hash_aset(prof, ID2SYM(rb_intern("ALLOCATE_INCREASE")), rb_uint2inum(objspace->profile.record[i].allocate_increase));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("ALLOCATE_LIMIT")), rb_uint2inum(objspace->profile.record[i].allocate_limit));
|
rb_hash_aset(prof, ID2SYM(rb_intern("ALLOCATE_LIMIT")), rb_uint2inum(objspace->profile.record[i].allocate_limit));
|
||||||
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SLOTS")), rb_uint2inum(objspace->profile.record[i].heap_use_slots));
|
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SLOTS")), rb_uint2inum(objspace->profile.record[i].heap_use_slots));
|
||||||
|
|
|
@ -568,7 +568,7 @@ struct RFloat {
|
||||||
double float_value;
|
double float_value;
|
||||||
};
|
};
|
||||||
#define RFLOAT_VALUE(v) (RFLOAT(v)->float_value)
|
#define RFLOAT_VALUE(v) (RFLOAT(v)->float_value)
|
||||||
#define DOUBLE2NUM(dbl) rb_float_new(dbl)
|
#define DBL2NUM(dbl) rb_float_new(dbl)
|
||||||
|
|
||||||
#define ELTS_SHARED FL_USER2
|
#define ELTS_SHARED FL_USER2
|
||||||
|
|
||||||
|
|
|
@ -1319,7 +1319,7 @@ opt_plus
|
||||||
else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
|
else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
|
||||||
HEAP_CLASS_OF(obj) == rb_cFloat &&
|
HEAP_CLASS_OF(obj) == rb_cFloat &&
|
||||||
BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
|
BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
|
||||||
val = DOUBLE2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj));
|
val = DBL2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1420,7 +1420,7 @@ opt_mult
|
||||||
else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
|
else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
|
||||||
HEAP_CLASS_OF(obj) == rb_cFloat &&
|
HEAP_CLASS_OF(obj) == rb_cFloat &&
|
||||||
BASIC_OP_UNREDEFINED_P(BOP_MULT)) {
|
BASIC_OP_UNREDEFINED_P(BOP_MULT)) {
|
||||||
val = DOUBLE2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj));
|
val = DBL2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
|
@ -1484,7 +1484,7 @@ opt_div
|
||||||
else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
|
else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
|
||||||
HEAP_CLASS_OF(obj) == rb_cFloat &&
|
HEAP_CLASS_OF(obj) == rb_cFloat &&
|
||||||
BASIC_OP_UNREDEFINED_P(BOP_DIV)) {
|
BASIC_OP_UNREDEFINED_P(BOP_DIV)) {
|
||||||
val = DOUBLE2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj));
|
val = DBL2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
|
@ -1564,7 +1564,7 @@ opt_mod
|
||||||
mod += y;
|
mod += y;
|
||||||
div -= 1.0;
|
div -= 1.0;
|
||||||
}
|
}
|
||||||
val = DOUBLE2NUM(mod);
|
val = DBL2NUM(mod);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
goto INSN_LABEL(normal_dispatch);
|
goto INSN_LABEL(normal_dispatch);
|
||||||
|
|
|
@ -1306,7 +1306,7 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod)
|
||||||
d = strtod(ptr, &e);
|
d = strtod(ptr, &e);
|
||||||
d = load_mantissa(d, e, RSTRING_LEN(str) - (e - ptr));
|
d = load_mantissa(d, e, RSTRING_LEN(str) - (e - ptr));
|
||||||
}
|
}
|
||||||
v = DOUBLE2NUM(d);
|
v = DBL2NUM(d);
|
||||||
v = r_entry(v, arg);
|
v = r_entry(v, arg);
|
||||||
v = r_leave(v, arg);
|
v = r_leave(v, arg);
|
||||||
}
|
}
|
||||||
|
|
60
math.c
60
math.c
|
@ -85,7 +85,7 @@ VALUE
|
||||||
math_atan2(VALUE obj, VALUE y, VALUE x)
|
math_atan2(VALUE obj, VALUE y, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float2(y, x);
|
Need_Float2(y, x);
|
||||||
return DOUBLE2NUM(atan2(RFLOAT_VALUE(y), RFLOAT_VALUE(x)));
|
return DBL2NUM(atan2(RFLOAT_VALUE(y), RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ VALUE
|
||||||
math_cos(VALUE obj, VALUE x)
|
math_cos(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(cos(RFLOAT_VALUE(x)));
|
return DBL2NUM(cos(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -117,7 +117,7 @@ math_sin(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
|
|
||||||
return DOUBLE2NUM(sin(RFLOAT_VALUE(x)));
|
return DBL2NUM(sin(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ math_tan(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
|
|
||||||
return DOUBLE2NUM(tan(RFLOAT_VALUE(x)));
|
return DBL2NUM(tan(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -152,7 +152,7 @@ math_acos(VALUE obj, VALUE x)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
d = acos(RFLOAT_VALUE(x));
|
d = acos(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "acos");
|
domain_check(d, "acos");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -171,7 +171,7 @@ math_asin(VALUE obj, VALUE x)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
d = asin(RFLOAT_VALUE(x));
|
d = asin(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "asin");
|
domain_check(d, "asin");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -185,7 +185,7 @@ static VALUE
|
||||||
math_atan(VALUE obj, VALUE x)
|
math_atan(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(atan(RFLOAT_VALUE(x)));
|
return DBL2NUM(atan(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef HAVE_COSH
|
#ifndef HAVE_COSH
|
||||||
|
@ -208,7 +208,7 @@ math_cosh(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
|
|
||||||
return DOUBLE2NUM(cosh(RFLOAT_VALUE(x)));
|
return DBL2NUM(cosh(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef HAVE_SINH
|
#ifndef HAVE_SINH
|
||||||
|
@ -231,7 +231,7 @@ VALUE
|
||||||
math_sinh(VALUE obj, VALUE x)
|
math_sinh(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(sinh(RFLOAT_VALUE(x)));
|
return DBL2NUM(sinh(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef HAVE_TANH
|
#ifndef HAVE_TANH
|
||||||
|
@ -254,7 +254,7 @@ static VALUE
|
||||||
math_tanh(VALUE obj, VALUE x)
|
math_tanh(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(tanh(RFLOAT_VALUE(x)));
|
return DBL2NUM(tanh(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -273,7 +273,7 @@ math_acosh(VALUE obj, VALUE x)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
d = acosh(RFLOAT_VALUE(x));
|
d = acosh(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "acosh");
|
domain_check(d, "acosh");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -287,7 +287,7 @@ static VALUE
|
||||||
math_asinh(VALUE obj, VALUE x)
|
math_asinh(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(asinh(RFLOAT_VALUE(x)));
|
return DBL2NUM(asinh(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -307,7 +307,7 @@ math_atanh(VALUE obj, VALUE x)
|
||||||
d = atanh(RFLOAT_VALUE(x));
|
d = atanh(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "atanh");
|
domain_check(d, "atanh");
|
||||||
infinity_check(x, d, "atanh");
|
infinity_check(x, d, "atanh");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -321,7 +321,7 @@ VALUE
|
||||||
math_exp(VALUE obj, VALUE x)
|
math_exp(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(exp(RFLOAT_VALUE(x)));
|
return DBL2NUM(exp(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined __CYGWIN__
|
#if defined __CYGWIN__
|
||||||
|
@ -359,7 +359,7 @@ math_log(int argc, VALUE *argv)
|
||||||
}
|
}
|
||||||
domain_check(d, "log");
|
domain_check(d, "log");
|
||||||
infinity_check(x, d, "log");
|
infinity_check(x, d, "log");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef log2
|
#ifndef log2
|
||||||
|
@ -391,7 +391,7 @@ math_log2(VALUE obj, VALUE x)
|
||||||
d = log2(RFLOAT_VALUE(x));
|
d = log2(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "log2");
|
domain_check(d, "log2");
|
||||||
infinity_check(x, d, "log2");
|
infinity_check(x, d, "log2");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -411,7 +411,7 @@ math_log10(VALUE obj, VALUE x)
|
||||||
d = log10(RFLOAT_VALUE(x));
|
d = log10(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "log10");
|
domain_check(d, "log10");
|
||||||
infinity_check(x, d, "log10");
|
infinity_check(x, d, "log10");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -447,7 +447,7 @@ math_sqrt(VALUE obj, VALUE x)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
d = sqrt(RFLOAT_VALUE(x));
|
d = sqrt(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "sqrt");
|
domain_check(d, "sqrt");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -486,7 +486,7 @@ static VALUE
|
||||||
math_cbrt(VALUE obj, VALUE x)
|
math_cbrt(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(cbrt(RFLOAT_VALUE(x)));
|
return DBL2NUM(cbrt(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -510,7 +510,7 @@ math_frexp(VALUE obj, VALUE x)
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
|
|
||||||
d = frexp(RFLOAT_VALUE(x), &exp);
|
d = frexp(RFLOAT_VALUE(x), &exp);
|
||||||
return rb_assoc_new(DOUBLE2NUM(d), INT2NUM(exp));
|
return rb_assoc_new(DBL2NUM(d), INT2NUM(exp));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -527,7 +527,7 @@ static VALUE
|
||||||
math_ldexp(VALUE obj, VALUE x, VALUE n)
|
math_ldexp(VALUE obj, VALUE x, VALUE n)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(ldexp(RFLOAT_VALUE(x), NUM2INT(n)));
|
return DBL2NUM(ldexp(RFLOAT_VALUE(x), NUM2INT(n)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -544,7 +544,7 @@ VALUE
|
||||||
math_hypot(VALUE obj, VALUE x, VALUE y)
|
math_hypot(VALUE obj, VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
Need_Float2(x, y);
|
Need_Float2(x, y);
|
||||||
return DOUBLE2NUM(hypot(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
|
return DBL2NUM(hypot(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -558,7 +558,7 @@ static VALUE
|
||||||
math_erf(VALUE obj, VALUE x)
|
math_erf(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(erf(RFLOAT_VALUE(x)));
|
return DBL2NUM(erf(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -572,7 +572,7 @@ static VALUE
|
||||||
math_erfc(VALUE obj, VALUE x)
|
math_erfc(VALUE obj, VALUE x)
|
||||||
{
|
{
|
||||||
Need_Float(x);
|
Need_Float(x);
|
||||||
return DOUBLE2NUM(erfc(RFLOAT_VALUE(x)));
|
return DBL2NUM(erfc(RFLOAT_VALUE(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -624,7 +624,7 @@ math_gamma(VALUE obj, VALUE x)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
d = tgamma(RFLOAT_VALUE(x));
|
d = tgamma(RFLOAT_VALUE(x));
|
||||||
domain_check(d, "gamma");
|
domain_check(d, "gamma");
|
||||||
return DOUBLE2NUM(d);
|
return DBL2NUM(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -649,7 +649,7 @@ math_lgamma(VALUE obj, VALUE x)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
d = lgamma_r(RFLOAT_VALUE(x), &sign);
|
d = lgamma_r(RFLOAT_VALUE(x), &sign);
|
||||||
domain_check(d, "lgamma");
|
domain_check(d, "lgamma");
|
||||||
v = DOUBLE2NUM(d);
|
v = DBL2NUM(d);
|
||||||
return rb_assoc_new(v, INT2FIX(sign));
|
return rb_assoc_new(v, INT2FIX(sign));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -667,15 +667,15 @@ Init_Math(void)
|
||||||
rb_mMath = rb_define_module("Math");
|
rb_mMath = rb_define_module("Math");
|
||||||
|
|
||||||
#ifdef M_PI
|
#ifdef M_PI
|
||||||
rb_define_const(rb_mMath, "PI", DOUBLE2NUM(M_PI));
|
rb_define_const(rb_mMath, "PI", DBL2NUM(M_PI));
|
||||||
#else
|
#else
|
||||||
rb_define_const(rb_mMath, "PI", DOUBLE2NUM(atan(1.0)*4.0));
|
rb_define_const(rb_mMath, "PI", DBL2NUM(atan(1.0)*4.0));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef M_E
|
#ifdef M_E
|
||||||
rb_define_const(rb_mMath, "E", DOUBLE2NUM(M_E));
|
rb_define_const(rb_mMath, "E", DBL2NUM(M_E));
|
||||||
#else
|
#else
|
||||||
rb_define_const(rb_mMath, "E", DOUBLE2NUM(exp(1.0)));
|
rb_define_const(rb_mMath, "E", DBL2NUM(exp(1.0)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rb_define_module_function(rb_mMath, "atan2", math_atan2, 2);
|
rb_define_module_function(rb_mMath, "atan2", math_atan2, 2);
|
||||||
|
|
78
numeric.c
78
numeric.c
|
@ -562,7 +562,7 @@ flo_coerce(VALUE x, VALUE y)
|
||||||
static VALUE
|
static VALUE
|
||||||
flo_uminus(VALUE flt)
|
flo_uminus(VALUE flt)
|
||||||
{
|
{
|
||||||
return DOUBLE2NUM(-RFLOAT_VALUE(flt));
|
return DBL2NUM(-RFLOAT_VALUE(flt));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -578,11 +578,11 @@ flo_plus(VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) + (double)FIX2LONG(y));
|
return DBL2NUM(RFLOAT_VALUE(x) + (double)FIX2LONG(y));
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) + rb_big2dbl(y));
|
return DBL2NUM(RFLOAT_VALUE(x) + rb_big2dbl(y));
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) + RFLOAT_VALUE(y));
|
return DBL2NUM(RFLOAT_VALUE(x) + RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '+');
|
return rb_num_coerce_bin(x, y, '+');
|
||||||
}
|
}
|
||||||
|
@ -601,11 +601,11 @@ flo_minus(VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) - (double)FIX2LONG(y));
|
return DBL2NUM(RFLOAT_VALUE(x) - (double)FIX2LONG(y));
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) - rb_big2dbl(y));
|
return DBL2NUM(RFLOAT_VALUE(x) - rb_big2dbl(y));
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) - RFLOAT_VALUE(y));
|
return DBL2NUM(RFLOAT_VALUE(x) - RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '-');
|
return rb_num_coerce_bin(x, y, '-');
|
||||||
}
|
}
|
||||||
|
@ -624,11 +624,11 @@ flo_mul(VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) * (double)FIX2LONG(y));
|
return DBL2NUM(RFLOAT_VALUE(x) * (double)FIX2LONG(y));
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) * rb_big2dbl(y));
|
return DBL2NUM(RFLOAT_VALUE(x) * rb_big2dbl(y));
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) * RFLOAT_VALUE(y));
|
return DBL2NUM(RFLOAT_VALUE(x) * RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '*');
|
return rb_num_coerce_bin(x, y, '*');
|
||||||
}
|
}
|
||||||
|
@ -651,12 +651,12 @@ flo_div(VALUE x, VALUE y)
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
f_y = FIX2LONG(y);
|
f_y = FIX2LONG(y);
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) / (double)f_y);
|
return DBL2NUM(RFLOAT_VALUE(x) / (double)f_y);
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
d = rb_big2dbl(y);
|
d = rb_big2dbl(y);
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) / d);
|
return DBL2NUM(RFLOAT_VALUE(x) / d);
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(x) / RFLOAT_VALUE(y));
|
return DBL2NUM(RFLOAT_VALUE(x) / RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '/');
|
return rb_num_coerce_bin(x, y, '/');
|
||||||
}
|
}
|
||||||
|
@ -726,7 +726,7 @@ flo_mod(VALUE x, VALUE y)
|
||||||
return rb_num_coerce_bin(x, y, '%');
|
return rb_num_coerce_bin(x, y, '%');
|
||||||
}
|
}
|
||||||
flodivmod(RFLOAT_VALUE(x), fy, 0, &mod);
|
flodivmod(RFLOAT_VALUE(x), fy, 0, &mod);
|
||||||
return DOUBLE2NUM(mod);
|
return DBL2NUM(mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -773,7 +773,7 @@ flo_divmod(VALUE x, VALUE y)
|
||||||
}
|
}
|
||||||
flodivmod(RFLOAT_VALUE(x), fy, &div, &mod);
|
flodivmod(RFLOAT_VALUE(x), fy, &div, &mod);
|
||||||
a = dbl2ival(div);
|
a = dbl2ival(div);
|
||||||
b = DOUBLE2NUM(mod);
|
b = DBL2NUM(mod);
|
||||||
return rb_assoc_new(a, b);
|
return rb_assoc_new(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -790,11 +790,11 @@ flo_pow(VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
return DOUBLE2NUM(pow(RFLOAT_VALUE(x), (double)FIX2LONG(y)));
|
return DBL2NUM(pow(RFLOAT_VALUE(x), (double)FIX2LONG(y)));
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return DOUBLE2NUM(pow(RFLOAT_VALUE(x), rb_big2dbl(y)));
|
return DBL2NUM(pow(RFLOAT_VALUE(x), rb_big2dbl(y)));
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM(pow(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
|
return DBL2NUM(pow(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, rb_intern("**"));
|
return rb_num_coerce_bin(x, y, rb_intern("**"));
|
||||||
}
|
}
|
||||||
|
@ -1130,7 +1130,7 @@ static VALUE
|
||||||
flo_abs(VALUE flt)
|
flo_abs(VALUE flt)
|
||||||
{
|
{
|
||||||
double val = fabs(RFLOAT_VALUE(flt));
|
double val = fabs(RFLOAT_VALUE(flt));
|
||||||
return DOUBLE2NUM(val);
|
return DBL2NUM(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1312,7 +1312,7 @@ flo_round(int argc, VALUE *argv, VALUE num)
|
||||||
else number /= f;
|
else number /= f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ndigits > 0) return DOUBLE2NUM(number);
|
if (ndigits > 0) return DBL2NUM(number);
|
||||||
|
|
||||||
if (!FIXABLE(number)) {
|
if (!FIXABLE(number)) {
|
||||||
return rb_dbl2big(number);
|
return rb_dbl2big(number);
|
||||||
|
@ -1501,7 +1501,7 @@ num_step(int argc, VALUE *argv, VALUE from)
|
||||||
if (err>0.5) err=0.5;
|
if (err>0.5) err=0.5;
|
||||||
n = floor(n + err) + 1;
|
n = floor(n + err) + 1;
|
||||||
for (i=0; i<n; i++) {
|
for (i=0; i<n; i++) {
|
||||||
rb_yield(DOUBLE2NUM(i*unit+beg));
|
rb_yield(DBL2NUM(i*unit+beg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -2106,7 +2106,7 @@ fix_plus(VALUE x, VALUE y)
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return rb_big_plus(y, x);
|
return rb_big_plus(y, x);
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM((double)FIX2LONG(x) + RFLOAT_VALUE(y));
|
return DBL2NUM((double)FIX2LONG(x) + RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '+');
|
return rb_num_coerce_bin(x, y, '+');
|
||||||
}
|
}
|
||||||
|
@ -2140,7 +2140,7 @@ fix_minus(VALUE x, VALUE y)
|
||||||
x = rb_int2big(FIX2LONG(x));
|
x = rb_int2big(FIX2LONG(x));
|
||||||
return rb_big_minus(x, y);
|
return rb_big_minus(x, y);
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM((double)FIX2LONG(x) - RFLOAT_VALUE(y));
|
return DBL2NUM((double)FIX2LONG(x) - RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '-');
|
return rb_num_coerce_bin(x, y, '-');
|
||||||
}
|
}
|
||||||
|
@ -2199,7 +2199,7 @@ fix_mul(VALUE x, VALUE y)
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return rb_big_mul(y, x);
|
return rb_big_mul(y, x);
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM((double)FIX2LONG(x) * RFLOAT_VALUE(y));
|
return DBL2NUM((double)FIX2LONG(x) * RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '*');
|
return rb_num_coerce_bin(x, y, '*');
|
||||||
}
|
}
|
||||||
|
@ -2248,13 +2248,13 @@ static VALUE
|
||||||
fix_fdiv(VALUE x, VALUE y)
|
fix_fdiv(VALUE x, VALUE y)
|
||||||
{
|
{
|
||||||
if (FIXNUM_P(y)) {
|
if (FIXNUM_P(y)) {
|
||||||
return DOUBLE2NUM((double)FIX2LONG(x) / (double)FIX2LONG(y));
|
return DBL2NUM((double)FIX2LONG(x) / (double)FIX2LONG(y));
|
||||||
}
|
}
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return DOUBLE2NUM((double)FIX2LONG(x) / rb_big2dbl(y));
|
return DBL2NUM((double)FIX2LONG(x) / rb_big2dbl(y));
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return DOUBLE2NUM((double)FIX2LONG(x) / RFLOAT_VALUE(y));
|
return DBL2NUM((double)FIX2LONG(x) / RFLOAT_VALUE(y));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
|
return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
|
||||||
}
|
}
|
||||||
|
@ -2279,7 +2279,7 @@ fix_divide(VALUE x, VALUE y, ID op)
|
||||||
|
|
||||||
if (op == '/') {
|
if (op == '/') {
|
||||||
div = (double)FIX2LONG(x) / RFLOAT_VALUE(y);
|
div = (double)FIX2LONG(x) / RFLOAT_VALUE(y);
|
||||||
return DOUBLE2NUM(div);
|
return DBL2NUM(div);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (RFLOAT_VALUE(y) == 0) rb_num_zerodiv();
|
if (RFLOAT_VALUE(y) == 0) rb_num_zerodiv();
|
||||||
|
@ -2347,7 +2347,7 @@ fix_mod(VALUE x, VALUE y)
|
||||||
double mod;
|
double mod;
|
||||||
|
|
||||||
flodivmod((double)FIX2LONG(x), RFLOAT_VALUE(y), 0, &mod);
|
flodivmod((double)FIX2LONG(x), RFLOAT_VALUE(y), 0, &mod);
|
||||||
return DOUBLE2NUM(mod);
|
return DBL2NUM(mod);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, '%');
|
return rb_num_coerce_bin(x, y, '%');
|
||||||
|
@ -2381,7 +2381,7 @@ fix_divmod(VALUE x, VALUE y)
|
||||||
|
|
||||||
flodivmod((double)FIX2LONG(x), RFLOAT_VALUE(y), &div, &mod);
|
flodivmod((double)FIX2LONG(x), RFLOAT_VALUE(y), &div, &mod);
|
||||||
a = dbl2ival(div);
|
a = dbl2ival(div);
|
||||||
b = DOUBLE2NUM(mod);
|
b = DBL2NUM(mod);
|
||||||
return rb_assoc_new(a, b);
|
return rb_assoc_new(a, b);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -2453,7 +2453,7 @@ fix_pow(VALUE x, VALUE y)
|
||||||
if (b == 1) return x;
|
if (b == 1) return x;
|
||||||
if (a == 0) {
|
if (a == 0) {
|
||||||
if (b > 0) return INT2FIX(0);
|
if (b > 0) return INT2FIX(0);
|
||||||
return DOUBLE2NUM(1.0 / zero);
|
return DBL2NUM(1.0 / zero);
|
||||||
}
|
}
|
||||||
if (a == 1) return INT2FIX(1);
|
if (a == 1) return INT2FIX(1);
|
||||||
if (a == -1) {
|
if (a == -1) {
|
||||||
|
@ -2479,12 +2479,12 @@ fix_pow(VALUE x, VALUE y)
|
||||||
x = rb_int2big(FIX2LONG(x));
|
x = rb_int2big(FIX2LONG(x));
|
||||||
return rb_big_pow(x, y);
|
return rb_big_pow(x, y);
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
if (RFLOAT_VALUE(y) == 0.0) return DOUBLE2NUM(1.0);
|
if (RFLOAT_VALUE(y) == 0.0) return DBL2NUM(1.0);
|
||||||
if (a == 0) {
|
if (a == 0) {
|
||||||
return DOUBLE2NUM(RFLOAT_VALUE(y) < 0 ? (1.0 / zero) : 0.0);
|
return DBL2NUM(RFLOAT_VALUE(y) < 0 ? (1.0 / zero) : 0.0);
|
||||||
}
|
}
|
||||||
if (a == 1) return DOUBLE2NUM(1.0);
|
if (a == 1) return DBL2NUM(1.0);
|
||||||
return DOUBLE2NUM(pow((double)a, RFLOAT_VALUE(y)));
|
return DBL2NUM(pow((double)a, RFLOAT_VALUE(y)));
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(x, y, rb_intern("**"));
|
return rb_num_coerce_bin(x, y, rb_intern("**"));
|
||||||
}
|
}
|
||||||
|
@ -2854,7 +2854,7 @@ fix_to_f(VALUE num)
|
||||||
|
|
||||||
val = (double)FIX2LONG(num);
|
val = (double)FIX2LONG(num);
|
||||||
|
|
||||||
return DOUBLE2NUM(val);
|
return DBL2NUM(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3245,9 +3245,9 @@ Init_Numeric(void)
|
||||||
rb_define_const(rb_cFloat, "MAX_EXP", INT2FIX(DBL_MAX_EXP));
|
rb_define_const(rb_cFloat, "MAX_EXP", INT2FIX(DBL_MAX_EXP));
|
||||||
rb_define_const(rb_cFloat, "MIN_10_EXP", INT2FIX(DBL_MIN_10_EXP));
|
rb_define_const(rb_cFloat, "MIN_10_EXP", INT2FIX(DBL_MIN_10_EXP));
|
||||||
rb_define_const(rb_cFloat, "MAX_10_EXP", INT2FIX(DBL_MAX_10_EXP));
|
rb_define_const(rb_cFloat, "MAX_10_EXP", INT2FIX(DBL_MAX_10_EXP));
|
||||||
rb_define_const(rb_cFloat, "MIN", DOUBLE2NUM(DBL_MIN));
|
rb_define_const(rb_cFloat, "MIN", DBL2NUM(DBL_MIN));
|
||||||
rb_define_const(rb_cFloat, "MAX", DOUBLE2NUM(DBL_MAX));
|
rb_define_const(rb_cFloat, "MAX", DBL2NUM(DBL_MAX));
|
||||||
rb_define_const(rb_cFloat, "EPSILON", DOUBLE2NUM(DBL_EPSILON));
|
rb_define_const(rb_cFloat, "EPSILON", DBL2NUM(DBL_EPSILON));
|
||||||
|
|
||||||
rb_define_method(rb_cFloat, "to_s", flo_to_s, 0);
|
rb_define_method(rb_cFloat, "to_s", flo_to_s, 0);
|
||||||
rb_define_method(rb_cFloat, "coerce", flo_coerce, 1);
|
rb_define_method(rb_cFloat, "coerce", flo_coerce, 1);
|
||||||
|
|
8
object.c
8
object.c
|
@ -850,7 +850,7 @@ nil_to_i(VALUE obj)
|
||||||
static VALUE
|
static VALUE
|
||||||
nil_to_f(VALUE obj)
|
nil_to_f(VALUE obj)
|
||||||
{
|
{
|
||||||
return DOUBLE2NUM(0.0);
|
return DBL2NUM(0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2230,16 +2230,16 @@ rb_Float(VALUE val)
|
||||||
{
|
{
|
||||||
switch (TYPE(val)) {
|
switch (TYPE(val)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
return DOUBLE2NUM((double)FIX2LONG(val));
|
return DBL2NUM((double)FIX2LONG(val));
|
||||||
|
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
return val;
|
return val;
|
||||||
|
|
||||||
case T_BIGNUM:
|
case T_BIGNUM:
|
||||||
return DOUBLE2NUM(rb_big2dbl(val));
|
return DBL2NUM(rb_big2dbl(val));
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
return DOUBLE2NUM(rb_str_to_dbl(val, Qtrue));
|
return DBL2NUM(rb_str_to_dbl(val, Qtrue));
|
||||||
|
|
||||||
case T_NIL:
|
case T_NIL:
|
||||||
rb_raise(rb_eTypeError, "can't convert nil into Float");
|
rb_raise(rb_eTypeError, "can't convert nil into Float");
|
||||||
|
|
12
pack.c
12
pack.c
|
@ -1649,7 +1649,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
||||||
float tmp;
|
float tmp;
|
||||||
memcpy(&tmp, s, sizeof(float));
|
memcpy(&tmp, s, sizeof(float));
|
||||||
s += sizeof(float);
|
s += sizeof(float);
|
||||||
UNPACK_PUSH(DOUBLE2NUM((double)tmp));
|
UNPACK_PUSH(DBL2NUM((double)tmp));
|
||||||
}
|
}
|
||||||
PACK_ITEM_ADJUST();
|
PACK_ITEM_ADJUST();
|
||||||
break;
|
break;
|
||||||
|
@ -1663,7 +1663,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
||||||
memcpy(&tmp, s, sizeof(float));
|
memcpy(&tmp, s, sizeof(float));
|
||||||
s += sizeof(float);
|
s += sizeof(float);
|
||||||
tmp = VTOHF(tmp,ftmp);
|
tmp = VTOHF(tmp,ftmp);
|
||||||
UNPACK_PUSH(DOUBLE2NUM((double)tmp));
|
UNPACK_PUSH(DBL2NUM((double)tmp));
|
||||||
}
|
}
|
||||||
PACK_ITEM_ADJUST();
|
PACK_ITEM_ADJUST();
|
||||||
break;
|
break;
|
||||||
|
@ -1677,7 +1677,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
||||||
memcpy(&tmp, s, sizeof(double));
|
memcpy(&tmp, s, sizeof(double));
|
||||||
s += sizeof(double);
|
s += sizeof(double);
|
||||||
tmp = VTOHD(tmp,dtmp);
|
tmp = VTOHD(tmp,dtmp);
|
||||||
UNPACK_PUSH(DOUBLE2NUM(tmp));
|
UNPACK_PUSH(DBL2NUM(tmp));
|
||||||
}
|
}
|
||||||
PACK_ITEM_ADJUST();
|
PACK_ITEM_ADJUST();
|
||||||
break;
|
break;
|
||||||
|
@ -1689,7 +1689,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
||||||
double tmp;
|
double tmp;
|
||||||
memcpy(&tmp, s, sizeof(double));
|
memcpy(&tmp, s, sizeof(double));
|
||||||
s += sizeof(double);
|
s += sizeof(double);
|
||||||
UNPACK_PUSH(DOUBLE2NUM(tmp));
|
UNPACK_PUSH(DBL2NUM(tmp));
|
||||||
}
|
}
|
||||||
PACK_ITEM_ADJUST();
|
PACK_ITEM_ADJUST();
|
||||||
break;
|
break;
|
||||||
|
@ -1703,7 +1703,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
||||||
memcpy(&tmp, s, sizeof(float));
|
memcpy(&tmp, s, sizeof(float));
|
||||||
s += sizeof(float);
|
s += sizeof(float);
|
||||||
tmp = NTOHF(tmp,ftmp);
|
tmp = NTOHF(tmp,ftmp);
|
||||||
UNPACK_PUSH(DOUBLE2NUM((double)tmp));
|
UNPACK_PUSH(DBL2NUM((double)tmp));
|
||||||
}
|
}
|
||||||
PACK_ITEM_ADJUST();
|
PACK_ITEM_ADJUST();
|
||||||
break;
|
break;
|
||||||
|
@ -1717,7 +1717,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
||||||
memcpy(&tmp, s, sizeof(double));
|
memcpy(&tmp, s, sizeof(double));
|
||||||
s += sizeof(double);
|
s += sizeof(double);
|
||||||
tmp = NTOHD(tmp,dtmp);
|
tmp = NTOHD(tmp,dtmp);
|
||||||
UNPACK_PUSH(DOUBLE2NUM(tmp));
|
UNPACK_PUSH(DBL2NUM(tmp));
|
||||||
}
|
}
|
||||||
PACK_ITEM_ADJUST();
|
PACK_ITEM_ADJUST();
|
||||||
break;
|
break;
|
||||||
|
|
2
parse.y
2
parse.y
|
@ -6920,7 +6920,7 @@ parser_yylex(struct parser_params *parser)
|
||||||
rb_warningS("Float %s out of range", tok());
|
rb_warningS("Float %s out of range", tok());
|
||||||
errno = 0;
|
errno = 0;
|
||||||
}
|
}
|
||||||
set_yylval_literal(DOUBLE2NUM(d));
|
set_yylval_literal(DBL2NUM(d));
|
||||||
return tFLOAT;
|
return tFLOAT;
|
||||||
}
|
}
|
||||||
set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse));
|
set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse));
|
||||||
|
|
|
@ -5047,10 +5047,10 @@ rb_proc_times(VALUE obj)
|
||||||
|
|
||||||
times(&buf);
|
times(&buf);
|
||||||
return rb_struct_new(rb_cProcessTms,
|
return rb_struct_new(rb_cProcessTms,
|
||||||
utime = DOUBLE2NUM(buf.tms_utime / hertz),
|
utime = DBL2NUM(buf.tms_utime / hertz),
|
||||||
stime = DOUBLE2NUM(buf.tms_stime / hertz),
|
stime = DBL2NUM(buf.tms_stime / hertz),
|
||||||
cutime = DOUBLE2NUM(buf.tms_cutime / hertz),
|
cutime = DBL2NUM(buf.tms_cutime / hertz),
|
||||||
sctime = DOUBLE2NUM(buf.tms_cstime / hertz));
|
sctime = DBL2NUM(buf.tms_cstime / hertz));
|
||||||
#else
|
#else
|
||||||
rb_notimplement();
|
rb_notimplement();
|
||||||
#endif
|
#endif
|
||||||
|
|
4
random.c
4
random.c
|
@ -505,7 +505,7 @@ rb_f_rand(int argc, VALUE *argv, VALUE obj)
|
||||||
limit = (struct RBignum *)rb_big_minus((VALUE)limit, INT2FIX(1));
|
limit = (struct RBignum *)rb_big_minus((VALUE)limit, INT2FIX(1));
|
||||||
if (FIXNUM_P((VALUE)limit)) {
|
if (FIXNUM_P((VALUE)limit)) {
|
||||||
if (FIX2LONG((VALUE)limit) == -1)
|
if (FIX2LONG((VALUE)limit) == -1)
|
||||||
return DOUBLE2NUM(genrand_real(mt));
|
return DBL2NUM(genrand_real(mt));
|
||||||
return LONG2NUM(limited_rand(mt, FIX2LONG((VALUE)limit)));
|
return LONG2NUM(limited_rand(mt, FIX2LONG((VALUE)limit)));
|
||||||
}
|
}
|
||||||
return limited_big_rand(mt, limit);
|
return limited_big_rand(mt, limit);
|
||||||
|
@ -522,7 +522,7 @@ rb_f_rand(int argc, VALUE *argv, VALUE obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (max == 0) {
|
if (max == 0) {
|
||||||
return DOUBLE2NUM(genrand_real(mt));
|
return DBL2NUM(genrand_real(mt));
|
||||||
}
|
}
|
||||||
if (max < 0) max = -max;
|
if (max < 0) max = -max;
|
||||||
val = limited_rand(mt, max-1);
|
val = limited_rand(mt, max-1);
|
||||||
|
|
2
string.c
2
string.c
|
@ -3763,7 +3763,7 @@ rb_str_to_i(int argc, VALUE *argv, VALUE str)
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_str_to_f(VALUE str)
|
rb_str_to_f(VALUE str)
|
||||||
{
|
{
|
||||||
return DOUBLE2NUM(rb_str_to_dbl(str, Qfalse));
|
return DBL2NUM(rb_str_to_dbl(str, Qfalse));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
4
time.c
4
time.c
|
@ -1016,7 +1016,7 @@ time_to_f(VALUE time)
|
||||||
struct time_object *tobj;
|
struct time_object *tobj;
|
||||||
|
|
||||||
GetTimeval(time, tobj);
|
GetTimeval(time, tobj);
|
||||||
return DOUBLE2NUM((double)tobj->ts.tv_sec+(double)tobj->ts.tv_nsec/1e9);
|
return DBL2NUM((double)tobj->ts.tv_sec+(double)tobj->ts.tv_nsec/1e9);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1513,7 +1513,7 @@ time_minus(VALUE time1, VALUE time2)
|
||||||
f = (double)(unsigned_time_t)(tobj->ts.tv_sec - tobj2->ts.tv_sec);
|
f = (double)(unsigned_time_t)(tobj->ts.tv_sec - tobj2->ts.tv_sec);
|
||||||
f += ((double)tobj->ts.tv_nsec - (double)tobj2->ts.tv_nsec)*1e-9;
|
f += ((double)tobj->ts.tv_nsec - (double)tobj2->ts.tv_nsec)*1e-9;
|
||||||
|
|
||||||
return DOUBLE2NUM(f);
|
return DBL2NUM(f);
|
||||||
}
|
}
|
||||||
return time_add(tobj, time2, -1);
|
return time_add(tobj, time2, -1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue