Forum: Ruby-dev [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか

Posted by Kenta Murata (Guest)
on 2011-06-13 16:17
(Received via mailing list)
Issue #4878 has been reported by Kenta Murata.

----------------------------------------
Feature #4878: CMath に frexp, ldexp, hypot の3関数は不要ではないか
http://redmine.ruby-lang.org/issues/4878

Author: Kenta Murata
Status: Open
Priority: Normal
Assignee: Yukihiro Matsumoto
Category:
Target version: 1.9.x


現在 CMath は、Math を include して各関数を再定義することで実装されています。
このやり方では、複素数向けの関数としては定義できない frexp, ldexp, hypot の3関数も同時に include 
されてしまいます。
これらは Math の関数として定義されていれば良いだけですので、CMath からの削除を提案します。
Posted by Yukihiro Matsumoto (Guest)
on 2011-06-13 16:51
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

In message "Re: [ruby-dev:43787] [Ruby 1.9 - Feature #4878][Open] CMath 
$B$K(B frexp, ldexp, hypot $B$N(B3$B4X?t$OITMW$G$O$J$$$+(B"
    on Mon, 13 Jun 2011 23:16:37 +0900, Kenta Murata <muraken@gmail.com> 
writes:

|Issue #4878 has been reported by Kenta Murata.
|
|----------------------------------------
|Feature #4878: CMath $B$K(B frexp, ldexp, hypot $B$N(B3$B4X?t$OITMW$G$O$J$$$+(B
|http://redmine.ruby-lang.org/issues/4878

|$B8=:_(B CMath $B$O!"(BMath $B$r(B include 
$B$7$F3F4X?t$r:FDj5A$9$k$3$H$G<BAu$5$l$F$$$^$9!#(B
|$B$3$N$d$jJ}$G$O!"J#AG?t8~$1$N4X?t$H$7$F$ODj5A$G$-$J$$(B frexp, ldexp, hypot 
$B$N(B3$B4X?t$bF1;~$K(B include $B$5$l$F$7$^$$$^$9!#(B
|$B$3$l$i$O(B Math $B$N4X?t$H$7$FDj5A$5$l$F$$$l$PNI$$$@$1$G$9$N$G!"(BCMath 
$B$+$i$N:o=|$rDs0F$7$^$9!#(B

$B$J$k$[$I!#F10U$7$^$9!#:o=|$N%?%$%_%s%0$O%a%s%F%J$K$*G$$;$7$^$9!#(B
Posted by Tadayoshi Funaba (Guest)
on 2011-06-13 17:18
(Received via mailing list)
$B$b$&7kO@$,=P$F$7$^$C$?$h$&$G$9$,!"$3$l$O!"85!9(B lib/complex.rb 
$B$K$"$C$?(B
$B$b$N$rFHN)$5$;$?$b$N$G$9$,!"$=$N0UL#$O!"J#AG?tMQ$N4X?t$rDs6!$9$k;v$G$O(B
$B$J$/!"J#AG?t%I%a%$%s$KBP1~$7$?(B Math 
$B$rDs6!$9$k!"$H$$$&;v$@$HM}2r$7$F$$(B
$B$^$7$?!#$D$^$j!"<B?tMQ$H$7$F$D$+$o$l$k8B$j!"(BMath 
$B$H$^$C$?$/F1$8$G$"$k$3(B
$B$H$,K>$^$l$F$$$?$H9M$($^$9!#(B
Posted by Kenta Murata (Guest)
on 2011-06-14 01:03
(Received via mailing list)
むらたです。


On Tuesday, June 14, 2011 at 12:16 AM, Tadayoshi Funaba wrote:
> もう結論が出てしまったようですが、これは、元々 lib/complex.rb にあった
> ものを独立させたものですが、その意味は、複素数用の関数を提供する事では
> なく、複素数ドメインに対応した Math を提供する、という事だと理解してい
> ました。つまり、実数用としてつかわれる限り、Math とまったく同じであるこ
> とが望まれていたと考えます。

complex.rb をロードすると Math が CMath 相当に置き換わりますから、
Math を置き換える際に frexp, ldexp, hypot を定義することで対応可能かと思います。

そういう事ですよね?
Posted by Tadayoshi Funaba (Guest)
on 2011-06-14 01:45
(Received via mailing list)
> complex.rb $B$r%m!<%I$9$k$H(B Math $B$,(B CMath $BAjEv$KCV$-49$o$j$^$9$+$i!"(B
> Math $B$rCV$-49$($k:]$K(B frexp, ldexp, hypot 
$B$rDj5A$9$k$3$H$GBP1~2DG=$+$H;W$$$^$9!#(B
>
> $B$=$&$$$&;v$G$9$h$M!)(B

$B$=$&$G$O$"$j$^$;$s!#(BCMath 
$BC1BN$G!"$G$9!#<B:]!"J#AG?tMQ$N4X?t$rDj5A$7$F(B
$B$$$k$N$G$O$J$/!"J#AG?t$K$b$D$+$($k$h$&$K3HD%$7$?$b$N$rDs6!$7$h$&$H$7$F(B
$B$$$^$9$h$M!#(B
Posted by Kenta Murata (Guest)
on 2011-06-14 04:57
(Received via mailing list)
むらたです。


On Tuesday, June 14, 2011 at 8:45 AM, Tadayoshi Funaba wrote:

> > complex.rb をロードすると Math が CMath 相当に置き換わりますから、
> > Math を置き換える際に frexp, ldexp, hypot を定義することで対応可能かと思います。
> >
> > そういう事ですよね?
>
> そうではありません。CMath 単体で、です。実際、複素数用の関数を定義して
> いるのではなく、複素数にもつかえるように拡張したものを提供しようとして
> いますよね。

私は、これらの関数について以下のように解釈し、CMath からの削除を提案しました。
(1) frexp と ldexp は2を底とする浮動小数点数表現に対する関数なので、表現から中立である複素数に対して無意味である。
(2) hypot(x, y) は sqrt(x**2 + y**2) 
という定義があるので、再定義することで複素数に拡張可能だけど無意味ではないか?

Math と CMath が同時に存在している場合、つまり cmath.rb のみを require した場合、
上記3関数は Math のものを使用できるため、CMath で定義される必要は無いはずです。

現在、CMath に定義されている上記3関数は複素数に対して使用できません。
ふなばさんは、frexp, ldexp, hypot の3関数について、
CMath 単体でどのように定義されるべきだとお考えですか?
Posted by Yukihiro Matsumoto (Guest)
on 2011-06-14 05:54
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

In message "Re: [ruby-dev:43797] Re: [Ruby 1.9 - Feature #4878][Open] 
CMath $B$K(B frexp, ldexp, hypot $B$N(B3$B4X?t$OITMW$G$O$J$$$+(B"
    on Tue, 14 Jun 2011 11:57:26 +0900, Kenta Murata <muraken@gmail.com> 
writes:

|Math $B$H(B CMath $B$,F1;~$KB8:_$7$F$$$k>l9g!"$D$^$j(B cmath.rb $B$N$_$r(B 
require $B$7$?>l9g!"(B
|$B>e5-(B3$B4X?t$O(B Math $B$N$b$N$r;HMQ$G$-$k$?$a!"(BCMath 
$B$GDj5A$5$l$kI,MW$OL5$$$O$:$G$9!#(B

Python$B$G$O(Bmath$B$r(Bcmath$B$KCV$-49$($k$h$&$J%9%?%$%k$,;~!98+$i$l(B
$B$k$h$&$G$9!#(BRuby$B$@$H(B

  require "cmath"
  Math = CMath

$B$_$?$$$J!#$3$&$$$&%3!<%I$r2>Dj$9$k$H!"4X?t$r<h$j=|$+$J$$(B
(Math$B$H8_49$N$^$^;D$9(B)$B$H$$$&$N$b0UL#$,$"$k$N$+$b$7$l$^$;$s!#(B
Posted by Kenta Murata (Guest)
on 2011-06-14 06:32
(Received via mailing list)
むらたです。

On Tuesday, June 14, 2011 at 12:53 PM, Yukihiro Matsumoto wrote:
>  Math = CMath
>
> みたいな。こういうコードを仮定すると、関数を取り除かない
> (Mathと互換のまま残す)というのも意味があるのかもしれません。

これに相当する事をやっているのが complex.rb なので、
Ruby では上記に相当する処理をやりたければ require "complex" することにして、
complex.rb の中で適切に関数を定義すれば良いと考えていました。

たとえば、以下のパッチのような方法です。
https://gist.github.com/1024322
Posted by Tadayoshi Funaba (Guest)
on 2011-06-14 13:37
(Received via mailing list)
> $B$3$l$KAjEv$9$k;v$r$d$C$F$$$k$N$,(B complex.rb $B$J$N$G!"(B
> Ruby $B$G$O>e5-$KAjEv$9$k=hM}$r$d$j$?$1$l$P(B require "complex" 
$B$9$k$3$H$K$7$F!"(B
> complex.rb $B$NCf$GE,@Z$K4X?t$rDj5A$9$l$PNI$$$H9M$($F$$$^$7$?!#(B

lib/complex.rb $B$O8_49$N$?$a$K;D$C$F$$$k$@$1$G?d>)$5$l$^$;$s!#(B

$B$3$A$i$NN)>l$+$i8@$($P!"(BCMath 
$B$O@)8B$r<h$j=|$$$?!"$"$k$$$O<h$j=|$3$&$H(B
$B$7$F$$$k(B Math $B$NBeBXHG$H$$$&$H$3$m$G$9$+$M!#(B

$B<B:]!"$3$l$i$O(B include 
$B$7$F$D$+$&$3$H$bA[Dj$5$l!"0lB7$($NJ*$H$7$F07$o$l(B
$B$k$o$1$G!"$3$l$OJ#AG?t$KBP1~$G$-$?!"$G$-$J$$$GJ,$1$k$H$+!"J;MQ$9$k$H$$(B
$B$&$N$O!"$J$/$O$J$$$1$I!":G=i$+$i$=$l$rMxMQ<T$KMW5a$9$k$N$O$I$&$J$N$+$J!#(B

lib/cmath.rb 
$B$r$D$+$C$F$$$F$b!"$=$N8F$S=P$7$NA4$F$GJ#AG?t$,3hLv$7$F$$$k(B
$B$H$O8B$i$J$$$o$1$G$9$h$M!#(BCMath $B$K(B hypot 
$B$,$J$$$N$O!"J#AG?t$N$?$a$K3HD%(B
$B$7$h$&$,$J$+$C$?$+$i$@$H$7$F$b!"<B:]$KMxMQ<T$O!"<B?t$rM?$(!"<B?t$rF@$k(B
$B$+$?$A$G$7$+!"(Bsin 
$B$J$s$+$r;H$C$F$$$J$$$+$b$7$l$J$$$8$c$J$$$G$9$+!#MxMQ(B
$B<T$K$=$N6hJL$r$5$;$kI,MW$,$"$k$s$G$7$g$&$+!#(B
Posted by Yusuke ENDOH (Guest)
on 2011-06-14 14:55
(Received via mailing list)
$B1sF#$G$9!#(B

2011$BG/(B6$B7n(B14$BF|(B20:37 Tadayoshi Funaba <tadf@dotrb.org>:
>> $B$3$l$KAjEv$9$k;v$r$d$C$F$$$k$N$,(B complex.rb $B$J$N$G!"(B
>> Ruby $B$G$O>e5-$KAjEv$9$k=hM}$r$d$j$?$1$l$P(B require "complex" 
$B$9$k$3$H$K$7$F!"(B
>> complex.rb $B$NCf$GE,@Z$K4X?t$rDj5A$9$l$PNI$$$H9M$($F$$$^$7$?!#(B
>
> lib/complex.rb $B$O8_49$N$?$a$K;D$C$F$$$k$@$1$G?d>)$5$l$^$;$s!#(B
>
> $B$3$A$i$NN)>l$+$i8@$($P!"(BCMath $B$O@)8B$r<h$j=|$$$?!"$"$k$$$O<h$j=|$3$&$H(B
> $B$7$F$$$k(B Math $B$NBeBXHG$H$$$&$H$3$m$G$9$+$M!#(B


$BDj5A0h$rA}$d$9$@$1$K$7$h$&!"$H$$$&$3$H$G$9$h$M!#;?@.$G$9!#(B
$B$=$&$$$&0UL#$G!"(Bcbrt(-8) $B$O(B Math $B$rB:=E$7$F(B -2 
$B$rJV$9$Y$-$@$H;W$&$N$G$9$,!"(B
$B$$$+$,$G$7$g$&$+!#(B
Posted by Tadayoshi Funaba (Guest)
on 2011-06-14 15:17
(Received via mailing list)
> $BDj5A0h$rA}$d$9$@$1$K$7$h$&!"$H$$$&$3$H$G$9$h$M!#;?@.$G$9!#(B
> $B$=$&$$$&0UL#$G!"(Bcbrt(-8) $B$O(B Math $B$rB:=E$7$F(B -2 
$B$rJV$9$Y$-$@$H;W$&$N$G$9$,!"(B
> $B$$$+$,$G$7$g$&$+!#(B

$BCM0h$b3HBg$5$l$^$9$M!#$@$+$i!"(B-2 
$B$K$O$J$i$J$$$G$7$g$&!#<B?t$rM?$(!"<B?t(B
$B$,JV$kHOCf$G$O(B Math $B$HF1$8$H$$$&$3$H$@$H;W$$$^$9!#(B
Posted by Kenta Murata (Guest)
on 2011-06-14 15:25
(Received via mailing list)
むらたです。


On Tuesday, June 14, 2011 at 8:37 PM, Tadayoshi Funaba wrote:

> > これに相当する事をやっているのが complex.rb なので、
> > Ruby では上記に相当する処理をやりたければ require "complex" することにして、
> > complex.rb の中で適切に関数を定義すれば良いと考えていました。
>
> lib/complex.rb は互換のために残っているだけで推奨されません。

あー、本当ですね。最初に警告を出している行を完全に見逃していました。

であれば、確かに CMath が Math の役割を果せる必要はありますね。
納得できたので、この提案は撤回させて頂きます。
Posted by Yusuke ENDOH (Guest)
on 2011-06-14 15:32
(Received via mailing list)
2011$BG/(B6$B7n(B14$BF|(B22:17 Tadayoshi Funaba <tadf@dotrb.org>:
>> $BDj5A0h$rA}$d$9$@$1$K$7$h$&!"$H$$$&$3$H$G$9$h$M!#;?@.$G$9!#(B
>> $B$=$&$$$&0UL#$G!"(Bcbrt(-8) $B$O(B Math $B$rB:=E$7$F(B -2 
$B$rJV$9$Y$-$@$H;W$&$N$G$9$,!"(B
>> $B$$$+$,$G$7$g$&$+!#(B
>
> $BCM0h$b3HBg$5$l$^$9$M!#$@$+$i!"(B-2 $B$K$O$J$i$J$$$G$7$g$&!#<B?t$rM?$(!"<B?t(B
> $B$,JV$kHOCf$G$O(B Math $B$HF1$8$H$$$&$3$H$@$H;W$$$^$9!#(B

$B8_49@-$,$J$$$H$$$&E@$G$OF1$8OC$@$H;W$&$N$G$9$,!D!D!#(B
Posted by Tadayoshi Funaba (Guest)
on 2011-06-14 16:03
(Received via mailing list)
> $B8_49@-$,$J$$$H$$$&E@$G$OF1$8OC$@$H;W$&$N$G$9$,!D!D!#(B

$B<gCM$K$J$i$J$$(B Math.cbrt 
$B$rB:=E$9$k$H$$$&$N$OFq$7$$$s$8$c$J$$$G$7$g$&$+!#(B
$B$I$&$7$F$b$=$l$,=EMW$@$H;W$o$l$k$J$i!"$3$N7o$H$O4X78$,$J$$$N$G!"2~$a$F(B
$BDs0F$r=P$5$l$k$H$+!#(B
Posted by Yusuke ENDOH (Guest)
on 2011-06-14 16:18
(Received via mailing list)
2011$BG/(B6$B7n(B14$BF|(B23:02 Tadayoshi Funaba <tadf@dotrb.org>:
>> $B8_49@-$,$J$$$H$$$&E@$G$OF1$8OC$@$H;W$&$N$G$9$,!D!D!#(B
>
> $B<gCM$K$J$i$J$$(B Math.cbrt 
$B$rB:=E$9$k$H$$$&$N$OFq$7$$$s$8$c$J$$$G$7$g$&$+!#(B
> $B$I$&$7$F$b$=$l$,=EMW$@$H;W$o$l$k$J$i!"$3$N7o$H$O4X78$,$J$$$N$G!"2~$a$F(B
> $BDs0F$r=P$5$l$k$H$+!#(B


$B$$$d$"!"(B5 $B7nKv$N(B feature freeze $B;~E@$G$O(B -2 
$B$rJV$7$F$$$?$O$:$J$s$G$9$,!"(B
6 $B7n$K$J$C$F$+$i(B ($B5DO@;v9`$,;D$C$?$^$^(B) $BJQ$o$C$?$s$G$9$h$M!#(B

http://redmine.ruby-lang.org/issues/3676
Posted by Tadayoshi Funaba (Guest)
on 2011-06-14 16:28
(Received via mailing list)
> $B$$$d$"!"(B5 $B7nKv$N(B feature freeze $B;~E@$G$O(B -2 
$B$rJV$7$F$$$?$O$:$J$s$G$9$,!"(B
> 6 $B7n$K$J$C$F$+$i(B ($B5DO@;v9`$,;D$C$?$^$^(B) $BJQ$o$C$?$s$G$9$h$M!#(B

$B$=$l$O!"85!9<gCM$rJV$9$h$&$K$J$C$F$$$?$N$K!"(B-2 
$B$rJV$9$h$&$K4V0c$C$FJQ99(B
$B$5$l$?$H$$$&7kO@$K$J$C$?$+$i$G$7$g$&!#:G=i$K(B CMath.cbrt 
$B$r2C$($?$N$O26(B
$B$G!"$=$N8e$J$<$+!"(B-2 
$B$,JV$k$h$&$KJQ99$5$l$?$N$G$9!#$G$9$+$i!"$3$l$O%P%0(B
$B$,=$@5$5$l$?$H$$$&M}2r$G$9$,!#(B
Posted by Yusuke ENDOH (Guest)
on 2011-06-16 18:11
(Received via mailing list)
$B1sF#$G$9!#(B

2011$BG/(B6$B7n(B14$BF|(B23:27 Tadayoshi Funaba <tadf@dotrb.org>:
>> $B$$$d$"!"(B5 $B7nKv$N(B feature freeze $B;~E@$G$O(B -2 
$B$rJV$7$F$$$?$O$:$J$s$G$9$,!"(B
>> 6 $B7n$K$J$C$F$+$i(B ($B5DO@;v9`$,;D$C$?$^$^(B) $BJQ$o$C$?$s$G$9$h$M!#(B
>
> $B$=$l$O!"85!9<gCM$rJV$9$h$&$K$J$C$F$$$?$N$K!"(B-2 $B$rJV$9$h$&$K4V0c$C$FJQ99(B
> $B$5$l$?$H$$$&7kO@$K$J$C$?$+$i$G$7$g$&!#:G=i$K(B CMath.cbrt $B$r2C$($?$N$O26(B
> $B$G!"$=$N8e$J$<$+!"(B-2 $B$,JV$k$h$&$KJQ99$5$l$?$N$G$9!#$G$9$+$i!"$3$l$O%P%0(B
> $B$,=$@5$5$l$?$H$$$&M}2r$G$9$,!#(B

-2 
$B$rJV$9$h$&$KJQ99$9$k$N$O5DO@$7$F$+$i$K$9$Y$-$@$C$?$H$O;W$C$F$$$^$9$,!"(B
$B!V4V0c$C$F$$$?!W$H$O$"$^$j;W$C$F$$$^$;$s!#(B
$B$U$J$P$5$s$b$*$C$7$c$k$h$&$K(B CMath $B$,(B Math 
$B$H$N8_49@-$r9M$($F$$$k$J$i!"(B
-2 $B$rJV$90J30$NA*Br;h$,$"$k$h$&$K$O;W$($J$$$N$G$9!#(B
$B$"$H!"(B[ruby-dev:42007] 
$B$N$^$D$b$H$5$s$N5DBjDs=P$KBP$7$F5DO@$5$l$?$h$&(B
$B$K$b8+$($^$;$s!#(B
Posted by Tadayoshi Funaba (Guest)
on 2011-06-16 18:59
(Received via mailing list)
> -2 $B$rJV$9$h$&$KJQ99$9$k$N$O5DO@$7$F$+$i$K$9$Y$-$@$C$?$H$O;W$C$F$$$^$9$,!"(B
> $B!V4V0c$C$F$$$?!W$H$O$"$^$j;W$C$F$$$^$;$s!#(B
> $B$U$J$P$5$s$b$*$C$7$c$k$h$&$K(B CMath $B$,(B Math 
$B$H$N8_49@-$r9M$($F$$$k$J$i!"(B
> -2 $B$rJV$90J30$NA*Br;h$,$"$k$h$&$K$O;W$($J$$$N$G$9!#(B
> $B$"$H!"(B[ruby-dev:42007] $B$N$^$D$b$H$5$s$N5DBjDs=P$KBP$7$F5DO@$5$l$?$h$&(B
> $B$K$b8+$($^$;$s!#(B

$B$+$J$j8m2r$7$F$$$k$h$&$J$s$G8@$C$F$*$-$^$9$,!"26$O8_49@-$,Bg;v$@$J$s$F(B
$B;W$C$F$J$$$s$G$9$h!#(B

$B$=$b$=$b!"(BMath 
$B$rJ#AG?tBP1~$K$7$F0lK\2=$7$?$i$HDs0F$7$F$$$?$N$G$9$+$i!"(B
$B8_49@-=E;k$8$c$J$$$s$G$9!#(BCMath 
$B$,=PMh$?7P0^$O4JC1$K8@$&$H!"0lBN2=$KF'(B
$B$_@Z$l$J$+$C$?$+$iCHN|$o$1$7$?$H$$$&;v$@$H;W$$$^$9!#(B

$B$=$&$$$&7P0^$+$i$9$l$P!"?6$kIq$$$,0c$&;v$O>5CN$N>e$G!"26$N8@$$J}$G$$$((B
$B$P!"K\Mh$"$C$F$[$7$$$h$&$K(B CMath 
$B$G$O@)8B$r$J$/$9J}8~$G3HD%$5$l$k;v$,K>(B
$B$^$l$F$$$k$o$1$G!"(BMath 
$B$r4p=`$Kbd>.2=$9$k;v$O9M$($i$l$F$$$J$+$C$?$H;W$$(B
$B$^$9!#(B

$B40A4$J8_49@-$,$J$$$+$i$3$=<h$j4:$($:CHN|J,$1$7$?$o$1$G!"1sF#$5$s$NM}6~(B
$B$ODL$i$J$$$G$9$h!#(B

$B$"$H!"0l1~0U8+$O8@$$$^$7$?$,!"26$O!"(Blib/cmath.rb 
$B$N%a%s%F%J$G$b$J$$$7!"(B
$B$3$N%P%0$N=$@5$r7h$a$?$o$1$G$b$"$j$^$;$s!#$J$N$G!"26$KJ86g$r8@$$$?$$$i(B
$B$7$$$h$&$G$9$,!"26$K8@$C$F$b$I$&$K$b$J$j$^$;$s!#(B

Math.cbrt 
$B$N?6Iq$$$,$I$&$7$F$b=EMW$H;W$($P!"$=$l$rF@$kJ}K!$O$$$/$i$G$b(B
$B$"$k$7(B 
($BB<ED$5$s$bDs0F$7$F$$$^$9$7!"JL$NJ}K!$b$"$k$G$7$g$&(B)$B!"(BCMath 
$B$,$=(B
$B$l$r$=$N0Y$@$1$KB:=E$9$kM}M3$K$O$J$i$J$$$H;W$$$^$9!#(B
Posted by Yusuke ENDOH (Guest)
on 2011-06-17 10:51
(Received via mailing list)
$B1sF#$G$9!#(B

2011$BG/(B6$B7n(B17$BF|(B1:58 Tadayoshi Funaba <tadf@dotrb.org>:
> $B40A4$J8_49@-$,$J$$$+$i$3$=<h$j4:$($:CHN|J,$1$7$?$o$1$G!"1sF#$5$s$NM}6~(B
> $B$ODL$i$J$$$G$9$h!#(B

$B$J$k$[$I!#!V(BCMath $B$,(B Math 
$B$H8_49$G$J$$!W$H$$$&$3$H$J$i!"$"$^$j4n$P$7$$(B
$BOC$@$H$O;W$$$^$;$s$,G<F@$O$G$-$^$9!#(B


> $B$"$H!"0l1~0U8+$O8@$$$^$7$?$,!"26$O!"(Blib/cmath.rb $B$N%a%s%F%J$G$b$J$$$7!"(B
> $B$3$N%P%0$N=$@5$r7h$a$?$o$1$G$b$"$j$^$;$s!#$J$N$G!"26$KJ86g$r8@$$$?$$$i(B
> $B$7$$$h$&$G$9$,!"26$K8@$C$F$b$I$&$K$b$J$j$^$;$s!#(B

$B%P%0Js9p<T$,@bF@=PMh$l$P$b$I$k$+$J$H;W$C$?$N$G!#(B
$B$^$"(B mrkn $B$5$s$KD>@\8@$&$Y$-$G$7$?$M!#$9$_$^$;$s!#(B
Posted by =?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= (Guest)
on 2011-06-18 00:22
(Received via mailing list)
$B$1$$$8$e!w$$$7$D$+$G$9(B.

In [ruby-dev:43832] the message: "[ruby-dev:43832] Re: [Ruby 1.9 -
Feature #4878][Open] CMath $B$K(B frexp, ldexp, hypot 
$B$N(B3$B4X?t$OITMW$G$O$J(B
$B$$$+(B", on Jun/17 01:10(JST) Yusuke ENDOH writes:

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

>-2 $B$rJV$9$h$&$KJQ99$9$k$N$O5DO@$7$F$+$i$K$9$Y$-$@$C$?$H$O;W$C$F$$$^$9$,!"(B
>$B!V4V0c$C$F$$$?!W$H$O$"$^$j;W$C$F$$$^$;$s!#(B
>$B$U$J$P$5$s$b$*$C$7$c$k$h$&$K(B CMath $B$,(B Math 
$B$H$N8_49@-$r9M$($F$$$k$J$i!"(B
>-2 $B$rJV$90J30$NA*Br;h$,$"$k$h$&$K$O;W$($J$$$N$G$9!#(B

$B1sF#$5$s$N8@$C$F$$$k$N$O0J2<$N<BAu$G$9$h$M(B?

  def cbrt(z)
    if z.real?
      cbrt!(z)
    else
      Complex(z) ** (1.0/3)
    end
  end

$B$3$l$@$H(B, CMath.cbrt(-8) $B$H(B CMath.cbrt(Complex(-8,0)) 
$B$GCM$,0[$J$C$F$-(B
$B$F$$$^$9(B. $B$3$NE@$K$D$$$F$I$&9M$($F$$$^$9(B?

$B$A$J$_$K(B, 
$BB>$N(BCMath$B4X?t$O<B?t;~$K$D$$$FJL$K<BAu$7$F$$$k$3$H$,B?$$$G$9(B
$B$,(B, $B>e5-$N$h$&$KCM$,0[$J$k;v$O$J$$$h$&$K$J$C$F$$$^$9(B.

__
---------------------------------------------------->> $B@PDM(B $B7=<y(B 
<<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
Posted by Yusuke ENDOH (Guest)
on 2011-06-18 01:40
(Received via mailing list)
$B1sF#$G$9!#(B

2011$BG/(B6$B7n(B17$BF|(B14:19 $B@PDM7=<y(B <keiju@ishitsuka.com>:
> $B$3$l$@$H(B, CMath.cbrt(-8) $B$H(B CMath.cbrt(Complex(-8,0)) 
$B$GCM$,0[$J$C$F$-(B
> $B$F$$$^$9(B. $B$3$NE@$K$D$$$F$I$&9M$($F$$$^$9(B?


$B$J$s$H!#(B
$B$=$l$O(B cbrt(-8) $B$G(B -2 
$B$rJV$9$h$&$K$7$?:]$N;d$N=$@5$N!V%P%0!W$G$9!#(B
Complex(-8, 0).real? $B$,(B false $B$H$OA[Dj30$G$7$?!#(B
Posted by =?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= (Guest)
on 2011-06-18 02:38
(Received via mailing list)
$B$1$$$8$e!w$$$7$D$+$G$9(B.

In [ruby-dev:43840] the message: "[ruby-dev:43840] Re: [Ruby 1.9 -
Feature #4878][Open] CMath $B$K(B frexp, ldexp, hypot 
$B$N(B3$B4X?t$OITMW$G$O$J(B
$B$$$+(B", on Jun/17 15:37(JST) Yusuke ENDOH writes:

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

>>  def cbrt(z)
>>    if z.real?
>>      cbrt!(z)
>>    else
>>      Complex(z) ** (1.0/3)
>>    end
>>  end

>> $B$3$l$@$H(B, CMath.cbrt(-8) $B$H(B CMath.cbrt(Complex(-8,0)) 
$B$GCM$,0[$J$C$F$-(B
>> $B$F$$$^$9(B. $B$3$NE@$K$D$$$F$I$&9M$($F$$$^$9(B?

>$B$J$s$H!#(B
>$B$=$l$O(B cbrt(-8) $B$G(B -2 $B$rJV$9$h$&$K$7$?:]$N;d$N=$@5$N!V%P%0!W$G$9!#(B
>Complex(-8, 0).real? $B$,(B false $B$H$OA[Dj30$G$7$?!#(B

$B%a%=%C%IL>$,0-$+$C$?$+$J$!(B. $B$=$l$O$H$b$+$/(B,

  CMath.cbrt(-8) == CMath.cbrt(Complex(-8,0))

$B$H$J$k(B, $B<+A3$J<BAu(B($B@5B'(B($BO"B3(B)$B$K$J$kJ#AG4X?t(B)$B$O(B 
$B<gCM$r<h$k%a%=%C%I(B:

  def cbrt(z)
    Complex(z) ** (1.0/3)
  end

$B0J30$J$$$N$G(B, $B$3$l$GG<F@$7$F$b$i$($^$9(B?

__
---------------------------------------------------->> $B@PDM(B $B7=<y(B 
<<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
Posted by Yusuke ENDOH (Guest)
on 2011-06-18 03:56
(Received via mailing list)
$B1sF#$G$9!#(B

2011$BG/(B6$B7n(B17$BF|(B16:33 $B@PDM7=<y(B <keiju@ishitsuka.com>:
>  CMath.cbrt(-8) == CMath.cbrt(Complex(-8,0))
>
> $B$H$J$k(B, $B<+A3$J<BAu(B($B@5B'(B($BO"B3(B)$B$K$J$kJ#AG4X?t(B)$B$O(B 
$B<gCM$r<h$k%a%=%C%I(B:
>
>  def cbrt(z)
>    Complex(z) ** (1.0/3)
>  end
>
> $B0J30$J$$$N$G(B, $B$3$l$GG<F@$7$F$b$i$($^$9(B?


[ruby-dev:43842] 
$B$rAw$C$?$D$b$j$@$C$?$N$G$9$,!"%_%9$GAw$l$F$$$^$;$s$G$7$?!#(B
CMath $B$O(B Math 
$B$H>e0L8_49$G$O$J$$!"$H$$$&$3$H$G0l1~$OG<F@$7$F$$$^$9!#(B
Posted by Motohiro KOSAKI (Guest)
on 2012-02-07 19:25
(Received via mailing list)
Issue #4878 has been updated by Motohiro KOSAKI.

Status changed from Open to Rejected

提案者が提案を取り下げているようなのでrejectします
----------------------------------------
Feature #4878: CMath に frexp, ldexp, hypot の3関数は不要ではないか
https://bugs.ruby-lang.org/issues/4878

Author: Kenta Murata
Status: Rejected
Priority: Normal
Assignee: Yukihiro Matsumoto
Category:
Target version: 2.0.0


現在 CMath は、Math を include して各関数を再定義することで実装されています。
このやり方では、複素数向けの関数としては定義できない frexp, ldexp, hypot の3関数も同時に include 
されてしまいます。
これらは Math の関数として定義されていれば良いだけですので、CMath からの削除を提案します。
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.