Copyright (C) 2000-2012 |
GNU Info (libc.info)Floating Point ParametersFloating Point Parameters ......................... These macro definitions can be accessed by including the header file `float.h' in your program. Macro names starting with `FLT_' refer to the `float' type, while names beginning with `DBL_' refer to the `double' type and names beginning with `LDBL_' refer to the `long double' type. (If GCC does not support `long double' as a distinct data type on a target machine then the values for the `LDBL_' constants are equal to the corresponding constants for the `double' type.) Of these macros, only `FLT_RADIX' is guaranteed to be a constant expression. The other macros listed here cannot be reliably used in places that require constant expressions, such as `#if' preprocessing directives or in the dimensions of static arrays. Although the ISO C standard specifies minimum and maximum values for most of these parameters, the GNU C implementation uses whatever values describe the floating point representation of the target machine. So in principle GNU C actually satisfies the ISO C requirements only if the target machine is suitable. In practice, all the machines currently supported are suitable. `FLT_ROUNDS' This value characterizes the rounding mode for floating point addition. The following values indicate standard rounding modes: `-1' The mode is indeterminable. `0' Rounding is towards zero. `1' Rounding is to the nearest number. `2' Rounding is towards positive infinity. `3' Rounding is towards negative infinity. Any other value represents a machine-dependent nonstandard rounding mode. On most machines, the value is `1', in accordance with the IEEE standard for floating point. Here is a table showing how certain values round for each possible value of `FLT_ROUNDS', if the other aspects of the representation match the IEEE single-precision standard. 0 1 2 3 1.00000003 1.0 1.0 1.00000012 1.0 1.00000007 1.0 1.00000012 1.00000012 1.0 -1.00000003 -1.0 -1.0 -1.0 -1.00000012 -1.00000007 -1.0 -1.00000012 -1.0 -1.00000012 `FLT_RADIX' This is the value of the base, or radix, of the exponent representation. This is guaranteed to be a constant expression, unlike the other macros described in this section. The value is 2 on all machines we know of except the IBM 360 and derivatives. `FLT_MANT_DIG' This is the number of base-`FLT_RADIX' digits in the floating point mantissa for the `float' data type. The following expression yields `1.0' (even though mathematically it should not) due to the limited number of mantissa digits: float radix = FLT_RADIX; 1.0f + 1.0f / radix / radix / ... / radix where `radix' appears `FLT_MANT_DIG' times. `DBL_MANT_DIG' `LDBL_MANT_DIG' This is the number of base-`FLT_RADIX' digits in the floating point mantissa for the data types `double' and `long double', respectively. `FLT_DIG' This is the number of decimal digits of precision for the `float' data type. Technically, if P and B are the precision and base (respectively) for the representation, then the decimal precision Q is the maximum number of decimal digits such that any floating point number with Q base 10 digits can be rounded to a floating point number with P base B digits and back again, without change to the Q decimal digits. The value of this macro is supposed to be at least `6', to satisfy ISO C. `DBL_DIG' `LDBL_DIG' These are similar to `FLT_DIG', but for the data types `double' and `long double', respectively. The values of these macros are supposed to be at least `10'. `FLT_MIN_EXP' This is the smallest possible exponent value for type `float'. More precisely, is the minimum negative integer such that the value `FLT_RADIX' raised to this power minus 1 can be represented as a normalized floating point number of type `float'. `DBL_MIN_EXP' `LDBL_MIN_EXP' These are similar to `FLT_MIN_EXP', but for the data types `double' and `long double', respectively. `FLT_MIN_10_EXP' This is the minimum negative integer such that `10' raised to this power minus 1 can be represented as a normalized floating point number of type `float'. This is supposed to be `-37' or even less. `DBL_MIN_10_EXP' `LDBL_MIN_10_EXP' These are similar to `FLT_MIN_10_EXP', but for the data types `double' and `long double', respectively. `FLT_MAX_EXP' This is the largest possible exponent value for type `float'. More precisely, this is the maximum positive integer such that value `FLT_RADIX' raised to this power minus 1 can be represented as a floating point number of type `float'. `DBL_MAX_EXP' `LDBL_MAX_EXP' These are similar to `FLT_MAX_EXP', but for the data types `double' and `long double', respectively. `FLT_MAX_10_EXP' This is the maximum positive integer such that `10' raised to this power minus 1 can be represented as a normalized floating point number of type `float'. This is supposed to be at least `37'. `DBL_MAX_10_EXP' `LDBL_MAX_10_EXP' These are similar to `FLT_MAX_10_EXP', but for the data types `double' and `long double', respectively. `FLT_MAX' The value of this macro is the maximum number representable in type `float'. It is supposed to be at least `1E+37'. The value has type `float'. The smallest representable number is `- FLT_MAX'. `DBL_MAX' `LDBL_MAX' These are similar to `FLT_MAX', but for the data types `double' and `long double', respectively. The type of the macro's value is the same as the type it describes. `FLT_MIN' The value of this macro is the minimum normalized positive floating point number that is representable in type `float'. It is supposed to be no more than `1E-37'. `DBL_MIN' `LDBL_MIN' These are similar to `FLT_MIN', but for the data types `double' and `long double', respectively. The type of the macro's value is the same as the type it describes. `FLT_EPSILON' This is the maximum positive floating point number of type `float' such that `1.0 + FLT_EPSILON != 1.0' is true. It's supposed to be no greater than `1E-5'. `DBL_EPSILON' `LDBL_EPSILON' These are similar to `FLT_EPSILON', but for the data types `double' and `long double', respectively. The type of the macro's value is the same as the type it describes. The values are not supposed to be greater than `1E-9'. automatically generated by info2www version 1.2.2.9 |