mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
speed up patch 2
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@115 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5864923425
commit
be1d214ace
4 changed files with 175 additions and 27 deletions
108
numeric.c
108
numeric.c
|
|
@ -403,6 +403,110 @@ flo_cmp(x, y)
|
|||
return INT2FIX(-1);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
flo_gt(x, y)
|
||||
VALUE x, y;
|
||||
{
|
||||
double a, b;
|
||||
|
||||
a = RFLOAT(x)->value;
|
||||
switch (TYPE(y)) {
|
||||
case T_FIXNUM:
|
||||
b = (double)FIX2INT(y);
|
||||
break;
|
||||
|
||||
case T_BIGNUM:
|
||||
b = big2dbl(y);
|
||||
break;
|
||||
|
||||
case T_FLOAT:
|
||||
b = RFLOAT(y)->value;
|
||||
break;
|
||||
|
||||
default:
|
||||
return num_coerce_bin(x, y);
|
||||
}
|
||||
return (a > b)?TRUE:FALSE;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
flo_ge(x, y)
|
||||
VALUE x, y;
|
||||
{
|
||||
double a, b;
|
||||
|
||||
a = RFLOAT(x)->value;
|
||||
switch (TYPE(y)) {
|
||||
case T_FIXNUM:
|
||||
b = (double)FIX2INT(y);
|
||||
break;
|
||||
|
||||
case T_BIGNUM:
|
||||
b = big2dbl(y);
|
||||
break;
|
||||
|
||||
case T_FLOAT:
|
||||
b = RFLOAT(y)->value;
|
||||
break;
|
||||
|
||||
default:
|
||||
return num_coerce_bin(x, y);
|
||||
}
|
||||
return (a >= b)?TRUE:FALSE;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
flo_lt(x, y)
|
||||
VALUE x, y;
|
||||
{
|
||||
double a, b;
|
||||
|
||||
a = RFLOAT(x)->value;
|
||||
switch (TYPE(y)) {
|
||||
case T_FIXNUM:
|
||||
b = (double)FIX2INT(y);
|
||||
break;
|
||||
|
||||
case T_BIGNUM:
|
||||
b = big2dbl(y);
|
||||
break;
|
||||
|
||||
case T_FLOAT:
|
||||
b = RFLOAT(y)->value;
|
||||
break;
|
||||
|
||||
default:
|
||||
return num_coerce_bin(x, y);
|
||||
}
|
||||
return (a < b)?TRUE:FALSE;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
flo_le(x, y)
|
||||
VALUE x, y;
|
||||
{
|
||||
double a, b;
|
||||
|
||||
a = RFLOAT(x)->value;
|
||||
switch (TYPE(y)) {
|
||||
case T_FIXNUM:
|
||||
b = (double)FIX2INT(y);
|
||||
break;
|
||||
|
||||
case T_BIGNUM:
|
||||
b = big2dbl(y);
|
||||
break;
|
||||
|
||||
case T_FLOAT:
|
||||
b = RFLOAT(y)->value;
|
||||
break;
|
||||
|
||||
default:
|
||||
return num_coerce_bin(x, y);
|
||||
}
|
||||
return (a <= b)?TRUE:FALSE;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
flo_eql(x, y)
|
||||
VALUE x, y;
|
||||
|
|
@ -1161,6 +1265,10 @@ Init_Numeric()
|
|||
rb_define_method(cFloat, "**", flo_pow, 1);
|
||||
rb_define_method(cFloat, "==", flo_eq, 1);
|
||||
rb_define_method(cFloat, "<=>", flo_cmp, 1);
|
||||
rb_define_method(cFloat, ">", flo_gt, 1);
|
||||
rb_define_method(cFloat, ">=", flo_ge, 1);
|
||||
rb_define_method(cFloat, "<", flo_lt, 1);
|
||||
rb_define_method(cFloat, "<=", flo_le, 1);
|
||||
rb_define_method(cFloat, "eql?", flo_eql, 1);
|
||||
rb_define_method(cFloat, "hash", flo_hash, 0);
|
||||
rb_define_method(cFloat, "to_i", flo_to_i, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue