home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 5.ddi / MWHC.005 / Z0 < prev    next >
Encoding:
Text File  |  1992-01-07  |  3.1 KB  |  77 lines

  1. /*
  2.  *   float.h -- ANSI 
  3.  *
  4.  *   Constants that constrain float, double, and
  5.  *   long double representation.
  6.  *
  7.  *           Copyright (c) 1990, MetaWare Incorporated
  8.  */
  9.  
  10. #ifndef _FLOAT_H
  11. #define _FLOAT_H
  12.  
  13. /* radix of float exponent representation */
  14. #define FLT_RADIX                       2
  15.  
  16. /* float addition rounds (1) or chops (0) */
  17. #define FLT_ROUNDS                      1
  18.  
  19. /* Doubles or longdoubles? */
  20. #define _D_or_LD(d,ld) ld    /* Yes, long doubles. */
  21.  
  22. /* number of base-FLT_RADIX mant digits */
  23. #define FLT_MANT_DIG                    24
  24. #define DBL_MANT_DIG                    53
  25. #define LDBL_MANT_DIG _D_or_LD(DBL_MANT_DIG,64)
  26.  
  27. /* minimum positive floating-point number x | 1.0 + x != 1.0 */
  28. #define FLT_EPSILON                     1.19209290e-07F
  29. #define DBL_EPSILON                     2.2204460492503131e-16
  30. #define LDBL_EPSILON _D_or_LD(2.2204460492503131e-16L,1.08420217248550443e-19L)
  31.  
  32. /* maximum number of decimal digits of floating_point precision  */
  33. #define FLT_DIG                         7
  34. #define DBL_DIG                         16
  35. #define LDBL_DIG _D_or_LD(DBL_DIG,19)
  36.  
  37. /* minimum integer x | FLT_RADIX**x aproximates a normalized number */
  38. #define FLT_MIN_EXP                     -125
  39. #define DBL_MIN_EXP                     -1021
  40. #define LDBL_MIN_EXP _D_or_LD(DBL_MIN_EXP,-16381)
  41.  
  42. /* minimum normalized positive number */                     
  43. #define FLT_MIN                         1.175494350822287508e-38F
  44. #define DBL_MIN                         2.225073858507201383e-308
  45. /*#define LDBL_MIN _D_or_LD(2.225073858507201383e-308L,3.3621031431120935064e-4932L)*/
  46.                 /* Compiler can't compile down to true minimum number, hence 4e-4932. */
  47. #define LDBL_MIN _D_or_LD(2.225073858507201383e-308L,4e-4932L)
  48.  
  49. /* minimum integer x | 10**x aproximates a normalized number */
  50. #define FLT_MIN_10_EXP                  -37 
  51. #define DBL_MIN_10_EXP                  -307 
  52. #define LDBL_MIN_10_EXP _D_or_LD(DBL_MIN_10_EXP,-4932)
  53.  
  54. /* maximum integer x | FLT_RADIX**x aproximates a normalized number */
  55. #define FLT_MAX_EXP                     128
  56. #define DBL_MAX_EXP                     1024
  57. #define LDBL_MAX_EXP _D_or_LD(DBL_MAX_EXP,16384)
  58.  
  59. /* maximum representable finite number */                              
  60. #define FLT_MAX                         3.402823466385288598e+38F
  61. #define DBL_MAX                         1.797693134862315708e+308
  62. #define LDBL_MAX _D_or_LD(1.797693134862315708e+308L,1.189731495357231765e+4932L)
  63.  
  64. /* maximum integer x | 10**x aproximates a normalized number */
  65. #define FLT_MAX_10_EXP                  38
  66. #define DBL_MAX_10_EXP                  308
  67. #define LDBL_MAX_10_EXP _D_or_LD(DBL_MAX_10_EXP,4932)
  68.  
  69. /* Note that the internal representation of a floating point number in binary
  70.    means that the numbers LDLB_DIG, FLT_DIG, and DBL_DIG are intrinsically
  71.    inaccurate.    In fact, for double, between 15.6 and 16.9 significant digits
  72.    can be represented, depending upon the value actually represented.
  73.    The value of DBL_DIG should not be construed to mean that every DBL_DIG-digit
  74.    floating point number can be stored with complete accuracy in a double. */
  75.  
  76. #endif /* _FLOAT_H */
  77.