Floating point minimum and maximum exponent values

Discussion in 'Python' started by Marco, Jul 16, 2013.

  1. Marco

    Marco Guest

    Hi all, why the maximum and minimum exp values are 1024 and -1021?:
    sys.float_info(max=1.7976931348623157e+308, max_exp=1024,
    max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021,
    min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16,
    radix=2, rounds=1)

    The values (in double precision) 0 and 2047 are reserved for zero,
    infinity and NaN (in combination with the fraction), so I was expecting
    -1022 and 1023...
     
    Marco, Jul 16, 2013
    #1
    1. Advertisements

  2. Piece of extreme oddity, this.
    .... lots of other info ...
    | max_exp
    | DBL_MAX_EXP -- maximum int e such that radix**(e-1) is representable
    |
    | min_exp
    | DBL_MIN_EXP -- minimum int e such that radix**(e-1) is a
    normalized float
    ....

    So it's technically correct. Followup question: Why is it off by one?

    ChrisA
     
    Chris Angelico, Jul 16, 2013
    #2
    1. Advertisements

  3. 16.07.13 15:04, Chris Angelico напиÑав(ла):
    sys.float_info.max == sys.float_info.radix**sys.float_info.max_exp -
    sys.float_info.radix**(sys.float_info.max_exp-sys.float_info.mant_dig)
     
    Serhiy Storchaka, Jul 16, 2013
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.