pow() works but sqrt() not!?

Dan Bishop danb_83 at yahoo.com
Fri Jan 5 02:55:19 CET 2007

On Jan 4, 10:00 am, "siggi" <smusnmrNOS... at yahoo.com> wrote:
> Thanks for that, too!
> Would be interesting to learn how these different algorithms [for pow] influence the
> precision of the result!?

For an integer (i.e., int or long) x and a nonnegative integer y, x**y
is exact:

>>> 1000001 ** 12
(73 significant digits, correctly ending in "000001")

math.pow uses floating-point arithmetic (even if you pass it integers),
and so has limited precision:

>>> print '%.73f' % math.pow(1000001, 12)
(Only the first 17 digits are correct.)

For floats, the ** operator does the same thing math.pow does.

More information about the Python-list mailing list