From: Yukihiro Matsumoto Date: 2009-11-09T17:38:52+09:00 Subject: [ruby-core:26647] Re: [Bug #2189] Math.atanh(1) & Math.atanh(-1) should not raise an error Hi, In message "Re: [ruby-core:26465] [Bug #2189] Math.atanh(1) & Math.atanh(-1) should not raise an error" on Sun, 1 Nov 2009 12:54:45 +0900, Marc-Andre Lafortune writes: |> So we follow SUSv3, which defines atanh(x) as "If x is ±1, a pole error shall occur, (...)" |> And make atanh raise Errno::EDOM or Errno::ERANGE. | |This appears to be inexact, as Ruby does not follow SUSv3 faithfully. | |First, SUSv3 clearly distinguishes between what it calls "domain errors", "range errors" and "pole errors". Pole errors are distinct errors and are neither a "domain error" nor a "range error". Returning "Errno::EDOM: Numerical argument out of domain" in a "pole error" situation is in contradiction of SUSv3. Forgive my ignorance but what is a pole error in practical UNIX programing sense. On my Linux box, atanh document only describes EDOM to be raised. Does that mean, atanh on Linux not following SUSv3? In that case, when underlying Linux does not, should we? matz.