Rational, complex and mathn

Complex(1,2).numerator e$B$,%(%i!<$K$J$j$^$9!#e(Brational e$B$rFI$s$G$$$k$H%(%i!<e(B
e$B$K$J$j$^$;$s!#e(B

e$B:#$4$m5$$,$D$$$?$N$G$9$,!"e(BInteger#{numerator,denominator}
e$B$@$1$8$c$J$$$G$9$M!#e(B
Float#{numerator,denominator} e$B$bI,MW$G$9!#e(B

$ ruby19 -r rational -r complex -e ‘Complex(1.0,2.0).numerator’
/usr/local/ruby19/lib/ruby/1.9.0/complex.rb:354:in denominator': undefined methoddenominator’ for 1.0:Float (NoMethodError)
from /usr/local/ruby19/lib/ruby/1.9.0/complex.rb:361:in
numerator' from -e:1:in

e$B$7$+$b!"e(BFloat#{numerator,denominator}
e$B$J$s$F2?=h$K$bDj5A$5$l$F$J$$$N$G!“e(B
rational e$B$rFI$s$G$b4X78$”$j$^$;$s!#e(B

e$BAGD>$KD>$=$&$H$9$k$H!"7k6Ie(B Float#to_r
e$B$rDj5A$9$k$3$H$K$J$k$s$8$c$J$$$+e(B
e$B$H;W$$$^$9!#$7$+$7!"J#AG?t$Ne(B numeratore$B!"e(Bdenominator
e$B$r<h$k$H$$$&$N$,$he(B
e$B$/$o$+$i$J$/$F!"e(BCommon Lisp
e$B$r;O$a!“IaDL$OJ#AG?t$KBP$7$F$O5!G=$7$J$$$Ge(B
e$B$9$7!”@PDM$5$s$K!"0U?^$rJ9$$$?$[$&$,$$$$$G$9$M!#e(B

e$B$H$$$&J,Jl$r@0?t$G$=$m$($?7A<0$KJQ49$7$?$$$H$-$K;H$&$b$N$@$H;W$$$^e(B
e$B$9e(B. e$BCf3X$H$+9b9;$N;~$K$O$=$&$d$C$FJ,Jl$r$=$m$($F$$$^$7$?$h$Me(B(^^; e$B7W;;e(B
e$BCf$K$O;H$&$3$H$O$J$$$H;W$$$^$9$,e(B,e$BI=<($9$k$H$-$K$O;H$&$+$be(B.

e$B$J$k$[$I!#$=$&$$$&$3$H$G$9$+!#e(B

e$B$J$/$7$F$bNI$$$G$9$,e(B, 2e$BCM$r%Z%"$GJV$9%a%=%C%I$KJQ$($?J}$,NI$$5$$,$7$Fe(B
e$B$-$^$7$?e(B. Complex#normal_rational_form e$B$H$+e(B.

e$B$$$E$l$K$7$F$bIbF0>.?tE@?t$b4^$aM-M}?t$H$7$Fe(B
numeratore$B!“e(Bdenominator e$B$,e(B
e$BI,MW$J$o$1$G$9$h$M!#K\Mh0U?^$5$l$?$D$+$$$+$?$G$J$$$+$b$7$l$J$$$1$I!”$Je(B
e$B$$$HGKC>$7$F$7$^$&$N$G!#e(B

nurat 0.0.2 e$B$r=P$7$^$7$?e(B (e$B$D$$$G$Ke(B nucomp e$B$be(B)e$B!#e(B

e$B0l1~!"%3!<%I$N@bL@$r4JC1$K$7$^$9!#e(B

e$B2<@A$1$N%a%=%C%I8F$S$@$7$N$“$?$j$O!“4X?tHGe(B (e$B%$%s%i%$%s4X?te(B)
e$B$H!”%^%/%me(B
e$BHG$,$”$j$^$9e(B
(e$B4X?t$N$[$&$b%^%/%m$r$D$+$C$F$k$o$1$G$9$,e(B)e$B!#%^%/%mHG$,M-e(B
e$B8z$K$J$C$F$$$^$9!#%^%/%m$N$[$&$K$O$$$/$i$+C;Mm$N$?$a$N%3!<%I$,F~$C$F$$e(B
e$B$^$9$,!“e(Bgcc e$B$N3HD%5!G=$r$D$+$C$F$$$k$N$G!“e(Bgcc
e$B0J30$G$O0UL#$,$”$j$^$;$s!#e(B
e$B%^%/%mHG$G$$+$7$/!“4X?tHG$G@5$7$$>l9g$O!”$$=$i$/<jF0:GE,2=%P%0$G$9!#e(B
e$B:G=E$K$O!”$3$N$"$?$j$O@0M}$7$J$1$l$P$J$i$J$$$H$3$m$G$9!#e(B

e$B86$5$s$Ne(B gcd
e$B$r;29M$K;n$7$?$j!"$$$m$$$m$H9);vCf$N$H$3$m$,;D$C$F$$$FFIe(B
e$B$$E$i$$$H;W$$$^$9!#$9$$^$;$s$,2fK}$7$F$/$@$5$$!#e(B

http://www.funaba.org/archive/nurat-0.0.2.tar.gz
http://www.funaba.org/archive/nucomp-0.0.2.tar.gz

e$B%F%9%H$O$3$3$KCV$$$F$*$-$^$9!#e(B

http://www.funaba.org/archive/nurat-test.tar.gz

nurat e$BC1BN!"e(Bnurat + complexe$B!"e(Bnurat + complex +
mathne$B!"e(Bnurat + nucompe$B!"e(B
nurat + nucomp + mathn e$B$NAH$_9g$;$F%F%9%H$7$F$$$^$9!#e(B1.9
e$B$G$bF0$/$H;We(B
e$B$$$^$9!#e(B

e$BB>$K!"E,Ev$JAH$_9g$;$G!"NOG$$;$K7W;;$7$Fe(B Common Lisp
e$B$G$N7k2L$HFM$-9ge(B
e$B$;$k$3$H$b$7$F$$$^$9!#e(B

e$B$G$O!"$h$m$7$/$*4j$$$7$^$9!#e(B

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

Tadayoshi F. e$B$5$s$O=q$-$^$7$?e(B:

nurat 0.0.2 e$B$r=P$7$^$7$?e(B (e$B$D$$$G$Ke(B nucomp e$B$be(B)e$B!#e(B

e$B$$$?$@$-$^$7$?!#e(B
e$B$l$l!"e(Bnucommon.rb e$B$,F1:-$5$l$F$J$$$_$?$$$G$9!#e(B

e$B$$$?$@$-$^$7$?!#e(B
e$B$l$l!"e(Bnucommon.rb e$B$,F1:-$5$l$F$J$$$_$?$$$G$9!#e(B

e$B$"!<!"$9$_$^$;$s!#:#EY$OBg>fIW$@$H;W$$$^$9!#e(B

MD5 (nurat-0.0.2.tar.gz) = 201a5ef52b622cf55338fddb94688ca5

e$B;EMM$r3NG’$7$F$$$-$?$$$H;W$$$^$9!#e(B

Rational.new!e$B!"e(BRational.newe$B!"e(BRational.reducee$B!"e(BRational()
e$B$K$D$$$Fe(B

Rational.new! 1e$B$D$+e(B2e$B$D$N0z?t$r<h$k!#e(B
e$B0l@Z$N%A%’%C%/$J$7!#e(B
e$B0z?t$,@0?t$G$J$$>l9ge(B to_i e$B$5$l$k!#e(B
reduce e$B$J$7!"e(Bunify e$B$J$7!#e(B

e$B@PDM$5$s$N$Oe(B den
e$B$,Ii$N$H$-$ND4@0$r$9$k$,!“86$5$s$N$O$7$J$$!#e(B
ishi> Rational.new!(1,1.3) #=> Rational(1,1)
hara> Rational.new!(1,1.3) #=> Rational(1,1.3)
e$B86$5$s$N$O$^$k$C$-$j$=$N$^$^$G$”$k!#e(B
e$B86$5$s$N$OI,$:0z?t$,e(B2e$B$D$G$J$1$l$P$J$i$J$$!#e(B

Rational.new e$B$O!“e(B1e$B$D$+e(B2e$B$D$N@0?t$N0z?t$r<h$k!#e(B
1e$B$DL$N0z?t$,e(B Rational e$B$Ge(B 2e$B$DL$,e(B 1
e$B$N>l9g$r5v$9!#e(B
reduce e$B$”$j!“e(Bunify e$B$”$j!#e(B

e$B86$5$s$N$O$I$A$i$N0z?t$b@0?t$G$J$$$H$J$i$J$$!#e(B
e$B86$5$s$N$Oe(B reduce e$B$HF1$8$G$"$k!#e(B
e$B@PDM$5$s$N$K$Oe(B new e$B$OB8:_$7$J$$!#e(B

Rational.reduce e$B$O!“e(B1e$B$D$+e(B2e$B$D$N@0?t$N0z?t$r<h$k!#e(B
reduce e$B$”$j!“e(Bunify e$B$”$j!#e(B

e$B86$5$s$N$Oe(B new e$B$HF1$8$G$"$k!#e(B

Rational() e$B$O!"e(B1e$B$D$+e(B2e$B$D$N0z?t$r$H$k!#e(B
e$B$I$A$i$N0z?t$b@0?t!"IbF0>.?tE@?t!“M-M}?t!“J8;zNs$G$”$C$F$h$$!#e(B
reduce e$B$”$j!“e(Bunify e$B$”$j!#e(B

e$B86$5$s$N$O!"J8;zNs$O$R$H$D$G$J$1$l$P$J$i$J$$!#e(B

new e$B$Oe(B reduce e$B$HF1$8$G$$$$$+$b$7$l$^$;$s!#e(B

new e$B$Ge(B Rational
e$B$r:FF~NO$G$-$k$N$O$$$$$N$+$I$&$+!"$h$/$o$+$j$^$;$s!#JXe(B
e$BMx$G$"$k$+$b$7$l$J$$$1$I!"$=$&$$$&$3$H$Oe(B Rational()
e$B$G=PMh$k$7!“e(Bnew e$B$Ge(B
e$B$O!“CF$$$F$”$2$?$[$&$,?F@Z$G$”$k$H9M$($k$3$H$b$G$-$^$9!#e(B

e$B$=$b$=$be(B new! e$B$He(B reduce e$B$OI,MW$J$N$+!#e(B

ruby e$B$G=q$/$He(B new! e$B$N$h$&$J$b$N$,I,MW$K$J$j$^$9$,!“e(BC
e$B$G=q$-D>$7$?$b$Ne(B
e$B$G!“0UL#$,$”$k$+$O$h$/$o$+$j$^$;$s!#>C$9$N$O$$$D$G$b=PMh$k$N$G!”:#$O;De(B
e$B$7$F$"$j$^$9!#e(B

reduce e$B$N0U5A$,$h$/$o$+$j$^$;$s!#86$5$s$N$G$Oe(B new
e$B$HF1$8$G$9$,!"e(Bnew e$B$Ne(B
e$BJLL>$H9M$($F$bHyL/$G$9!#e(B

e$B$I$&$7$F$b!"e(BRational.new!(*Rational.reduce(n,d)) e$B$H$+e(B
Rational.reduce(Rational.new!(n,d))
e$B$N$h$&$J$b$N$rA[A|$7$F$7$^$$$^$9!#e(B

new! e$B$He(B reduce
e$B$O!“7Y9p$7$F!”>-MhL58z$K$7$?$[$&$,$$$$$+$b$7$l$^$;$s!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33812] Re: rational, complex and mathn”
on Sat, 16 Feb 2008 19:46:01 +0900, Tadayoshi F.
[email protected] writes:

|e$B$=$b$=$be(B new! e$B$He(B reduce e$B$OI,MW$J$N$+!#e(B

new!e$B$Oe(BRubye$B$G<BAu$7$F$$$k$?$a$K$@$1I,MW$J$N$G!"e(BCe$B$G<BAu$9$k$Je(B
e$B$iITMW$G$7$g$&!#e(Breducee$B$O$h$/$o$+$i$J$$$N$G$9$,!"e(Bnewe$B$HF1$8F/e(B
e$B$-$r$9$k$J$i$P2~$a$FI,MW$J$b$N$G$O$J$$$h$&$K;W$($^$9!#e(B

|new! e$B$He(B reduce e$B$O!“7Y9p$7$F!”>-MhL58z$K$7$?$[$&$,$$$$$+$b$7$l$^$;$s!#e(B

e$B;?@.$7$^$9!#$$$C$=!"0l5$$K>C$7$F$b$h$$$+$b$7$l$^$;$s!#e(B

e$B@PDMHG$H$N0c$$e(B

Rational() e$B$,$h$j=@Fp$G$"$k!#e(B
Rational.new e$B$,$"$k!#e(B
Rational#inspect e$B$N=q<0$,0c$&e(B
(e$B$^$"!"$3$N$"$?$j$O$I$&$K$G$be(B)e$B!#e(B

ishi> 2 ** Rational(2) #=> 4.0
nurat> 2 ** Rational(2) #=> (4/1)

ishi> 2 ** Rational(-2) #=> 0.25
nurat> 2 ** Rational(-2) #=> (1/4)

{Float,NilClass,String}#to_r e$B$J$I$rDs6!$9$k!#e(B

e$BDI2C$5$l$?$b$N$Ge(B quote$B!"e(Bquotremle$B!“e(Breciprocal
e$B$J$I$$$/$D$+$b$N$Oe(B Numeric
e$BA4BN$H$7$FDs6!$9$Y$-$+$I$&$+9M$($k$Y$-$@$H;W$&$N$G!”>/$J$/$H$be(BRational
e$BFH<+$N$b$N$H$7$F$ODs6!$9$k$3$H$O$J$$$H;W$$$^$9!#e(B

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

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

|e$B$=$b$=$be(B new! e$B$He(B reduce e$B$OI,MW$J$N$+!#e(B

new!e$B$Oe(BRubye$B$G<BAu$7$F$$$k$?$a$K$@$1I,MW$J$N$G!"e(BCe$B$G<BAu$9$k$Je(B
e$B$iITMW$G$7$g$&!#e(B

e$B$3$l$C$F!"e(BUnify e$B$,Dj5A$5$l$$$k$H$-$O!“e(BRationa.new(1, 1)
e$B$,e(B Integer
e$B$K$J$k$C$F$3$H$G$7$g$&$+e(B(new e$B$Oe(B private
e$B$@$1$Ie(B)e$B!#$”$k$$$Oe(B new e$B$rDje(B
e$B5A$7$J$$$H$+!#e(B

|new! e$B$He(B reduce e$B$O!“7Y9p$7$F!”>-MhL58z$K$7$?$[$&$,$$$$$+$b$7$l$^$;$s!#e(B

e$B;?@.$7$^$9!#$$$C$=!"0l5$$K>C$7$F$b$h$$$+$b$7$l$^$;$s!#e(B

e$B;d$Oe(B Rational.new e$B$rI|3h$5$;$F!"e(B

Rational.new e$B$Oe(B Rational() e$B$He(B Unify
e$B$,Dj5A$5$l$F$$$J$$8B$jF1$8!#e(B
Rational.new e$B$Oe(B Unify e$B$N1F6A$r<u$1$J$$!#e(B
new!, reduce e$B$OGQ;_!#e(B

e$B$G$I$&$+$H;W$&$N$G$9$,!#$G!"%9%!<%:$Ke(B mathn.rb e$B$r;H$$$?$$?M$O!"%We(B e$B%m%0%i%$Ge(B Rational.new e$B$r;H$o$:e(B Rational()
e$B$r;H$&$h$&$KJ8=q$GB%$9e(B
e$B$3$H$K$7$?$i$I$&$+$H!#$=$&$9$k$H0U?^$7$Fe(B Rational.new
e$B$r;H$&?M$b$Ge(B
e$B$F$-$F!"$=$l$O$=$l$Ge(B OK e$B$+$H!#e(B

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

Tadayoshi F. e$B$5$s$O=q$-$^$7$?e(B:

new!e$B$Oe(BRubye$B$G<BAu$7$F$$$k$?$a$K$@$1I,MW$J$N$G!"e(BCe$B$G<BAu$9$k$Je(B
e$B$iITMW$G$7$g$&!#e(B
e$B$3$l$C$F!"e(BUnify e$B$,Dj5A$5$l$$$k$H$-$O!“e(BRationa.new(1, 1) e$B$,e(B Integer
e$B$K$J$k$C$F$3$H$G$7$g$&$+e(B(new e$B$Oe(B private e$B$@$1$Ie(B)e$B!#$”$k$$$Oe(B new e$B$rDje(B
e$B5A$7$J$$$H$+!#e(B

e$B$A$g$C$H0UL#$,2r$i$J$+$C$?$G$9!#86$5$s$N$G$b$=$&$J$C$F$$$k$H;W$$$^$9$1e(B
e$B$I!#e(B

e$B$=$&$G$7$?$M!#e(B

e$B:#$^$G$Ne(B rational.rb e$B$N0U?^$r3NG’$9$k$H!De(B

Rational::Unify e$B$,Dj5A$5$l$F$$$k$H$-$O!“e(BRational.new(1,1)
e$B$Ge(B Integer
e$B$rJV$5$;$?$$$N$@$,!”%9%/%j%W%H%l%Y%k$G$O$=$l$O$G$-$J$$!#$=$3$G!"e(Bnew
e$B$r6X;$7!"4X?te(B Rational() e$B$r;H$o$;$k!#$=$7$F!"4X?t$rMQ$$$?e(B
Rational(1, 1) e$B$G$O!"e(B Unify e$B$,Dj5A$5$l$k$H$-$O!"e(BRational
e$B$G$J$/e(B
Integer e$B$Ne(B 1 e$B$,JV$k$h$&$K$9$k!#$3$l$N;EAH$
$Ge(B mathn.rb
e$B$,%9%`!<%:$Ke(B
e$B5!G=$9$k!#e(B

e$B$H$$$&;v$G$9$h$M!#e(B

e$B$=$7$F!"e(BC e$B%l%Y%k$G=q$1$P!“e(BRational.new(1, 1) e$B$Ge(B
Integer e$B$rJV$9$3$H$,$Ge(B
e$B$-$k$N$=$&$5$;$k2DG=@-$,=P$F$-$?!”$H$$$&$3$H$G$9$M!)e(B

Rational.new e$B$Oe(B Rational() e$B$He(B Unify e$B$,Dj5A$5$l$F$$$J$$8B$jF1$8!#e(B
Rational.new e$B$Oe(B Unify e$B$N1F6A$r<u$1$J$$!#e(B
new!, reduce e$B$OGQ;_!#e(B

Rational.new e$B$,e(B Unify e$B$N1F6A$r<u$1$J$$!"$H$$$&$N$O!"$O$C$-$j$HH?BP$7$?e(B
e$B$$$G$9!#MxMQ<T$,e(B mathn e$B$G!"$=$&$$$&4D6-$rA*$V$3$H$O$G$-$F$b!“MxMQ<T$,e(B
e$B7W;;$N2aDx$G!”$=$&$$$&$3$H$r@)8f$G$-$k$H$$$&$N$O$*$+$7$J$3$H$@$H;W$$$^e(B
e$B$9!#e(B

Rational e$B$rFbIt$G;H$&%i%$%V%i%j$G!“e(Bmathn.rb e$B$re(B include
e$B$9$k$H!“Ez$($Oe(B
e$B@5$7$$$,!”=hM}B.EY$,$+$J$jCY$/$J$k$b$N$,$”$j$^$9!#$=$3$3$G!"e(BUnify
e$B$N1Fe(B
e$B6A$r<u$1$J$$M-M}?t$N@8@.$,M_$7$$$H;W$C$?$N$G$9!#e(B

e$B$,!"$A$g$C$H9M$($,B-$j$^$;$s$G$7$?!#e(Bnew
e$B$@$1$,1F6A$r<u$1$J$/$F$b!"B>$Ne(B
e$B1i;;$N7k2L$O1F6A$r<u$1$^$9$+$i!#e(B

e$B$7$+$7!"e(BRational.new(1, 1) e$B$N7k2L$,e(B Rational
e$B$G$J$/$F!“e(BInteger e$B$K$J$ke(B
e$B$N$O5$;}$A0-$$5$$,$7$^$;$s!)e(Bnew e$B$Oe(B private
e$B$N$^$^$,$$$$$+$J$”!#e(B

Rational() e$B$O!"e(B1e$B$D$+e(B2e$B$D$N0z?t$r$H$k!#e(B
e$B$I$A$i$N0z?t$b@0?t!"IbF0>.?tE@?t!"M-M}?t!“J8;zNs$G$”$C$F$h$$!#e(B

e$B<B:]E*$K=EMW$J5!G=$,e(B Rational()
e$B$H$$$&L>A0$G8GDj$5$l$k$N$O%/%i%9$NDj5Ae(B
e$B$H$7$F<e$$$H;W$&$N$G!"86$5$s$KJo$C$Fe(B Rational.convert
e$BAjEv$N$b$N$rMQ0Ue(B
e$B$7$F!"e(BRational()
e$B$O$=$A$i$K4]Ej$2$9$k9=B$$K$7$h$&$+$H;W$$$^$9!#e(B

new!e$B$Oe(BRubye$B$G<BAu$7$F$$$k$?$a$K$@$1I,MW$J$N$G!"e(BCe$B$G<BAu$9$k$Je(B
e$B$iITMW$G$7$g$&!#e(B

e$B$3$l$C$F!"e(BUnify e$B$,Dj5A$5$l$$$k$H$-$O!“e(BRationa.new(1, 1) e$B$,e(B Integer
e$B$K$J$k$C$F$3$H$G$7$g$&$+e(B(new e$B$Oe(B private e$B$@$1$Ie(B)e$B!#$”$k$$$Oe(B new e$B$rDje(B
e$B5A$7$J$$$H$+!#e(B

e$B$A$g$C$H0UL#$,2r$i$J$+$C$?$G$9!#86$5$s$N$G$b$=$&$J$C$F$$$k$H;W$$$^$9$1e(B
e$B$I!#e(B

e$B;d$Oe(B Rational.new e$B$rI|3h$5$;$F!"e(B

new e$B$,$"$k$N$O$$$$$H;W$$$^$9!#e(B

Rational.new e$B$Oe(B Rational() e$B$He(B Unify e$B$,Dj5A$5$l$F$$$J$$8B$jF1$8!#e(B
Rational.new e$B$Oe(B Unify e$B$N1F6A$r<u$1$J$$!#e(B
new!, reduce e$B$OGQ;_!#e(B

Rational.new e$B$,e(B Unify
e$B$N1F6A$r<u$1$J$$!"$H$$$&$N$O!"$O$C$-$j$HH?BP$7$?e(B
e$B$$$G$9!#MxMQ<T$,e(B mathn
e$B$G!"$=$&$$$&4D6-$rA*$V$3$H$O$G$-$F$b!“MxMQ<T$,e(B
e$B7W;;$N2aDx$G!”$=$&$$$&$3$H$r@)8f$G$-$k$H$$$&$N$O$*$+$7$J$3$H$@$H;W$$$^e(B
e$B$9!#e(B

e$B$b$7!“e(Brational e$B$,AH$$3$$G$”$l$P!"e(BRational(1,1) e$B$Oe(B 1
e$B$K$J$k$7!"e(B2/4 e$B$Oe(B
Rational(1,2) e$B$K$J$C$F$b$h$+$C$?$N$G$9!#e(Bmathn
e$B$O$=$l$r$d$C$F$$$k$@$1$@e(B
e$B$H;W$$$^$9!#e(BRational(1,1) e$B$,e(B 1 e$B$K!"e(BComplex(1,0)
e$B$,e(B 1 e$B$K$J$k$H$$$C$?$3e(B
e$B$H$Oe(B Common Lisp e$B$Ne(B canonicalization e$B$HF1$8$G$9!#e(B

Unify e$B$+$I$&$+$r7W;;$N2aDx$G0U<1$9$k$H$$$&$N$O!"e(BFixnum e$B$He(B
Bignum e$B$H$re(B
e$B6hJL$7$F$D$+$$J,$1$k$3$H$HF1$8$/$i$$IT<+A3$@$H;W$$$^$9!#LsJ,$5$l$k$H$+!"e(B
e$B$=$&$$$&$3$H$b4^$a$F!"5,B’$K4p$$$F0l4S$7$F9T$J$o$l$k$Y$-$@$H;W$$$^$9!#e(B

e$B$=$&$$$&0UL#$G!“e(Bnew! e$B$,$”$C$?$j!"e(Breduce
e$B$H$$$&L>A0$,I=$K=P$F$/$k$N$OK>e(B
e$B$^$7$$$3$H$G$O$J$$$N$G!"GQ;_$NJ}8~$K;}$C$F9T$-$?$$$H$$$&$3$H$@$H;W$$$^e(B
e$B$9!#e(B

e$B<B:]E*$K=EMW$J5!G=$,e(B Rational() e$B$H$$$&L>A0$G8GDj$5$l$k$N$O%/%i%9$NDj5Ae(B
e$B$H$7$F<e$$$H;W$&$N$G!"86$5$s$KJo$C$Fe(B Rational.convert e$BAjEv$N$b$N$rMQ0Ue(B
e$B$7$F!"e(BRational() e$B$O$=$A$i$K4]Ej$2$9$k9=B$$K$7$h$&$+$H;W$$$^$9!#e(B

e$B0J>e$K2C$($F!"e(Bnew e$B$re(B reduce e$B$HF1$8$K$7$F!“e(Bnew
e$B$^$o$j$r>/$7@0M}$7$?$N$Ge(B
e$B$”$?$i$7$$$N$rCV$$$F$*$-$^$9!#e(B

http://www.funaba.org/archive/nurat-0.0.3.tar.gz

Rational::Unify e$B$,Dj5A$5$l$F$$$k$H$-$O!“e(BRational.new(1,1) e$B$Ge(B Integer
e$B$rJV$5$;$?$$$N$@$,!”%9%/%j%W%H%l%Y%k$G$O$=$l$O$G$-$J$$!#$=$3$G!"e(Bnew
e$B$r6X;$7!"4X?te(B Rational() e$B$r;H$o$;$k!#$=$7$F!"4X?t$rMQ$$$?e(B
Rational(1, 1) e$B$G$O!"e(B Unify e$B$,Dj5A$5$l$k$H$-$O!"e(BRational e$B$G$J$/e(B
Integer e$B$Ne(B 1 e$B$,JV$k$h$&$K$9$k!#$3$l$N;EAH$
$Ge(B mathn.rb e$B$,%9%`!<%:$Ke(B
e$B5!G=$9$k!#e(B

e$B86$5$s$OJ#;($K9M$(2a$.$F$k$N$G$O!#KM$+$i$9$k$He(B Unify
e$B$NB8:_$He(B new e$B$NB8e(B
e$B:_0U5A$O4X78$,$J$$$G$9!#$H$K$+$/e(B Unify
e$B$,$"$l$P!"$$$:$l$K$7$F$be(B Unify
e$B$5$l$k$Y$-$G$7$g$&$7!#e(B

Rational() e$B$He(B Rational.new e$B$N0c$$$O!"e(BRational()
e$B$OJQ494o$G!"e(B
Rational.new
e$B$O4pACE*$J%3%s%9%H%i%/%?$H$$$&$3$H$@$H;W$$$^$9!#86$5$s$Ne(B
rational
e$B$+$i$b$=$&$$$&0u>]$r<u$1$k$N$G!"4pK\E*$K9M$($F$$$k$3$H$OF1$8e(B
e$B$@$H;W$&$N$G$9$,!#e(B

Rational e$B$rFbIt$G;H$&%i%$%V%i%j$G!“e(Bmathn.rb e$B$re(B include e$B$9$k$H!“Ez$($Oe(B
e$B@5$7$$$,!”=hM}B.EY$,$+$J$jCY$/$J$k$b$N$,$”$j$^$9!#$=$3$3$G!"e(BUnify e$B$N1Fe(B
e$B6A$r<u$1$J$$M-M}?t$N@8@.$,M_$7$$$H;W$C$?$N$G$9!#e(B

e$B$7$+$7!“e(Bmathn
e$B$9$k$HL5BL$JM-M}?t$rGS=|$9$k$3$H$K$J$k$N$G!”$"$k>lLL$G$Oe(B
e$BM-Mx$K$J$j$^$9$h$M!#AH$$3$$K$7$F!"?tCM7O$H$7$F$NO"7H$r6/2=$7!"%j%F%ie(B
e$B%k$rMQ0U$7$?$i!"$@$$$V0c$C$F$/$k$H;W$$$^$9!#e(B

e$B$I$&$$$&?tCMI=8=$G$"$le(B / e$B$He(B div
e$B$A$c$s$H$D$+$$$o$1$k!“E,@Z$J$H$3$m$Ge(B
floor
e$B$J$I$r$D$+$&$J$I$9$l$P!”$"$^$jL5BL$J$3$H$O$J$$$h$&$J5$$,$7$^$9!#e(B
e$B$3$N$?$a$K$be(B div e$B$de(B floor
e$B$N;EMM$OB7$C$F$J$$$H$$$1$J$$$H;W$$$^$9$,!#e(B

e$B$7$+$7!"e(BRational.new(1, 1) e$B$N7k2L$,e(B Rational e$B$G$J$/$F!“e(BInteger e$B$K$J$ke(B
e$B$N$O5$;}$A0-$$5$$,$7$^$;$s!)e(Bnew e$B$Oe(B private e$B$N$^$^$,$$$$$+$J$”!#e(B

e$B$=$N463P$O$o$+$j$^$9$,!"$?$H$($P!"e(BCommon lisp e$B$G$O!"e(B1/1
e$B$O%j%F%i%k$G$9e(B
e$B$,!"e(B1 e$B$K$J$j$^$9!#J#AG?t$Ne(B #c(1 0) e$B$be(B 1
e$B$K$J$j$^$9!#e(Bnew e$B$K8GM-$N2]Bj$Ge(B
e$B$O$J$/!“e(BRational() e$B$de(B Rational.convert
e$B$b!VJQ49!W$7$J$$$H$$$1$J$$$o$1e(B
e$B$G$9$+$i!“e(BInteger
e$B$,JV$k$N$OJQ$G$”$k!”$H$$$($k$+$b$7$l$^$;$s!#e(B

e$B5U$K9M$($F!"e(B1 e$B$rJX59E*$Ke(B 1/1 e$B$de(B 1/1+0i
e$B$HI=8=$7$F$b$$$$$N$@$H9M$($k$Ne(B
e$B$O$I$&$G$7$g$&!#e(B

In article [email protected],
[email protected] (e$B@PDM7=<ye(B) writes:

Rationale$B$Ke(Bnewe$B$,$J$$$N$O$=$&$$$&OC$G$O$J$/$Fe(B, e$B$b$C$H35G0E*$JOC$G$9e(B.

(Fixnume$B$K$be(B)Bignume$B$K$be(Bnewe$B$O$J$$$N$HF1$8$Ge(B, Rationale$B$K$be(Bnewe$B$OI,MW$J$$$7e(B,
e$B$"$C$F$O$J$i$J$$$H9M$($^$7$?e(B. e$B$D$^$je(B, e$BM-M}?t$H$$$&$b$N$Oe(B(e$B35G0E*$K$Oe(B)
ObjectSpacee$BFb$K>o$KB8:_$7$F$$$ke(B. e$B$=$7$Fe(B, Rational(a,b)e$B$G$O%*%V%8%'%/%He(B
e$B$r@8@.$7$F$$$k$o$1$G$O$J$/$=$l$r;2>H$7$F$$$k$H$$$&463P$G$9e(B.

e$B@N!"e(B[ruby-dev:20930]
e$B$G?R$M$?;~$K$O$=$&$$$&OC$G$O$J$+$C$?$h$&$Je(B…

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev :33820 ] the message: "[ruby-dev:33820] Re: rational,
complex and mathn ", on Feb/17 13:00(JST) Shin-ichiro HARA writes:

e$B$H$$$&;v$G$9$h$M!#e(B

e$B$"$N$%e(B…

Rationale$B$Ke(Bnewe$B$,$J$$$N$O$=$&$$$&OC$G$O$J$/$Fe(B,
e$B$b$C$H35G0E*$JOC$G$9e(B.

(Fixnume$B$K$be(B)Bignume$B$K$be(Bnewe$B$O$J$$$N$HF1$8$Ge(B,
Rationale$B$K$be(Bnewe$B$OI,MW$J$$$7e(B,
e$B$"$C$F$O$J$i$J$$$H9M$($^$7$?e(B. e$B$D$^$je(B,
e$BM-M}?t$H$$$&$b$N$Oe(B(e$B35G0E*$K$Oe(B)
ObjectSpacee$BFb$K>o$KB8:_$7$F$$$ke(B. e$B$=$7$Fe(B,
Rational(a,b)e$B$G$O%*%V%8%’%/%He(B
e$B$r@8@.$7$F$$$k$o$1$G$O$J$/$=$l$r;2>H$7$F$$$k$H$$$&463P$G$9e(B.

e$B$=$l$h$+e(B, e$BM-M}?t%j%F%i%k$,$"$l$Pe(B,
newe$B$,I,MW$H$$$&5DO@$b$J$/$J$k$s$G$7$ge(B
e$B$&$1$Ie(B…

e$B0J2<$NI=5-$J$i2DG=@-$,$"$k$H;W$$$^$9$,e(B?

%R(1 2) #=> Rational(1,2)

%re$B$H4V0c$$$d$9$$$+$J$!e(B…
e$B$3$l$O$@$a$+$Je(B?

%/(1 2)

e$B$=$s$J$3$H8@$o$:$Ke(B, e$B$d$O$je(B

1/2

e$B$,%j%F%i%k$K$J$C$F$b$i$($l$Pe(B(^^;

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33832] Re: rational, complex and mathn”
on Sun, 17 Feb 2008 21:44:25 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|e$B$3$l$O$@$a$+$Je(B?
|
| %/(1 2)
|
|e$B$=$s$J$3$H8@$o$:$Ke(B, e$B$d$O$je(B
|
| 1/2
|
|e$B$,%j%F%i%k$K$J$C$F$b$i$($l$Pe(B(^^;

e$BI=5-$@$1$G$h$$$J$ie(B

#<1/2>

e$B$G$$$$$s$8$c$J$$$+$H;W$$$^$9!#%j%F%i%k$K$7$?$$$H$J$k$H8_49@-e(B
e$B$J$I$b4^$a$F$$$m$$$m9M$($J$$$H$$$1$^$;$s$M!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev :33833 ] the message: "[ruby-dev:33833] Re: rational,
complex and mathn ", on Feb/17 21:49(JST) Tanaka A. writes:

(Fixnume$B$K$be(B)Bignume$B$K$be(Bnewe$B$O$J$$$N$HF1$8$Ge(B, Rationale$B$K$be(Bnewe$B$OI,MW$J$$$7e(B,
e$B$"$C$F$O$J$i$J$$$H9M$($^$7$?e(B. e$B$D$^$je(B, e$BM-M}?t$H$$$&$b$N$Oe(B(e$B35G0E*$K$Oe(B)
ObjectSpacee$BFb$K>o$KB8:_$7$F$$$ke(B. e$B$=$7$Fe(B, Rational(a,b)e$B$G$O%*%V%8%’%/%He(B
e$B$r@8@.$7$F$$$k$o$1$G$O$J$/$=$l$r;2>H$7$F$$$k$H$$$&463P$G$9e(B.

e$B@N!"e(B[ruby-dev:20930] e$B$G?R$M$?;~$K$O$=$&$$$&OC$G$O$J$+$C$?$h$&$Je(B…

e$B3N$K$=$&$$$C$F$$$^$9$Me(B(^^;
e$B5;=QE*M}M3$Oe(B[ruby-dev:20930]e$B$NDL$j$J$s$G$7$ge(B
e$B$&$1$Ie(B, e$B:#2s$NM}M3$,K\Ev$NM}M3$@$C$?$H;W$C$F$$$^$9e(B(^^;

e$B$^$"e(B, e$B$I$A$i$K$7$F$be(B,
rationale$B$O86$5$s$,%a%s%F%J$K$J$k$N$Ge(B, e$B86$5$s$NG<e(B
e$BF@$9$k$h$&$K$d$C$F$/$@$5$l$PNI$$$H;W$$$^$9e(B.

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$B$b$&$“$^$j<j$rF~$l$J$$$G$*$3$&$H;W$C$?$N$G$9!”$D$$<j$rF~$l$F$7$^$$$^$7e(B
e$B$?!#e(B

e$B$b$&:n6H$r;O$a$i$l$?$H;W$$$^$9$7!";29M$K$b$J$i$J$$$G$7$g$&$,!“0l1~$”$?e(B
e$B$i$7$$$N$r=P$7$F$*$-$^$9!#e(B

e$B:G?7$N$b$N$O!“$”$k<o$N7W;;$G$O!“86$5$s$Ne(B rational 1.19
e$B$h$j$bB.$$$h$&e(B
e$B$G$9!#?tCM$,Bg$-$/$J$k$HM-Mx$_$?$$$G$9!#KM<+?H$K$h$k!”$$$/$D$+$N<B:]E*e(B
e$B$J1~MQNc$G$O!"$d$O$j86$5$s$N$[$&$,>/$7B.$$$G$9!#e(B

http://www.funaba.org/archive/nurat-0.0.4.tar.gz
http://www.funaba.org/archive/nucomp-0.0.4.tar.gz
http://www.funaba.org/archive/nurat-test.tar.gz

Rationale$B$Ke(Bnewe$B$,$J$$$N$O$=$&$$$&OC$G$O$J$/$Fe(B, e$B$b$C$H35G0E*$JOC$G$9e(B.

(Fixnume$B$K$be(B)Bignume$B$K$be(Bnewe$B$O$J$$$N$HF1$8$Ge(B, Rationale$B$K$be(Bnewe$B$OI,MW$J$$$7e(B,
e$B$"$C$F$O$J$i$J$$$H9M$($^$7$?e(B. e$B$D$^$je(B, e$BM-M}?t$H$$$&$b$N$Oe(B(e$B35G0E*$K$Oe(B)
ObjectSpacee$BFb$K>o$KB8:_$7$F$$$ke(B. e$B$=$7$Fe(B, Rational(a,b)e$B$G$O%*%V%8%’%/%He(B
e$B$r@8@.$7$F$$$k$o$1$G$O$J$/$=$l$r;2>H$7$F$$$k$H$$$&463P$G$9e(B.

e$B%7%s%%k$H$+$bF1$8$J$s$G$7$g$&$1$I!#e(B

e$B$=$&$$$&$3$H$@$H;W$$$^$7$?$,!“e(Bnew
e$B$O$”$C$?$[$&$,$h$$$H;W$$$^$9!#e(B

Complex.new
e$B$,J|CV$5$l$F$$$k$N$O!“JL$N0UL#$G$^$:$$$N$G!”$J$s$H$+$7$?$[e(B
e$B$&$,$$$$$H;W$$$^$9!#e(B

e$B$=$l$h$+e(B, e$BM-M}?t%j%F%i%k$,$"$l$Pe(B, newe$B$,I,MW$H$$$&5DO@$b$J$/$J$k$s$G$7$ge(B
e$B$&$1$Ie(B…

1/2 e$B$,0lHV$h$$$G$9$,!"%?%$%W$N$7$d$9$5$dJ#AG?t$N$3$H$b9M$($k$He(B
1r2e$B!"e(B
1c2 e$B$b<N$FFq$$$h$&$J5$$,$9$k!#e(B