diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-05 08:46:59 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-05 08:46:59 +0000 |
commit | ecd1aab5266315f947b0568cb56fab4f63453c83 (patch) | |
tree | 01d36aee863b377fd1d10902e134e4483d647597 /bignum.c | |
parent | 76d09411e9db597c537bd39124db47cde2d6f3c4 (diff) |
2000-06-05
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -520,6 +520,10 @@ rb_big_cmp(x, y) case T_BIGNUM: break; + case T_FLOAT: + y = rb_dbl2big(RFLOAT(y)->value); + break; + default: return rb_num_coerce_bin(x, y); } @@ -542,8 +546,22 @@ static VALUE rb_big_eq(x, y) VALUE x, y; { - if (rb_big_cmp(x, y) == INT2FIX(0)) return Qtrue; - return Qfalse; + switch (TYPE(y)) { + case T_FIXNUM: + y = rb_int2big(FIX2LONG(y)); + break; + case T_BIGNUM: + break; + case T_FLOAT: + y = rb_dbl2big(RFLOAT(y)->value); + break; + default: + return Qfalse; + } + if (RBIGNUM(x)->sign != RBIGNUM(y)->sign) return Qfalse; + if (RBIGNUM(x)->len != RBIGNUM(y)->len) return Qfalse; + if (memcmp(BDIGITS(x),BDIGITS(y),RBIGNUM(y)->len) != 0) return Qfalse; + return Qtrue; } static VALUE |