find all multiplicands and multipliers for a number

Dave Angel davea at davea.name
Mon Apr 13 00:35:02 EDT 2015


On 04/12/2015 11:30 PM, Paul Rubin wrote:
> Dave Angel <davea at davea.name> writes:
>> If I were trying to get a bound for stopping the divide operation, on
>> a value too large to do exact real representation, I'd try doing just
>> a few iterations of Newton's method.
>
> Python ninja trick: math.log works on bignums too large to be
> represented as floats ;-)
>

But doesn't math.pow return a float?   Af first crack I figured it was 
because I had supplied math.e as the first argument.  But I have the 
same problem with  (python 3.4)


x = 2596148429267413814265248164610047
print( math.pow(2, math.log2(x)) )
2.596148429267414e+33

Or were you saying bignums bigger than a float can represent at all?  Like:

 >>> x = 2**11111 -1
 >>> len(str(x))
3345
 >>> math.log2(x)
11111.0
 >>> math.pow(2, math.log2(x)//2)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
OverflowError: math range error


-- 
DaveA



More information about the Python-list mailing list