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
1000012000066000220000495000792000924000792000495000220000066000012000001L
(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)
1000012000066000238472777842004463257260700063242258506335663988477526016
(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