ruby-changes:12126
From: yugui <ko1@a...>
Date: Sun, 21 Jun 2009 19:35:03 +0900 (JST)
Subject: [ruby-changes:12126] Ruby:r23798 (ruby_1_9_1): merges r23730 from trunk into ruby_1_9_1.
yugui 2009-06-21 19:34:46 +0900 (Sun, 21 Jun 2009) New Revision: 23798 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23798 Log: merges r23730 from trunk into ruby_1_9_1. -- * numeric.c (flo_cmp): Infinity is greater than any bignum number. [ruby-dev:38672] * bignum.c (rb_big_cmp): ditto. Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/bignum.c branches/ruby_1_9_1/numeric.c branches/ruby_1_9_1/test/ruby/test_float.rb branches/ruby_1_9_1/version.h Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 23797) +++ ruby_1_9_1/ChangeLog (revision 23798) @@ -1,3 +1,10 @@ +Thu Jun 18 01:35:51 2009 Yukihiro Matsumoto <matz@r...> + + * numeric.c (flo_cmp): Infinity is greater than any bignum + number. [ruby-dev:38672] + + * bignum.c (rb_big_cmp): ditto. + Thu Jun 18 01:29:16 2009 Nobuyoshi Nakada <nobu@r...> * file.c (file_expand_path): drive letter is ascii only. Index: ruby_1_9_1/numeric.c =================================================================== --- ruby_1_9_1/numeric.c (revision 23797) +++ ruby_1_9_1/numeric.c (revision 23798) @@ -932,6 +932,10 @@ break; case T_BIGNUM: + if (isinf(a)) { + if (a > 0.0) return INT2FIX(1); + else return INT2FIX(-1); + } b = rb_big2dbl(y); break; Index: ruby_1_9_1/version.h =================================================================== --- ruby_1_9_1/version.h (revision 23797) +++ ruby_1_9_1/version.h (revision 23798) @@ -1,6 +1,6 @@ #define RUBY_VERSION "1.9.1" #define RUBY_RELEASE_DATE "2009-05-22" -#define RUBY_PATCHLEVEL 188 +#define RUBY_PATCHLEVEL 189 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 Index: ruby_1_9_1/bignum.c =================================================================== --- ruby_1_9_1/bignum.c (revision 23797) +++ ruby_1_9_1/bignum.c (revision 23798) @@ -1260,8 +1260,16 @@ break; case T_FLOAT: - return rb_dbl_cmp(rb_big2dbl(x), RFLOAT_VALUE(y)); + { + double a = RFLOAT_VALUE(y); + if (isinf(a)) { + if (a > 0.0) return INT2FIX(-1); + else return INT2FIX(1); + } + return rb_dbl_cmp(rb_big2dbl(x), a); + } + default: return rb_num_coerce_cmp(x, y, rb_intern("<=>")); } Index: ruby_1_9_1/test/ruby/test_float.rb =================================================================== --- ruby_1_9_1/test/ruby/test_float.rb (revision 23797) +++ ruby_1_9_1/test/ruby/test_float.rb (revision 23798) @@ -217,6 +217,11 @@ assert_equal(-1, 1.0 <=> 2**32) + assert_equal(1, inf <=> (Float::MAX.to_i*2)) + assert_equal(-1, -inf <=> (-Float::MAX.to_i*2)) + assert_equal(-1, (Float::MAX.to_i*2) <=> inf) + assert_equal(1, (-Float::MAX.to_i*2) <=> -inf) + assert_raise(ArgumentError) { 1.0 > nil } assert_raise(ArgumentError) { 1.0 >= nil } assert_raise(ArgumentError) { 1.0 < nil } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/