float.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* Copyright (C) 2002 Free Software Foundation, Inc.
  2. This file is part of GCC.
  3. GCC is free software; you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation; either version 2, or (at your option)
  6. any later version.
  7. GCC is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with GCC; see the file COPYING.  If not, write to
  13. the Free Software Foundation, 59 Temple Place - Suite 330,
  14. Boston, MA 02111-1307, USA.  */
  15. /* As a special exception, if you include this header file into source
  16.    files compiled by GCC, this header file does not by itself cause
  17.    the resulting executable to be covered by the GNU General Public
  18.    License.  This exception does not however invalidate any other
  19.    reasons why the executable file might be covered by the GNU General
  20.    Public License.  */
  21. /*
  22.  * ISO C Standard:  5.2.4.2.2  Characteristics of floating types <float.h>
  23.  */
  24. #ifndef _FLOAT_H___
  25. #define _FLOAT_H___
  26. /* Radix of exponent representation, b. */
  27. #undef FLT_RADIX
  28. #define FLT_RADIX __FLT_RADIX__
  29. /* Number of base-FLT_RADIX digits in the significand, p.  */
  30. #undef FLT_MANT_DIG
  31. #undef DBL_MANT_DIG
  32. #undef LDBL_MANT_DIG
  33. #define FLT_MANT_DIG __FLT_MANT_DIG__
  34. #define DBL_MANT_DIG __DBL_MANT_DIG__
  35. #define LDBL_MANT_DIG __LDBL_MANT_DIG__
  36. /* Number of decimal digits, q, such that any floating-point number with q
  37.    decimal digits can be rounded into a floating-point number with p radix b
  38.    digits and back again without change to the q decimal digits,
  39. p * log10(b) if b is a power of 10
  40. floor((p - 1) * log10(b)) otherwise
  41. */
  42. #undef FLT_DIG
  43. #undef DBL_DIG
  44. #undef LDBL_DIG
  45. #define FLT_DIG __FLT_DIG__
  46. #define DBL_DIG __DBL_DIG__
  47. #define LDBL_DIG __LDBL_DIG__
  48. /* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */
  49. #undef FLT_MIN_EXP
  50. #undef DBL_MIN_EXP
  51. #undef LDBL_MIN_EXP
  52. #define FLT_MIN_EXP __FLT_MIN_EXP__
  53. #define DBL_MIN_EXP __DBL_MIN_EXP__
  54. #define LDBL_MIN_EXP __LDBL_MIN_EXP__
  55. /* Minimum negative integer such that 10 raised to that power is in the
  56.    range of normalized floating-point numbers,
  57. ceil(log10(b) * (emin - 1))
  58. */
  59. #undef FLT_MIN_10_EXP
  60. #undef DBL_MIN_10_EXP
  61. #undef LDBL_MIN_10_EXP
  62. #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
  63. #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
  64. #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
  65. /* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax.  */
  66. #undef FLT_MAX_EXP
  67. #undef DBL_MAX_EXP
  68. #undef LDBL_MAX_EXP
  69. #define FLT_MAX_EXP __FLT_MAX_EXP__
  70. #define DBL_MAX_EXP __DBL_MAX_EXP__
  71. #define LDBL_MAX_EXP __LDBL_MAX_EXP__
  72. /* Maximum integer such that 10 raised to that power is in the range of
  73.    representable finite floating-point numbers,
  74. floor(log10((1 - b**-p) * b**emax))
  75. */
  76. #undef FLT_MAX_10_EXP
  77. #undef DBL_MAX_10_EXP
  78. #undef LDBL_MAX_10_EXP
  79. #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
  80. #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
  81. #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
  82. /* Maximum representable finite floating-point number,
  83. (1 - b**-p) * b**emax
  84. */
  85. #undef FLT_MAX
  86. #undef DBL_MAX
  87. #undef LDBL_MAX
  88. #define FLT_MAX __FLT_MAX__
  89. #define DBL_MAX __DBL_MAX__
  90. #define LDBL_MAX __LDBL_MAX__
  91. /* The difference between 1 and the least value greater than 1 that is
  92.    representable in the given floating point type, b**1-p.  */
  93. #undef FLT_EPSILON
  94. #undef DBL_EPSILON
  95. #undef LDBL_EPSILON
  96. #define FLT_EPSILON __FLT_EPSILON__
  97. #define DBL_EPSILON __DBL_EPSILON__
  98. #define LDBL_EPSILON __LDBL_EPSILON__
  99. /* Minimum normalized positive floating-point number, b**(emin - 1).  */
  100. #undef FLT_MIN
  101. #undef DBL_MIN
  102. #undef LDBL_MIN
  103. #define FLT_MIN __FLT_MIN__
  104. #define DBL_MIN __DBL_MIN__
  105. #define LDBL_MIN __LDBL_MIN__
  106. /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown.  */
  107. /* ??? This is supposed to change with calls to fesetround in <fenv.h>.  */
  108. #undef FLT_ROUNDS
  109. #define FLT_ROUNDS 1
  110. #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
  111. /* The floating-point expression evaluation method.
  112.         -1  indeterminate
  113.          0  evaluate all operations and constants just to the range and
  114.             precision of the type
  115.          1  evaluate operations and constants of type float and double
  116.             to the range and precision of the double type, evaluate
  117.             long double operations and constants to the range and
  118.             precision of the long double type
  119.          2  evaluate all operations and constants to the range and
  120.             precision of the long double type
  121.    ??? This ought to change with the setting of the fp control word;
  122.    the value provided by the compiler assumes the widest setting.  */
  123. #undef FLT_EVAL_METHOD
  124. #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
  125. /* Number of decimal digits, n, such that any floating-point number in the
  126.    widest supported floating type with pmax radix b digits can be rounded
  127.    to a floating-point number with n decimal digits and back again without
  128.    change to the value,
  129. pmax * log10(b) if b is a power of 10
  130. ceil(1 + pmax * log10(b)) otherwise
  131. */
  132. #undef DECIMAL_DIG
  133. #define DECIMAL_DIG __DECIMAL_DIG__
  134. #endif /* C99 */
  135. #endif /* _FLOAT_H___ */