On 14/04/2016 08:59, blindanag...@nowhere.net wrote:
> On 14/04/2016 07:52, ast wrote:

> This means that the result will be correct provided it has 53 or less
> bits - just short of 16 decimal digits (i.e for square numbers with less
> than 32 digits).
> 
> With an integer square root function (isqrt), this program:
> 
> for exp in count(20):
>   v = 2 ** exp - 1
>   if isqrt(v) != sqrt(v):
>     print(exp, isqrt(v), sqrt(v))
>     break
> 
> terminates with:
> 
>   54 18014398509481983 1.8014398509481982e+16
> 
> showing a first error for a 54 bit square root
> 
I should also have said that the square root of integer squares with
between 15 and 30 decimal digits will only be correct if the square
numbers themselves are exactly representable in 53 bits.  So we can
expect failures for squares with 16 or more digits.



-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to