ComplexFloat

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

e$B$G$+$$$N$G%F!<%^$4$H$KJ,3d$7$^$9!#e(B
e$B:#2s$Oe(Bint/inte$B$re(Brationale$B$K$9$k$+$I$&$+!"$NOC!#e(B

In message “Re: [ruby-dev:34621] Re: ComplexFloat”
on Fri, 9 May 2008 02:04:26 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|>Complex::/e$B$Ge(Bquoe$B$r;H$($PEvLL$NLdBj$O2r7h$7$^$;$s$+!)e(B
|
|e$B$N$O$:$G$9e(B.

e$B$8$c$"!“EvLL$O$=$&$7$A$c$*$&$+$J$”!#e(B

|>|>|4. complex e$B$,>o$Ke(B mathn e$B$re(B require e$B$9$k!#e(B
|>|
|>|e$B$G$"$je(B, e$B$+$De(Bcomplexe$B$,AH$9~$$C$F$3$H$O>o$Ke(B4(/e$B$N?6$kIq$$$K$+$s$7$F$Oe(B)
|>|e$B$H$9$k$C$F$3$H$G$9e(B. e$B$d$O$je(B, /e$B$He(Bquoe$B$N;H$$J,$1$O7k9=Fq$7$$$H;W$$$^$9e(B(e$B$=e(B
|>|e$B$l$J$j$K$o$+$C$F$$$k?M$G$5$($be(B). e$B$3$l$Oe(B, e$B$U$J$P$5$s$,0JA0$K;XE&$7$F$$e(B
|>|e$B$kDL$je(B, /e$B$KB-$=$&$;$$$,@.$jN)$C$F$$$J$$$;$$$G5/$3$C$F$$$kLdBj$G$9e(B. e$B%We(B
|>|e$B%m%0%i%^$KM%$7$/$J$$$3$H$Oe(BRubye$B$N@:?@$KH?$7$F$$$k$C$F$3$H$Ge(B, 4e$B$NJ}?K$Ke(B
|>|e$B0l5$$K9T$-$^$7$g$&e(B!!
|>
|>e$B$&!<$s!“8D?ME*$K$Oe(B2.0e$B$^$GBT$A$?$+$C$?JQ99$J$N$G$9$,!#$+$J$je(B
|>e$B1F6A$,Bg$-$$$N$G!”$^$@e(B1.9.0e$B$H$O$$$(!"$3$l$+$iF3F~$9$k$N$K$Oe(B
|>e$B$?$a$i$o$l$^$9!#e(B
|
|e$B<+J,$GDs0F$7$F$$$F$J$s$J$s$G$9$,e(B(^^;
|e$B$=$l$OF3F~$rA08~$-$K9M$($F$$$k$C$F$3$H$G$9!)e(B

e$B$(!<$H!"??0U$r7W$j$+$M$F$$$k$s$G$9$,!#Ds0F$7$F$O$_$?$b$N$N<ue(B
e$B$1F~$l$i$l$=$&$H$O;W$C$F$J$+$C$?$C$F$3$H!)e(B

|e$B$=$l$@$H$7$?$ie(B, (e$B$+$J$je(B(^^;)e$B>-Mh$NOC$G$"$k$H$7$F$be(B, e$B$=$&$$$&OC$G$"$k$Je(B
|e$B$ie(B, e$B$=$l$rA0Ds$H$7$?BP1~$r$7$F$$$/%m!<%I%^%C%W$r9M$($F$$$+$J$/$F$O$J$ie(B
|e$B$J$$$H;W$$$^$9e(B.

e$B$U$J$P$5$s$O0JA0$+$i$=$N$h$&$K6/$/<gD%$7$F$$$i$C$7$c$C$?$7!“e(B
e$B0\9T$KH<$&%4%?%4%?$,?4G[$J$@$1$G!”$H$/$KH?BP$7$F$O$$$^$;$s!#e(B

e$B$^$"!“e(Brationale$B$be(Bto_inte$B$r;}$C$F$$$^$9$+$i!”==J,B?AjE*$K%G%6%$e(B
e$B%s$9$l$P<B$O$[$H$s$I$N%1!<%9$GLdBj$O$J$$$h$&$J5$$b$9$k$N$G$9e(B
e$B$,!"$?$V$s3Z4Q;k$7$9$.$G$7$g$&!#e(B

|>|4e$B$K$9$k$H2?$,5/$3$k$+$N3NG’$G$9e(B:
|
|>e$B$3$l$Oe(BRationale$B%j%F%i%k$NF3F~e(B(1/2e$B$,M-M}?t$K$J$ke(B)e$B$d!"e(B
|>Rational#to_se$B$N%U%)!<%^%C%HJQ99$r4^$`$N$G$7$g$&$+!#e(B
|
|>e$B$^$?!"e(BComplexe$B$KBP$7$F$b%j%F%i%kF3F~e(B(1+2ie$B$H$+e(B)e$B$r8!F$$9$k$N$G$7$ge(B
|>e$B$&$+!#e(B
|
|e$B%j%F%i%kF3F~$K4X$7$F$OA4$/9M$($F$$$J$+$C$?$G$9e(B. /e$B$K4X$7$F$O%j%F%i%k$Oe(B
|e$BFq$7$$$G$9$h$Me(B? int/int e$B$Oe(B rational e$B$@$1$I$be(B, e$B$=$NB>$Oe(B e$B0c$&$H$+e(B,.,. e$BFqe(B
|e$B$7$$$H8@$&$+LLE]$+$Je(B?

e$BFq$7$/$O$J$$$G$9$M!#$^$"!“e(BInteger#/e$B$r:FDj5A$7$F$bH?1G$5$l$Je(B
e$B$$$H$$$&$h$&$J$3$H$O$”$k$G$7$g$&$1$I!#e(B

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

In article [email protected],
Shin-ichiro HARA [email protected] writes:

e$BM>CL$G$9$,!“@0[email protected],$Ne(B Complex e$BF1;N$N=|;;e(B / e$B$,!”%,%&%9$N@0?t$H$7$F$N>&e(B
e$B$K$J$C$F$$$J$$$N$,;DG0$G$9!#$=$&$7$h$&$H$9$k$HJ#;($K$J$C$F$7$^$&$7!#e(B

e$B5$$K$J$C$?$s$G$9$,!“%,%&%9$N@0?t$H$7$F$N>&$C$F!”$I$&$$$&$b$Ne(B
e$B$J$s$G$7$g$&$+e(B?

e$B8!:w$7$?$H$3$m!“IaDL$NJ#AG?t$H$7$F$N>&$G$”$k$h$&$J5-=R$,8+$De(B
e$B$+$C$?$s$G$9$,!"$=$l$G$$$$$s$G$7$g$&$+e(B?

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

Yukihiro M. e$B$5$s$O=q$-$^$7$?e(B:

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

e$B$G$+$$$N$G%F!<%^$4$H$KJ,3d$7$^$9!#e(B
e$B:#2s$Oe(Bint/inte$B$re(Brationale$B$K$9$k$+$I$&$+!"$NOC!#e(B

e$B$4!"$4Mp?4$r!*!e(B(^^;
e$B$d$k$H$7$F$be(B10e$BG/$0$i$$@h$K$J$k$+$H;W$C$F$^$7$?!#e(B
int/int->rat e$B$H$7$?$/$J$$?M$Oe(B1.8e$B$r;H$($H!)e(B
int/int->rat e$B$H$7$?$/$J$$?M$Oe(BVMe$B$N287C$KM?$l$J$$$3$H$K$J$k!)e(B
e$B$+$J$jH?BP$N?M$b$G$k$H;W$$$^$9!#0l;~E
$Ke(B Ruby e$B$N?.MQ$,Mn$A$ke(B
e$B$H;W$&!#e(B

e$B$7$+$7!"$b$7$+$9$k$H!“0U30$K$9$s$J$j$$$/$+$b$7$l$J$$!#5!1?$He(B
e$B$$$&$N$b$”$k$7!#e(B

e$B$=$l$@$1e(B Rational e$B$,AH$9~$$K$J$k$3$H$O!"Bg$-$J=PMh;v$@$C$?e(B
e$B$o$1$G$9$M!#e(B

In message “Re: [ruby-dev:34621] Re: ComplexFloat”
on Fri, 9 May 2008 02:04:26 +0900, [email protected] (e$B@PDM7=<ye(B) writes:

|>Complex::/e$B$Ge(Bquoe$B$r;H$($PEvLL$NLdBj$O2r7h$7$^$;$s$+!)e(B
|
|e$B$N$O$:$G$9e(B.

e$B$8$c$"!“EvLL$O$=$&$7$A$c$*$&$+$J$”!#e(B

e$B$=$l$r$9$k$J$i!"$d$O$je(B int/int->rat e$B$7$J$$$H!#e(B

e$B$^$"!“e(Brationale$B$be(Bto_inte$B$r;}$C$F$$$^$9$+$i!”==J,B?AjE*$K%G%6%$e(B
e$B%s$9$l$P<B$O$[$H$s$I$N%1!<%9$GLdBj$O$J$$$h$&$J5$$b$9$k$N$G$9e(B
e$B$,!"$?$V$s3Z4Q;k$7$9$.$G$7$g$&!#e(B

array[x/2] e$B$_$?$$$N$O$$$$$1$I!"e(Barray[x/2 + y/2] e$B$H$+$J$k$H$@e(B
e$B$a$G$9$M!#e(B

// e$B$re(B div e$B$K$9$k$3$H$b8!F$$G$-$J$$$+$7$i!#e(B/ e$B$re(B div
e$B$K=q$-49$(e(B
e$B$k$N$KHf$Y!"e(B/ e$B$re(B/ /
e$B$K=q$-49$($k$N$O$+$J$j?4M}E*$JDq93$,>/$J$$e(B
e$B$H;W$&!#6u$N@55,I=8=e(B // e$B$O!"FC<l$J>l=j$G$7$+;H$o$J$$$7!“e(B
Regexp::Empty e$B$_$?$$$JDj?t$GBP1~$9$k$H$+!#$”!"4A;z%3!<%I$N;Xe(B
e$BDj$,:$$k$+!#e(B

e$B$&!<$`!#$9$k$H$d$O$j!"e(Bmathn
e$BAH$9~$$C$F$N$b;kLn$KF~$C$F$-$^$9$M!#e(B

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

Tanaka A. wrote:

e$B$+$C$?$s$G$9$,!"$=$l$G$$$$$s$G$7$g$&$+e(B?
e$B$h$/;H$o$l$k%,%&%9@0?t$N>&$O!“IaDL$NJ#AG?t$N>&$r<h$j!”<BIt!"e(B
e$B5uIt$=$l$>$l;M<N8^F~$7$F@0?t$K4]$a$?$b$N$G$9!#e(B

e$B<B$O$=$&$G$J$1$l$P$J$i$J$$!"$H$$$&$o$1$G$J$/!">&$HM>$j$,$U$5e(B
e$B$o$7$$>r7o!J@53N$K$O%f!<%/%j%C%I@00h$N8xM}!K$rK~$?$97A$GF@$ie(B
e$B$l$l$P$$$$$N$G!">&$NDj5A$OB>$K$b$"$jF@$^$9!#$,!"$$$:$l$K$7$Fe(B
e$B$b8=:$Ne(B Ruby e$B$N@[email protected],$Ne(B Complex e$B$Ne(B /
e$B$O$3$N>r7o$rK~$?$9>&e(B
e$B$G$O$J$/!";H$$F;$,$"$^$j$J$$$
$?$$$G$9!#e(B

e$B$A$J$_$K!“e(BRuby e$B$NIaDL$N@0?t$Ne(B /
e$B$O!”%f!<%/%j%C%I@00h$N>&$K$J$Ce(B
e$B$F$$$k$N$,!"$"$j$,$?$$$G$9!#e(B

e$BM>CL$G$9$,e(B…

e$B%,%&%9$N@0?t$O!"%f!<%/%j%C%I$N8_=|K!$N%"%k%4%j%:%`$,E,MQ$G$-e(B
e$B$k$7!"AG0x?tJ,2r$G$-$?$j!"IaDL$N@0?t$H%Q%i%l%k$J9=B$$r;}$C$Fe(B
e$BLLGr$$$G$9!#$b$7e(B Complex e$B$Ne(B / e$B$,;M<N8^F~$@$C$?$i!"e(B

[ruby-dev:27730] Re: Matrix class is broken without mathn

e$B$K$"$k!V@0?t9TNs$N9TNs<0$r9bB.$K7W;;$9$k%"%k%4%j%:%`!W$,!"$=e(B
e$B$N$^$^$N%3!<%I$G%,%&%9@0?t$KE,MQ$G$-$k$O$:$J$s$@$1$I!"L5$$OC$re(B
e$B@K$7$,$C$F$b$7$+$?$,$J$$$G$9$M!#e(B

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

In [ruby-dev :34640 ] the message: "[ruby-dev:34640] int/int ->
rational (Re: Re: ComplexFloat) ", on May/11 02:09(JST) Yukihiro
Matsumoto writes:

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

e$B$G$+$$$N$G%F!<%^$4$H$KJ,3d$7$^$9!#e(B
e$B:#2s$Oe(Bint/inte$B$re(Brationale$B$K$9$k$+$I$&$+!"$NOC!#e(B

e$B$O$$e(B.

|>Complex::/e$B$Ge(Bquoe$B$r;H$($PEvLL$NLdBj$O2r7h$7$^$;$s$+!)e(B
|e$B$N$O$:$G$9e(B.

e$B$8$c$"!“EvLL$O$=$&$7$A$c$*$&$+$J$”!#e(B

e$B$U$J$P$5$s$,;XE&$7$F$$$kLdBj$O$"$j$^$9$,e(B,
e$B;dE*$K$OLdBj$J$$$H;W$$$^$9e(B.

e$B86$5$s$N%a%$%k$OFq$7$/$FM}2r$G$-$J$$$N$G%Q%9e(B(^^;

|>|>|4. complex e$B$,>o$Ke(B mathn e$B$re(B require e$B$9$k!#e(B

|>e$B$&!<$s!“8D?ME*$K$Oe(B2.0e$B$^$GBT$A$?$+$C$?JQ99$J$N$G$9$,!#$+$J$je(B
|>e$B1F6A$,Bg$-$$$N$G!”$^$@e(B1.9.0e$B$H$O$$$(!"$3$l$+$iF3F~$9$k$N$K$Oe(B
|>e$B$?$a$i$o$l$^$9!#e(B
|
|e$B<+J,$GDs0F$7$F$$$F$J$s$J$s$G$9$,e(B(^^;
|e$B$=$l$OF3F~$rA08~$-$K9M$($F$$$k$C$F$3$H$G$9!)e(B

e$B$(!<$H!"??0U$r7W$j$+$M$F$$$k$s$G$9$,!#Ds0F$7$F$O$_$?$b$N$N<ue(B
e$B$1F~$l$i$l$=$&$H$O;W$C$F$J$+$C$?$C$F$3$H!)e(B

e$B$G$9e(B.
e$B$@$C$Fe(B,
e$B$3$N<gD%$C$Fe(BRubye$B$,$3$N@$$K$G$?$3$m$+$i$$$$B3$1$F$$$k$3$H$@$H;We(B
e$B$$$^$9$N$Ge(B,
e$B:#99<u$1F~$l$i$l$k$3$H$O$J$$$H?.$8$-$C$F$$$^$7$?e(B(^^;

e$B$U$J$P$5$s$O0JA0$+$i$=$N$h$&$K6/$/<gD%$7$F$$$i$C$7$c$C$?$7!“e(B
e$B0\9T$KH<$&%4%?%4%?$,?4G[$J$@$1$G!”$H$/$KH?BP$7$F$O$$$^$;$s!#e(B

e$B$*!<e(B. e$B$d$C$?e(B.

e$B$^$"!“e(Brationale$B$be(Bto_inte$B$r;}$C$F$$$^$9$+$i!”==J,B?AjE*$K%G%6%$e(B
e$B%s$9$l$P<B$O$[$H$s$I$N%1!<%9$GLdBj$O$J$$$h$&$J5$$b$9$k$N$G$9e(B
e$B$,!"$?$V$s3Z4Q;k$7$9$.$G$7$g$&!#e(B

e$B$G$7$g$&$M$'e(B…

e$B:G=i$Oe(B, int/int
e$B$7$?$i@0=|e(B(div)e$B;H$($H%o!<%K%s%0$r=P$9$h$&$K$7$F$+$ie(B,
e$BCV$-49$($H$+e(B.

|e$B%j%F%i%kF3F~$K4X$7$F$OA4$/9M$($F$$$J$+$C$?$G$9e(B. /e$B$K4X$7$F$O%j%F%i%k$Oe(B
|e$BFq$7$$$G$9$h$Me(B? int/int e$B$Oe(B rational e$B$@$1$I$be(B, e$B$=$NB>$Oe(B e$B0c$&$H$+e(B,.,. e$BFqe(B
|e$B$7$$$H8@$&$+LLE]$+$Je(B?

e$BFq$7$/$O$J$$$G$9$M!#$^$"!“e(BInteger#/e$B$r:FDj5A$7$F$bH?1G$5$l$Je(B
e$B$$$H$$$&$h$&$J$3$H$O$”$k$G$7$g$&$1$I!#e(B

e$B$J$k$[$Ie(B.
e$B$H$O$$$(e(B,
e$B;d$Oe(Bint/inte$B$r%j%F%i%k$K$7$FM_$7$$$H$^$G$O$$$$$^$;$se(B.
e$BH?BP$be(B
e$B$7$^$;$s$,e(B…

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

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

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

|>Complex::/e$B$Ge(Bquoe$B$r;H$($PEvLL$NLdBj$O2r7h$7$^$;$s$+!)e(B
|e$B$N$O$:$G$9e(B.

e$B$8$c$"!“EvLL$O$=$&$7$A$c$*$&$+$J$”!#e(B

e$B$U$J$P$5$s$,;XE&$7$F$$$kLdBj$O$"$j$^$9$,e(B, e$B;dE*$K$OLdBj$J$$$H;W$$$^$9e(B.

e$B$U$J$P$5$s$N;XE&$C$Fe(B

1 == Complex(1)

e$B$J$N$K!"e(B

1/3 != Complex(1)/3

e$B$J$k$C$F;v$G$9$h$M!#NI$/$J$$$s$8$c$J$$$+$J$"!#$3$l$C$F!"e(B

Complex(1.0) == Complex(1)

e$B$J$N$K!"e(B

Complex(1.0)/3 != Complex(1)/3

e$B$H$J$k$h$j$O%^%7$C$F$$$&H=CG$G$9$h$M!)e(B

e$B86$5$s$N%a%$%k$OFq$7$/$FM}2r$G$-$J$$$N$G%Q%9e(B(^^;

e$B$3$l$G<+J,$G<+J,$N%a%$%k$,M}2r$G$-$J$/$J$C$?$i!"@$3&CfC/$bM}e(B
e$B2r$G$-$J$$;v$K$J$C$F$9$C$-$j$9$k$+$b!#e(B(;_:wink:

e$B:G=i$Oe(B, int/int e$B$7$?$i@0=|e(B(div)e$B;H$($H%o!<%K%s%0$r=P$9$h$&$K$7$F$+$ie(B,
e$BCV$-49$($H$+e(B.

e$B$J$k$[$I!#$=$&$$$&<j$,$"$k$+!#e(B

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

In [ruby-dev :34675 ] the message: "[ruby-dev:34675] Re: int/int ->
rational (Re: Re: ComplexFloat) ", on May/13 18:04(JST) Shin-ichiro
HARA writes:

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

e$B$U$J$P$5$s$,;XE&$7$F$$$kLdBj$O$"$j$^$9$,e(B, e$B;dE*$K$OLdBj$J$$$H;W$$$^$9e(B.
e$B$U$J$P$5$s$N;XE&$C$Fe(B
1 == Complex(1)
e$B$J$N$K!“e(B
1/3 != Complex(1)/3
e$B$J$k$C$F;v$G$9$h$M!#NI$/$J$$$s$8$c$J$$$+$J$”!#e(B

e$B$=$&$G$9$+$M$'e(B…

e$B$3$l$C$F!"e(B
Complex(1.0) == Complex(1)
e$B$J$N$K!"e(B
Complex(1.0)/3 != Complex(1)/3
e$B$H$J$k$h$j$O%^%7$C$F$$$&H=CG$G$9$h$M!)e(B

e$B$^$“e(B, e$B$=$l$b$”$j$^$9$,e(B, e$B$=$l$h$je(B:

1.0 == 1

e$B$J$N$Ke(B,

1.0/3 != 1/3

Ratinal(1)/3 != 1/3

e$B$G$9$7e(B, e$B$"$k0UL#BP>]@-$,$"$k$N$G$h$$$s$G$O$J$$$G$7$g$&$+e(B?

e$B8=>u$Ne(B,

1/3 #=> 0

e$B$r$I$&9M$($k$+$K$b$h$j$^$9$,e(B, e$B>-MhE*$KJQ$o$k$N$G$"$l$Pe(B,
e$B@h<h$j$H$$$&$3e(B
e$B$H$Ge(B.

e$B86$5$s$N%a%$%k$OFq$7$/$FM}2r$G$-$J$$$N$G%Q%9e(B(^^;

e$B$3$l$G<+J,$G<+J,$N%a%$%k$,M}2r$G$-$J$/$J$C$?$i!"@$3&CfC/$bM}e(B
e$B2r$G$-$J$$;v$K$J$C$F$9$C$-$j$9$k$+$b!#e(B(;_:wink:

e$B$G$Oe(B, e$BM}2r$G$-$k$H$3$m$@$1e(B:

e$B<B?t$,$J$$$N$KJ#AG?t$,$"$k$N$O$*$+$7$$$&$s$L$s$NOC$,$"$j$^$7$?$,e(B,
e$BN><Te(B
e$B$OFHN)$KH/E8$7$?35G0$G$9$N$G$$$$$s$8$c$J$$$G$7$g$&$+e(B?

e$B$"$He(B, e$B<B?t%/%i%9$O@5LZ$5$s$,:n@.$5$l$F$$$^$9$Me(B.
e$B%3!<%7!<Ns$rMQ$$$F<B?te(B
e$B$rI=8=$7$F$$$k$H;W$$$^$7$?e(B. e$B$?$@e(B,
e$B<B:]$K$OG$0U$N?tNs$rMQ$$$k$3$H$,$G$-e(B
e$B$F$7$^$&$N$G<B?t$H8@$&$h$jD6<B?t$G$7$g$&$+e(B(^^;

e$B:G=i$Oe(B, int/int e$B$7$?$i@0=|e(B(div)e$B;H$($H%o!<%K%s%0$r=P$9$h$&$K$7$F$+$ie(B,
e$BCV$-49$($H$+e(B.
e$B$J$k$[$I!#$=$&$$$&<j$,$"$k$+!#e(B

e$B$3$l$Oe(B, e$B%3!<%I$r@Q6KE*$KJQ$($F$b$i$&$C$FOC$G$9$,e(B…

e$B>>K$5$sE*$K$Oe(B, e$B>-MhE*$K$be(B:

array[1/2]

e$B$O$=$N$^$^F0:n$7$FM_$7$$$$?$$$G$9e(B. e$B$D$^$je(B,
e$B:#$N$^$^$N%3!<%I$,$[$H$s$Ie(B
e$B$=$N$^$^F0:n$7$FM
$7$$$h$&$G$9e(B.

e$B$H$$$&$N$be(B:

array[1.div(2)]

e$B$J$I$H=q$/$N$O$d$C$Q%$%^%$%A$G$O$J$$$+$He(B…
e$B1i;;;R$rF3F~$9$k$K$7$F$be(B,
e$B1i;;;Re(B//e$B$OFq$7$$$_$?$$$J$N$Ge(B,

///

e$B$H$+e(B

\

e$B$H$+$A$g$C$H%$%^%$%A$J8uJd$7$+;W$$Ib$+$P$J$$$s$G$9$h$M$'e(B…

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

e$BEDCf>;$G$9!#e(B

|From: [email protected] (e$B@PDM7=<ye(B)

e$B<B?t$,$J$$$N$KJ#AG?t$,$"$k$N$O$*$+$7$$$&$s$L$s$NOC$,$"$j$^$7$?$,e(B, e$BN><Te(B
e$B$OFHN)$KH/E8$7$?35G0$G$9$N$G$$$$$s$8$c$J$$$G$7$g$&$+e(B?

e$BFHN)$H$$$&$N$,$I$&$$$&0UL#9g$$$+$o$+$j$^$;$s$,!“e(B
e$B5u?tC10L$,e(B e$B"ee(B-1 e$B$G$9$+$i!”“ee(Bx
e$B$,<B?t$G$”$k$H$$$&$3$H$He(B
e$BF1$8$/$i$$$K!“J#AG?t$N<BIt!&5uIt$b<B?t$G$”$k$H8@$($^$9!#e(B

e$B$b$A$m$s<BIt!&5uIt$,@0?t!&M-M}?t$NJ#AG?t$b$"$jF@$^$9$,!“e(B
e$B$=$l$O$?$^$?$^$=$&$J$C$?FC<l$J>l9g$G$”$j!"@dBPCM!&$Y$->he(B
e$B$J$I$N1i;;$r$9$l$P!"<BIt!&5uIt$O0lHL$K$O<B?t$K$J$j$^$9!#e(B
e$B%,%&%9@0?t$rI=$7$?$$$N$G$"$l$P!“e(BGaussianInteger e$B$J$I$H$$$&e(B
e$B%/%i%9$H$7$F<BAu$7D>$9I,MW$,$”$k$N$G$O$J$$$G$7$g$&$+!#e(B

e$B$"$He(B, e$B<B?t%/%i%9$O@5LZ$5$s$,:n@.$5$l$F$$$^$9$Me(B. e$B%3!<%7!<Ns$rMQ$$$F<B?te(B
e$B$rI=8=$7$F$$$k$H;W$$$^$7$?e(B. e$B$?$@e(B, e$B<B:]$K$OG$0U$N?tNs$rMQ$$$k$3$H$,$G$-e(B
e$B$F$7$^$&$N$G<B?t$H8@$&$h$jD6<B?t$G$7$g$&$+e(B(^^;

e$B$3$l$OHs>o$KLLGr$$<h$jAH$_$@$C$?$H;W$$$^$9$,!“e(B
e$B$3$N$3$H$O!”<B?t$r@53N$KI=$9$3$H$NFq$7$5$rI=$7$F$$$k$H$b8@$($^$9!#e(B
e$B$=$3$G!"<B?t$rI=$9$K$OIaDL$OIT@53N?t$,I,MW$H$J$k$N$G$9$,!"e(B
e$B$=$NIT@53N?t$K$O$$$m$$$m$J<BAu$,9M$($i$l$^$9!#e(B
e$B$=$N<BAu$K$h$j!“J#AG?t%/%i%9$NFbIt$G$bBP=h$,I,MW$H$J$k$3$H$b$”$j$^$9!#e(B

e$B$9$G$K!"e(B[ruby-dev:34357] e$B$NBP=h$N$?$a!"e(BComplex#/
e$B%a%=%C%I$NFbIt$G$Oe(B
Float e$B$,FCJL07$$$K$5$l$F$$$^$9!#e(B

e$B$^$?!“e(BBigDecimal
e$B$K$O1i;;@:EY$r%3%s%H%m!<%k$9$k5!G=$,$”$j$^$9!#e(B
e$B$b$7e(B BigDecimal e$B$re(B e$BJ#AG?t$G;H$&>l9g$O!"e(B
e$BJ#AG?t%/%i%9$K@:EY$r%3%s%H%m!<%k$9$k%a%=%C%I$,e(B
e$BM_$7$/$J$k>l9g$b=P$F$/$k$G$7$g$&!#e(B
e$B$=$&$$$&>l9g$Oe(B ComplexBigDecimal
e$B$,I,MW$K$J$C$F$/$k$G$7$g$&!#e(B

e$B$3$&$7$?$3$H$+$i!“FbIt$N<B?t%/%i%9$KFC2=$7$?J#AG?t%/%i%9$,e(B
e$B$$$m$$$mB8:_$7$?$H$7$F$b$*$+$7$/$O$J$$!”$H8@$($^$9!#e(B

e$B0lJ}!"<BIt5uIt$,G$0U$N?tCM%/%i%9$G$"$ke(B Complex e$B%/%i%9$O!"e(B
e$BBgBN@5$7$/?6$kIq$&J#AG?t$,<j7Z$K$G$-$k$H$$$&E@$G!“M-MQ$@$H;W$$$^$9!#e(B
e$BBgBNF0$1$P$h$$$N$G$”$l$P!"Cf$N7?$N$;$$$G>/!9JQ$J?6$kIq$$$r$9$k$H$7$F$b!“e(B
e$B$=$l$O$”$kDxEY$7$g$&$,$J$$$H$$$&5$$b$7$^$9!#e(B
e$B$3$NJU$N8+2r$O!"e(BMLe$B$NOC$G$be(B
e$B?M$K$h$C$F0c$C$F$$$k$h$&$G$9!#e(B

e$B0J>e$N$h$&$J$3$H$r9M$($k$H!“e(B
e$BAH$9~$%/%i%9$GM#0le(B(e$B35G0E*$Ke(B)e$B<B?t$rI=$9e(B Float
e$B$KFC2=$7$?e(B
ComplexFloat e$B$O!”?M$K$h$C$F;EMM$N8+2r$,0c$&$H$$$&$3$H$b$J$/!"e(B
e$B%Q%U%)!<%^%s%9$,$h$$$3$H$+$i!“e(B
e$BABr;h$N#1$D$H$7$F$d$O$j$=$l$[$I$$+$7$/$O$J$$!”$H;W$$$^$9!#e(B

e$B$b$C$H$b!"$3$&$7$?OC$OHyL/$G$"$k$3$H$O3N$+$J$N$G!"e(B
ComplexFloat e$B$r$3$H$5$i6/$/?d$9$H$$$&$o$1$G$O$J$/!“e(B
Complex e$B$NCf$Ge(B Float
e$B$N%Q%U%)!<%^%s%9$,$h$/$J$C$F$/$l$5$($9$l$Pe(B
Complex e$B$G$b$$$$$+$J!”$H$$$&5$$b$7$F$$$^$9!#e(B

e$BEDCf>;9(e(B

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

1 == Complex(1)
e$B$H$J$k$h$j$O%^%7$C$F$$$&H=CG$G$9$h$M!)e(B

e$B$^$“e(B, e$B$=$l$b$”$j$^$9$,e(B, e$B$=$l$h$je(B:

1.0 == 1

e$B$J$N$Ke(B,

1.0/3 != 1/3

e$B$3$l$O!"e(B1.0 e$B$He(B 1
e$B$NB0$9$k%/%i%9$,0c$&$+$i$$$$$s$G$9$h!#e(B
Complex(1.0) e$B$He(B Complex(1) e$B$8$cF1$8$@$+$iLdBj$K$7$F$$$ke(B
e$B!J$$$?!K$s$G$9!#e(B

Ratinal(1)/3 != 1/3

e$B$G$9$7e(B, e$B$"$k0UL#BP>N@-$,$"$k$N$G$h$$$s$G$O$J$$$G$7$g$&$+e(B?

e$BBP>N@-$+$"!"$=$&$$$&8+J}$b$"$k$+$J$"!#e(B

e$B8=>u$Ne(B,

1/3 #=> 0

e$B$r$I$&9M$($k$+$K$b$h$j$^$9$,e(B, e$B>-MhE*$KJQ$o$k$N$G$"$l$Pe(B, e$B@h<h$j$H$$$&$3e(B
e$B$H$Ge(B.

e$BJQ$o$k$3$H$rA0Ds$K@h<h$j$9$k!"$H$$$&$J$i6Z$ODL$j$^$9$M!#e(B
e$B$?$@!"A0Ds$K$7$F$$$$$N$+$I$&$+!#e(B

e$B<B?t$,$J$$$N$KJ#AG?t$,$"$k$N$O$*$+$7$$$&$s$L$s$NOC$,$"$j$^$7$?$,e(B, e$BN><Te(B
e$B$OFHN)$KH/E8$7$?35G0$G$9$N$G$$$$$s$8$c$J$$$G$7$g$&$+e(B?

e$B!)!)AGKQ$K9M$($k$H<B?t$,e(B2e$BK$GJ#AG?t$J$N$G!“J#AG?t$O<B?t$rA0Dse(B
e$B$H$9$k$H;W$&$s$@$1$I!”!VFHN)$KH/E8$7$?35G0!W$C$F$I$&$$$&0UL#e(B
e$B$G$9$+!)e(B

///

e$B$H$+e(B

\

e$B$H$+$A$g$C$H%$%^%$%A$J8uJd$7$+;W$$Ib$+$P$J$$$s$G$9$h$M$'e(B…

e$B!V0u$7IU$-$Ne(B/e$B!W$H$$$&%N%j$G!"e(B

/.

e$B$C$F$N$O$I$&$G$7$g$&!#e(B

もっとも、こうした話は微妙であることは確かなので、
ComplexFloat をことさら強く推すというわけではなく、
Complex の中で Float のパフォーマンスがよくなってくれさえすれば
Complex でもいいかな、という気もしています。

最初のメールでも言ったことですが、そういったことは可能だと思います。

Complex での浮動小数点数のあつかいですが、村田が勧める C99 試案のコー
ドを試しにつかうパッチを添付します。

少しテストした結果からは、大方の予測通りだと思いますが、ComplexFloat
が速くなっているのは、メソッド呼び出しの軽減によるところが大きいと思わ
れます。Complex も同様の傾向で速度が向上しています。データの持ち方を変
えるなどすれば、もっと速くなるのかなと思います。

ついでに python も少し試してみましたが、ruby の Complex よりも速そうで
すが、それほど極端に速いわけではないようです。perl の Math::Complex は、
ruby 1.8 と比べても、かなり遅いようです。いづれも、内容は見ておらず、
きちんとした性能の評価ではなく、単純な計算を繰り返したりしてみただけで
す。

田中昌宏さんたちが評価してくれるならば、これを取り込んでもよいと思いま
す。ただ、たとえ、C ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ãŒè¤‡ç´ æ•°ã‚’æœ€é©åŒ–ã—ã‚ˆã†ã¨ã‚‚ãƒ‡ãƒ¼ã‚¿ã‚’ ruby
や python で転がしている限り、殆ど速度は変らないということです。おそら
く、計算方法としては、よく練られているのだと思いますから、そういう面で
は意味があるのだと思います。

e$B8=>u$Ne(B,

1/3 #=> 0

e$B$r$I$&9M$($k$+$K$b$h$j$^$9$,e(B, e$B>-MhE*$KJQ$o$k$N$G$"$l$Pe(B, e$B@h<h$j$H$$$&$3e(B
e$B$H$Ge(B.

e$B$=$l$G$$$$$H;W$$$^$9!#e(BInteger#/
e$B$N$[$&$,$*$+$7$/$F!"6a$$>-Mh$=$l$,=$@5e(B
e$B$5$l$k$3$H$,3NG’$G$-$l$P!#e(B

e$B$3$N4V$N@PDM$5$s$NOC$rFI$s$G!"$A$g$C$HBE6($72a$.$F$$$?$+$b$7$l$J$$!"$He(B
e$B;W$$$O$8$a$F$$$^$9!#$3$3$^$GMh$?$i!"$X$?$JBE6($O0UL#$,$"$j$^$;$s!#:G=ie(B
e$B$N<gD%$KLa$C$F!"$h$jAm>N@-$r=E;k$9$Y$-$@!"$H$$$&$3$H$K$7$^$9!#$?$H$(<ue(B
e$B$1F~$l$i$l$J$/$F$b!"$^$:$O6Z$rDL$9$3$H$K$7$^$9!#e(B

e$B$^$:!"$d$O$je(B CMath e$B$O!"$d$a$Fe(B Math
e$B$K0lK\2=$9$Y$-$@$H;W$$$^$9!#e(B

e$B$?$H$($P!“e(BTime
e$B$K$D$$$F$b!”$^$D$b$H$5$s$O!">-Mh!“40A4$K%7%9%F%`$K4]Eje(B
e$B$2$9$k$d$j$+$?$r8+D>$99M$($b<($7$F$$$?$H;W$$$^$9!#e(BMath
e$B$K$D$$$F$b!”$^e(B
e$B$D$b$H$5$s$NCf$G!"$=$lDx6/$$94$j$O$J$$$h$&$K8+<u$1$i$l$^$9!#e(B

e$B:#$9$0<B9T$G$-$J$/$H$b!"4pK\E*$K$O!"e(B/ e$B$N2~D{$r4^$a!"e(Bmathn
e$B$NH/E8E*2r>Ce(B
e$B$rL;X$9$Y$-$@$H9M$($^$9!#e(B

Complex(-8) e$B$O!"e(B-8 e$B$H$^$C$?$/F1$8$K$J$j!"e(B1/3
e$B$O!“e(BRational(1,3) e$B$HF1$8e(B
e$B$K$J$j$^$9!#e(BComplex(-8) ** Rational(1,3)
e$B$O!”$?$@>iD9$J$@$1$G!"e(B
(-8) ** (1/3) e$B$HEy2A$H$$$&$3$H$K$J$j$^$9!#e(B

e$B:G=i$Oe(B, int/int e$B$7$?$i@0=|e(B(div)e$B;H$($H%o!<%K%s%0$r=P$9$h$&$K$7$F$+$ie(B,
e$BCV$-49$($H$+e(B.
e$B$J$k$[$I!#$=$&$$$&<j$,$"$k$+!#e(B

e$B@h9T$9$kHG$G7Y9p$7$FM6F3$9$k$H$7$F!“M6F3@h$H$7$F$O!“9=J8E*$JFqE@$r=|$1e(B
e$B$P!”$d$O$je(B //
e$B$,:GA1$@$H;W$$$^$9$,!”$=$l0J30$N8=<BE*$JA*Br;h$H$7$F$O;We(B
e$B$$$D$$$?$N$Oe(B

  1. e$B$H$K$+$/e(B //
    e$B0J30$Ne(B2e$BJ8;zDxEY$N5-9f$G1i;;;R$r%G%C%A>e$2$ke(B
  2. div e$B1i;;;R$rF3F~$9$ke(B
    (div e$B$rM=Ls8l$H$7$FF3F~!=!=e(B 2 div 3 e$B$J$I$H=q$1$k!"e(Bpascal
    e$BIwe(B?)
  3. e$B$d$O$je(B div e$B%a%=%C%I$r$D$+$&e(B

e$B$H$$$C$?$"$?$j$G$9$+$M!#e(B

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

In [ruby-dev :34705 ] the message: "[ruby-dev:34705] Re: int/int ->
rational (Re: Re: ComplexFloat) ", on May/14 23:02(JST) Shin-ichiro
HARA writes:

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

1.0/3 != 1/3

e$B$3$l$O!"e(B1.0 e$B$He(B 1 e$B$NB0$9$k%/%i%9$,0c$&$+$i$$$$$s$G$9$h!#e(B
Complex(1.0) e$B$He(B Complex(1) e$B$8$cF1$8$@$+$iLdBj$K$7$F$$$ke(B
e$B!J$$$?!K$s$G$9!#e(B

e$B$se(B?
e$B$h$/J,$+$i$J$$$s$G$9$,e(B,

Complex(1.0)/3 == Complex(1)/3

e$B$G$"$j$?$$$C$F$3$H$G$9e(B?

e$B$=$l$J$ie(B, e$B8=9T$O@.$jN)$C$F$$$J$/$Fe(B,
Complex::/e$B$Ge(Bquoe$B$r;H$&$C$($P2r7h$7e(B
e$B$^$9$,e(B?

e$B8=>u$Ne(B,
1/3 #=> 0
e$B$r$I$&9M$($k$+$K$b$h$j$^$9$,e(B, e$B>-MhE*$KJQ$o$k$N$G$"$l$Pe(B, e$B@h<h$j$H$$$&$3e(B
e$B$H$Ge(B.

e$BJQ$o$k$3$H$rA0Ds$K@h<h$j$9$k!"$H$$$&$J$i6Z$ODL$j$^$9$M!#e(B
e$B$?$@!"A0Ds$K$7$F$$$$$N$+$I$&$+!#e(B

e$B$^$“e(B, e$B$=$NE@$O$”$j$^$9e(B.

e$B<B?t$,$J$$$N$KJ#AG?t$,$"$k$N$O$*$+$7$$$&$s$L$s$NOC$,$"$j$^$7$?$,e(B, e$BN><Te(B
e$B$OFHN)$KH/E8$7$?35G0$G$9$N$G$$$$$s$8$c$J$$$G$7$g$&$+e(B?

e$B!)!)AGKQ$K9M$($k$H<B?t$,e(B2e$BK$GJ#AG?t$J$N$G!“J#AG?t$O<B?t$rA0Dse(B
e$B$H$9$k$H;W$&$s$@$1$I!”!VFHN)$KH/E8$7$?35G0!W$C$F$I$&$$$&0UL#e(B
e$B$G$9$+!)e(B

e$B<B?t$F8@$&$N$ONr;KE*$K$O0LAj$H$+2r@OE*$JI,MW@-$+$i=P$F$-$Fe(B(e$BM-M}?t$N40e(B
e$BHw2=$H$+O"B3@-e(B),
e$BJ#AG?t$OBe?tE*$JI,MW@-$+$i=P$F$-$F$$$ke(B(e$BBe?tJ}Dx<0$N2re(B
e$B$N$?$a$NBe?tE*3HBge(B)e$B$H8@$$$?$+$C$?$@$1$G$9e(B.

e$B$"e(B, e$B$G$be(B,

e$B$3$l$@$HJ#AG?t$N<BIt5uIt$OF1$8%/%i%9$G$"$k$Y$7$C$F$3$H$K$Je(B

e$B$j$^$9$Me(B(^^;

e$B$H$+$A$g$C$H%$%^%$%A$J8uJd$7$+;W$$Ib$+$P$J$$$s$G$9$h$M$'e(B…

e$B!V0u$7IU$-$Ne(B/e$B!W$H$$$&%N%j$G!"e(B
/.
e$B$C$F$N$O$I$&$G$7$g$&!#e(B

e$B$=$l$O$o$?$7$b9M$($^$7$?$,e(B…

e$B;d$Oe(B, %e$B$,$A$g$C$H5$$K$J$C$F$$$Fe(B, %e$B$r@0=|$K$9$l$Pe(B?
e$B$H8@$C$?$N$G$9$,$=$le(B
e$B$O$"$^$j$@$H$$$&$3$H$@$C$?$N$Ge(B:

%/

e$B$"$?$j$O$I$&$+$J$He(B?

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

In article [email protected],
Shin-ichiro HARA [email protected] writes:

e$B$h$/;H$o$l$k%,%&%9@0?t$N>&$O!“IaDL$NJ#AG?t$N>&$r<h$j!”<BIt!"e(B
e$B5uIt$=$l$>$l;M<N8^F~$7$F@0?t$K4]$a$?$b$N$G$9!#e(B

e$B$J$k$[$I!#e(B

e$B<B$O$=$&$G$J$1$l$P$J$i$J$$!“$H$$$&$o$1$G$J$/!”>&$HM>$j$,$U$5e(B
e$B$o$7$$>r7o!J@53N$K$O%f!<%/%j%C%I@00h$N8xM}!K$rK~$?$97A$GF@$ie(B
e$B$l$l$P$$$$$N$G!“>&$NDj5A$OB>$K$b$”$jF@$^$9!#$,!"$$$:$l$K$7$Fe(B
e$B$b8=:$Ne(B Ruby e$B$N@[email protected],$Ne(B Complex e$B$Ne(B / e$B$O$3$N>r7o$rK~$?$9>&e(B
e$B$G$O$J$/!“;H$$F;$,$”$^$j$J$$$
$?$$$G$9!#e(B

e$B>&$HM>$j$,$“$k$H$3$m$+$i$7$F!”$=$l$Oe(B / e$B$H$$$&$h$je(B div
e$B$de(B
divmod e$B$@$H;W$&$s$G$9$,!"e(BComplex#divmod e$B$r8=:_$Ne(B
Integer#divmod e$B$N3HD%$H$7$FDj5A$9$k$3$H$O2DG=$G$7$g$&$+e(B?

e$B>&$r;M<N8^F~$H$9$k$N$Oe(B Integer#divmod e$B$H0l4S$7$J$/$J$k$N$Ge(B
floor e$B$N$^$^$K$7$F!"$=$N>r7o$rK~$?$9$3$H$O2DG=$G$7$g$&$+e(B?

e$B$^$?!“2DG=$@$H$7$?$i!”$=$l$O4r$7$$$G$7$g$&$+e(B?

e$B$A$J$_$K!“e(BRuby e$B$NIaDL$N@0?t$Ne(B / e$B$O!”%f!<%/%j%C%I@00h$N>&$K$J$Ce(B
e$B$F$$$k$N$,!“$”$j$,$?$$$G$9!#e(B

Integer#/ e$B$OAj<j$,@0?t$J$ie(B Integer#div e$B$HF1$8$G$9$+$i$M!#e(B

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

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

Complex(1.0)/3 == Complex(1)/3

e$B$G$"$j$?$$$C$F$3$H$G$9e(B?

e$B$=$l$J$ie(B, e$B8=9T$O@.$jN)$C$F$$$J$/$Fe(B, Complex::/e$B$Ge(Bquoe$B$r;H$&$C$($P2r7h$7e(B
e$B$^$9$,e(B?

e$B$o$O$O$O!#2?$K$V$D$+$l$P2x2f$,>/$J$$$+!"$_$?$$$JOC$G!"0U;WABe(B
e$BDL$,Fq$7$$$G$9$M!#e(B

e$B#3$DLdBj$,$"$k!#e(B

(A) 1 == Complex(1) e$B$J$N$Ke(B 1/3 != Complex(1)/3
(B) Complex(1.0) == Complex(1) e$B$J$N$Ke(B Complex(1.0)/3 !=
Complex(1)/3
© 1.0 == 1 e$B$J$N$Ke(B 1.0/3 != 1/3

e$B8=9T$G$O!"e(BB, C e$B$N>uBV!#e(BComplex#/ e$B$re(B quo
e$B$KJQ$($k$H!"e(BA, C e$B$Ne(B
e$B>uBV$K$J$k!#e(B

e$B@0M}$7$?$@$1$KN1$a$F$*$3$&!#e(B(^^;

e$B<B?t$,$J$$$N$KJ#AG?t$,$"$k$N$O$*$+$7$$$&$s$L$s$NOC$,$"$j$^$7$?$,e(B, e$BN><Te(B
e$B$OFHN)$KH/E8$7$?35G0$G$9$N$G$$$$$s$8$c$J$$$G$7$g$&$+e(B?

e$B!)!)AGKQ$K9M$($k$H<B?t$,e(B2e$BK$GJ#AG?t$J$N$G!“J#AG?t$O<B?t$rA0Dse(B
e$B$H$9$k$H;W$&$s$@$1$I!”!VFHN)$KH/E8$7$?35G0!W$C$F$I$&$$$&0UL#e(B
e$B$G$9$+!)e(B

e$B<B?t$F8@$&$N$ONr;KE*$K$O0LAj$H$+2r@OE*$JI,MW@-$+$i=P$F$-$Fe(B(e$BM-M}?t$N40e(B
e$BHw2=$H$+O"B3@-e(B), e$BJ#AG?t$OBe?tE*$JI,MW@-$+$i=P$F$-$F$$$ke(B(e$BBe?tJ}Dx<0$N2re(B
e$B$N$?$a$NBe?tE*3HBge(B)e$B$H8@$$$?$+$C$?$@$1$G$9e(B.

e$B$D$^$j!"e(B

e$B<B?t!aM-M}?t!&Ae(B
e$B!!J#AG?t!a<B?t!&Be(B

e$B$H$J$C$F$$$k!J&A!a40Hw2=!"&B!aBe?tE*JDBN$r<h$k$3$H!K!#e(B

e$B$G!"!V<B?t$,$J$$$N$KJ#AG?t$,$"$k$N$*$+$7$/$J$$!)!W$H$$$&e(B
e$BLd$$$K!"!V&A!b&B$@$+$i<B?t$HJ#AG?t$OFHN)$K9M$($F$h$$!W$He(B
e$B@PDM$5$s$OEz$($F$$$k$s$G$9$M!#$=$l$C$F!"e(B

e$B!!!J#AG?t!a<B?t!&Be(B

e$B$N1&JU$N:8$N!V<B?t!W$h$j!"!V&B!W$KCeL$K$7$F$$$k$o$1$G$9$M!#e(B

e$B$3$3$b3NG’$@$1$K$7$F$*$3$&!#e(B(^^;

e$B3N$+$K!“e(Bmathn e$B$rAH$9~$$K$7$F!”$b$O$d?t$KBP$7$F$O$=$NB0$9$ke(B
e$B%/%i%9$r%f!<%6!<$K$"$^$j0U<1$5$;$J$$@$3&$r:n$l$P!"%/%i%9$NOCe(B
e$B$OBg;(GD$G$$$$!"$H$$$&9M$($O$"$j$($k!#e(B

e$B$3$s$P$s$Oe(B sheepman e$B$G$9!#e(B

On Fri, 23 May 2008 07:58:12 +0900
Shin-ichiro HARA [email protected] wrote:

e$B$,!"e(BComplex#divmod e$B$r8=:_$Ne(B
Integer#divmod e$B$N3HD%$H$7$FDj5A$9$k$3$H$O2DG=$G$7$g$&$+e(B?

e$B>&$r;M<N8^F~$H$9$k$N$Oe(B Integer#divmod e$B$H0l4S$7$J$/$J$k$N$Ge(B
floor e$B$N$^$^$K$7$F!"$=$N>r7o$rK~$?$9$3$H$O2DG=$G$7$g$&$+e(B?

e$B;d$b$=$l$r9M$($?$N$G$9$,!"$G$-$J$$$G$9$M!#!J>/$J$/$H$b!"0lHLe(B
e$BE*$J!V%N%k%`!W$r;H$C$F$$$k8B$j$G$-$J$$!#!Ke(B

e$B3d$k?t$H3d$i$l$k?t$NN>J}$,<B?t$+=c5u?t$N>l9g$@$1!“IaDL$N@0?t$N=|;;$H$7$Fe(B
e$BDj5A$7$F!”$=$&$G$J$$>l9g$O;M<N8^F~$r;H$&$H$$$&Iw$K$9$l$P!“$H$j$”$($:$Oe(B
Integer#divmod e$B$N3HD%$H$7$Fe(B Complex#divmod
e$B$rDj5A$G$-$k$H;W$$$^$9!#e(B
e$B3HD%$K$J$C$F$$$k$H$$$($k$+$I$&$+$OHyL/$G$9$,!#e(B

Complex(19, 0)/Complex(10, 0) #=> Complex(1, 0)

Complex(19, 9)/Complex(10, 0) #=> Complex(2, 1) e$B$3$l$,e(B Complex(1,
0) e$B$@$He(B
e$B%f!<%/%j%C%I@00h$N8xM}$rK~$?$5$J$$!#e(B

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

Tanaka A. e$B$5$s$O=q$-$^$7$?e(B:

e$B$l$l$P$$$$$N$G!">&$NDj5A$OB>$K$b$"$jF@$^$9!#$,!"$$$:$l$K$7$Fe(B
e$B$b8=:$Ne(B Ruby e$B$N@[email protected],$Ne(B Complex e$B$Ne(B / e$B$O$3$N>r7o$rK~$?$9>&e(B
e$B$G$O$J$/!";H$$F;$,$"$^$j$J$$$
$?$$$G$9!#e(B

e$B>&$HM>$j$,$"$k$H$3$m$+$i$7$F!"$=$l$Oe(B / e$B$H$$$&$h$je(B div e$B$de(B
divmod e$B$@$H;W$&$s$G$9$,!"e(B

e$B$=$l$,IaDL$N9M$(J}$@$H$O;W$$$^$9$,!“M-M}?t$d>.?t$KBP$9$ke(B
/ e$B$He(B % e$B$O!”!Ve(B% e$B$N7k2L$,I,$:e(B 0
e$B$K$J$k>&!W$@$H9M$($k$3$H$be(B
e$B$G$-$^$9!#$D$^$je(B(2/3) / (4/5) = (5/6)e$B!“e(B(2/3) % (4/5) = 0
e$B$H$9$k<j$b$”$k!#$3$l$G$b!“e(Ba = (a / b) * b + (a % b) e$B$,e(B
e$B>o$K@.$jN)$D!#$3$N>&$K$b9gM}@-$,$”$j$^$9!#e(B

e$B$,!"e(BComplex#divmod e$B$r8=:_$Ne(B
Integer#divmod e$B$N3HD%$H$7$FDj5A$9$k$3$H$O2DG=$G$7$g$&$+e(B?

e$B>&$r;M<N8^F~$H$9$k$N$Oe(B Integer#divmod e$B$H0l4S$7$J$/$J$k$N$Ge(B
floor e$B$N$^$^$K$7$F!"$=$N>r7o$rK~$?$9$3$H$O2DG=$G$7$g$&$+e(B?

e$B;d$b$=$l$r9M$($?$N$G$9$,!"$G$-$J$$$G$9$M!#!J>/$J$/$H$b!"0lHLe(B
e$BE*$J!V%N%k%`!W$r;H$C$F$$$k8B$j$G$-$J$$!#!Ke(B

e$B$^$?!“2DG=$@$H$7$?$i!”$=$l$O4r$7$$$G$7$g$&$+e(B?

e$B$G$-$?$i!";H$&?M$O>/$J$/$F$b!"$$$m$$$mM7$Y$F4r$7$$$G$9!#%,%&e(B
e$B%9@0?t$OLLGr$$$N$K$[$H$s$IIa5Z$7$J$$M}M3$N0l$D$O!"$A$g$C$H$7e(B
e$B$?7W;;$K$b<j4V$,$+$+$k;v$@$H;W$$$^$9!#$=$l$re(B Ruby e$B$G$5$C$H$Ge(B
e$B$-$?$i!De(B

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

e$BE*$J!V%N%k%`!W$r;H$C$F$$$k8B$j$G$-$J$$!#!Ke(B

e$B3d$k?t$H3d$i$l$k?t$NN>J}$,<B?t$+=c5u?t$N>l9g$@$1!“IaDL$N@0?t$N=|;;$H$7$Fe(B
e$BDj5A$7$F!”$=$&$G$J$$>l9g$O;M<N8^F~$r;H$&$H$$$&Iw$K$9$l$P!"$H$j$"$($:$Oe(B
Integer#divmod e$B$N3HD%$H$7$Fe(B Complex#divmod e$B$rDj5A$G$-$k$H;W$$$^$9!#e(B
e$B3HD%$K$J$C$F$$$k$H$$$($k$+$I$&$+$OHyL/$G$9$,!#e(B

e$B$$!"$J$k$[$I!#$=$l$GNI$$$G$9$M!*e(B

e$B$G$-$J$$$H8@$C$?$N$O4V0c$$$G$7$?!#J}K!$OL5?t$K$"$k!#e(B

e$BNc$($P!"<!$N$h$&$K$7$?$i$b$&>/$7$-$l$$$+$J!#e(B(e$BJ#AG?t$N>&$N<BIte(B
e$B5uIt$re(B x, y e$B$H$7$Fe(B)

if x + y < x.floor + y.floor + 1
[x.floor, y.floor]
else
[x.floor + 1, y.floor + 1]
end

e$B$D$^$j!"e(BInteger#/ e$B$N<+A3$J3HD%$H$7$F!"e(B

class Complex < Numeric
def idiv (other)
a = self * other.conjugate
b = other.abs2
z = a / b
a.real + a.image < (z.real + z.image + 1) * b ? z : z + Complex(1,
1)
end
end