On Wed, Jun 22, 2016 at 12:48 PM, Steven D'Aprano <st...@pearwood.info> wrote: > I'm doing some arithmetic on complex numbers involving INFs, and getting > unexpected NANs. > > py> INF = float('inf') > py> z = INF + 3j > py> z > (inf+3j) > py> -z > (-inf-3j) > > So far, nothing unexpected has occurred. But: > > py> -1*z # should be the same as -z > (-inf+nanj) > > > And even more strange: > > py> 1*z > (inf+nanj) > > > > Is this the right behaviour? If so, what's the justification for it?
I've no idea, so I Googled StackExchange [1] and found this: http://math.stackexchange.com/questions/585766/what-is-infinity-in-complex-plane-and-what-are-operation-with-infinity-extended Notably this: """ To some extent, +∞+∞ and −∞−∞ also play this role on the real axis: they are not a destination, they are road signs that tell us to go in a certain direction and never stop. """ So when your real part is float("inf"), what you're really saying is "Go as far as you possibly can in the positive direction, then keep going (because you haven't run out of numbers yet), and tell me, what is 1*z tending towards?". Infinity isn't a number, and the imaginary part of your complex number isn't really a factor in figuring out where you're likely to end up with your multiplication. I guess that's a justification for it coming out as NaN. ChrisA [1] http://www.theallium.com/engineering/computer-programming-to-be-officially-renamed-googling-stackoverflow/ -- https://mail.python.org/mailman/listinfo/python-list