home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / LATTIC_3.ZIP / HEADERS / FLOAT.H < prev    next >
C/C++ Source or Header  |  1990-08-22  |  6KB  |  178 lines

  1. /*
  2.  * float.h - floating point limit definitions required by ANSI
  3.  *
  4.  * Copyright (c) 1990 HiSoft.
  5.  */
  6.  
  7. #ifndef _FLOAT_H
  8. #define _FLOAT_H
  9.  
  10. /*
  11.  * The following symbols are specified in the ANSI C standard for the
  12.  * floating point number system.
  13.  */
  14.  
  15. #define FLT_RADIX    2                 /* radix of exponent                    */
  16. #define FLT_ROUNDS    1                /* rounding mode during translation     */
  17.                                     /*     0 => chop                            */
  18.                                     /*     1 => round                         */
  19.                                     /*     2 => indeterminate                 */
  20. #define FLT_GUARD    0                 /* guard digits during multiplication    */
  21.                                     /*     0 => No                            */
  22.                                     /*     1 => Yes                            */
  23. #define FLT_NORMALIZE    1             /* normalization required                */
  24.                                     /*     0 => No                            */
  25.                                     /*     1 => Yes                            */
  26.  
  27. #define __SINGLE_MANT_DIG    24        /* # radix digits in float mantissa     */
  28. #define __DOUBLE_MANT_DIG    53         /* # radix digits in double mantissa    */
  29. #define __EXTEND_MANT_DIG    53         /* # radix digits in long double mant.    */
  30.  
  31. #define __SINGLE_DIG        7        /* max decimal digits for float         */
  32. #define __DOUBLE_DIG        16         /* max decimal digits for double        */
  33. #define __EXTEND_DIG        16         /* max decimal digits for long double    */
  34.  
  35. #define __SINGLE_MIN_EXP    -126    /* min radix exponent for float         */
  36. #define __DOUBLE_MIN_EXP    -1022     /* min radix exponent for double        */
  37. #define __EXTEND_MIN_EXP    -1022     /* min radix exponent for long double    */
  38.  
  39. #define __SINGLE_MIN_10_EXP    -38        /* min decimal exponent for float        */
  40. #define __DOUBLE_MIN_10_EXP    -308     /* min decimal exponent for double        */
  41. #define __EXTEND_MIN_10_EXP    -308     /* min decimal exponent for long double    */
  42.  
  43. #define __SINGLE_MAX_EXP    128        /* max radix exponent for float         */
  44. #define __DOUBLE_MAX_EXP    1024    /* max radix exponent for double        */
  45. #define __EXTEND_MAX_EXP    1024    /* max radix exponent for double long    */
  46.  
  47. #define __SINGLE_MAX_10_EXP    38        /* max decimal exponent for float        */
  48. #define __DOUBLE_MAX_10_EXP    308        /* max decimal exponent for double        */
  49. #define __EXTEND_MAX_10_EXP    308        /* max decimal exponent for long double */
  50.  
  51. #define __SINGLE_MAX        3.40282347E+38
  52. #define __DOUBLE_MAX        1.797693134862317E+308
  53. #define __EXTEND_MAX        1.797693134862317E+308
  54.  
  55. #define __SINGLE_EPSILON    1.19209290E-07
  56. #define __DOUBLE_EPSILON    2.2204460492503147E-16
  57. #define __EXTEND_EPSILON    2.2204460492503147E-16
  58.  
  59. #define __SINGLE_MIN        3.40282347E-38
  60. #define __DOUBLE_MIN        1.797693134862316E-308
  61. #define __EXTEND_MIN        1.797693134862316E-308
  62.  
  63. #if defined(_MSINGLE)
  64. #define FLT_MANT_DIG    __SINGLE_MANT_DIG
  65. #define DBL_MANT_DIG    __SINGLE_MANT_DIG
  66. #define LDBL_MANT_DIG    __SINGLE_MANT_DIG
  67.  
  68. #define FLT_DIG            __SINGLE_DIG
  69. #define DBL_DIG            __SINGLE_DIG
  70. #define LDBL_DIG        __SINGLE_DIG
  71.  
  72. #define FLT_MIN_EXP        __SINGLE_MIN_EXP
  73. #define DBL_MIN_EXP        __SINGLE_MIN_EXP
  74. #define LDBL_MIN_EXP    __SINGLE_MIN_EXP
  75.  
  76. #define FLT_MIN_10_EXP    __SINGLE_MIN_10_EXP
  77. #define DBL_MIN_10_EXP    __SINGLE_MIN_10_EXP
  78. #define LDBL_MIN_10_EXP    __SINGLE_MIN_10_EXP
  79.  
  80. #define FLT_MAX_EXP        __SINGLE_MAX_EXP
  81. #define DBL_MAX_EXP        __SINGLE_MAX_EXP
  82. #define LDBL_MAX_EXP    __SINGLE_MAX_EXP
  83.  
  84. #define FLT_MAX_10_EXP    __SINGLE_MAX_10_EXP
  85. #define DBL_MAX_10_EXP    __SINGLE_MAX_10_EXP
  86. #define LDBL_MAX_10_EXP    __SINGLE_MAX_10_EXP
  87.  
  88. #define FLT_MAX            __SINGLE_MAX
  89. #define DBL_MAX            __SINGLE_MAX
  90. #define LDBL_MAX        __SINGLE_MAX
  91.  
  92. #define FLT_EPSILON        __SINGLE_EPSILON
  93. #define DBL_EPSILON        __SINGLE_EPSILON
  94. #define LDBL_EPSILON    __SINGLE_EPSILON
  95.  
  96. #define FLT_MIN            __SINGLE_MIN
  97. #define DBL_MIN            __SINGLE_MIN
  98. #define LDBL_MIN        __SINGLE_MIN
  99. #elif defined(_MDOUBL)
  100. #define FLT_MANT_DIG    __DOUBLE_MANT_DIG
  101. #define DBL_MANT_DIG    __DOUBLE_MANT_DIG
  102. #define LDBL_MANT_DIG    __DOUBLE_MANT_DIG
  103.  
  104. #define FLT_DIG            __DOUBLE_DIG
  105. #define DBL_DIG            __DOUBLE_DIG
  106. #define LDBL_DIG        __DOUBLE_DIG
  107.  
  108. #define FLT_MIN_EXP        __DOUBLE_MIN_EXP
  109. #define DBL_MIN_EXP        __DOUBLE_MIN_EXP
  110. #define LDBL_MIN_EXP    __DOUBLE_MIN_EXP
  111.  
  112. #define FLT_MIN_10_EXP    __DOUBLE_MIN_10_EXP
  113. #define DBL_MIN_10_EXP    __DOUBLE_MIN_10_EXP
  114. #define LDBL_MIN_10_EXP    __DOUBLE_MIN_10_EXP
  115.  
  116. #define FLT_MAX_EXP        __DOUBLE_MAX_EXP
  117. #define DBL_MAX_EXP        __DOUBLE_MAX_EXP
  118. #define LDBL_MAX_EXP    __DOUBLE_MAX_EXP
  119.  
  120. #define FLT_MAX_10_EXP    __DOUBLE_MAX_10_EXP
  121. #define DBL_MAX_10_EXP    __DOUBLE_MAX_10_EXP
  122. #define LDBL_MAX_10_EXP    __DOUBLE_MAX_10_EXP
  123.  
  124. #define FLT_MAX            __DOUBLE_MAX
  125. #define DBL_MAX            __DOUBLE_MAX
  126. #define LDBL_MAX        __DOUBLE_MAX
  127.  
  128. #define FLT_EPSILON        __DOUBLE_EPSILON
  129. #define DBL_EPSILON        __DOUBLE_EPSILON
  130. #define LDBL_EPSILON    __DOUBLE_EPSILON
  131.  
  132. #define FLT_MIN            __DOUBLE_MIN
  133. #define DBL_MIN            __DOUBLE_MIN
  134. #define LDBL_MIN        __DOUBLE_MIN
  135. #else
  136. #define FLT_MANT_DIG    __SINGLE_MANT_DIG
  137. #define DBL_MANT_DIG    __DOUBLE_MANT_DIG
  138. #define LDBL_MANT_DIG    __EXTEND_MANT_DIG
  139.  
  140. #define FLT_DIG            __SINGLE_DIG
  141. #define DBL_DIG            __DOUBLE_DIG
  142. #define LDBL_DIG        __EXTEND_DIG
  143.  
  144. #define FLT_MIN_EXP        __SINGLE_MIN_EXP
  145. #define DBL_MIN_EXP        __DOUBLE_MIN_EXP
  146. #define LDBL_MIN_EXP    __EXTEND_MIN_EXP
  147.  
  148. #define FLT_MIN_10_EXP    __SINGLE_MIN_10_EXP
  149. #define DBL_MIN_10_EXP    __DOUBLE_MIN_10_EXP
  150. #define LDBL_MIN_10_EXP    __EXTEND_MIN_10_EXP
  151.  
  152. #define FLT_MAX_EXP        __SINGLE_MAX_EXP
  153. #define DBL_MAX_EXP        __DOUBLE_MAX_EXP
  154. #define LDBL_MAX_EXP    __EXTEND_MAX_EXP
  155.  
  156. #define FLT_MAX_10_EXP    __SINGLE_MAX_10_EXP
  157. #define DBL_MAX_10_EXP    __DOUBLE_MAX_10_EXP
  158. #define LDBL_MAX_10_EXP    __EXTEND_MAX_10_EXP
  159.  
  160. #define FLT_MAX            __SINGLE_MAX
  161. #define DBL_MAX            __DOUBLE_MAX
  162. #define LDBL_MAX        __EXTEND_MAX
  163.  
  164. #define FLT_EPSILON        __SINGLE_EPSILON
  165. #define DBL_EPSILON        __DOUBLE_EPSILON
  166. #define LDBL_EPSILON    __EXTEND_EPSILON
  167.  
  168. #define FLT_MIN            __SINGLE_MIN
  169. #define DBL_MIN            __DOUBLE_MIN
  170. #define LDBL_MIN        __EXTEND_MIN
  171. #endif
  172.  
  173. #ifndef HUGE_VAL
  174. #define HUGE_VAL    1.797693134862317E+308    /* huge double value    */
  175. #endif
  176.  
  177. #endif
  178.