Entering a very large number

bartc bc at freeuk.com
Mon Mar 26 06:31:22 EDT 2018


On 26/03/2018 10:34, Steven D'Aprano wrote:
> On Mon, 26 Mar 2018 02:37:44 +0100, bartc wrote:

>> If I instead initialise C using 'C = int("288712...")', then timings
>> increase as follows:
> 
> Given that the original number given had 397 digits and has a bit length
> of 1318, I must admit to some curiosity as to how exactly you managed to
> cast it to a C int (32 bits on most platforms).
> 
> It is too big for an int, a long (64 bits), a long-long (128 bits) or
> even a long-long-long-long-long-long-long-long-long-long-long-long-long-
> long-long-long (1024 bits), if such a thing even exists.
> 
> 
> So what exactly did you do?

I'm not sure why you think the language C came into it. I did this:

def fn():
     C = int(
     "28871482380507712126714295971303939919776094592797"
     "22700926516024197432303799152733116328983144639225"
     "94197780311092934965557841894944174093380561511397"
     "99994215424169339729054237110027510420801349667317"
     "55152859226962916775325475044445856101949404200039"
     "90443211677661994962953925045269871932907037356403"
     "22737012784538991261203092448414947289768854060249"
     "76768122077071687938121709811322297802059565867")

#   C = 2887148238050771212671429... [truncated for this post]

     D=C+C

for i in range(1000000):
     fn()

The purpose was to establish how such int("...") conversions compare in 
overheads with actual arithmetic with the resulting numbers.

-- 
bartc



More information about the Python-list mailing list