In article <[email protected]>, Ned Batchelder <[email protected]> wrote: >On 10/22/14 5:27 AM, ast wrote: >> >> "Chris Angelico" <[email protected]> a écrit dans le message de >> news:[email protected]... >>> On Wed, Oct 22, 2014 at 7:27 PM, ast <[email protected]> wrote: >>>> If i am writing (-1)**1000 on a python program, will the >>>> interpreter do (-1)*(-1)*...*(-1) or something clever ? >>>> >>>> In fact i have (-1)**N with N an integer potentially big. >>> >>> Exponentiation is far more efficient than the naive implementation of >>> iterated multiplication. >> >> In the very particular case of (-1)**N, I belive that Python check >> the odd or even parity of N and provides the result accordingly. >> >> I tried: >>>>> (-1)**1000000000000000000000000000000000 >> 1 >>>>> (-1)**1000000000000000000000000000000001 >> -1 >> >> and it is instantaneous >> >> > >Keep in mind that actually calculating the exponentiation wouldn't do >1000000000000000000000000000000000 multiplications anyway: the clever >way to do integer powers is by squaring based on the binary >representation of the exponent. It's explained here: >http://stackoverflow.com/a/101613/14343 > >So even if Python is actually calculating the value, it's only doing 75 >multiplications or so.
I'm pretty sure that if we replace -1 by 2 , it never gets at its 75-th multiplication. > >-- >Ned Batchelder, http://nedbatchelder.com > Groetjes Albert -- Albert van der Horst, UTRECHT,THE NETHERLANDS Economic growth -- being exponential -- ultimately falters. albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst
-- https://mail.python.org/mailman/listinfo/python-list
