{Complex,Rational}::Unify

Complex e$B$He(B Rational e$B$G$O!“e(BUnify
e$B$,Dj5A$5$l$?>l9g!“2DG=$J$i@0?tEy$K@55,e(B
e$B2=$9$k!”$H$$$&;EAH$,$”$j$^$9!#%.%j%.%j$G$9$,!"$3$N5!G=$r$3$N$^$^;D$7$Fe(B
e$B$$$$$N$+3NG’$7$?$$$G$9!#e(B

e$B$3$N5!G=$O!“KX$Ie(B mathn e$B@lMQ$G$9e(B
(e$B$”$A$3$A$G>!<j$K$D$+$o$l$F$b:$$ke(B)e$B!#AHe(B
e$B$9~$$N%/%i%9$,!"E:IU%i%$%V%i%j$N$?$a$KFCJL$JG[N8$r$3$&$$$&7A$G$9$k!"e(B
e$B$H$$$&$N$O$+$J$jJQ$C$F$$$k$H;W$$$^$9!#e(B

e$B$^$:!"@5<0$J;EMM$J$N$+N"5;$J$N$+!"@bL@$N$7Fq$$$b$N$,B8:_$9$k$3$H;vBV$,e(B
e$BK>$^$7$/$"$j$^$;$s!#e(B

e$B$?$$$7$?IiC4$G$O$"$j$^$;$s$,!"@55,2=$9$k$7$J$$$K$+$+$o$i$:!"7W;;$NEY$Ke(B
e$B@55,2=$9$k$7$J$$$N8!::$r$7$J$1$l$P$J$i$J$$$N$b5$;}$o$k$$$G$9!#e(B

e$B$3$N7o$O0JA0$+$i5$$K$J$C$F$$$^$7$?$,!“EvLL$OF0$+$;$J$$$HD|$a$F$$$^$7$?!#e(B
e$B$7$+$7!”$3$N4V$Ne(B ** e$B$NDj5A$N7o$G!“e(Bruby
e$BB&$GBP=h$7$J$/$F$$$$$8$c$J$$!”$He(B
e$B$$$&0U8+$+$i5?Ld$K;W$$$O$8$a$^$7$?e(B
(e$BG<F@$7$F$$$k$o$1$G$O$J$$e(B)e$B!#2?8N$3$le(B
e$BDx$Ke(B mathn e$B$KFCJL$JG[N8$,I,MW$J$N$G$7$g$&!#e(B

e$B$3$l$,5v$5$l$k$J$i$P!“e(BInteger::TrueDiv e$B$rDj5A$9$k$He(B 1 / 3
e$B$Ge(B Rational
e$B$,JV$k!”$J$s$F$3$H$b$G$-$=$&$G$9!#e(B

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

In message “Re: [ruby-dev:36461] {Complex,Rational}::Unify”
on Mon, 22 Sep 2008 19:59:43 +0900, Tadayoshi F.
[email protected] writes:

|Complex e$B$He(B Rational e$B$G$O!“e(BUnify e$B$,Dj5A$5$l$?>l9g!“2DG=$J$i@0?tEy$K@55,e(B
|e$B2=$9$k!”$H$$$&;EAH$,$”$j$^$9!#%.%j%.%j$G$9$,!“$3$N5!G=$r$3$N$^$^;D$7$Fe(B
|e$B$$$$$N$+3NG’$7$?$$$G$9!#e(B
|
|e$B$3$N5!G=$O!“KX$Ie(B mathn e$B@lMQ$G$9e(B (e$B$”$A$3$A$G>!<j$K$D$+$o$l$F$b:$$ke(B)e$B!#AHe(B
|e$B$9~$$N%/%i%9$,!“E:IU%i%$%V%i%j$N$?$a$KFCJL$JG[N8$r$3$&$$$&7A$G$9$k!“e(B
|e$B$H$$$&$N$O$+$J$jJQ$C$F$$$k$H;W$$$^$9!#e(B
|
|e$B$^$:!”@5<0$J;EMM$J$N$+N"5;$J$N$+!”@bL@$N$7Fq$$$b$N$,B8:_$9$k$3$H;vBV$,e(B
|e$BK>$^$7$/$”$j$^$;$s!#e(B
|
|e$B$?$$$7$?IiC4$G$O$“$j$^$;$s$,!”@55,2=$9$k$7$J$$$K$+$+$o$i$:!"7W;;$NEY$Ke(B
|e$B@55,2=$9$k$7$J$$$N8!::$r$7$J$1$l$P$J$i$J$$$N$b5$;}$o$k$$$G$9!#e(B
|
|e$B$3$N7o$O0JA0$+$i5$$K$J$C$F$$$^$7$?$,!“EvLL$OF0$+$;$J$$$HD|$a$F$$$^$7$?!#e(B
|e$B$7$+$7!”$3$N4V$Ne(B ** e$B$NDj5A$N7o$G!“e(Bruby e$BB&$GBP=h$7$J$/$F$$$$$8$c$J$$!”$He(B
|e$B$$$&0U8+$+$i5?Ld$K;W$$$O$8$a$^$7$?e(B (e$BG<F@$7$F$$$k$o$1$G$O$J$$e(B)e$B!#2?8N$3$le(B
|e$BDx$Ke(B mathn e$B$KFCJL$JG[N8$,I,MW$J$N$G$7$g$&!#e(B

mathn.rbe$B$Oe(Bcomplex.rbe$B$J$I$HF10l$N:n<T$,F1;~$Ke(B(e$B0lBN$H$7$Fe(B)e$B:[email protected](B
e$B$7$?$b$N$@$C$?$N$G!"$=$N$h$&$JG[N8$,B8:_$7$?$N$@$H;W$$$^$9!#e(B

e$B$G!“e(Bcomplexe$B$J$I$,AH$9~$$K$J$C$?e(B(mathne$B$H0lBN$H$$J$5$l$J$/e(B
e$B$J$C$?e(B)e$B8=:
!”$=$N$h$&$J;EAH$_$,I,?$G$"$k$+$HLd$o$l$k$H!"I,e(B
e$B$:$7$b$=$&$G$O$J$$$@$m$&$H;W$$$^$9!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

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

In [ruby-dev :36472 ] the message: "[ruby-dev:36472] Re:
{Complex,Rational}::Unify ", on Sep/23 07:37(JST) Tadayoshi F.
writes:

mathn.rbe$B$Oe(Bcomplex.rbe$B$J$I$HF10l$N:n<T$,F1;~$Ke(B(e$B0lBN$H$7$Fe(B)e$B:[email protected](B
e$B$7$?$b$N$@$C$?$N$G!"$=$N$h$&$JG[N8$,B8:_$7$?$N$@$H;W$$$^$9!#e(B

e$B:n$C$?Ev;~$OC1$K0lBN$@$C$?$@$1$G!"<BAu$KLdBj$,$"$C$?$o$1$G$O$J$+$C$?$He(B
e$B;W$$$^$9!#$7$+$7:#$O5R4QE*$K8+$F4qL/$K8+$($^$9$M!#e(B

e$B<BAu$KLdBj$J$+$C$?$H$$$&$H$=$&$G$b$J$$$H;W$C$F$$$^$7$?$,e(B,
e$B<h$j$"$($:$=e(B
e$B$&$J$C$F$$$?46$8$G$9e(B.

e$B8=:_e(B
complexe$B$,AH$9~$$K$J$C$?0J>e:#$N$h$&$J$b$N$O$h$m$7$/$J$$$H;d$b;We(B
e$B$$$^$9e(B.

e$B$3$N5!G=$rL58z$K$7$h$&$H;W$$$^$9!#2>$K8e!9$3$N5!G=$,$I$&$7$F$bI,MW$K$J$Ce(B
e$B$?$H$7$F$b!"8x<0$N$b$N$K$O$J$jF@$J$$$h$&$K;W$$$^$9!#e(B

e$B$^$:e(B, Unifye$B$J$7$GF0:n$9$k$h$&$Ke(B,
mathne$BB&$GBP1~$5$;$F$/$@$5$$e(B. e$B$=$l$+$ie(B,
Rational/Complex e$B$NJ}$rJQ99$7$F$$$?$@$1$k$H$"$j$,$?$$$G$9e(B.

e$B$3$N9M$($O=U$K5qH]$5$l$F!“e(Bmathn e$B$Oe(B mathn e$B$G4hD%$k!”$H$$$&$3$H$K$J$C$?$Ne(B
e$B$G$9$,!"$"$^$j4hD%$l$F$$$J$$$h$&$K8+$($^$9!#e(Bmathn e$B$,L;X$7$?$H$3$m$O5$e(B
e$B$KF~$C$F$$$^$9$,!“e(Bmathn e$B<+BN$O$”$^$j$&$^$/$$$C$F$$$J$$$N$G!">-MhE*$K$O!"e(B
e$BI,MW$J$ie(B ruby e$BB&$K$J$s$i$+$NJ}K!$G<h$j$3$`$J$I$7$F2r>C$9$Y$-$@$H;W$$$^e(B
e$B$9!#e(B

e$B$H$$$&$+e(B, e$B6a$$>-Mhe(B

int / int -> Rational

e$B$K$J$k$H$9$l$Pe(B, e$B$=$N;~EvA3e(B,
Rationale$B$K4X$9$k@55,2=$O$O$$$k$3$H$K$J$k$He(B
e$B;W$$$^$9e(B.

complexe$B$K4X$7$F$Oe(B, e$B$=$N;~E@$Ge(BCMathe$B$G$9$+$M$'e(B…

e$B8=9Te(B(CMathe$B$J$7e(B)e$B$G$Oe(B,

i*i => -1

e$B$H$J$je(B,

sqrt(i * i) => i

e$B$K$J$i$J$/$J$k$N$Ge(B… e$B$b$7$/$Oe(B,
CMathe$BAjEv$N?6$kIq$$$,I8=`$N?6$kIq$$$Ke(B
e$B$J$k$+e(B…

e$B$=$&$9$l$Pe(B,
mathne$B$NLr3d$O$[$H$s$I=*$o$C$?$3$H$K$J$k$H;W$$$^$9e(B.

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

e$B$^$:e(B, Unifye$B$J$7$GF0:n$9$k$h$&$Ke(B, mathne$BB&$GBP1~$5$;$F$/$@$5$$e(B. e$B$=$l$+$ie(B,
Rational/Complex e$B$NJ}$rJQ99$7$F$$$?$@$1$k$H$"$j$,$?$$$G$9e(B.

e$B$"$"!"E`7k$b6a$$$N$G>/$7A0$K%3%_%C%H$7$F$7$^$$$^$7$?!#Bg>fIW$G$9$+$M!#e(B

i*i => -1

e$B$H$J$je(B,

sqrt(i * i) => i

e$B$K$J$i$J$/$J$k$N$Ge(B… e$B$b$7$/$Oe(B, CMathe$BAjEv$N?6$kIq$$$,I8=`$N?6$kIq$$$Ke(B
e$B$J$k$+e(B…

e$B2DG=@-$H$7$F$O!"e(Bsqrt e$B$O@0?t$dM-M}?t$bJV$;$k$N$G!“e(BMath
e$B$+e(B CMath e$B$+$H$$$&e(B
e$BJ,$1J}$,$I$&$+$H$$$&$N$b$”$j$^$9$M!#e(B

e$B$=$&$$$&J}8~@-$,$O$C$-$j$7$F$$$l$P!“e(B**
e$B$NDj5A$bJQ$($F$h$+$C$?$+$J$H;W$$e(B
e$B$^$9!#$^$,$j$J$j$K$be(B CMath e$B$b$”$j$^$9$7!#e(B

e$B$=$&$$$($P!"e(Bpython e$B$be(B 2 e$B$G$O!"e(B(-8)(1.0/3)
e$B$,%(%i!<$K$J$j$^$9$,!"e(B3 e$B$Ge(B
e$B$O!"e(B(-8)
(1/3) e$B$GJ#AG?t$,JV$k$h$&$K$J$C$F$$$^$9!#e(B

from cmath import *
1j * 1j
(-1+0j)

sqrt(1j * 1j)
1j

1/3
0.33333333333333331

(-8)**(1/3)
(1.0000000000000002+1.7320508075688772j)

main@190-20080923> require ‘cmath’
#=> true
main@190-20080923> include CMath
#=> Object
main@190-20080923> Complex(0,1) * Complex(0,1)
#=> (-1+0i)
main@190-20080923> sqrt(Complex(0,1) * Complex(0,1))
#=> (0.0+1.0i)
main@190-20080923> 1/3
#=> 0
main@190-20080923> (-8)(1/3)
#=> 1
main@190-20080923> (-8)
(1.0/3)
#=> NaN
main@190-20080923> Complex(-8)**(1.0/3)
#=> (1.0+1.73205080756888i)

mathn.rbe$B$Oe(Bcomplex.rbe$B$J$I$HF10l$N:n<T$,F1;~$Ke(B(e$B0lBN$H$7$Fe(B)e$B:[email protected](B
e$B$7$?$b$N$@$C$?$N$G!"$=$N$h$&$JG[N8$,B8:_$7$?$N$@$H;W$$$^$9!#e(B

e$B:n$C$?Ev;~$OC1$K0lBN$@$C$?$@$1$G!"<BAu$KLdBj$,$"$C$?$o$1$G$O$J$+$C$?$He(B
e$B;W$$$^$9!#$7$+$7:#$O5R4QE*$K8+$F4qL/$K8+$($^$9$M!#e(B

e$B$G!“e(Bcomplexe$B$J$I$,AH$9~$$K$J$C$?e(B(mathne$B$H0lBN$H$$J$5$l$J$/e(B
e$B$J$C$?e(B)e$B8=:
!”$=$N$h$&$J;EAH$_$,I,?$G$"$k$+$HLd$o$l$k$H!"I,e(B
e$B$:$7$b$=$&$G$O$J$$$@$m$&$H;W$$$^$9!#e(B

e$B$3$N5!G=$rL58z$K$7$h$&$H;W$$$^$9!#2>$K8e!9$3$N5!G=$,$I$&$7$F$bI,MW$K$J$Ce(B
e$B$?$H$7$F$b!"8x<0$N$b$N$K$O$J$jF@$J$$$h$&$K;W$$$^$9!#e(B

e$B0l1~IU$12C$($k$H!“5U$Ke(B ruby
e$B$K<h$j9~$s$G$7$^$&;v$b9M$($i$l$^$9!#%$%s%?e(B
e$B%W%j%?!“e(BVM e$B$N=i4|2=;~$K@_Dj$G$-$k%U%i%0$rMQ0U$7$F!“e(Bruby
e$B$N=i4|>uBV$rJQe(B
e$B99$7$F$7$^$$$^$9!#$?$H$($P!“e(Bruby e$B$Ne(B -m
e$B%*%W%7%g%s$rM?$($F5/F0$9$k$H?t3Xe(B
e$B%b!<%I$K$J$k!”$”$k$$$Oe(B mruby
e$B$H$$$&JL$N%3%^%s%I$H$K$7$F$7$^$&!”$H$$$&$he(B
e$B$&$J$3$H$b$”$jF@$k$H;W$$$^$9!#?t3X$J$^$j$Ne(B ruby
e$B$H$7$F!"K\Mh$Ne(B ruby e$B$He(B
e$B40A4$K6hJL$7$F$7$^$$$9!#CfESH>C<$J=q$-49$($r$9$k$h$j$$$$$H;W$$$^$9!#e(B

e$B$3$N9M$($O=U$K5qH]$5$l$F!“e(Bmathn e$B$Oe(B mathn
e$B$G4hD%$k!”$H$$$&$3$H$K$J$C$?$Ne(B
e$B$G$9$,!"$"$^$j4hD%$l$F$$$J$$$h$&$K8+$($^$9!#e(Bmathn
e$B$,L;X$7$?$H$3$m$O5$e(B
e$B$KF~$C$F$$$^$9$,!“e(Bmathn
e$B<+BN$O$”$^$j$&$^$/$$$C$F$$$J$$$N$G!">-MhE*$K$O!"e(B
e$BI,MW$J$ie(B ruby
e$BB&$K$J$s$i$+$NJ}K!$G<h$j$3$`$J$I$7$F2r>C$9$Y$-$@$H;W$$$^e(B
e$B$9!#e(B

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

In [ruby-dev :36487 ] the message: "[ruby-dev:36487] Re:
{Complex,Rational}::Unify ", on Sep/23 23:07(JST)
Tadayoshi F. writes:

e$B$^$:e(B, Unifye$B$J$7$GF0:n$9$k$h$&$Ke(B, mathne$BB&$GBP1~$5$;$F$/$@$5$$e(B. e$B$=$l$+$ie(B,
Rational/Complex e$B$NJ}$rJQ99$7$F$$$?$@$1$k$H$"$j$,$?$$$G$9e(B.

e$B$"$"!"E`7k$b6a$$$N$G>/$7A0$K%3%_%C%H$7$F$7$^$$$^$7$?!#Bg>fIW$G$9$+$M!#e(B

mathne$BF0$+$J$/$J$C$F$$$k$H;W$&$N$Ge(B,
e$B$"$^$jBg>fIW$G$O$"$j$^$;$se(B.

e$B$=$l$Oe(B, e$B$H$b$+$/e(B, e$B$I$&BP1~$9$k$+$G$9$,e(B.

e$B$$$^$Ne(B, rational.c complex.c e$B$N<BAu$@$He(B,
mathne$B$N$[$&$G$Oe(B, e$B;MB’1i;;$=$Ne(B
e$BB>$r$9$Y$F:FDj5A$9$kI,MW$,=P$F$-$=$&$G$9e(B.

Rationale$B$@$H0J2<$N4X?te(B:

nurat_s_canonicalize_internal_no_reduce
nurat_s_canonicalize_internal_no_reduce

e$B$b$7$/$Oe(B,

nurat_s_new_internal

e$B$re(B, Complex e$B$@$H0J2<$N4X?te(B:

nucomp_s_canonicalize_internal

e$B$b$7$/$Oe(B,

nucomp_s_new_internal

e$B$re(B
Rubye$B%l%Y%k$G8F$S=P$;$k$h$&$K$7$F$$$?$@$1$k$H$&$l$7$$$N$G$9$,e(B?

e$B2DG=@-$H$7$F$O!"e(Bsqrt e$B$O@0?t$dM-M}?t$bJV$;$k$N$G!“e(BMath e$B$+e(B CMath e$B$+$H$$$&e(B
e$BJ,$1J}$,$I$&$+$H$$$&$N$b$”$j$^$9$M!#e(B

e$B$?$7$+$Ke(B, e$B$=$l$O$$$($^$9$M$'e(B…

e$B$=$&$$$&J}8~@-$,$O$C$-$j$7$F$$$l$P!“e(B** e$B$NDj5A$bJQ$($F$h$+$C$?$+$J$H;W$$e(B
e$B$^$9!#$^$,$j$J$j$K$be(B CMath e$B$b$”$j$^$9$7!#e(B

e$B$=$&$$$($P!"e(Bpython e$B$be(B 2 e$B$G$O!"e(B(-8)(1.0/3) e$B$,%(%i!<$K$J$j$^$9$,!"e(B3 e$B$Ge(B
e$B$O!"e(B(-8)
(1/3) e$B$GJ#AG?t$,JV$k$h$&$K$J$C$F$$$^$9!#e(B

e$B$U!<$se(B… e$B2?$H$J$/IT;W5De(B.

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

mathne$BF0$+$J$/$J$C$F$$$k$H;W$&$N$Ge(B, e$B$"$^$jBg>fIW$G$O$"$j$^$;$se(B.

e$B%.%j%.%j$G?=$7J,$1$"$j$^$;$s!#e(B

nurat_s_new_internal

e$B$re(B, Complex e$B$@$H0J2<$N4X?te(B:

nucomp_s_canonicalize_internal

e$B$b$7$/$Oe(B,

nucomp_s_new_internal

e$B$re(B Rubye$B%l%Y%k$G8F$S=P$;$k$h$&$K$7$F$$$?$@$1$k$H$&$l$7$$$N$G$9$,e(B?

e$B$=$l$O$I$&$J$s$G$7$g$&$+!#=q$-49$($H$J$k$H!"$3$l$i$r8F$S=P$90UL#$O$J$$e(B
e$B$h$&$J5$$,$9$k$s$G$9$,!#@55,2=$5$l$k>l9g$O!“8F$S=P$9I,MW$,$J$$$7!”$=$le(B
e$B0J30$N>l9g$G$be(B Rational.convert
e$B$J$I$r8F$Y$P$$$$$h$&$J5$$,$7$?$N$G$9$,!#e(B

e$B$$$E$l$K$7$F$b8x3+$9$Y$-$b$N$G$J$$$b$N$@$H;W$$$^$9!#$=$3$^$G$d$i$J$$$He(B
e$B$$$1$J$$$H$9$k$H!"e(BUnify
e$B$rDj5A$7$F1>!9$H$$$&OC$HHf$Y$F$b$^$7$H$O8@$($Je(B
e$B$$$h$&$K;W$$$^$9!#e(B

e$B$=$&$$$($P!"e(Bpython e$B$be(B 2 e$B$G$O!"e(B(-8)(1.0/3) e$B$,%(%i!<$K$J$j$^$9$,!"e(B3 e$B$Ge(B
e$B$O!"e(B(-8)
(1/3) e$B$GJ#AG?t$,JV$k$h$&$K$J$C$F$$$^$9!#e(B

e$B$U!<$se(B… e$B2?$H$J$/IT;W5De(B.

mathn e$B$b4pK\E*$K$OF1$8$@$H;W$$$^$9$,!#e(Bcmath
e$B$O$H$b$+$/!"??$CEv$K?J2=$7e(B
e$B$F$$$k$h$&$K8+$($^$9!#e(B

e$B@PDM$5$s$,$I$&9M$($F$$$k$+$o$+$j$^$;$s$,!"$I$s$I$s=q$-49$($F$$$/!"$H$$e(B
e$B$&J}K!$J$i$3$&$$$&$N$G$b$$$$$N$+$b!#$I$C$A$K$7$F$b0l;~N?$.$C$F46$8$G$9e(B
e$B$1$I!#e(B

Index: lib/mathn.rb

— lib/mathn.rb (revision 19552)
+++ lib/mathn.rb (working copy)
@@ -18,19 +18,76 @@
Math = CMath
end

+class Object
+

  • def canon
  • if Rational === self
  •  if denominator == 1
    
  • return numerator
  •  end
    
  • elsif Complex === self
  •  if Integer === imag && imag == 0
    
  • return real
  •  end
    
  • end
  • self
  • end
  • private :canon

+end
+
+class Numeric
+

  • class << self
  • def def_canon(*ids)
  •  for id in ids
    
  • module_eval <<-“end;”
  • alias_method :#{id.object_id}, :#{id.to_s}
  • private :#{id.object_id}
  • def #{id.to_s}(*args, &block)
  •  __#{id.object_id}__(*args, &block).__send__(:canon)
    
  • end
  • end;
  •  end
    
  • end
  • end

+end
+
class Fixnum
remove_method :confused:
alias / quo
+

  • def_canon *(instance_methods - Object.methods - [:canon])

end

class Bignum
remove_method :confused:
alias / quo
+

  • def_canon *(instance_methods - Object.methods - [:canon])

end

+alias RationalOrig Rational
+private :RationalOrig
+def Rational(*args) RationalOrig(*args).send(:canon) end
+
class Rational
Unify = true

  • class << self

  • alias convert_orig convert

  • private :convert_orig

  • def convert(*args) convert_orig(*args).send(:canon) end

  • end

  • def_canon *(instance_methods - Object.methods - [:canon])

  • alias power! **

    def ** (other)
    @@ -169,6 +226,39 @@
    module_function :rsqrt
    end

+alias ComplexOrig Complex
+private :ComplexOrig
+def Complex(*args) ComplexOrig(*args).send(:canon) end
+
class Complex
Unify = true
+

  • class << self
  • alias convert_orig convert
  • private :convert_orig
  • def convert(*args) convert_orig(*args).send(:canon) end
  • end
  • def_canon *(instance_methods - Object.methods - [:canon])

end
+
+class NilClass
+

  • def to_r() 0 end
  • def to_c() 0 end

+end
+
+class Integer
+

  • def to_r() self end
  • def to_c() self end

+end
+
+class Float
+

  • def_canon *(instance_methods - Object.methods - [:canon])

+end

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

In [ruby-dev :36565 ] the message: "[ruby-dev:36565] Re:
{Complex,Rational}::Unify ", on Sep/25 21:31(JST) Tadayoshi F.
writes:

e$B@PDM$5$s$,$I$&9M$($F$$$k$+$o$+$j$^$;$s$,!"$I$s$I$s=q$-49$($F$$$/!"$H$$e(B
e$B$&J}K!$J$i$3$&$$$&$N$G$b$$$$$N$+$b!#$I$C$A$K$7$F$b0l;~N?$.$C$F46$8$G$9e(B
e$B$1$I!#e(B

e$B;w$?$3$H$O$9$k$3$H$K$J$kCN$l$^$;$se(B.

e$B$?$@e(B,
Complex/Rationale$B0J30$Ne(BNumerice$B$KBP$7$F$NCV$-49$($OI,MW$J$$$H;W$$e(B
e$B$^$9e(B.
e$B8=>u$G$O$=$l$i$N%/%i%9$N%a%=%C%I$Ge(BComplex/Rationale$B$rJV$9$b$N$O$4e(B
e$B$/8B$i$l$F$$$^$9$+$ie(B.

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

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

In [ruby-dev :36561 ] the message: "[ruby-dev:36561] Re:
{Complex,Rational}::Unify ", on Sep/25 18:54(JST) Tadayoshi F.
writes:

e$B$re(B Rubye$B%l%Y%k$G8F$S=P$;$k$h$&$K$7$F$$$?$@$1$k$H$&$l$7$$$N$G$9$,e(B?

e$B$=$l$O$I$&$J$s$G$7$g$&$+!#=q$-49$($H$J$k$H!"$3$l$i$r8F$S=P$90UL#$O$J$$e(B
e$B$h$&$J5$$,$9$k$s$G$9$,!#@55,2=$5$l$k>l9g$O!“8F$S=P$9I,MW$,$J$$$7!”$=$le(B
e$B0J30$N>l9g$G$be(B Rational.convert e$B$J$I$r8F$Y$P$$$$$h$&$J5$$,$7$?$N$G$9e(B
e$B$,!#e(B

e$B$3$l$i$N%a%=%C%I$r8F$S=P$9$N$G$O$J$/e(B,
e$B:FDj5A$9$k$3$H$K$h$C$F?6$kIq$$$re(B
e$BJQ$($h$&$H;W$C$?$o$1$G$9e(B.

e$B$$$E$l$K$7$F$b8x3+$9$Y$-$b$N$G$J$$$b$N$@$H;W$$$^$9!#$=$3$^$G$d$i$J$$$He(B
e$B$$$1$J$$$H$9$k$H!"e(BUnify e$B$rDj5A$7$F1>!9$H$$$&OC$HHf$Y$F$b$^$7$H$O8@$($Je(B
e$B$$$h$&$K;W$$$^$9!#e(B

e$B8x3+$H8@$C$F$be(B,
publice$B$K$9$kI,MW$O$J$/e(Bprivatee$B$G$+$^$$$^$;$se(B. e$B$=$l$G$be(B
NGe$B$G$9$+e(B? Rubye$BE*$K$Oe(Bprivatee$B$G$"$l$Pe(B,
e$B$=$l$OFbIt$G;H$&$b$N$H$$$&$3$H$Ke(B
e$B$J$k$N$Ge(B, e$B$=$l$[$ILdBj$J$$$H;W$$$^$9$,e(B?

e$B>-MhE*$K;MB’1i;;$,e(Bmathne$BE*$K$J$k$3$H$,M=B,$5$le(B,
e$B$=$&$J$C$?$H$-$K$O:#$“e(B
e$B$k%3!<%I$r85$KLa$9$@$1$G:Q$`$@$1$J$N$Ke(B,
(e$B$3$N$h$&$JBP1~$r$7$F$$$?$@$1e(B
e$B$J$$$J$ie(B, ) mathn.rb e$BB&$Ge(B,
Rational/Complexe$B$rJV$92DG=@-$N$”$k1i;;;Re(B,
e$B%a%=%C%I$r$9$Y$F:FDj5A$7$J$/$F$O$J$i$J$/$J$k$N$Oe(B,
e$B>/!9LLE]$H$$$&$+e(B2e$BEYe(B
e$B<j4V$H8@$&$+e(B… e$B$H;W$C$?$o$1$G$9e(B.

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

e$B$3$l$i$N%a%=%C%I$r8F$S=P$9$N$G$O$J$/e(B, e$B:FDj5A$9$k$3$H$K$h$C$F?6$kIq$$$re(B
e$BJQ$($h$&$H;W$C$?$o$1$G$9e(B.

e$B$h$&$9$k$K!“e(Bruby e$B$+$i8F$Y$k$H$$$&$h$j!”$`$7$me(B
Complex/Rational e$B$+$ie(B
ruby e$B$NDj5A$r8F$Y!"$H$$$&$3$H$G$9$h$M!#e(B

e$B8x3+$H8@$C$F$be(B, publice$B$K$9$kI,MW$O$J$/e(Bprivatee$B$G$+$^$$$^$;$se(B. e$B$=$l$G$be(B
NGe$B$G$9$+e(B? Rubye$BE*$K$Oe(Bprivatee$B$G$"$l$Pe(B, e$B$=$l$OFbIt$G;H$&$b$N$H$$$&$3$H$Ke(B
e$B$J$k$N$Ge(B, e$B$=$l$[$ILdBj$J$$$H;W$$$^$9$,e(B?

NG e$B$G$7$g$&!#@5D>$$$C$F:G0-$NItN`$+$b!#e(B

e$B>-MhE*$K;MB’1i;;$,e(Bmathne$BE*$K$J$k$3$H$,M=B,$5$le(B, e$B$=$&$J$C$?$H$-$K$O:#$“e(B
e$B$k%3!<%I$r85$KLa$9$@$1$G:Q$`$@$1$J$N$Ke(B, (e$B$3$N$h$&$JBP1~$r$7$F$$$?$@$1e(B
e$B$J$$$J$ie(B, ) mathn.rb e$BB&$Ge(B, Rational/Complexe$B$rJV$92DG=@-$N$”$k1i;;;Re(B,
e$B%a%=%C%I$r$9$Y$F:FDj5A$7$J$/$F$O$J$i$J$/$J$k$N$Oe(B, e$B>/!9LLE]$H$$$&$+e(B2e$BEYe(B
e$B<j4V$H8@$&$+e(B… e$B$H;W$C$?$o$1$G$9e(B.

e$B@PDM$5$s$+$i8+$F!V$@$1!W$C$F$$$&$N$O$=$&$J$N$+$b$7$l$^$;$s$,!"2DG=$G$"e(B
e$B$k$J$i$P!"KM$+$i$9$l$P>/!9LLE]$G$be(B mathn
e$B$G:FDj5A$9$k!V$@$1!W$C$F;W$C$Fe(B
e$B$7$^$$$^$9!#$3$l$Oe(B mathn e$B$,$d$k$Y$-;v$J$N$G!#e(B

e$B$^$C$?$/$NFbIt;v>p$GMQ0U$5$l$?$b$N$D$$$F!“e(BComplex/Rational
e$BFbIt$G$NMxMQe(B
e$B$b4^$a$F!”$9$Y$Fe(B VM
e$B7PM3$G4V@\8F$S=P$7$7$J$/$F$O$J$i$J$/$J$j$^$9!#FbIte(B
e$B$NET9g$G4JC1$KJQ99$b$G$-$J$/$J$j$^$9$7!"$3$l$O0lBN2=$G$O$J$$$G$9$+!#e(B

mathn
e$B$O7k6I%O%C%/$@$H;W$$$^$9$,!"$=$N$?$a$KM=$aN"8}$r3+$1$F$*$1!"$C$Fe(B
e$B;v$@$H;W$$$^$9!#<B:]$N$H$3$m!"@PDM$5$s$,Ds0F$7$F$$$k:FDj5A$O!"$^$o$j$/e(B
e$B$I$$$@$1$G=`Hw$O$3$C$A$G$d$k$3$H$K$J$k$o$1$G$9$+$i!"<B<A!"e(Bmathn
e$B$O%9%#%Ce(B
e$B%A$r2!$9$@$1$H$$$C$F$$$$$H;W$$$^$9!#e(B

e$B$J$K$,$J$s$G$be(B mathn
e$BB&$G$OBP=h$G$-$J$$$H$$$&$N$G$"$l$P!"$b$&>/$7$^$7$He(B
e$B;W$($k9M$($b$"$j$^$9$,!“e(Bmathn
e$B$G$J$s$H$+$G$-$k$J$i2DG=$J8B$j$=$&$9$Y$-e(B
e$B$@$H;W$$$^$9!#E`7k;~9o$O2a$.$F$7$^$$$^$7$?$,!”$h$m$7$/$*4j$$$7$^$9!#e(B

e$BEvA3e(B, mathne$B$GBP1~$9$k$3$H$O$G$-$^$9e(B.

e$B$,e(B, e$B$3$NLdBj$O$U$J$P$5$s$,2a5n$N8_49@-$r$J$s$NF10U$b$J$/JQ99$7$?$3$H$Ke(B
e$B$"$j$^$9e(B. e$B;d$H$7$F$Oe(B, e$B$3$NJQ99$KBP$7$Fe(B, e$B:G>.8B$NJQ99$GBP1~$9$k$?$a$K8re(B
e$B>D$7$F$-$^$7$?$,e(B, e$B8r>D$O0UL#$,$J$+$C$?$h$&$G$9e(B.

e$B$=$l$O$^$C$?$/0c$$$^$9!#e(B[ruby-dev:36468]
e$B$G!"$^$D$b$H$5$s$b0U5A$rG’$a$Fe(B
e$B$$$^$9$7!“e(B[ruby-dev:36483]
e$B$G@PDM$5$s$b0U5A$rG’$a$F$$$^$9!#JQ99$r5^$$$@e(B
e$B$N$OE`7kA0$@$C$?$+$i$G!”@PDM$5$s$bD>$9$3$H$r@k8@$7$F$$$^$9!#e(B

e$B;d$H$7$F$Oe(B, e$B$9$G$KB8:_$9$k%i%$%V%i%j$KBP$9$k8_49@-$b$J$/FHCGE*$Ke(BAPIe$B$re(B
e$BJQ99$7$?J}$,@dBPE*$K0-$$$H9M$($F$$$^$9$N$Ge(B, rational.c/complex.c e$B$re(B
mathne$B$,F0:n$9$k>uBV$KLa$9$+e(B, e$B$=$b$=$be(B rational.c/complex.c e$B$rF3F~$7$?e(B
e$B$N$,Aa$9$.$?$H$$$($J$/$b$J$$$G$9e(B. ruby-1.9.1e$B$G$O$5$i$KAL$C$Fe(B, 1.8e$B$Ne(B
rational.rb/complex.rbe$B$KLa$9$3$H$rDs0F$7$^$9e(B.

e$B0-$$$H$+$=$&$$$&LdBj$8$c$J$$$H;W$$$^$9$M!#JQ99$9$kA0$K!">/$7D4$Y$?$s$Ge(B
e$B$9$,!“e(BUnify
e$B$rDj5A$7$?$i?6Iq$$$,JQ99$K$J$k!”$H$$$&$N$O!"8x<0$K$bHs8x<0e(B
e$B$K$bJ8=q$G$O8l$i$l$F$$$J$$$H;W$$$^$9!#e(B

e$BKM$H$7$F$O!"@PDM$5$s$N0U;V$r$+$J$jB:=E$7$F$-$?$D$b$j$G$9!#$=$l$O!“e(B
Complex/Rational
e$B$N86:n<T$@$+$i$G$9$1$I!#<B:]$N$H$3$m@PDM$5$s$K$9$Y$F$*e(B
e$B;G$$$rN)$F$J$1$l$P$J$i$J$$$H;W$C$F$$$J$$$N$G$9$,!”:#2s$b!"@PDM$5$s$NOCe(B
e$B$rJ9$$$F$$$^$9$M!#e(B

e$B85$KLa$9$H$$$&$N$b!"?=$7Lu$J$$$G$9$,!“e(Brationrl.rbe$B!“e(Bcomplex.rbe$B!“e(B
mathn.rb
e$B$NJ|CV$V$j!”:#2s$K$7$F$bLLE]$@$+$i!”$H$$$&8@$$J}$G$9$+$i!#KM$He(B
e$B$7$F$O!”$J$s$J$i<+J,$GD>$7$F$b$$$$$J$H;W$$$^$7$?$,!"@PDM$5$s$Ne(B
mathn e$B$Oe(B
e$B<+J,$G4hD%$j$?$$!"$H$$$&0U;V$rB:=E$7$?$D$b$j$G$9!#e(B

e$B$5$i$K$$$($Pe(B, e$B:#2s$N$U$J$P$5$s$NFHCGE*$JJQ99e(B/e$BBP1~$OA4$/G<F@$,$$$-$^$;e(B
e$B$se(B. e$B3HD%%i%$%V%i%jE:IU%i%$%V%i%j$J$i$^$@$7$bAH$9~$%/%i%9$K4X$9$kJQe(B
e$B99$K4X$9$k$3$H$J$N$G$3$H$5$i$G$9e(B. rational.c/complex.c e$B$K4X$7$F$Oe(B, e$B<Be(B
e$B:]$K$O86%3!<%Ie(B, e$B@5LZ%3!<%Ie(B, e$B$=$NB>$HJ#?t$N<BAu$,$"$k$N$Ge(B, e$B$b$C$H$^$H$be(B
e$B$K%a%s%F%J%s%9$G$-$kJ}e(B(e$B>e5-$N0UL#$Ge(B)e$B$N%3!<%I$KJQ99$r$9$k$3$H$b4^$a$F8!e(B
e$BF$$9$kI,MW$,$"$k$H;W$$$^$9e(B.

e$BAH$9~$$@$+$i$3$=!"e(Bmathn
e$B$N>!<j$K$G$-$J$$$G$9!#:#2s$N@PDM$5$s$N<gD%$Oe(B
e$B$`$7$m!"e(BComplex/Rational
e$B$r;dJ*2=$7$F$$$k$h$&$K8+$($k$s$G$9$h!#$A$g$C$He(B
e$B$7$?@PDM$5$s$N2fPV$@$H;W$$$^$9!#e(B

e$B$3$NLdBj$KBP$7$F$Oe(B, e$BEvA3$U$J$P$5$s$G$O7hDj$G$-$^$;$s$N$Ge(B, e$B$^$D$b$H$5$se(B
e$B$K:[Dj$r$*4j$$CW$7$^$9e(B.

e$B$=$l$O>!<j$K$I$&$>!#e(B

e$B$?$@!“4{$K$$$C$?$h$&$K!”%.%j%.%j$K$J$C$Fe(B mathn
e$B$K$b1F6A$,$G$k$h$&$K$J$Ce(B
e$B$?$N$O?=$7J,$1$J$$!"$H;W$C$F$$$^$9!#8@$$Lu$a$$$F$$$^$9$,!"$7$+$7$=$l$be(B
e$B@PDM$5$s$X$NG[N8!“1sN8$,$”$C$?$3$H$b1F6A$7$F$$$k$H;W$$$^$9!#=c?h$Ke(B
Complex/Rational e$B$N;v$r9M$($l$P!"$b$C$HAa$/7hCG$9$Y$-$G$7$?!#e(B

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

In [ruby-dev :36605 ] the message: "[ruby-dev:36605] Re:
{Complex,Rational}::Unify ", on Sep/26 20:21(JST) Tadayoshi F.
writes:

e$B$J$K$,$J$s$G$be(B mathn e$BB&$G$OBP=h$G$-$J$$$H$$$&$N$G$"$l$P!"$b$&>/$7$^$7$He(B
e$B;W$($k9M$($b$"$j$^$9$,!“e(Bmathn e$B$G$J$s$H$+$G$-$k$J$i2DG=$J8B$j$=$&$9$Y$-e(B
e$B$@$H;W$$$^$9!#E`7k;~9o$O2a$.$F$7$^$$$^$7$?$,!”$h$m$7$/$*4j$$$7$^$9!#e(B

e$BEvA3e(B, mathne$B$GBP1~$9$k$3$H$O$G$-$^$9e(B.

e$B$,e(B,
e$B$3$NLdBj$O$U$J$P$5$s$,2a5n$N8_49@-$r$J$s$NF10U$b$J$/JQ99$7$?$3$H$Ke(B
e$B$"$j$^$9e(B. e$B;d$H$7$F$Oe(B, e$B$3$NJQ99$KBP$7$Fe(B,
e$B:G>.8B$NJQ99$GBP1~$9$k$?$a$K8re(B
e$B>D$7$F$-$^$7$?$,e(B, e$B8r>D$O0UL#$,$J$+$C$?$h$&$G$9e(B.

e$B;d$H$7$F$Oe(B,
e$B$9$G$KB8:_$9$k%i%$%V%i%j$KBP$9$k8_49@-$b$J$/FHCGE*$Ke(BAPIe$B$re(B
e$BJQ99$7$?J}$,@dBPE*$K0-$$$H9M$($F$$$^$9$N$Ge(B, rational.c/complex.c
e$B$re(B
mathne$B$,F0:n$9$k>uBV$KLa$9$+e(B, e$B$=$b$=$be(B rational.c/complex.c
e$B$rF3F~$7$?e(B
e$B$N$,Aa$9$.$?$H$$$($J$/$b$J$$$G$9e(B.
ruby-1.9.1e$B$G$O$5$i$KAL$C$Fe(B, 1.8e$B$Ne(B
rational.rb/complex.rbe$B$KLa$9$3$H$rDs0F$7$^$9e(B.

e$B$5$i$K$$$($Pe(B,
e$B:#2s$N$U$J$P$5$s$NFHCGE*$JJQ99e(B/e$BBP1~$OA4$/G<F@$,$$$-$^$;e(B
e$B$se(B.
e$B3HD%%i%$%V%i%jE:IU%i%$%V%i%j$J$i$^$@$7$bAH$9~$%/%i%9$K4X$9$kJQe(B
e$B99$K4X$9$k$3$H$J$N$G$3$H$5$i$G$9e(B. rational.c/complex.c
e$B$K4X$7$F$Oe(B, e$B<Be(B
e$B:]$K$O86%3!<%Ie(B, e$B@5LZ%3!<%Ie(B,
e$B$=$NB>$HJ#?t$N<BAu$,$"$k$N$Ge(B, e$B$b$C$H$^$H$be(B
e$B$K%a%s%F%J%s%9$G$-$kJ}e(B(e$B>e5-$N0UL#$Ge(B)e$B$N%3!<%I$KJQ99$r$9$k$3$H$b4^$a$F8!e(B
e$BF$$9$kI,MW$,$"$k$H;W$$$^$9e(B.

e$B$3$NLdBj$KBP$7$F$Oe(B, e$BEvA3$U$J$P$5$s$G$O7hDj$G$-$^$;$s$N$Ge(B,
e$B$^$D$b$H$5$se(B
e$B$K:[Dj$r$*4j$$CW$7$^$9e(B.

PS.
e$B>>K$5$s$OCN$C$F$$$k$H;W$$$^$9$,e(B,
e$B:#=5$O5Y2KCf$G$9$N$G$"$^$jH?1~$O$G$-e(B
e$B$J$$$H$*$b$$$^$9e(B.

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

e$BJdB-$7$^$9!#e(B

e$BJL$K:#2s$N7o!“FMA3$@$+$iFHCGE*$@$+$i!”@Z$l$F$k$o$1$8$c$J$$$G$9$h$M!#e(B

e$B=$@5$9$k;v$K$OF10U$7$F$$$k$o$1$G$9!#$?$@!"=$@5$7$F$d$k$+$i!“26$N8@$&DLe(B
e$B$j$K$7$m!”$H8@$C$FCG$i$l$?$+$i@Z$l$F$k$o$1$8$c$J$$$G$9$+!#e(B

e$BKM$Oe(B [ruby-dev:36472] e$B$G!"e(B

e$B$3$N5!G=$rL58z$K$7$h$&$H;W$$$^$9!#2>$K8e!9$3$N5!G=$,$I$&$7$F$bI,MW$K$J$Ce(B
e$B$?$H$7$F$b!"8x<0$N$b$N$K$O$J$jF@$J$$$h$&$K;W$$$^$9!#e(B

e$B$H0E$KI|3h$N2DG=@-$b<($7$F$$$^$9!#K\Ev$KLdBj$J$i!"La$9;v$b$G$-$^$7$?!#e(B

mathn
e$B$GBP1~$G$-$J$$$J$iB>$K9M$($b$"$k!"$H$$$&$3$H$b0U<1E*$K7+$jJV$78@$Ce(B
e$B$F$$$^$9!#$7$+$7!"@PDM$5$s$Oe(B ruby
e$BB&$G=PMh$k!"$H$3$l$^$?7+$jJV$78@$C$Fe(B
e$B$$$^$9!#@PDM$5$s$O>/!9LLE]$@$+$i$H$7$+8@$$$^$;$s!"$=$s$JM}M3$G6Z0c$$$Je(B
e$BMW5a$r0{$`$3$H$O$G$-$^$;$s!#e(B

e$B;~4VE*$J;v$b$"$k$N$G!"@PDM$5$s$N9M$($r?dB,$7$F%Q%C%A$b=P$7$^$7$?$7!"$de(B
e$B$k$Y$-;v$O$d$C$F$$$k$D$b$j$G$9!#e(B

e$BFMA3$H$+!“CY1d$H$+8@$&$J$i!“B>$K$b;_$a$F$b$i$&?M$,$$$k$G$7$g$&!#7+$jJVe(B
e$B$7$^$9$,!”>!<j$KJQ99$7$?$o$1$G$O$”$j$^$;$s!#:G0-85$KLa$9;v$b9M$($F$d$Ce(B
e$B$F$$$^$9!#e(B

e$BKM$O@PDM$5$s$K%a%s%F%J<:3J$H$+8@$o$l$k6Z9g$O$J$$$H;W$$$^$9!#e(B

e$B$3$N4V!"e(Bmathn e$B$G!"e(B

(-8)(1/3) #=> (1.0+1.73205080756888i)
(-8.0)
(1/3) #=> NaN

e$B$H$$$&IT0lCW$K$D$$$FOC$7$^$7$?$,!"$=$N8e$b$^$C$?$/F0$-$,$"$j$^$;$s!#e(B

1.8 e$B$Ne(B complex.rbe$B!"e(Brational.rbe$B!“e(Bmathn.rb
e$B$K$D$$$F$bMM!9$J2]Bj$,$”$C$F!"e(B
(e$B@PDM$5$s$,2?$b$7$J$$$N$Ge(B)
e$B$$$/$D$+$OKM$,%Q%C%A$r=q$-$^$7$?!#$b$&$h$/21e(B
e$B$($F$$$^$;$s$,!"A4It$OD>$7$F$$$J$+$C$?$H;W$$$^$9!#@PDM$5$s$,2?$+$r$9$ke(B
e$B;v$OKX$I$J$$$G$9$h$M!#@PDM$5$s$O$=$&$$$&;v$K$b$^$C$?$/4X?4$,$J$$$h$&$Ge(B
e$B$9!#e(B

e$B$?$H$($P!"KM0J30$N?M$b7+$jJV$7;XE&$7$F$$$?$H;W$$$^$9$,!"e(B

Rationa.new(1,2) e$B$O%W%i%$%Y!<%H%a%=%C%I$G%(%i!<$K$J$k$N$K!“e(B
Complex.new(1,2) e$B$OBg>fIW$@$H$+!”$$$m$$$m$"$k$o$1$G$9!#e(B

e$B@PDM$5$s$K$OITK\0U$J$H$3$m$b$"$k$N$+$b$7$l$^$;$s$,!“e(BUnify
e$B$rF3F~$7$?$Ne(B
e$B$b@PDM$5$s$G$9!#e(Bmathn
e$B$N=$@5$,LLE]$@$H$+8@$C$FJ”$,N)$D$N$b!"$b$&5$NO$,e(B
e$B$J$$$+$i$8$e$J$$$G$9$+!#<+J,$N;v$8$c$J$$$G$9$+!#e(B

e$B@PDM$5$s$N$[$&$O@dBg$J8"NO;}$C$F$k$N$G!"KM$OIi$1$k$+$b$7$l$^$;$s$,!“4Ve(B
e$B0c$C$F$J$$$H;W$$$^$9!#>/$J$/$H$b!”@PDM$5$s$K%0%S$K$7$m$H$+8@$o$l$kDx$Ne(B
e$B;v$r$7$^$7$?$+!#e(B

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

In message “Re: [ruby-dev:36608] Re: {Complex,Rational}::Unify”
on Sat, 27 Sep 2008 02:05:07 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|e$B;d$H$7$F$Oe(B, e$B$9$G$KB8:_$9$k%i%$%V%i%j$KBP$9$k8_49@-$b$J$/FHCGE*$Ke(BAPIe$B$re(B
|e$BJQ99$7$?J}$,@dBPE*$K0-$$$H9M$($F$$$^$9$N$Ge(B, rational.c/complex.c e$B$re(B
|mathne$B$,F0:n$9$k>uBV$KLa$9$+e(B, e$B$=$b$=$be(B rational.c/complex.c e$B$rF3F~$7$?e(B
|e$B$N$,Aa$9$.$?$H$$$($J$/$b$J$$$G$9e(B. ruby-1.9.1e$B$G$O$5$i$KAL$C$Fe(B, 1.8e$B$Ne(B
|rational.rb/complex.rbe$B$KLa$9$3$H$rDs0F$7$^$9e(B.

e$B;d$K$Oe(Bcomplex,rational,mathne$B$G0lBN$G$"$C$?$b$N$,!":#2sA0Fs<Te(B
e$B$@$1$U$J$P$5$s$,%a%s%F%J$K$J$C$?$?$a!":#$^$G30$K=P$F$$$J$+$Ce(B
e$B$?3&LL$,H/@8$7!"$=$ND4@0$,LdBj$K$J$C$F$$$k$h$&$K8+$($^$9!#e(B

e$B$3$3$^$G$Ge(BUnifye$B$r;D$9$Y$-M}M3$H$7$F@PDM$5$s$,=R$Y$i$l$?$b$Ne(B
e$B$O!"!Ve(Bfreezee$B;~E@$Ge(Bmathne$B$,F0$+$J$$!W$H$$$&$b$N$@$H;W$$$^$9$,!“e(B
e$B@5$7$$$G$9$+!)e(B mathne$B$GBP=h$9$k$3$H$O$b$A$m$s2DG=$@$7!”:G=Ee(B
e$B$K$O$=$&$9$Y$-$J$s$@$,!“e(B9/25(e$B$b$&2a$.$A$c$$$^$7$?$Me(B)e$B$K$O$H$Fe(B
e$B$b4V$K9g$o$J$$!”$H!#e(B

Yuguie$B$5$s$K$O$3$l$+$iAjCL$7$^$9$,!"$=$l$Oe(Brational, complex,
mathne$B4V$N3&LL$NLdBj$J$N$G!":#8e$bD4@0$7$F$$$?$@$$$F!“e(B(10/25
e$B$/$i$$$^$G$+$1$Fe(B)e$B>-MhE*$K$”$k$Y$-;Q$K$^$H$a$F$$$/$,NI$$$N$G$Oe(B
e$B$J$$$+$H;W$$$^$9!#e(B

e$B$H$j$"$($:8=;~E@$G$O$U$J$P$5$s$r%a%s%F%J$+$i9_$j$F$$$?$@$/$3e(B
e$B$H$O9M$($F$$$^$;$s!#e(B

|e$B>>K$5$s$OCN$C$F$$$k$H;W$$$^$9$,e(B, e$B:#=5$O5Y2KCf$G$9$N$G$"$^$jH?1~$O$G$-e(B
|e$B$J$$$H$*$b$$$^$9e(B.

e$B>e5-$N0U8+$O!"!VC1$K;~4V$NLdBj$G$O$J$$$+!W$H$$$&;d$N?dB,$K4pe(B
e$B$E$$$F$$$^$9$N$G!"$=$l$,4V0c$C$F$$$k$J$i$P!"$^$?JL$N7kO@$K$Je(B
e$B$k$H;W$$$^$9!#e(BYuguie$B$5$s$H$OAjCL$7$F$*$-$^$9$N$G!"!Ve(Bratinal,
complexe$B$O:#8e$be(Bmathne$B$rFCJL07$$$9$Y$-M}M3!W$K$D$$$FJdB-$,$"$je(B
e$B$^$7$?$i!"5Y2K8e$K$G$b65$($F$/$@$5$$!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

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

In [ruby-dev :36611 ] the message: "[ruby-dev:36611] Re:
{Complex,Rational}::Unify ", on Sep/27 12:36(JST) Yukihiro M.
writes:

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

e$B;d$K$Oe(Bcomplex,rational,mathne$B$G0lBN$G$"$C$?$b$N$,!":#2sA0Fs<Te(B
e$B$@$1$U$J$P$5$s$,%a%s%F%J$K$J$C$?$?$a!":#$^$G30$K=P$F$$$J$+$Ce(B
e$B$?3&LL$,H/@8$7!"$=$ND4@0$,LdBj$K$J$C$F$$$k$h$&$K8+$($^$9!#e(B

e$B3N$Ke(B.

e$B$3$3$^$G$Ge(BUnifye$B$r;D$9$Y$-M}M3$H$7$F@PDM$5$s$,=R$Y$i$l$?$b$Ne(B
e$B$O!"!Ve(Bfreezee$B;~E@$Ge(Bmathne$B$,F0$+$J$$!W$H$$$&$b$N$@$H;W$$$^$9$,!“e(B
e$B@5$7$$$G$9$+!)e(B mathne$B$GBP=h$9$k$3$H$O$b$A$m$s2DG=$@$7!”:G=Ee(B
e$B$K$O$=$&$9$Y$-$J$s$@$,!“e(B9/25(e$B$b$&2a$.$A$c$$$^$7$?$Me(B)e$B$K$O$H$Fe(B
e$B$b4V$K9g$o$J$$!”$H!#e(B

e$B$=$&$G$9e(B.

Yuguie$B$5$s$K$O$3$l$+$iAjCL$7$^$9$,!"$=$l$Oe(Brational, complex,
mathne$B4V$N3&LL$NLdBj$J$N$G!":#8e$bD4@0$7$F$$$?$@$$$F!“e(B(10/25
e$B$/$i$$$^$G$+$1$Fe(B)e$B>-MhE*$K$”$k$Y$-;Q$K$^$H$a$F$$$/$,NI$$$N$G$Oe(B
e$B$J$$$+$H;W$$$^$9!#e(B

e$B>-MhE*$K$"$k$Y$-;Q$G$9$Me(B. e$BN;2r$G$9e(B.

e$B$H$j$"$($:8=;~E@$G$O$U$J$P$5$s$r%a%s%F%J$+$i9_$j$F$$$?$@$/$3e(B
e$B$H$O9M$($F$$$^$;$s!#e(B

e$BN;2r$G$9e(B. e$BFC$K$3$N7o$K$D$$$F94$k$D$b$j$O$J$$$G$9e(B.

e$B>e5-$N0U8+$O!"!VC1$K;~4V$NLdBj$G$O$J$$$+!W$H$$$&;d$N?dB,$K4pe(B
e$B$E$$$F$$$^$9$N$G!"$=$l$,4V0c$C$F$$$k$J$i$P!"$^$?JL$N7kO@$K$Je(B
e$B$k$H;W$$$^$9!#e(BYuguie$B$5$s$H$OAjCL$7$F$*$-$^$9$N$G!"!Ve(Bratinal,
complexe$B$O:#8e$be(Bmathne$B$rFCJL07$$$9$Y$-M}M3!W$K$D$$$FJdB-$,$"$je(B
e$B$^$7$?$i!"5Y2K8e$K$G$b65$($F$/$@$5$$!#e(B

e$B2r7h$G$-$k$^$G$N;~4V$NLdBj$,$^$:$"$j$^$9e(B.

e$B$=$l$He(B, e$B$=$N4Ve(B, mathn
e$B$,F0$+$J$$E@$,Hs>o$K5$$K$J$C$F$$$^$9e(B. e$B$=$l$3$=e(B
freeze
e$B$5$l$F$$$k$O$:$J$N$KF0:n$7$J$$$N$O$"$^$jNI$$>uBV$G$O$J$$$H9M$(e(B
e$B$^$9e(B. e$B$=$l$Ge(B, e$B$U$J$P$5$s$K$Oe(B,
e$BM1M=4|8B$b$7$/$O?7$7$$e(Bmathne$B$,=PMh$k$^$Ge(B
e$B$N4Ve(B, raional.c/complex.c e$B$Oe(B Unify
e$B$,$"$k>uBV$KLa$7$F$$$?$@$-$?$$$G$9e(B.

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

e$B$=$l$G!"KM$,2~$a$F8@$&$^$G$b$J$$$3$H$G$9$,!"e(Bmathn e$B$O@PDM$5$s$NC4Ev$J$Ne(B
e$B$G!"I,MW$J$iD>$9$J$j!“La$9$J$j!”$9$l$P$$$$$H;W$$$^$9!#e(B

e$B$3$l$O$3$l$Ge(B, e$BF0:n$7$F$$$^$9$N$Ge(B, e$B<h$j$"$($:$O$3$l$G$$$$$G$9e(B.

e$B$G$O!";C$/$O$3$l$G$$$$$H$7$F!"$f$C$/$j$He(B 2.0
e$B$^$G$NCf4|E*$JBP:v$K$D$$$Fe(B
e$B9M$($^$7$g$&!#e(B

mathn e$B$GBP1~$G$-$J$$$J$iB>$K9M$($b$"$k!"$H$$$&$3$H$b0U<1E*$K7+$jJV$78@$Ce(B
e$B$F$$$^$9e(B.

e$B$H$N$3$H$G$7$?$,e(B, e$B$I$N$h$&$J9M$($G$7$g$&$+e(B?

e$B$=$l$K$D$$$FEz$($h$&$H;W$C$?$N$G$9$,!"$=$l$,I,MW$JM}M3$+$iOC$7$F$b$i$(e(B
e$B$^$9$+!#$I$&BP1~$G$-$J$$$N$+!#8@MU$NLdBj$O$H$b$+$/!“LLE]$@!”$H$7$+8@$oe(B
e$B$l$F$J$$$H;W$$$^$9!#e(B

e$B:G=i$+$ie(B mathn
e$B$K$OFCJL$JG[N8$,I,MW$@!"$H$NA0Ds$GOC$5$l$F$$$k$h$&$K8+$(e(B
e$B$F$7$^$$$^$9!#$=$&$G$"$l$P!"$=$b$=$b$3$NOC$r$7$?0UL#$,$J$$$H;W$$$^$9!#e(B

e$B@PDM$5$s$NCf$G$=$&$$$&7kO@$,=P$F$$$k$N$+$b$7$l$^$;$s$,!“KM$K$OH=$i$J$$e(B
e$B$s$G$9!#2?EY$b8@$$$^$9$,!”$=$N$"$?$j$+$i!"5DO@$,$*$+$7$/$J$C$F$$$k$N$G!"e(B
e$B$=$3$OHt$;$J$$$H;W$$$^$9!#e(B

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

e$B8D?ME*$K2qOC$7$F$$$^$7$?e(B.

In the message: "[ruby-dev:36614] Re: {Complex,Rational}::Unify ", on
Oct/01 21:21(JST) Tadayoshi F. writes:

e$B$o$?$7$be(B, e$BNc$NH/8@$O8m2r$K$b$H$E$/$b$N$G$"$je(B, e$B$=$NH/8@$OE12s$5$;$F$$$?e(B
e$B$@$$$H$*$b$$$^$9e(B.

e$B$o$+$j$^$7$?!#e(B

e$BESCf$N$d$j<h$j$O>JN,$5$;$F$$$?$@$-$^$9$,e(B,

e$BNc$NH/8@$O8m2r$K$b$H$E$/$b$N$G$"$je(B,
e$B$=$NH/8@$OE12s$5$;$F$$$?$@$-$?$$$He(B
e$B;W$$$^$9e(B.

e$B$U$J$P$5$s$r$O$8$ae(B, e$B$^$D$b$H$5$se(B, e$B$_$J$5$^e(B,
e$B$*A{$,$7$;$F?=$7Lu$"$j$^$;e(B
e$B$s$G$7$?e(B.

e$B$=$l$G!"KM$,2~$a$F8@$&$^$G$b$J$$$3$H$G$9$,!"e(Bmathn e$B$O@PDM$5$s$NC4Ev$J$Ne(B
e$B$G!"I,MW$J$iD>$9$J$j!“La$9$J$j!”$9$l$P$$$$$H;W$$$^$9!#e(B

e$B$3$l$O$3$l$Ge(B, e$BF0:n$7$F$$$^$9$N$Ge(B,
e$B<h$j$"$($:$O$3$l$G$$$$$G$9e(B.

e$BB>$K2?$+$"$l$P!"$=$N5$;}$r;}$C$Fe(B ruby-dev e$B$G2~$a$F@<$r$+$1$F$b$i$($P!"e(B
e$BKM$b$A$c$s$HOC$K1~$8$^$9$N$G!#e(B

e$B$=$l$Ge(B,

mathn e$B$GBP1~$G$-$J$$$J$iB>$K9M$($b$"$k!"$H$$$&$3$H$b0U<1E*$K7+$jJV$78@$Ce(B
e$B$F$$$^$9e(B.

e$B$H$N$3$H$G$7$?$,e(B, e$B$I$N$h$&$J9M$($G$7$g$&$+e(B?

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

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

In [ruby-dev :36654 ] the message: "[ruby-dev:36654] Re:
{Complex,Rational}::Unify ", on Oct/02 20:12(JST) Tadayoshi F.
writes:

e$B$G$O!";C$/$O$3$l$G$$$$$H$7$F!"$f$C$/$j$He(B 2.0 e$B$^$G$NCf4|E*$JBP:v$K$D$$$Fe(B
e$B9M$($^$7$g$&!#e(B

e$B>>K$5$s$,8r>D$7$F$/$l$k$H8@$C$F$$$k$N$Ge(B, e$B$G$-$l$Pe(B,
e$B:#2s$N$K>h$C$+$k$He(B
e$B$&$l$7$$$N$G$9$,e(B. e$B$b$A$m$se(B,
e$B$"$^$j;~4V$,$J$$$N$GBg3]$+$j$J$3$H$O$G$-$Je(B
e$B$/$J$k$H;W$$$^$9$,e(B…

e$B@PDM$5$s$NCf$G$=$&$$$&7kO@$,=P$F$$$k$N$+$b$7$l$^$;$s$,!“KM$K$OH=$i$J$$e(B
e$B$s$G$9!#2?EY$b8@$$$^$9$,!”$=$N$"$?$j$+$i!"5DO@$,$*$+$7$/$J$C$F$$$k$N$G!"e(B
e$B$=$3$OHt$;$J$$$H;W$$$^$9!#e(B

e$BN;2re(B. e$B$=$l$b$=$&$G$9e(B.

e$B$?$@e(B, e$B@5D>8@$C$FI,MW@-$+$i$G$O$J$/$Fe(B,
e$B;d$NL\O@8+$+$iMh$F$$$^$9e(B.

e$B$^$:e(B, e$BIaDL$Ke(B mathn
e$B$,;H$o$l$k$h$&$K$J$C$FM_$7$$$H$$$&;W$$$,$"$j$^e(B
e$B$9e(B. e$B8@$&$^$G$b$J$$$3$H$G$9$,e(B, mathne$B$H$$$&$N$Oe(B, exact
number e$B4V$N0\F0$re(B
e$B<+M3$K$9$k$N$,L\E*$G$9e(B. e$B:#$G$be(B,
Rubye$B$Oe(BFixnume$B$He(BBignume$B$G9T$o$l$F$$$^$9$,e(B,
e$B$=$l$N3HD%$G$9e(B.

e$B$G$Oe(B, e$B8=9T$O$I$&$J$C$F$$$k$+$H$$$&$He(B,
Rationale$B$OAH$9~$$K$J$j$^$7$?$,e(B,
e$B@0?tF1;N$N3d$j;;$Ge(BRationale$B$,@8@.$5$l$k$o$1$G$J$$$N$Ge(B,
Rationale$B$r;H$$$?e(B
e$B$1$l$Pe(B, e$BL@<(=PMh$Ke(B

Rational(1)/Rational(2)

e$B$H$+$7$J$/$F$O$J$i$:e(B, e$B8=9T$N$^$^$G$Oe(B Rational
e$B$N2ACM$O%$%^%$%A$Ge(B,
mathne$B$,$"$C$F2ACM$,H/4x$G$-$k$H;W$$$^$9e(B.

e$B>u67$Oe(B, floate$B$bF1$8$G$9$,e(B, e$B@lMQ$N%j%F%i%k$,$"$ke(B.

e$B$?$@e(B, e$B5U$K8@$&$He(B, mathne$B$Oe(B,
e$B3d$j;;$N?6$kIq$$$,4{B8$N?6$kIq$$$H0c$C$F$$e(B
e$B$^$9e(B. e$B7W;;>e$3$C$A$N?6$kIq$$$,NI$$$H;W$C$F$$$^$9$,e(B,
e$B4{B8$N%i%$%V%i%j$,e(B
e$BF0:n$9$k$H$O8B$i$J$$$G$9e(B(to_inte$B$N$*$+$2$G$@$$$VF0$-$=$&$G$9$,e(B).
e$B$Ge(B,
mathne$B$,$b$C$HIa5Z$9$l$Pe(B, e$BF0$+$J$$%i%$%V%i%j$,$G$?>l9g$G$be(B,
mathne$B$GF0$+e(B
e$B$J$$$N$Ge(B, e$B$=$N%i%$%V%i%j$r=$@5$7$F$/$@$5$$$He(B,
e$BF2!9$H8@$($k$0$i$$$^$G9-e(B
e$B$^$C$FM_$7$$$s$G$9$Me(B.

e$B$=$l$He(B, e$B:#8ee(B, Rubye$B$N$[$&$G$Oe(B, int/int
e$B$r$I$&$9$k$+$NOC$,=P$F$/$k$H;W$$e(B
e$B$^$9$,e(B, e$B$=$NA*Br;h$N0l$D$K$J$C$FM_$7$$$s$G$9$Me(B.

e$B$=$N$?$a$K$be(B,
e$B3HD%%i%$%V%i%j$0$i$$$N%Q%U%)!<%^%s%9$,M_$7$$$H;W$C$F$$$ke(B
e$B$o$1$G$9e(B.

1.9.1e$B$Ge(Bmathne$B$,9b%Q%U%)!<%^%s%9$GF3F~$5$le(B,
2.0e$B$GI8=`$N?6$kIq$$$K$^$G;}$Ce(B
e$B$F$$$/$N$,e(B, e$B;d$N4jK>$G$9e(B.

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

e$B$?$@e(B, e$B@5D>8@$C$FI,MW@-$+$i$G$O$J$/$Fe(B, e$B;d$NL\O@8+$+$iMh$F$$$^$9e(B.

e$B$^$:e(B, e$BIaDL$Ke(B mathn e$B$,;H$o$l$k$h$&$K$J$C$FM_$7$$$H$$$&;W$$$,$"$j$^e(B
e$B$9e(B. e$B8@$&$^$G$b$J$$$3$H$G$9$,e(B, mathne$B$H$$$&$N$Oe(B, exact number e$B4V$N0\F0$re(B
e$B<+M3$K$9$k$N$,L\E*$G$9e(B. e$B:#$G$be(B, Rubye$B$Oe(BFixnume$B$He(BBignume$B$G9T$o$l$F$$$^$9$,e(B,
e$B$=$l$N3HD%$G$9e(B.

e$B$s!<!"$J$+$J$+87$7$s$8$c$J$$$+$H!#e(B

e$B$?$@e(B, e$B5U$K8@$&$He(B, mathne$B$Oe(B, e$B3d$j;;$N?6$kIq$$$,4{B8$N?6$kIq$$$H0c$C$F$$e(B
e$B$^$9e(B. e$B7W;;>e$3$C$A$N?6$kIq$$$,NI$$$H;W$C$F$$$^$9$,e(B, e$B4{B8$N%i%$%V%i%j$,e(B
e$BF0:n$9$k$H$O8B$i$J$$$G$9e(B(to_inte$B$N$*$+$2$G$@$$$VF0$-$=$&$G$9$,e(B). e$B$Ge(B,
mathne$B$,$b$C$HIa5Z$9$l$Pe(B, e$BF0$+$J$$%i%$%V%i%j$,$G$?>l9g$G$be(B, mathne$B$GF0$+e(B
e$B$J$$$N$Ge(B, e$B$=$N%i%$%V%i%j$r=$@5$7$F$/$@$5$$$He(B, e$BF2!9$H8@$($k$0$i$$$^$G9-e(B
e$B$^$C$FM_$7$$$s$G$9$Me(B.

e$B$$$o$l$k$3$H$O$$$/$i$+M}2r$G$-$^$9$,!“Ia5Z$9$k$N$b!”$=$N%i%$%V%i%j$r=$e(B
e$B@5$7$F$/$@$5$$!"$H$$$&$N$b$=$s$J$K4JC1$K$O$$$+$J$$$G$9$h$M!#e(B

e$B<B:]$K$$$/$D$+$N%i%$%V%i%j$r!“e(Bmathn
e$B$G$bF0$/$h$&Cm0U$7$F<BAu$7$?7P83$+e(B
e$B$i$$$&$H0lHL$N?M$K!“e(Bmathn
e$B$”$j$J$7$G$A$c$s$HF0$/$h$&$K$7$m!”$H$$$&$N$Oe(B
e$B8=<BE*$8$c$J$$$G$9$M!#e(Bruby e$BK\Mh$N?tCM7O$N2]Bj$HL7=b$H!“e(Bmathn
e$B$N2]Bj$HL7e(B
e$B=b$NN>J}$rJz$($k;v$K$J$j$^$9!#$?$V$s!”$&$s$6$j$7$^$9!#e(B

e$B$I$s$J$K$,$s$P$C$F$b!"e(Bmathn e$B$,K\Mh$Ne(B ruby
e$B$H$O0c$&$b$N$rDs6!$7$F$$$k0Je(B
e$B>e!"E,MQHO0O$OHs>o$K8B$i$l$^$9$h$M!#e(Bmathn
e$B$N=IL?$@$H;W$$$^$9!#@5D>!“B>e(B
e$B$N$H$3$m$KCmJ8$D$1$k0JA0$NLdBj$C$F$N$,$”$k$H;W$$$^$9!#e(B

e$B$=$l$He(B, e$B:#8ee(B, Rubye$B$N$[$&$G$Oe(B, int/int e$B$r$I$&$9$k$+$NOC$,=P$F$/$k$H;W$$e(B
e$B$^$9$,e(B, e$B$=$NA*Br;h$N0l$D$K$J$C$FM_$7$$$s$G$9$Me(B.

e$B$=$N$?$a$K$be(B, e$B3HD%%i%$%V%i%j$0$i$$$N%Q%U%)!<%^%s%9$,M_$7$$$H;W$C$F$$$ke(B
e$B$o$1$G$9e(B.

1.9.1e$B$Ge(Bmathne$B$,9b%Q%U%)!<%^%s%9$GF3F~$5$le(B, 2.0e$B$GI8=`$N?6$kIq$$$K$^$G;}$Ce(B
e$B$F$$$/$N$,e(B, e$B;d$N4jK>$G$9e(B.

e$B$[$H$s$Ie(B mathn e$B$NOC$8$c$J$/$F!“e(Bruby
e$B$K$=$&$$$&5!G=$rF~$l$h$&!”$H$$$&OCe(B
e$B$@$H;W$$$^$9$,!“KM$Oe(B mathn e$B$,e(B mathn
e$B$H$7$F$”$k8B$j$O!"$=$&$$$&OC$H7k$Se(B
e$B$D$1$F$b$7$g$&$,$J$$$+$J$H;W$C$F$$$^$9!#e(B