[Python-ideas] Suggestion: Extend integers to include iNaN
Steve Barnes
gadgetsteve at live.co.uk
Sun Sep 30 11:01:49 EDT 2018
On 30/09/2018 15:15, David Mertz wrote:
> For similar reasons, I'd like an iInf too, FWIW. It's good for an
> overflow value, although it's hard to get there in Python ints (would
> 'NaNAwareInt(1)/0' be an exception or iInf?). Bonus points for anyone
> who knows the actual maximum size of Python ints :-).
>
> However, the main use I'd have for iInf is simply as a starting value in
> a minimization loop. E.g.
>
> minimum = NaNAwareInt('inf')
> for i in the_data:
> minimum = min(i, minimum)
>
> other_stuff(i, minimum, a, b, c)
>
>
> I've written that code a fair number of times; usually I just pick a
> placeholder value that is "absurdly large relative to my domain", but a
> clean infinity would be slightly better. E.g. 'minimum = 10**100'.
>
The official maximum for a Python integer is x where x.bit_length()/8 ==
total_available_memory, (notice the word available which includes
addressing limitations, other memory constraints, etc.).
Adding inf & -inf would be nice but to do so we would need a better name
than NaNAwareInt.
It would also be nice if Decimal(NaNAwareInt('nan')) = Decimal('NaN'),
float(NaNAwareInt('nan')) = float('nan'), etc.
I have been doing some reading up on Signalling vs. Quiet NaN and think
that this convention could be well worth following, (and possibly
storing some information about where the NaN was raised on first
encountering a Signalling NaN (and converting it to Quiet).
--
Steve (Gadget) Barnes
Any opinions in this message are my personal opinions and do not reflect
those of my employer.
---
This email has been checked for viruses by AVG.
https://www.avg.com
More information about the Python-ideas
mailing list