home *** CD-ROM | disk | FTP | other *** search
- /*
- * float.h -- ANSI
- *
- * Constants that constrain float, double, and
- * long double representation.
- *
- * Copyright (c) 1990, MetaWare Incorporated
- */
-
- #ifndef _FLOAT_H
- #define _FLOAT_H
-
- /* radix of float exponent representation */
- #define FLT_RADIX 2
-
- /* float addition rounds (1) or chops (0) */
- #define FLT_ROUNDS 1
-
- /* Doubles or longdoubles? */
- #define _D_or_LD(d,ld) ld /* Yes, long doubles. */
-
- /* number of base-FLT_RADIX mant digits */
- #define FLT_MANT_DIG 24
- #define DBL_MANT_DIG 53
- #define LDBL_MANT_DIG _D_or_LD(DBL_MANT_DIG,64)
-
- /* minimum positive floating-point number x | 1.0 + x != 1.0 */
- #define FLT_EPSILON 1.19209290e-07F
- #define DBL_EPSILON 2.2204460492503131e-16
- #define LDBL_EPSILON _D_or_LD(2.2204460492503131e-16L,1.08420217248550443e-19L)
-
- /* maximum number of decimal digits of floating_point precision */
- #define FLT_DIG 7
- #define DBL_DIG 16
- #define LDBL_DIG _D_or_LD(DBL_DIG,19)
-
- /* minimum integer x | FLT_RADIX**x aproximates a normalized number */
- #define FLT_MIN_EXP -125
- #define DBL_MIN_EXP -1021
- #define LDBL_MIN_EXP _D_or_LD(DBL_MIN_EXP,-16381)
-
- /* minimum normalized positive number */
- #define FLT_MIN 1.175494350822287508e-38F
- #define DBL_MIN 2.225073858507201383e-308
- /*#define LDBL_MIN _D_or_LD(2.225073858507201383e-308L,3.3621031431120935064e-4932L)*/
- /* Compiler can't compile down to true minimum number, hence 4e-4932. */
- #define LDBL_MIN _D_or_LD(2.225073858507201383e-308L,4e-4932L)
-
- /* minimum integer x | 10**x aproximates a normalized number */
- #define FLT_MIN_10_EXP -37
- #define DBL_MIN_10_EXP -307
- #define LDBL_MIN_10_EXP _D_or_LD(DBL_MIN_10_EXP,-4932)
-
- /* maximum integer x | FLT_RADIX**x aproximates a normalized number */
- #define FLT_MAX_EXP 128
- #define DBL_MAX_EXP 1024
- #define LDBL_MAX_EXP _D_or_LD(DBL_MAX_EXP,16384)
-
- /* maximum representable finite number */
- #define FLT_MAX 3.402823466385288598e+38F
- #define DBL_MAX 1.797693134862315708e+308
- #define LDBL_MAX _D_or_LD(1.797693134862315708e+308L,1.189731495357231765e+4932L)
-
- /* maximum integer x | 10**x aproximates a normalized number */
- #define FLT_MAX_10_EXP 38
- #define DBL_MAX_10_EXP 308
- #define LDBL_MAX_10_EXP _D_or_LD(DBL_MAX_10_EXP,4932)
-
- /* Note that the internal representation of a floating point number in binary
- means that the numbers LDLB_DIG, FLT_DIG, and DBL_DIG are intrinsically
- inaccurate. In fact, for double, between 15.6 and 16.9 significant digits
- can be represented, depending upon the value actually represented.
- The value of DBL_DIG should not be construed to mean that every DBL_DIG-digit
- floating point number can be stored with complete accuracy in a double. */
-
- #endif /* _FLOAT_H */
-