Can math.atan2 return INF?
Random832
random832 at fastmail.com
Wed Jun 22 12:19:46 EDT 2016
On Wed, Jun 22, 2016, at 11:34, Ben Bacarisse wrote:
> Steven D'Aprano <steve at pearwood.info> writes:
> > I think that the only way it will return a NAN is if passed a NAN.
>
> That seems to be the case but I was a little surprised to find that
>
> >>> math.atan2(INF, INF)
> 0.7853981633974483
>
> I would have expected NaN since atan2(INF, INF) could be thought of as
> the limit of atan2(x, y) which could be any value in the range. And I'd
> have guessed atan2(0, 0) would have been NaN too but
>
> >>> math.atan2(0, 0)
> 0.0
In C, the result of atan2(0, 0) [for any sign of zero] may be
implementation-dependent: "A domain error may occur if both arguments
are zero." In CPython, though, they're explicitly handled as special
cases by the m_atan2 function. The results match that of the x87 FPATAN
instruction, and presumably the IEEE standard (the same results are
prescribed in the IEC 60559 appendix of the C standard)
http://www.charlespetzold.com/blog/2008/09/180741.html mentions Intel's
rationale (in short, it's because 0+0j is a real number).
More information about the Python-list
mailing list