OK. I know I made a mistake by saying, "computers are very good at *exhaustively* searching multidimensional spaces." I should have said, "computers are very good at enumerating examples from multi-dimensional spaces" or something to that effect. Now that we've had our fun, can you guys please continue in a forked conversation so it doesn't derail the conversation?
On Wed, Nov 28, 2018 at 7:47 PM David Mertz <me...@gnosis.cx> wrote: > 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/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/