Vedran Furač wrote: > I think that this results must be the same: > In [3]: math.atan2(-0.0,-1) > Out[3]: -3.1415926535897931 > In [4]: math.atan2(-0,-1) > Out[4]: 3.1415926535897931
-0 is converted to 0, then to 0.0 for calculation, losing the sign. You might as well write 0.0 instead of -0 The behaviour of atan2 conforms to the ISO C99 standard (Python is implemented in C). Changing the sign of the first argument changes the sign of the output, with no special treatment for zero. > In [5]: -0 == -0.0 > Out[5]: True The constant -0 is an integer and is immediately converted to 0 (an integer). Two's-complement integers have no separate sign bit, and only one representation for zero. The integer -0 is identical in all respects to the integer 0 The constant -0.0 is a float, stored as an IEEE 754 bit pattern, and has a bit used to represent sign. The constants 0.0 and -0.0 compare equal, and both compare equal to 0, yet 0.0 and -0.0 have distinct bit patterns. Because Python uses the C implementation of atan2, both arguments are converted to floats before calculation. -0 is converted to 0, then to 0.0 The behaviour of atan2 is mandated by ISO C99 (ISO/IEC 9899:1999). See the manuals of some implementers who tabulate these special values: http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/atan2.3.html http://www.ugcs.caltech.edu/manuals/libs/mpfr-2.2.0/mpfr_22.html -- Ben Caradoc-Davies <[EMAIL PROTECTED]> http://wintersun.org/ "Those who deny freedom to others deserve it not for themselves." - Abraham Lincoln -- http://mail.python.org/mailman/listinfo/python-list