On Wed, 22 Jun 2016 12:57:55 +1000, Chris Angelico wrote: > 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)
[...] >> 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. By the time Python returns a result for inf+3j, you're already in trouble (or perhaps Python is already in trouble). A complex number has a real part and an imaginary part, and inf isn't real (i.e., it's not an element of ℝ). -- https://mail.python.org/mailman/listinfo/python-list