[Python-Dev] Decimal data type issues

Edward Loper edloper at gradient.cis.upenn.edu
Thu Apr 15 12:49:51 EDT 2004


> #- > #- > DEFAULT_MAX_EXPONENT = 999999999
> #- > #- > DEFAULT_MIN_EXPONENT = -999999999
> #- > #- > ABSOLUTE_MAX_EXP = 999999999
> #- > #- > ABSOLUTE_MIN_EXP = -999999999
> #-
> #- I can think of at least one real use for exponents outside
> #- this range:
> #- probabilities.  E.g., if I'm using probabilistic models to estimate
> 
> So you need a number smaller than 10**(-999999999)?

Not often.  And of course, "need" might be a bit strong, since I can use 
other tricks (logs & renormalization) to avoid underflow.  But yes, I 
can imagine cases where I would get underflow using naive algorithms. 
E.g., if I'm looking at probabilities for 1 billion words of text 
(computational linguists are starting to use corpora of this size), and 
for some reason I want to do language modelling on it, I could end up 
with numbers on the order of (1e-20)**(1,000,000,000).  I.e., 
10**(-20,000,000,000).

On the other hand, I can't think of a use, off hand, of calculating the 
probability of a billion word string of text.  But I just wanted to 
point out that there may be cases where extremely large/small numbers 
can be useful; and as computers get more powerful and space gets 
cheaper, the numbers people use will tend to grow in size.

I understand the argument that this *may* help catch errors, but I just 
don't think it *will* catch many errors.  How many people would have 
errors that would have been caught if long had an absolute min/max?

-Edward




More information about the Python-Dev mailing list