# Why did #rationalize removed?

**URL:** <https://www.ruby-forum.com/t/why-did-rationalize-removed/187589>\
**Category:** Development\
**Created:** [April 26, 2010, 12:36pm UTC](https://www.ruby-forum.com/t/why-did-rationalize-removed/187589 "2010-04-26T12:36:17Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [April 26, 2010, 12:36pm UTC](https://www.ruby-forum.com/t/why-did-rationalize-removed/187589/1 "2010-04-26T12:36:17Z")

</div>

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

1. 

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)\>’

1. 

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)\>’

…

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

…

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

…

1. 

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)\>’

1. 

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)\>’

1. 

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)\>’

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [April 26, 2010, 12:59pm UTC](https://www.ruby-forum.com/t/why-did-rationalize-removed/187589/2 "2010-04-26T12:59:07Z")

</div>

> 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

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [April 26, 2010, 2:09pm UTC](https://www.ruby-forum.com/t/why-did-rationalize-removed/187589/3 "2010-04-26T14:09:56Z")

</div>

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

2010e$BG/e(B4e$B7ne(B26e$BF|e(B19:58 Tadayoshi F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > 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

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [April 26, 2010, 2:40pm UTC](https://www.ruby-forum.com/t/why-did-rationalize-removed/187589/4 "2010-04-26T14:40:59Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [April 26, 2010, 3:44pm UTC](https://www.ruby-forum.com/t/why-did-rationalize-removed/187589/5 "2010-04-26T15:44:12Z")

</div>

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

2010e$BG/e(B4e$B7ne(B26e$BF|e(B21:40 Tadayoshi F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 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
