I have a minor concern about certain corner cases with
math.hypot and complex.__abs__, namely when one component is infinite and one
is not a number. If we execute the following code:
import math
inf = float(‘inf’)
nan = float(‘nan’)
print math.hypot(inf, nan)
print abs(complex(nan, inf))
… then we see that ‘inf’ is printed in both
cases. The standard library tests (for example, test_cmath.py:test_abs()) seem
to test for this behavior as well, and FWIW, I personally agree with this
convention. However, the math module’s documentation for both 2.6 and 3.1
states, “All functions return a quiet NaN if at least one of the args is
NaN.”
math.pow(1.0, nan) is another such exception to the rule. Perhaps
the documentation should be updated to reflect this.
Thanks,
- David