From: Tadashi Saito Date: 2008-07-28T10:24:31+09:00 Subject: [ruby-dev:35670] Re: [Ruby 1.9 - Bug #368] (Open) 境界における Math.atanh 等の動作 斎藤と申します。 On Mon, 28 Jul 2008 02:56:45 +0900 Yui NARUSE wrote: > 現在の Ruby trunk では、FreeBSD 7 において、 > test/ruby/test_math.rb は以下のように失敗します。 (snip) > 1) Failure: > test_atanh(TestMath) [test/ruby/test_math.rb:97]: > <[Errno::EDOM, Errno::ERANGE]> exception expected but none was thrown. 参考になるか分かりませんが、C99規格(JIS X3010)でも、atanh(1) or atanh(-1) に ついては「値域エラーが発生する『ことがある』」としか書いておらず、ERANGEがセットされる 保証はないようです。 > 2) Failure: > test_log(TestMath) [test/ruby/test_math.rb:113]: > <[Errno::EDOM, Errno::ERANGE]> exception expected but none was thrown. このlog(0)についても、 > 3) Failure: > test_log10(TestMath) [test/ruby/test_math.rb:129]: > <[Errno::EDOM, Errno::ERANGE]> exception expected but none was thrown. このlog10(0)についても、 > 4) Failure: > test_log2(TestMath) [test/ruby/test_math.rb:121]: > <[Errno::EDOM, Errno::ERANGE]> exception expected but none was thrown. このlog2(0)についても、いずれも同様の「発生する『ことがある』」という記述です。 > 例えば、NetBSD4 だと atanh のマニュアルには以下のようにあり、 > atanh(1) は NaN となります。 (snip) > しかし、FreeBSD7 では以下のようになっており、atanh(1) は infinity を返します。 テストを見ると、返り値は関係ないと思いますが、どうでしょうか。 -- 斎藤ただし