2**HUGENUMBER Why not optimise it?
Mike C. Fletcher
mcfletch at rogers.com
Wed May 22 16:29:21 EDT 2002
Just realised, you can even do the same optimisations when you're using
any power-of-two number:
emap = {
2:1,
4:2,
8:3,
16:4,
32:5,
64:6,
128:7,
256:8,
512:9,
1024:10,
2048:11,
4096:12,
8192:13,
16384:14,
32768:15,
65536:16,
131072:17,
262144:18,
524288:19,
1048576:20,
2097152:21,
4194304:22,
8388608:23,
16777216:24,
33554432:25,
67108864:26,
134217728:27,
268435456:28,
536870912:29,
1073741824:30,
}
def dumbpow( number, exponent ):
# is number 1?
if abs(number) == 1 or exponent <= 0:
return number**exponent
# is number a power of 2?
size = emap.get(abs(number))
if size:
size = 1L << (size*exponent)
if exponent %2 and number < 0:
return -size
else:
return size
else:
return number ** exponent
Sure, it's an extra map call, but oh well, pointless "optimisation" is
fun :) .
Enjoy,
Mike
Mike C. Fletcher wrote:
...
> "What is the integer/long value of 2 raised to the power of 10000000?"
...
More information about the Python-list
mailing list