On Thu, Oct 15, 2009 at 8:17 PM, Antoine Pitrou <solip...@pitrou.net> wrote: >>>> (-1)**.5 > (6.123031769111886e-17+1j) > > Don't we have a precision problem here? 0.5 is supposed to be represented > exactly, isn't it?
0.5 is represented exactly, but complex.__pow__ makes no pretence of being correctly rounded (and making it correctly rounded would likely be prohibitively expensive in terms of code size and complexity). It's using something like x**y = exp(y*log(x)) behind the scenes, at least for computing the argument of the result. For square roots, cmath.sqrt produces better results. Mark _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com