Thread overview
[Issue 1877] New: Errors in the documentation of std.math.atan2
Feb 28, 2008
d-bugmail
Feb 29, 2008
d-bugmail
Feb 29, 2008
Bill Baxter
Feb 29, 2008
Don Clugston
Feb 29, 2008
d-bugmail
Mar 07, 2008
d-bugmail
February 28, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1877

           Summary: Errors in the documentation of std.math.atan2
           Product: D
           Version: 2.011
          Platform: PC
               URL: http://www.digitalmars.com/d/2.0/phobos/std_math.html
        OS/Version: All
            Status: NEW
          Severity: minor
          Priority: P2
         Component: www.digitalmars.com
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: lio@lunesu.com


First of all, the doc states "Calculates the arc tangent of y / x, returning a
value ranging from -π/2 to π/2." which should be "..from -π to π.", as is
shown in the table.

Then, there are a couple of inconsistencies in the "Special Values" table:
"±0.0 ±0.0 ±0.0" should be "±0.0 +0.0 ±0.0",
"<0.0 ±0.0 π/2" should be "<0.0 ±0.0 -π/2",
">0.0 ∞ ±0.0" should be "anything ∞ ±0.0",
">0.0 -∞ ±π" should be "anything -∞ ±π".


-- 

February 29, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1877





------- Comment #1 from clugdbug@yahoo.com.au  2008-02-29 02:15 -------
(In reply to comment #0)
> First of all, the doc states "Calculates the arc tangent of y / x, returning a
> value ranging from -π/2 to π/2." which should be "..from -π to π.", as is
> shown in the table.
> 
> Then, there are a couple of inconsistencies in the "Special Values" table:
> "±0.0 ±0.0 ±0.0" should be "±0.0 +0.0 ±0.0",
> "<0.0 ±0.0 π/2" should be "<0.0 ±0.0 -π/2",
> ">0.0 ∞ ±0.0" should be "anything ∞ ±0.0",
> ">0.0 -∞ ±π" should be "anything -∞ ±π".
> 

You're correct for the first three, but not for the last two. atan2(NaN, inf)
is NaN, not +-0. Also atan2(inf, inf) is pi/4.


-- 

February 29, 2008
d-bugmail@puremagic.com wrote:
> http://d.puremagic.com/issues/show_bug.cgi?id=1877
> 
> 
> 
> 
> 
> ------- Comment #1 from clugdbug@yahoo.com.au  2008-02-29 02:15 -------
> (In reply to comment #0)
>> First of all, the doc states "Calculates the arc tangent of y / x, returning a
>> value ranging from -π/2 to π/2." which should be "..from -π to π.", as is
>> shown in the table.
>>
>> Then, there are a couple of inconsistencies in the "Special Values" table:
>> "±0.0 ±0.0 ±0.0" should be "±0.0 +0.0 ±0.0",
>> "<0.0 ±0.0 π/2" should be "<0.0 ±0.0 -π/2",
>> ">0.0 ∞ ±0.0" should be "anything ∞ ±0.0",
>> ">0.0 -∞ ±π" should be "anything -∞ ±π".
>>
> 
> You're correct for the first three, but not for the last two. atan2(NaN, inf)
> is NaN, not +-0. Also atan2(inf, inf) is pi/4.

Who says the atan2(inf,inf) is pi/4?  Is that an IEEE thing?
Seems odd since that's like saying atan(inf/inf), and inf/inf is NaN, isn't it?
Put another way atan2(inf,inf)
the limit of any atan2(k*x,x) as x gets big.  Since k could be anything, it seems strange for the value to suddenly change to pi/4 when x becomes inf.

--bb
February 29, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1877





------- Comment #2 from lio@lunesu.com  2008-02-29 02:41 -------
I was using "anything" more like "anything, except values explicitely mentioned elsewhere in this table", as seems to be the case in the row "±∞ anything ±π/2", already present in the table.

Also "inf,inf" is explictely mentioned in the table, so was not meant by "anything". I agree that the word "anything" should be best avoided and replaced by "<>0" or something similarly D-like.


-- 

February 29, 2008
Bill Baxter wrote:
> d-bugmail@puremagic.com wrote:
>> http://d.puremagic.com/issues/show_bug.cgi?id=1877
>>
>>
>>
>>
>>
>> ------- Comment #1 from clugdbug@yahoo.com.au  2008-02-29 02:15 -------
>> (In reply to comment #0)
>>> First of all, the doc states "Calculates the arc tangent of y / x, returning a
>>> value ranging from -π/2 to π/2." which should be "..from -π to π.", as is
>>> shown in the table.
>>>
>>> Then, there are a couple of inconsistencies in the "Special Values" table:
>>> "±0.0 ±0.0 ±0.0" should be "±0.0 +0.0 ±0.0",
>>> "<0.0 ±0.0 π/2" should be "<0.0 ±0.0 -π/2",
>>> ">0.0 ∞ ±0.0" should be "anything ∞ ±0.0",
>>> ">0.0 -∞ ±π" should be "anything -∞ ±π".
>>>
>>
>> You're correct for the first three, but not for the last two. atan2(NaN, inf)
>> is NaN, not +-0. Also atan2(inf, inf) is pi/4.
> 
> Who says the atan2(inf,inf) is pi/4?  Is that an IEEE thing?

Yup.

For a sanity check, here's a link to the Java docs:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html#atan2(double,%20double)

> Seems odd since that's like saying atan(inf/inf), and inf/inf is NaN, isn't it?

Yes, it's one of the strange IEEE results. There's a couple that are controversial.

> Put another way atan2(inf,inf)
> the limit of any atan2(k*x,x) as x gets big.  Since k could be anything, it seems strange for the value to suddenly change to pi/4 when x becomes inf.
> 
> --bb
March 07, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1877


bugzilla@digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




------- Comment #4 from bugzilla@digitalmars.com  2008-03-07 00:37 -------
Fixed dmd 1.028 and 2.012


--