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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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:inblock (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