Bug #913
closed
mathn した場合、sqrt(NaN) が複素数になる
Added by tadf (tadayoshi funaba) almost 16 years ago.
Updated over 13 years ago.
Description
=begin
main@191-20081221> nan = 0.0/0
#=> NaN
main@191-20081221> Math.sqrt(nan)
#=> NaN
main@191-20081221> require 'mathn'
#=> true
main@191-20081221> Math.sqrt(nan)
#=> (0+NaN*i)
=end
- Target version set to 1.9.1 Release Candidate
- Assignee set to keiju (Keiju Ishitsuka)
=begin
たぶん、こんな感じだと思います。コミットしてよいですか? < 石塚さん
diff --git a/lib/mathn.rb b/lib/mathn.rb
index 48cb99f..0241f57 100644
--- a/lib/mathn.rb
+++ b/lib/mathn.rb
@@ -134,6 +134,8 @@ module Math
else
Complex(x, -y)
end
- elsif a.respond_to?(:nan?) and a.nan?
-
a
elsif a >= 0
rsqrt(a)
else
=end
=begin
けいじゅ@いしつかです.
In [ruby-dev :37537 ] the message: "[ruby-dev:37537] [Bug #913] mathn
した場合、sqrt(NaN) が複素数になる ", on Dec/22 11:38(JST) Yuki Sonoda
writes:
チケット #913 が更新されました。 (by Yuki Sonoda)
たぶん、こんな感じだと思います。コミットしてよいですか? < 石塚さん
値が変だという意味では, 何らかの対処があるべきだと思います. が
, baseとなっているComplexの振る舞いに基づいているので,まず, Complexに
nanを食わせたときの振る舞いを明確にした方が良いのでは?
irb(main):001:0> nan = 0.0/0
=> NaN
irb(main):002:0> Complex(nan,0)
=> (NaN+0i)
irb(main):003:0> Complex(0,nan)
=> (0+NaN*i)
これらの振る舞いはこれで良いんですかね?
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
=begin
たぶん、こんな感じだと思います。コミットしてよいですか? < 石塚さん
値が変だという意味では, 何らかの対処があるべきだと思います. が
, baseとなっているComplexの振る舞いに基づいているので,まず, Complexに
nanを食わせたときの振る舞いを明確にした方が良いのでは?
あまり関係ないような気がします。matnn なしで、
Math.sqrt(NaN) #=> NaN
となるということなので。
irb(main):001:0> nan = 0.0/0
=> NaN
irb(main):002:0> Complex(nan,0)
=> (NaN+0i)
irb(main):003:0> Complex(0,nan)
=> (0+NaN*i)
これらの振る舞いはこれで良いんですかね?
たとえば、r6rs で、+nan.0+0i や 0+nan.0i と書いた場合と同じで構わないと
思っています。python でも同じです。
基本的に Complex の要素は real であればいいという判断です。だから、
BigDecimal やあるいは未知の実数の実装でも受け入れます。
=end
=begin
けいじゅ@いしつかです.
下記了解です.
Yuguiさんチェックインしていただけないでしょうか?
In [ruby-dev :37550 ] the message: "[ruby-dev:37550] Re: [Bug #913]
mathn した場合、sqrt(NaN) が複素数になる ", on Dec/22 21:38(JST)
Tadayoshi Funaba writes:
たぶん、こんな感じだと思います。コミットしてよいですか? < 石塚さん
値が変だという意味では, 何らかの対処があるべきだと思います. が
, baseとなっているComplexの振る舞いに基づいているので,まず, Complexに
nanを食わせたときの振る舞いを明確にした方が良いのでは?
あまり関係ないような気がします。matnn なしで、
Math.sqrt(NaN) #=> NaN
となるということなので。
irb(main):001:0> nan = 0.0/0
=> NaN
irb(main):002:0> Complex(nan,0)
=> (NaN+0i)
irb(main):003:0> Complex(0,nan)
=> (0+NaN*i)
これらの振る舞いはこれで良いんですかね?
たとえば、r6rs で、+nan.0+0i や 0+nan.0i と書いた場合と同じで構わないと
思っています。python でも同じです。
基本的に Complex の要素は real であればいいという判断です。だから、
BigDecimal やあるいは未知の実数の実装でも受け入れます。
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
- Category set to lib
- Status changed from Open to Closed
=begin
applied in r20938.
=end
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0