This is purely out of curiosity, but why does this occur?
>>> a = float('Nan')
>>> a**2.0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: (33, 'Domain error')
I would have expected it to simply return NaN instead of generating an error.
From http://www.mail-archive.com/relax-devel@gna.org/msg00337.html, it seems that this is only the case on the windows builds, due to how the compiler implements floating point stuff.
Example