Submitter:Fred J. Tydeman
Submission Date:2016-09-??
Document: WG14 N2092

Problem being solved

DR 467 decided that FLT_MAX, DBL_MAX, LDBL_MAX are the maximum representable finite numbers for their respective types. Therefore, there are no symbols for the maximum normalized (numbers with full precision) numbers for their respective types. Users may have a need to know if (and where) there are large numbers with less than full precision. This corresponds to the case of small numbers (*_MIN versus *_TRUE_MIN).

Solution

Add a new paragraph to 5.2.4.2.2 near paragraph 12:

12b The values given in the following list shall be replaced by constant expressions with implementation-defined values that are greater than or equal to those shown:

-- maximum normalized floating-point number [copy math formula from FLT_MAX],

    FLT_NORM_MAX 1E+37
    DBL_NORM_MAX 1E+37
    LDBL_NORM_MAX 1E+37

Existing practice

For most implementations, these three macros will be the same as the corresponding *_MAX macros. The only known case where that is not true is those where long double is implemented as a pair of doubles (and then only LDBL_MAX will differ from LDBL_NORM_MAX).