I was assuming it was a Numba-ized function since it's purely numeric. ;-)

FWIW, the theoretical limit of Python ints is limited by the fact
'int.bit_length()' is a platform native int. So my system cannot store ints
larger than (2**(2**63-1)). It'll take a lot more memory than my measly
4GiB to store that number though.

So yes, that's way longer that heat-death-of-universe even before 128-bit
machines are widespread.

On Wed, Nov 28, 2018, 6:43 PM Antoine Pitrou <anto...@python.org wrote:

>
> But Python integers are variable-sized, and their size is basically
> limited by available memory or address space.
>
> Let's take a typical 64-bit Python build, assuming 4 GB RAM available.
> Let's also assume that 90% of those 4 GB can be readily allocated for
> Python objects (there's overhead, etc.).
>
> Also let's take a look at the Python integer representation:
>
> >>> sys.int_info
> sys.int_info(bits_per_digit=30, sizeof_digit=4)
>
> This means that every 4 bytes of integer object store 30 bit of actual
> integer data.
>
> So, how many bits has the largest allocatable integer on that system,
> assuming 90% of 4 GB are available for allocation?
>
> >>> nbits = (2**32)*0.9*30/4
> >>> nbits
> 28991029248.0
>
> Now how many possible integers are there in that number of bits?
>
> >>> x = 1 << int(nbits)
> >>> x.bit_length()
> 28991029249
>
> (yes, that number was successfully allocated in full.  And the Python
> process occupies 3.7 GB RAM at that point, which validates the estimate.)
>
> Let's try to have a readable approximation of that number.  Convert it
> to a float perhaps?
>
> >>> float(x)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> OverflowError: int too large to convert to float
>
> Well, of course.  So let's just extract a power of 10:
>
> >>> math.log10(x)
> 8727169408.819794
> >>> 10**0.819794
> 6.603801339268099
>
> (yes, math.log10() works on non-float-convertible integers.  I'm
> impressed!)
>
> So the number of representable integers on that system is approximately
> 6.6e8727169408.  Let's hope the Sun takes its time.
>
> (and of course, what is true for ints is true for any variable-sized
> input, such as strings, lists, dicts, sets, etc.)
>
> Regards
>
> Antoine.
>
>
> Le 29/11/2018 à 00:24, David Mertz a écrit :
> > That's easy, Antoine. On a reasonable modern multi-core workstation, I
> > can do 4 billion additions per second. A year is just over 30 million
> > seconds. For 32-bit ints, I can whiz through the task in only 130,000
> > years. We have at least several hundred million years before the sun
> > engulfs us.
> >
> > On Wed, Nov 28, 2018, 5:09 PM Antoine Pitrou <solip...@pitrou.net
> > <mailto:solip...@pitrou.net> wrote:
> >
> >     On Wed, 28 Nov 2018 15:58:24 -0600
> >     Abe Dillon <abedil...@gmail.com <mailto:abedil...@gmail.com>> wrote:
> >     > Thirdly, Computers are very good at exhaustively searching
> >     multidimensional
> >     > spaces.
> >
> >     How long do you think it will take your computer to exhaustively
> search
> >     the space of possible input values to a 2-integer addition function?
> >
> >     Do you think it can finish before the Earth gets engulfed by the Sun?
> >
> >     Regards
> >
> >     Antoine.
> >
> >
> >     _______________________________________________
> >     Python-ideas mailing list
> >     Python-ideas@python.org <mailto:Python-ideas@python.org>
> >     https://mail.python.org/mailman/listinfo/python-ideas
> >     Code of Conduct: http://python.org/psf/codeofconduct/
> >
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to