# Why did #rationalize removed?

e\$B\$U\$J\$P\$5\$se(B
e\$B1sF#\$G\$9!#e(B

Rational#rationalize e\$B\$r;O\$a!"B?\$/\$Ne(B #rationalize
e\$B%a%=%C%I\$,:o=|e(B
e\$B\$5\$l\$?\$h\$&\$G\$9\$,!“2?\$+M}M3\$,\$”\$C\$F\$N\$3\$H\$G\$7\$g\$&\$+!#e(B

e\$B\$9\$G\$Ke(B feature freeze
e\$B:Q\$\$G\$"\$k\$?\$a!":#8e8_49@-\$r0];}\$9\$k\$N\$Ke(B
e\$B=EBg\$JLdBj\$,\$"\$k\$J\$I!“K\Ev\$K\$d\$`\$rF@\$J\$\$M}M3\$,\$”\$k\$N\$G\$J\$\$8B\$j\$Oe(B
e\$B:o=|\$7\$F\$O\$\$\$1\$^\$;\$s!#e(B
experimental e\$B\$G\$"\$C\$F\$b!"e(Btrunk e\$B\$K%3%
%C%H\$7\$?>uBV\$Ge(B feature
freeze
e\$B\$7\$F\$7\$^\$C\$?0J>e!"<jCY\$l\$G\$"\$k\$H9M\$(\$^\$9!#e(B

e\$B9M\$(\$,\$"\$C\$F\$N\$3\$H\$G\$7\$?\$i!"\$^\$:\$OM}M3\$r\$*J9\$+\$;\$/\$@\$5\$\$!#e(B

e\$B\$A\$J\$_\$K!"e(Brubyspec e\$B\$,BgNL\$K%(%i!<\$r=P\$9\$h\$&\$K\$J\$C\$F\$\$\$^\$9!#e(B

Complex#rationalize raises RangeError if self has non-zero imaginary
part FAILED
Expected RangeError
but got NoMethodError (undefined method `rationalize' for (1+5i):Complex) /home/mame/work/ruby/spec/rubyspec/core/complex/rationalize_spec.rb:6:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/complex/rationalize_spec.rb:3:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/complex/rationalize_spec.rb:1:in`<top (required)>’

Complex#rationalize returns a Rational if self has zero imaginary part
ERROR
NoMethodError: undefined method `rationalize' for (1+0i):Complex /home/mame/work/ruby/spec/rubyspec/core/complex/rationalize_spec.rb:10:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/complex/rationalize_spec.rb:3:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/complex/rationalize_spec.rb:1:in`<top (required)>’

Float#rationalize returns self as a simplified Rational with no argument
ERROR
NoMethodError: undefined method `rationalize' for 3382729202.92822:Float /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:6:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:3:in`<top (required)>’

Float#rationalize simplifies self to the degree specified by a
Rational argument ERROR
NoMethodError: undefined method `rationalize' for 0.3:Float /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:13:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:3:in`<top (required)>’

Float#rationalize simplifies self to the degree specified by a Float
argument ERROR
NoMethodError: undefined method `rationalize' for 0.3:Float /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:24:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:3:in`<top (required)>’

Float#rationalize raises a FloatDomainError for Infinity FAILED
Expected FloatDomainError
but got NoMethodError (undefined method `rationalize' for Infinity:Float) /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:33:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:3:in`<top (required)>’

Float#rationalize raises a FloatDomainError for NaN FAILED
Expected FloatDomainError
but got NoMethodError (undefined method `rationalize' for NaN:Float) /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:37:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/float/rationalize_spec.rb:3:in`<top (required)>’

NilClass#rationalize returns 0/1 ERROR
NoMethodError: undefined method `rationalize' for nil:NilClass /home/mame/work/ruby/spec/rubyspec/core/nil/rationalize_spec.rb:6:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/nil/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/nil/rationalize_spec.rb:3:in`<top (required)>’

NilClass#rationalize ignores arguments ERROR
NoMethodError: undefined method `rationalize' for nil:NilClass /home/mame/work/ruby/spec/rubyspec/core/nil/rationalize_spec.rb:10:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/nil/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/nil/rationalize_spec.rb:3:in`<top (required)>’

Numeric#rationalize returns a Rational object ERROR
NoMethodError: undefined method `rationalize' for 0:Fixnum /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:16:in`block (4 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:15:in
`each' /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:15:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:3:in`<top (required)>’

Numeric#rationalize uses self as the numerator ERROR
NoMethodError: undefined method `rationalize' for 0:Fixnum /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:22:in`block (4 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:21:in
`each' /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:21:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:3:in`<top (required)>’

Numeric#rationalize uses 1 as the denominator ERROR
NoMethodError: undefined method `rationalize' for 0:Fixnum /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:28:in`block (4 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:27:in
`each' /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:27:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/numeric/rationalize_spec.rb:3:in`<top (required)>’

Rational#rationalize returns self with no argument ERROR
NoMethodError: undefined method `rationalize' for (4/1):Rational /home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:6:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:1:in`<top (required)>’

Rational#rationalize simplifies self to the degree specified by a
Rational argument ERROR
NoMethodError: undefined method `rationalize' for (5404319552844595/18014398509481984):Rational /home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:14:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:1:in`<top (required)>’

Rational#rationalize simplifies self to the degree specified by a
Float argument ERROR
NoMethodError: undefined method `rationalize' for (5404319552844595/18014398509481984):Rational /home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:25:in`block (3 levels) in <top (required)>’
/home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:4:in
`block in <top (required)>' /home/mame/work/ruby/spec/rubyspec/core/rational/rationalize_spec.rb:1:in`<top (required)>’

Rational#rationalize e\$B\$r;O\$a!"B?\$/\$Ne(B #rationalize e\$B%a%=%C%I\$,:o=|e(B
e\$B\$5\$l\$?\$h\$&\$G\$9\$,!“2?\$+M}M3\$,\$”\$C\$F\$N\$3\$H\$G\$7\$g\$&\$+!#e(B

e\$B7k2L\$H\$7\$F8=>u\$N\$^\$^;D\$7\$F\$h\$\$\$H\$\$\$&3N?.\$,;}\$F\$J\$\$!"\$H\$\$\$&\$N\$,M}M3\$G\$9!#e(B
e\$B;n83E*\$KF3F~\$7\$?\$H\$\$\$&;v\$r\$9\$C\$+\$jK:\$l\$F\$\$\$^\$7\$?!#e(B

e\$B\$9\$G\$Ke(B feature freeze e\$B:Q\$\$G\$"\$k\$?\$a!":#8e8_49@-\$r0];}\$9\$k\$N\$Ke(B
e\$B=EBg\$JLdBj\$,\$"\$k\$J\$I!“K\Ev\$K\$d\$`\$rF@\$J\$\$M}M3\$,\$”\$k\$N\$G\$J\$\$8B\$j\$Oe(B
e\$B:o=|\$7\$F\$O\$\$\$1\$^\$;\$s!#e(B
experimental e\$B\$G\$"\$C\$F\$b!"e(Btrunk e\$B\$K%3%
%C%H\$7\$?>uBV\$Ge(B feature freeze
e\$B\$7\$F\$7\$^\$C\$?0J>e!"<jCY\$l\$G\$"\$k\$H9M\$(\$^\$9!#e(B

e\$B<jCY\$l\$G\$9\$+!#\$=\$l\$OBgJQ\$G\$9\$M!#\$=\$l\$GNI\$\$\$N\$G\$"\$l\$P!"85\$KLa\$;\$P\$\$\$\$\$H;W\$\$\$^\$9!#e(B

e\$B1sF#\$G\$9!#e(B

2010e\$BG/e(B4e\$B7ne(B26e\$BF|e(B19:58 Tadayoshi F. [email protected]:

Rational#rationalize e\$B\$r;O\$a!"B?\$/\$Ne(B #rationalize e\$B%a%=%C%I\$,:o=|e(B
e\$B\$5\$l\$?\$h\$&\$G\$9\$,!“2?\$+M}M3\$,\$”\$C\$F\$N\$3\$H\$G\$7\$g\$&\$+!#e(B

e\$B7k2L\$H\$7\$F8=>u\$N\$^\$^;D\$7\$F\$h\$\$\$H\$\$\$&3N?.\$,;}\$F\$J\$\$!"\$H\$\$\$&\$N\$,M}M3\$G\$9!#e(B
e\$B;n83E*\$KF3F~\$7\$?\$H\$\$\$&;v\$r\$9\$C\$+\$jK:\$l\$F\$\$\$^\$7\$?!#e(B

e\$B?4G[\$5\$l\$F\$\$\$k\$N\$Oe\$N%P%0\$G\$7\$g\$&\$+!#e(B
e\$Be\$N%P%0\$J\$i!“H=L@\$7\$?\$H\$-\$KD>\$;\$P\$\$\$\$\$N\$G!”:#e(B revert e\$B\$7e(B
e\$B\$J\$/\$F\$b\$\$\$\$\$H;W\$\$\$^\$9!#e(B

e\$BD>\$;\$J\$\$%P%0e(B (API e\$B@_7W>e\$N%P%0e(B)
e\$B\$N?4G[\$,\$"\$k\$J\$i:\$\$j\$^\$9\$M!#e(B
e\$B\$H\$\$\$C\$F\$b@_7W>e\$N%P%0\$rM=A[\$9\$k\$N\$O\$H\$F\$bFq\$7\$\$\$3\$H\$J\$N\$G!“e(B
e\$B\$o\$j\$H6qBNE*\$K7|G0\$7\$F\$\$\$k>u67\$,\$”\$k\$H\$+!“LdBj\$,5/\$-\$?\$H\$-\$Ne(B
e\$B1F6A\$,=EBg\$J2DG=@-\$,9b\$\$\$H\$+!”\$G\$J\$1\$l\$P!"5\$\$K\$7\$F\$b\$7\$g\$&\$,e(B
e\$B\$J\$\$\$+\$H;W\$\$\$^\$9!#e(B
e\$B\$J\$s\$H\$J\$/\$G\$9\$,!“e(B#rationalize e\$B\$K\$O\$=\$&\$\$\$&=EBg\$JLdBj\$,\$”\$ke(B
e\$B2DG=@-\$ODc\$\$5\$\$,\$7\$^\$9!#e(B

e\$B\$H=q\$\$\$F\$\$\$k\$&\$A\$Ke(B revert e\$B\$re(B revert
e\$B\$7\$F\$\$\$?\$@\$\$\$?\$h\$&\$G!“e(B
e\$B\$”\$j\$,\$H\$&\$4\$6\$\$\$^\$9!#e(B

e\$BG0\$N0Y!“9M\$(\$?;v\$r=q\$\$\$F\$*\$-\$^\$9\$,!“85!9e(B cmath.rb
e\$B\$”\$?\$j\$b4^\$a\$F<+J,\$Ne(B
e\$BC4Ev\$@\$H;W\$C\$F\$\$\$F!”<+J,\$N:[NL\$G=PMh\$kHO0OFb\$G\$d\$C\$F\$k\$H;W\$C\$F\$\$\$?\$o\$1e(B
e\$B\$G\$9!#e(B

e\$B\$7\$+\$7!"\$=\$l\$O0c\$&\$H\$\$\$&;v\$,H=\$C\$F!"\$=\$l0J9_\$+\$J\$j0z\$\$\$?46\$8\$G\$\$\$F!"\$be(B
e\$B\$&\$=\$&\$\$\$&;n83E*\$J;v\$r\$7\$F\$\$\$k\$H\$\$\$&<+3P\$b4uGv\$K\$J\$C\$F\$\$\$^\$7\$?!#e(B

e\$B\$@\$+\$i<+J,\$H\$7\$F\$O!“85\$+\$i8"8B\$N\$J\$+\$C\$?;v\$K\$D\$\$\$F<h\$j>C\$9\$N\$O\$*\$+\$7\$Je(B
e\$B;v\$G\$b\$J\$\$\$H;W\$\$\$^\$7\$?!#\$3\$N%?%\$%_%s%0\$K\$J\$C\$?\$N\$O!”\$=\$&\$\$\$&;v\$bKX\$IK:e(B
e\$B\$l\$+\$1\$F\$\$\$?\$+\$i\$G\$9\$,!"85!9<+J,\$N:[NL\$G\$d\$C\$F\$\$\$?;v\$r<h\$j>C\$9\$@\$1\$J\$Ne(B
e\$B\$G!"JL\$K5\$\$K\$7\$^\$;\$s\$G\$7\$?!#e(B

e\$B4{CN\$N%P%0\$,\$"\$k\$H\$\$\$&\$3\$H\$G\$O\$J\$\$\$G\$9\$,!“e(Bruby
e\$B\$H\$7\$F<u\$1F~\$l\$?\$N\$G!”\$be(B
e\$B\$&<jCY\$l\$@\$H\$\$\$&\$J\$i!">/\$7L5@UG\$\$@\$1\$I!"\$=\$l\$G\$bNI\$\$\$J\$i9=\$o\$J\$\$\$H;W\$\$e(B
e\$B\$^\$9!#e(B

e\$B1sF#\$G\$9!#e(B

2010e\$BG/e(B4e\$B7ne(B26e\$BF|e(B21:40 Tadayoshi F. [email protected]:

e\$BG0\$N0Y!“9M\$(\$?;v\$r=q\$\$\$F\$*\$-\$^\$9\$,!“85!9e(B cmath.rb e\$B\$”\$?\$j\$b4^\$a\$F<+J,\$Ne(B
e\$BC4Ev\$@\$H;W\$C\$F\$\$\$F!”<+J,\$N:[NL\$G=PMh\$kHO0OFb\$G\$d\$C\$F\$k\$H;W\$C\$F\$\$\$?\$o\$1e(B
e\$B\$G\$9!#e(B

e\$B\$7\$+\$7!"\$=\$l\$O0c\$&\$H\$\$\$&;v\$,H=\$C\$F!"e(B

e\$B\$3\$N\$"\$?\$j\$N7P0^\$r\$o\$+\$C\$F\$\$\$J\$+\$C\$?\$N\$G\$9\$,!"e(B[ruby-dev:39724]
e\$B\$Ne(B

== Ruby 1.9e\$B7OE}\$Ne(Blib/cmath.rb
lib/complex.rbe\$B\$HF1\$8\$/!#e(B
e\$B@PDM\$5\$s!"%a%s%F%J8"8B\$rJ|4~\$7\$^\$9\$+e(B?

e\$B\$3\$l\$Oe(B, e\$B;d\$G\$J\$/\$Fe(B, e\$B\$U\$J\$P\$5\$s\$@\$H\$*\$b\$\$\$^\$9e(B? e\$B0JA0\$N%a%s%F\$J\$NI92O4V0c\$Ce(B
e\$B\$F\$\$\$?\$N\$G\$Oe(B?

e\$B\$N\$3\$H\$G\$7\$g\$&\$+!#C1\$Ke(B yugui
e\$B\$5\$s\$N4*0c\$\$\$G\$O\$J\$\$\$G\$7\$g\$&\$+!#e(B

e\$B\$U\$J\$P\$5\$s\$Ke(B cmath
e\$B\$N%a%s%F%J\$r:#8e\$b\$d\$C\$FD:\$1\$k\$H\$\$\$&\$3\$H\$G\$7\$?\$i!"e(B
e\$B%a%s%F%JI=\$r99?7\$7\$^\$9\$7!"8D?ME*\$K\$O\$=\$l\$,\$h\$\$\$H;W\$\$\$^\$9!#e(B