https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2010-08-10T23:01:59Z
Ruby Issue Tracking System
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12745
2010-08-10T23:01:59Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="/issues/3676">[ruby-dev:41972]</a> [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: CMath.cbrt(-8)の結果が複素数にならない (Closed)" href="https://bugs.ruby-lang.org/issues/3676">#3676</a>] CMath.cbrt(-8)の結果が複素数にならない"<br>
on Tue, 10 Aug 2010 21:28:22 +0900, tadayoshi funaba <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> writes:</p>
<p>|CMath.cbrt(-8)の結果が複素数にならない。</p>
<p>現在のCMath.cbrt(-8)の結果は-2で、これは3乗すると-8になるとい<br>
う意味で正しい値に思えるのですが。Cmath.cbrt(-8)が返すべき<br>
「正しい」値はなんだとお考えですか?</p>
<p>あるいは(-2+0i)を返すべきという主張なのかもしれませんが、現在<br>
のCMathの関数群は、全般に「Mathの関数群が実数の範囲で定義され<br>
ずエラーになる場合、CMathの対応する関数は複素数を返す」という<br>
設計になっており、ことさらcbrtについてだけ変える必要があるよ<br>
うには思えません。</p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12746
2010-08-10T23:22:20Z
tadf (tadayoshi funaba)
<ul></ul><p>=begin</p>
<blockquote>
<p>現在のCMath.cbrt(-8)の結果は-2で、これは3乗すると-8になるとい<br>
う意味で正しい値に思えるのですが。Cmath.cbrt(-8)が返すべき<br>
「正しい」値はなんだとお考えですか?</p>
</blockquote>
<p>絶対的に正しい値はないと思いますが、おおよそ、Complex(-8) ** (1.0/3) で<br>
ある (1.0+1.73205080756888i) ではないでしょうか。</p>
<blockquote>
<p>あるいは(-2+0i)を返すべきという主張なのかもしれませんが、現在<br>
のCMathの関数群は、全般に「Mathの関数群が実数の範囲で定義され<br>
ずエラーになる場合、CMathの対応する関数は複素数を返す」という<br>
設計になっており、ことさらcbrtについてだけ変える必要があるよ<br>
うには思えません。</p>
</blockquote>
<p>複素数を値域、定義域にする関数なら、複素数の範囲内でもっとも適切な値を<br>
返すべきだと思います。逆に言えば、Math.cbrt は実数の範囲内では、-2.0 を<br>
返すのが妥当だからそうなっているのではないかと思います。CMath は実数で<br>
表現できない場合に複素数をつかう関数ではなく、複素数を値域、定義域に持<br>
つ関数群なのではないでしょうか。</p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12748
2010-08-11T00:17:28Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/41980">[ruby-dev:41980]</a> Re: [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: CMath.cbrt(-8)の結果が複素数にならない (Closed)" href="https://bugs.ruby-lang.org/issues/3676">#3676</a>] CMath.cbrt(-8)の結果が複素数にならない"<br>
on Tue, 10 Aug 2010 23:22:12 +0900, Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a> writes:</p>
<p>|> 現在のCMath.cbrt(-8)の結果は-2で、これは3乗すると-8になるとい<br>
|> う意味で正しい値に思えるのですが。Cmath.cbrt(-8)が返すべき<br>
|> 「正しい」値はなんだとお考えですか?<br>
|<br>
|絶対的に正しい値はないと思いますが、おおよそ、Complex(-8) ** (1.0/3) で<br>
|ある (1.0+1.73205080756888i) ではないでしょうか。</p>
<p>そうなんですか、複素数の範囲では一意に決まらないということな<br>
んですかね。無知ですいません。</p>
<p>|複素数を値域、定義域にする関数なら、複素数の範囲内でもっとも適切な値を<br>
|返すべきだと思います。逆に言えば、Math.cbrt は実数の範囲内では、-2.0 を<br>
|返すのが妥当だからそうなっているのではないかと思います。CMath は実数で<br>
|表現できない場合に複素数をつかう関数ではなく、複素数を値域、定義域に持<br>
|つ関数群なのではないでしょうか。</p>
<p>繰り返しになりますが、現状のCMathは「複素数の範囲内でもっと<br>
も適切な値を返す」という設計にはなっていませんね。そうすべき<br>
であるかどうか、私は判断できる知識がありませんが、そうだとす<br>
るとCMathそのもののあり方を変更するような大きな判断だと思い<br>
ます。</p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12749
2010-08-11T00:36:10Z
tadf (tadayoshi funaba)
<ul></ul><p>=begin</p>
<blockquote>
<p>繰り返しになりますが、現状のCMathは「複素数の範囲内でもっと<br>
も適切な値を返す」という設計にはなっていませんね。そうすべき<br>
であるかどうか、私は判断できる知識がありませんが、そうだとす<br>
るとCMathそのもののあり方を変更するような大きな判断だと思い<br>
ます。</p>
</blockquote>
<p>まつもとさんが言う意味と僕のそれは違う感じがしますが、「適切な値」とい<br>
うところでは課題があるのは間違いなさそうです。</p>
<p>本当は、1.9 の議論で、Math が複素数をあつかうようにして、場合によっては<br>
C のライブラリに投げてしまうようにしたいなと思っていたのです。実は、こ<br>
の部分に限っては後でむらけんさんが C に任せろという意見にほぼ賛成だった<br>
のですが、あっさり却下され、こっちもこの件で延々議論する余裕もないので、<br>
そこに到る議論はなくなりました。</p>
<p>いまの実装は、1.8 のもの殆どそのままですが、十数年くらい前の段階で議論<br>
が進んで、業界での標準的な考えが出来ていた筈なのですが、ruby の複素数関<br>
数はそこに追い付いていないと思います。そういう意味で適切な値でないに違<br>
いないです。</p>
<p>まつもとさんが言っているのはそういう意味じゃないと思いますが、定義域と<br>
値域があって関数がある、Math は実数に対して定義がある。CMath は複素数に<br>
対して定義される、というのは常識的な事で、議論の余地はないくらいに思い<br>
ます。CMath は制限の撤廃、あるいは定義域値域の拡大だと思います。</p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12751
2010-08-11T01:08:51Z
mame (Yusuke Endoh)
mame@ruby-lang.org
<ul></ul><p>=begin<br>
遠藤です。</p>
<p>まず、これを変えたのは私です。<a href="/issues/3563">[ruby-core:31234]</a> でバグ報告が<br>
来たためでした。相談せずに変えてしまってすみません。</p>
<p>2010年8月10日23:22 Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a>:</p>
<blockquote>
<blockquote>
<p>現在のCMath.cbrt(-8)の結果は-2で、これは3乗すると-8になるとい<br>
う意味で正しい値に思えるのですが。Cmath.cbrt(-8)が返すべき<br>
「正しい」値はなんだとお考えですか?</p>
</blockquote>
<p>絶対的に正しい値はないと思いますが、おおよそ、Complex(-8) ** (1.0/3) で<br>
ある (1.0+1.73205080756888i) ではないでしょうか。</p>
</blockquote>
<p>高校レベルの複素数の知識しかないので、Complex#**(Rational) が<br>
n 乗根のどれを返すかは不定だと思っていました。<br>
仰角が正で最小のものが「おおよそ正しい」んですかね。</p>
<p>少なくとも Complex#** の仕様として決まっているなら、できれば<br>
rdoc に書いておいて欲しいです。</p>
<p>2010年8月11日0:35 Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a>:</p>
<blockquote>
<p>まつもとさんが言っているのはそういう意味じゃないと思いますが、定義域と<br>
値域があって関数がある、Math は実数に対して定義がある。CMath は複素数に<br>
対して定義される、というのは常識的な事で、議論の余地はないくらいに思い<br>
ます。CMath は制限の撤廃、あるいは定義域値域の拡大だと思います。</p>
</blockquote>
<p>私はまつもとさんと同じ感覚でした (CMath は Math の挙動を拡張する<br>
だけで変えはしない) 。<a href="/issues/3563">[ruby-core:31234]</a> の人も同じ感覚だと思います。<br>
ちなみに後で登場するに違いないと思いますが、むらけんさんはふなば<br>
さんと同じ感覚のようです。<br>
この機会にコンセンサス (や将来的な方針) を決めとくとよさそうですね。</p>
<p>--<br>
Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12772
2010-08-12T01:09:42Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul></ul><p>=begin<br>
むらたです。</p>
<p>On 2010/08/11, at 1:08, Yusuke ENDOH wrote:</p>
<blockquote>
<p>2010年8月10日23:22 Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a>:</p>
<blockquote>
<blockquote>
<p>現在のCMath.cbrt(-8)の結果は-2で、これは3乗すると-8になるとい<br>
う意味で正しい値に思えるのですが。Cmath.cbrt(-8)が返すべき<br>
「正しい」値はなんだとお考えですか?</p>
</blockquote>
<p>絶対的に正しい値はないと思いますが、おおよそ、Complex(-8) ** (1.0/3) で<br>
ある (1.0+1.73205080756888i) ではないでしょうか。</p>
</blockquote>
<p>高校レベルの複素数の知識しかないので、Complex#**(Rational) が<br>
n 乗根のどれを返すかは不定だと思っていました。<br>
仰角が正で最小のものが「おおよそ正しい」んですかね。</p>
</blockquote>
<p>仰角が正で最小のものを主値 (principal value) と言い、<br>
多価関数を一価関数とするために使用されます。<br>
<a href="http://ja.wikipedia.org/wiki/%E4%B8%BB%E5%80%A4" class="external">http://ja.wikipedia.org/wiki/%E4%B8%BB%E5%80%A4</a></p>
<p>n乗根の主値は1の原始n乗根の実数倍になっています。<br>
<a href="http://ja.wikipedia.org/wiki/1%E3%81%AE%E5%86%AA%E6%A0%B9" class="external">http://ja.wikipedia.org/wiki/1%E3%81%AE%E5%86%AA%E6%A0%B9</a></p>
<p>ご存知の通り、この主値さえあればすべての解を順番に生成できます:</p>
<p>a = Complex(-8)<strong>(1.0/3) # 主値<br>
w = a / a.abs # 1の原始3乗根<br>
a * w #=> (-0.9999999999999996+1.7320508075688776i)<br>
a * w</strong>2 #=> (-2.0+7.771561172376096e-16i)</p>
<p>しかし、負数の奇数乗根はかならず実解を持ちますから、<br>
主値ではなく実解をダイレクトに手に入れる方法があっても良いと思います。<br>
なぜなら、上の方法では浮動小数点演算による誤差を含んでしまうことと、<br>
ダイレクトに求められれば必要なかった計算を必要としているからです。</p>
<p>(引用の順序を入れ替えます)</p>
<blockquote>
<p>2010年8月11日0:35 Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a>:</p>
<blockquote>
<p>まつもとさんが言っているのはそういう意味じゃないと思いますが、定義域と<br>
値域があって関数がある、Math は実数に対して定義がある。CMath は複素数に<br>
対して定義される、というのは常識的な事で、議論の余地はないくらいに思い<br>
ます。CMath は制限の撤廃、あるいは定義域値域の拡大だと思います。</p>
</blockquote>
<p>私はまつもとさんと同じ感覚でした (CMath は Math の挙動を拡張する<br>
だけで変えはしない) 。<a href="/issues/3563">[ruby-core:31234]</a> の人も同じ感覚だと思います。<br>
ちなみに後で登場するに違いないと思いますが、むらけんさんはふなば<br>
さんと同じ感覚のようです。<br>
この機会にコンセンサス (や将来的な方針) を決めとくとよさそうですね。</p>
</blockquote>
<p>私は、どちらかといえばふなばさんと同じ立場です。<br>
しかし上で書いたように実解をダイレクトに得る方法があっても良いと思います。</p>
<p>たとえば CMath.cbrt にオプション引数を追加して</p>
<p>CMath.cbrt(-8) #=> 主値<br>
CMath.cbrt(-8, :real_only => true) #=> -2</p>
<p>のようにするとか。</p>
<p>もしくは逆に</p>
<p>CMath.cbrt(-8) #=> -2<br>
CMath.cbrt(-8, :principal_value => true) #=> 主値</p>
<p>でも良いかもしれませんが、実解を得たいなら現在は Math.cbrt を使えるので<br>
CMath.cbrt のデフォルトの返り値は主値のほうが良いと思います。</p>
<p>このような、オプション引数による挙動の変更が許されるのであれば、<br>
いっそ CMath と Math を統合してしまうのも一つの方法だと思います。</p>
<blockquote>
<p>少なくとも Complex#** の仕様として決まっているなら、できれば<br>
rdoc に書いておいて欲しいです。</p>
</blockquote>
<p>私は ** の結果は主値になっているほうが良いと考えます。<br>
理由はいくつかあって、</p>
<p>(1) 1の原始3乗根の実数倍という数学的に特別である<br>
(2) レシーバが Complex なんだから、一般に実解は期待できない<br>
(3) Mathematica がそうなっている</p>
<p>などです。なお Mathematica の挙動は Wolfram|Alpha で検証できます。<br>
<a href="http://www.wolframalpha.com/input/?i=(-27)%5E(1/3)" class="external">http://www.wolframalpha.com/input/?i=(-27)^(1/3)</a></p>
<p>--<br>
Kenta Murata<br>
OpenPGP FP = 1D69 ADDE 081C 9CC2 2E54 98C1 CEFE 8AFB 6081 B062</p>
<p>本を書きました!!<br>
『Ruby 逆引きレシピ』 <a href="http://www.amazon.co.jp/dp/4798119881/mrkn-22" class="external">http://www.amazon.co.jp/dp/4798119881/mrkn-22</a></p>
<p>E-mail: <a href="mailto:mrkn@mrkn.jp" class="email">mrkn@mrkn.jp</a><br>
twitter: <a href="http://twitter.com/mrkn/" class="external">http://twitter.com/mrkn/</a><br>
blog: <a href="http://d.hatena.ne.jp/mrkn/" class="external">http://d.hatena.ne.jp/mrkn/</a></p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=12773
2010-08-12T01:44:49Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>Topポスティングはあまり好きではないのですが、理解しないまま<br>
にヘタに削るとまずそうなので、今回は残します。</p>
<p>要約すると</p>
<p>(1) Complex#** は主値を返すべきである(現状のまま)<br>
(2) CMath.cbrt()は主値を返せた方がよい<br>
(2-1) 主値を返す<br>
(2-2) 主値を返すオプションを用意する<br>
(2-3) オプションを用意した上、CMathはMathのaliasにする</p>
<p>これが誤読でないとして、私の意見を表明しておくと</p>
<p>(1) 賛成<br>
(2) 条件つき賛成<br>
以下を明確にする必要がある<br>
* 変更範囲はどこまでか。cbrtだけ?<br>
* 上記の3案(またはそれ以外)のいずれを採用するか<br>
* だれが作業するか</p>
<p>です。</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/42006">[ruby-dev:42006]</a> Re: [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: CMath.cbrt(-8)の結果が複素数にならない (Closed)" href="https://bugs.ruby-lang.org/issues/3676">#3676</a>] CMath.cbrt(-8)の結果が複素数にならない"<br>
on Thu, 12 Aug 2010 01:09:13 +0900, Kenta Murata <a href="mailto:muraken@gmail.com" class="email">muraken@gmail.com</a> writes:<br>
|<br>
|むらたです。<br>
|<br>
|On 2010/08/11, at 1:08, Yusuke ENDOH wrote:<br>
|<br>
|> 2010年8月10日23:22 Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a>:<br>
|>>> 現在のCMath.cbrt(-8)の結果は-2で、これは3乗すると-8になるとい<br>
|>>> う意味で正しい値に思えるのですが。Cmath.cbrt(-8)が返すべき<br>
|>>> 「正しい」値はなんだとお考えですか?<br>
|>><br>
|>> 絶対的に正しい値はないと思いますが、おおよそ、Complex(-8) ** (1.0/3) で<br>
|>> ある (1.0+1.73205080756888i) ではないでしょうか。<br>
|><br>
|> 高校レベルの複素数の知識しかないので、Complex#<strong>(Rational) が<br>
|> n 乗根のどれを返すかは不定だと思っていました。<br>
|> 仰角が正で最小のものが「おおよそ正しい」んですかね。<br>
|<br>
|仰角が正で最小のものを主値 (principal value) と言い、<br>
|多価関数を一価関数とするために使用されます。<br>
|<a href="http://ja.wikipedia.org/wiki/%E4%B8%BB%E5%80%A4" class="external">http://ja.wikipedia.org/wiki/%E4%B8%BB%E5%80%A4</a><br>
|<br>
|n乗根の主値は1の原始n乗根の実数倍になっています。<br>
|<a href="http://ja.wikipedia.org/wiki/1%E3%81%AE%E5%86%AA%E6%A0%B9" class="external">http://ja.wikipedia.org/wiki/1%E3%81%AE%E5%86%AA%E6%A0%B9</a><br>
|<br>
|ご存知の通り、この主値さえあればすべての解を順番に生成できます:<br>
|<br>
| a = Complex(-8)</strong>(1.0/3) # 主値<br>
| w = a / a.abs # 1の原始3乗根<br>
| a * w #=> (-0.9999999999999996+1.7320508075688776i)<br>
| a * w<strong>2 #=> (-2.0+7.771561172376096e-16i)<br>
|<br>
|しかし、負数の奇数乗根はかならず実解を持ちますから、<br>
|主値ではなく実解をダイレクトに手に入れる方法があっても良いと思います。<br>
|なぜなら、上の方法では浮動小数点演算による誤差を含んでしまうことと、<br>
|ダイレクトに求められれば必要なかった計算を必要としているからです。<br>
|<br>
|(引用の順序を入れ替えます)<br>
|<br>
|> 2010年8月11日0:35 Tadayoshi Funaba <a href="mailto:tadf@dotrb.org" class="email">tadf@dotrb.org</a>:<br>
|>> まつもとさんが言っているのはそういう意味じゃないと思いますが、定義域と<br>
|>> 値域があって関数がある、Math は実数に対して定義がある。CMath は複素数に<br>
|>> 対して定義される、というのは常識的な事で、議論の余地はないくらいに思い<br>
|>> ます。CMath は制限の撤廃、あるいは定義域値域の拡大だと思います。<br>
|><br>
|> 私はまつもとさんと同じ感覚でした (CMath は Math の挙動を拡張する<br>
|> だけで変えはしない) 。<a href="/issues/3563">[ruby-core:31234]</a> の人も同じ感覚だと思います。<br>
|> ちなみに後で登場するに違いないと思いますが、むらけんさんはふなば<br>
|> さんと同じ感覚のようです。<br>
|> この機会にコンセンサス (や将来的な方針) を決めとくとよさそうですね。<br>
|<br>
|<br>
|私は、どちらかといえばふなばさんと同じ立場です。<br>
|しかし上で書いたように実解をダイレクトに得る方法があっても良いと思います。<br>
|<br>
|たとえば CMath.cbrt にオプション引数を追加して<br>
|<br>
| CMath.cbrt(-8) #=> 主値<br>
| CMath.cbrt(-8, :real_only => true) #=> -2<br>
|<br>
|のようにするとか。<br>
|<br>
|もしくは逆に<br>
|<br>
| CMath.cbrt(-8) #=> -2<br>
| CMath.cbrt(-8, :principal_value => true) #=> 主値<br>
|<br>
|でも良いかもしれませんが、実解を得たいなら現在は Math.cbrt を使えるので<br>
|CMath.cbrt のデフォルトの返り値は主値のほうが良いと思います。<br>
|<br>
|このような、オプション引数による挙動の変更が許されるのであれば、<br>
|いっそ CMath と Math を統合してしまうのも一つの方法だと思います。<br>
|<br>
|<br>
|> 少なくとも Complex#</strong> の仕様として決まっているなら、できれば<br>
|> rdoc に書いておいて欲しいです。<br>
|<br>
|私は ** の結果は主値になっているほうが良いと考えます。<br>
|理由はいくつかあって、<br>
|<br>
|(1) 1の原始3乗根の実数倍という数学的に特別である<br>
|(2) レシーバが Complex なんだから、一般に実解は期待できない<br>
|(3) Mathematica がそうなっている<br>
|<br>
|などです。なお Mathematica の挙動は Wolfram|Alpha で検証できます。<br>
|<a href="http://www.wolframalpha.com/input/?i=(-27)%5E(1/3)" class="external">http://www.wolframalpha.com/input/?i=(-27)^(1/3)</a><br>
|<br>
|<br>
|--<br>
|Kenta Murata<br>
|OpenPGP FP = 1D69 ADDE 081C 9CC2 2E54 98C1 CEFE 8AFB 6081 B062<br>
|<br>
|本を書きました!!<br>
|『Ruby 逆引きレシピ』 <a href="http://www.amazon.co.jp/dp/4798119881/mrkn-22" class="external">http://www.amazon.co.jp/dp/4798119881/mrkn-22</a><br>
|<br>
|E-mail: <a href="mailto:mrkn@mrkn.jp" class="email">mrkn@mrkn.jp</a><br>
|twitter: <a href="http://twitter.com/mrkn/" class="external">http://twitter.com/mrkn/</a><br>
|blog: <a href="http://d.hatena.ne.jp/mrkn/" class="external">http://d.hatena.ne.jp/mrkn/</a></p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=13031
2010-08-27T13:18:46Z
shyouhei (Shyouhei Urabe)
shyouhei@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li><li><strong>Assignee</strong> set to <i>mrkn (Kenta Murata)</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=17726
2011-06-11T15:10:55Z
ko1 (Koichi Sasada)
<ul></ul><p>この件はどうなってますでしょうか.</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=17890
2011-06-13T14:00:04Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul></ul><p>まず CMath.cbrt 単独で、主値を返却するように修正します。</p>
<p>CMath の他の関数についてはバグとして、オプション引数の導入についてはフィーチャーとちえ、個別にチケット化します。</p>
Ruby master - Bug #3676: CMath.cbrt(-8)の結果が複素数にならない
https://bugs.ruby-lang.org/issues/3676?journal_id=17901
2011-06-13T23:12:57Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li></ul><p>CMath についてですが、現状で複素数に対応できていないのは以下の3関数です。</p>
<p>gamma<br>
lgamma<br>
erf<br>
erfc</p>
<p>これらのうち、gamma は exp(lgamma) なので良いとして、他の3種類はアルゴリズムを手に入れるところからのスタートなので、1.9.4で対応することを目標に取り組みます。</p>
<p>それから、frexp, ldexp, hypot の3関数は CMath の下に定義する必要は無いと思いますので、別チケットで削除の提案をしたいと思います。</p>
<p>そういう訳ですので、このチケットは CMath.cbrt の挙動が修正できたので閉じます。</p>