1
0
Fork 0
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:
matz 1998-03-11 09:19:50 +00:00
parent 5864923425
commit be1d214ace
4 changed files with 175 additions and 27 deletions

108
numeric.c
View file

@ -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);