From: Tadayoshi Funaba Date: 2008-12-22T21:38:28+09:00 Subject: [ruby-dev:37550] Re: [Bug #913] mathn した場合、sqrt(NaN) が複素数になる > >たぶん、こんな感じだと思います。コミットしてよいですか? < 石塚さん > > 値が変だという意味では, 何らかの対処があるべきだと思います. が > > , 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 やあるいは未知の実数の実装でも受け入れます。