float.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. /* Copyright (C) 2002-2017 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 3, 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. Under Section 7 of GPL version 3, you are granted additional
  12. permissions described in the GCC Runtime Library Exception, version
  13. 3.1, as published by the Free Software Foundation.
  14. You should have received a copy of the GNU General Public License and
  15. a copy of the GCC Runtime Library Exception along with this program;
  16. see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  17. <http://www.gnu.org/licenses/>. */
  18. /*
  19. * ISO C Standard: 5.2.4.2.2 Characteristics of floating types <float.h>
  20. */
  21. #ifndef _FLOAT_H___
  22. #define _FLOAT_H___
  23. /* Radix of exponent representation, b. */
  24. #undef FLT_RADIX
  25. #define FLT_RADIX __FLT_RADIX__
  26. /* Number of base-FLT_RADIX digits in the significand, p. */
  27. #undef FLT_MANT_DIG
  28. #undef DBL_MANT_DIG
  29. #undef LDBL_MANT_DIG
  30. #define FLT_MANT_DIG __FLT_MANT_DIG__
  31. #define DBL_MANT_DIG __DBL_MANT_DIG__
  32. #define LDBL_MANT_DIG __LDBL_MANT_DIG__
  33. /* Number of decimal digits, q, such that any floating-point number with q
  34. decimal digits can be rounded into a floating-point number with p radix b
  35. digits and back again without change to the q decimal digits,
  36. p * log10(b) if b is a power of 10
  37. floor((p - 1) * log10(b)) otherwise
  38. */
  39. #undef FLT_DIG
  40. #undef DBL_DIG
  41. #undef LDBL_DIG
  42. #define FLT_DIG __FLT_DIG__
  43. #define DBL_DIG __DBL_DIG__
  44. #define LDBL_DIG __LDBL_DIG__
  45. /* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */
  46. #undef FLT_MIN_EXP
  47. #undef DBL_MIN_EXP
  48. #undef LDBL_MIN_EXP
  49. #define FLT_MIN_EXP __FLT_MIN_EXP__
  50. #define DBL_MIN_EXP __DBL_MIN_EXP__
  51. #define LDBL_MIN_EXP __LDBL_MIN_EXP__
  52. /* Minimum negative integer such that 10 raised to that power is in the
  53. range of normalized floating-point numbers,
  54. ceil(log10(b) * (emin - 1))
  55. */
  56. #undef FLT_MIN_10_EXP
  57. #undef DBL_MIN_10_EXP
  58. #undef LDBL_MIN_10_EXP
  59. #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
  60. #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
  61. #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
  62. /* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax. */
  63. #undef FLT_MAX_EXP
  64. #undef DBL_MAX_EXP
  65. #undef LDBL_MAX_EXP
  66. #define FLT_MAX_EXP __FLT_MAX_EXP__
  67. #define DBL_MAX_EXP __DBL_MAX_EXP__
  68. #define LDBL_MAX_EXP __LDBL_MAX_EXP__
  69. /* Maximum integer such that 10 raised to that power is in the range of
  70. representable finite floating-point numbers,
  71. floor(log10((1 - b**-p) * b**emax))
  72. */
  73. #undef FLT_MAX_10_EXP
  74. #undef DBL_MAX_10_EXP
  75. #undef LDBL_MAX_10_EXP
  76. #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
  77. #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
  78. #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
  79. /* Maximum representable finite floating-point number,
  80. (1 - b**-p) * b**emax
  81. */
  82. #undef FLT_MAX
  83. #undef DBL_MAX
  84. #undef LDBL_MAX
  85. #define FLT_MAX __FLT_MAX__
  86. #define DBL_MAX __DBL_MAX__
  87. #define LDBL_MAX __LDBL_MAX__
  88. /* The difference between 1 and the least value greater than 1 that is
  89. representable in the given floating point type, b**1-p. */
  90. #undef FLT_EPSILON
  91. #undef DBL_EPSILON
  92. #undef LDBL_EPSILON
  93. #define FLT_EPSILON __FLT_EPSILON__
  94. #define DBL_EPSILON __DBL_EPSILON__
  95. #define LDBL_EPSILON __LDBL_EPSILON__
  96. /* Minimum normalized positive floating-point number, b**(emin - 1). */
  97. #undef FLT_MIN
  98. #undef DBL_MIN
  99. #undef LDBL_MIN
  100. #define FLT_MIN __FLT_MIN__
  101. #define DBL_MIN __DBL_MIN__
  102. #define LDBL_MIN __LDBL_MIN__
  103. /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown. */
  104. /* ??? This is supposed to change with calls to fesetround in <fenv.h>. */
  105. #undef FLT_ROUNDS
  106. #define FLT_ROUNDS 1
  107. #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
  108. || (defined (__cplusplus) && __cplusplus >= 201103L)
  109. /* The floating-point expression evaluation method. The precise
  110. definitions of these values are generalised to include support for
  111. the interchange and extended types defined in ISO/IEC TS 18661-3.
  112. Prior to this (for C99/C11) the definitions were:
  113. -1 indeterminate
  114. 0 evaluate all operations and constants just to the range and
  115. precision of the type
  116. 1 evaluate operations and constants of type float and double
  117. to the range and precision of the double type, evaluate
  118. long double operations and constants to the range and
  119. precision of the long double type
  120. 2 evaluate all operations and constants to the range and
  121. precision of the long double type
  122. The TS 18661-3 definitions are:
  123. -1 indeterminate
  124. 0 evaluate all operations and constants, whose semantic type has
  125. at most the range and precision of float, to the range and
  126. precision of float; evaluate all other operations and constants
  127. to the range and precision of the semantic type.
  128. 1 evaluate all operations and constants, whose semantic type has
  129. at most the range and precision of double, to the range and
  130. precision of double; evaluate all other operations and constants
  131. to the range and precision of the semantic type.
  132. 2 evaluate all operations and constants, whose semantic type has
  133. at most the range and precision of long double, to the range and
  134. precision of long double; evaluate all other operations and
  135. constants to the range and precision of the semantic type.
  136. N where _FloatN is a supported interchange floating type
  137. evaluate all operations and constants, whose semantic type has
  138. at most the range and precision of the _FloatN type, to the
  139. range and precision of the _FloatN type; evaluate all other
  140. operations and constants to the range and precision of the
  141. semantic type.
  142. N + 1, where _FloatNx is a supported extended floating type
  143. evaluate operations and constants, whose semantic type has at
  144. most the range and precision of the _FloatNx type, to the range
  145. and precision of the _FloatNx type; evaluate all other
  146. operations and constants to the range and precision of the
  147. semantic type.
  148. The compiler predefines two macros:
  149. __FLT_EVAL_METHOD__
  150. Which, depending on the value given for
  151. -fpermitted-flt-eval-methods, may be limited to only those values
  152. for FLT_EVAL_METHOD defined in C99/C11.
  153. __FLT_EVAL_METHOD_TS_18661_3__
  154. Which always permits the values for FLT_EVAL_METHOD defined in
  155. ISO/IEC TS 18661-3.
  156. Here we want to use __FLT_EVAL_METHOD__, unless
  157. __STDC_WANT_IEC_60559_TYPES_EXT__ is defined, in which case the user
  158. is specifically asking for the ISO/IEC TS 18661-3 types, so we use
  159. __FLT_EVAL_METHOD_TS_18661_3__.
  160. ??? This ought to change with the setting of the fp control word;
  161. the value provided by the compiler assumes the widest setting. */
  162. #undef FLT_EVAL_METHOD
  163. #ifdef __STDC_WANT_IEC_60559_TYPES_EXT__
  164. #define FLT_EVAL_METHOD __FLT_EVAL_METHOD_TS_18661_3__
  165. #else
  166. #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
  167. #endif
  168. /* Number of decimal digits, n, such that any floating-point number in the
  169. widest supported floating type with pmax radix b digits can be rounded
  170. to a floating-point number with n decimal digits and back again without
  171. change to the value,
  172. pmax * log10(b) if b is a power of 10
  173. ceil(1 + pmax * log10(b)) otherwise
  174. */
  175. #undef DECIMAL_DIG
  176. #define DECIMAL_DIG __DECIMAL_DIG__
  177. #endif /* C99 */
  178. #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
  179. /* Versions of DECIMAL_DIG for each floating-point type. */
  180. #undef FLT_DECIMAL_DIG
  181. #undef DBL_DECIMAL_DIG
  182. #undef LDBL_DECIMAL_DIG
  183. #define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
  184. #define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
  185. #define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
  186. /* Whether types support subnormal numbers. */
  187. #undef FLT_HAS_SUBNORM
  188. #undef DBL_HAS_SUBNORM
  189. #undef LDBL_HAS_SUBNORM
  190. #define FLT_HAS_SUBNORM __FLT_HAS_DENORM__
  191. #define DBL_HAS_SUBNORM __DBL_HAS_DENORM__
  192. #define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__
  193. /* Minimum positive values, including subnormals. */
  194. #undef FLT_TRUE_MIN
  195. #undef DBL_TRUE_MIN
  196. #undef LDBL_TRUE_MIN
  197. #define FLT_TRUE_MIN __FLT_DENORM_MIN__
  198. #define DBL_TRUE_MIN __DBL_DENORM_MIN__
  199. #define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
  200. #endif /* C11 */
  201. #ifdef __STDC_WANT_IEC_60559_BFP_EXT__
  202. /* Number of decimal digits for which conversions between decimal
  203. character strings and binary formats, in both directions, are
  204. correctly rounded. */
  205. #define CR_DECIMAL_DIG __UINTMAX_MAX__
  206. #endif
  207. #ifdef __STDC_WANT_IEC_60559_TYPES_EXT__
  208. /* Constants for _FloatN and _FloatNx types from TS 18661-3. See
  209. comments above for their semantics. */
  210. #ifdef __FLT16_MANT_DIG__
  211. #undef FLT16_MANT_DIG
  212. #define FLT16_MANT_DIG __FLT16_MANT_DIG__
  213. #undef FLT16_DIG
  214. #define FLT16_DIG __FLT16_DIG__
  215. #undef FLT16_MIN_EXP
  216. #define FLT16_MIN_EXP __FLT16_MIN_EXP__
  217. #undef FLT16_MIN_10_EXP
  218. #define FLT16_MIN_10_EXP __FLT16_MIN_10_EXP__
  219. #undef FLT16_MAX_EXP
  220. #define FLT16_MAX_EXP __FLT16_MAX_EXP__
  221. #undef FLT16_MAX_10_EXP
  222. #define FLT16_MAX_10_EXP __FLT16_MAX_10_EXP__
  223. #undef FLT16_MAX
  224. #define FLT16_MAX __FLT16_MAX__
  225. #undef FLT16_EPSILON
  226. #define FLT16_EPSILON __FLT16_EPSILON__
  227. #undef FLT16_MIN
  228. #define FLT16_MIN __FLT16_MIN__
  229. #undef FLT16_DECIMAL_DIG
  230. #define FLT16_DECIMAL_DIG __FLT16_DECIMAL_DIG__
  231. #undef FLT16_TRUE_MIN
  232. #define FLT16_TRUE_MIN __FLT16_DENORM_MIN__
  233. #endif /* __FLT16_MANT_DIG__. */
  234. #ifdef __FLT32_MANT_DIG__
  235. #undef FLT32_MANT_DIG
  236. #define FLT32_MANT_DIG __FLT32_MANT_DIG__
  237. #undef FLT32_DIG
  238. #define FLT32_DIG __FLT32_DIG__
  239. #undef FLT32_MIN_EXP
  240. #define FLT32_MIN_EXP __FLT32_MIN_EXP__
  241. #undef FLT32_MIN_10_EXP
  242. #define FLT32_MIN_10_EXP __FLT32_MIN_10_EXP__
  243. #undef FLT32_MAX_EXP
  244. #define FLT32_MAX_EXP __FLT32_MAX_EXP__
  245. #undef FLT32_MAX_10_EXP
  246. #define FLT32_MAX_10_EXP __FLT32_MAX_10_EXP__
  247. #undef FLT32_MAX
  248. #define FLT32_MAX __FLT32_MAX__
  249. #undef FLT32_EPSILON
  250. #define FLT32_EPSILON __FLT32_EPSILON__
  251. #undef FLT32_MIN
  252. #define FLT32_MIN __FLT32_MIN__
  253. #undef FLT32_DECIMAL_DIG
  254. #define FLT32_DECIMAL_DIG __FLT32_DECIMAL_DIG__
  255. #undef FLT32_TRUE_MIN
  256. #define FLT32_TRUE_MIN __FLT32_DENORM_MIN__
  257. #endif /* __FLT32_MANT_DIG__. */
  258. #ifdef __FLT64_MANT_DIG__
  259. #undef FLT64_MANT_DIG
  260. #define FLT64_MANT_DIG __FLT64_MANT_DIG__
  261. #undef FLT64_DIG
  262. #define FLT64_DIG __FLT64_DIG__
  263. #undef FLT64_MIN_EXP
  264. #define FLT64_MIN_EXP __FLT64_MIN_EXP__
  265. #undef FLT64_MIN_10_EXP
  266. #define FLT64_MIN_10_EXP __FLT64_MIN_10_EXP__
  267. #undef FLT64_MAX_EXP
  268. #define FLT64_MAX_EXP __FLT64_MAX_EXP__
  269. #undef FLT64_MAX_10_EXP
  270. #define FLT64_MAX_10_EXP __FLT64_MAX_10_EXP__
  271. #undef FLT64_MAX
  272. #define FLT64_MAX __FLT64_MAX__
  273. #undef FLT64_EPSILON
  274. #define FLT64_EPSILON __FLT64_EPSILON__
  275. #undef FLT64_MIN
  276. #define FLT64_MIN __FLT64_MIN__
  277. #undef FLT64_DECIMAL_DIG
  278. #define FLT64_DECIMAL_DIG __FLT64_DECIMAL_DIG__
  279. #undef FLT64_TRUE_MIN
  280. #define FLT64_TRUE_MIN __FLT64_DENORM_MIN__
  281. #endif /* __FLT64_MANT_DIG__. */
  282. #ifdef __FLT128_MANT_DIG__
  283. #undef FLT128_MANT_DIG
  284. #define FLT128_MANT_DIG __FLT128_MANT_DIG__
  285. #undef FLT128_DIG
  286. #define FLT128_DIG __FLT128_DIG__
  287. #undef FLT128_MIN_EXP
  288. #define FLT128_MIN_EXP __FLT128_MIN_EXP__
  289. #undef FLT128_MIN_10_EXP
  290. #define FLT128_MIN_10_EXP __FLT128_MIN_10_EXP__
  291. #undef FLT128_MAX_EXP
  292. #define FLT128_MAX_EXP __FLT128_MAX_EXP__
  293. #undef FLT128_MAX_10_EXP
  294. #define FLT128_MAX_10_EXP __FLT128_MAX_10_EXP__
  295. #undef FLT128_MAX
  296. #define FLT128_MAX __FLT128_MAX__
  297. #undef FLT128_EPSILON
  298. #define FLT128_EPSILON __FLT128_EPSILON__
  299. #undef FLT128_MIN
  300. #define FLT128_MIN __FLT128_MIN__
  301. #undef FLT128_DECIMAL_DIG
  302. #define FLT128_DECIMAL_DIG __FLT128_DECIMAL_DIG__
  303. #undef FLT128_TRUE_MIN
  304. #define FLT128_TRUE_MIN __FLT128_DENORM_MIN__
  305. #endif /* __FLT128_MANT_DIG__. */
  306. #ifdef __FLT32X_MANT_DIG__
  307. #undef FLT32X_MANT_DIG
  308. #define FLT32X_MANT_DIG __FLT32X_MANT_DIG__
  309. #undef FLT32X_DIG
  310. #define FLT32X_DIG __FLT32X_DIG__
  311. #undef FLT32X_MIN_EXP
  312. #define FLT32X_MIN_EXP __FLT32X_MIN_EXP__
  313. #undef FLT32X_MIN_10_EXP
  314. #define FLT32X_MIN_10_EXP __FLT32X_MIN_10_EXP__
  315. #undef FLT32X_MAX_EXP
  316. #define FLT32X_MAX_EXP __FLT32X_MAX_EXP__
  317. #undef FLT32X_MAX_10_EXP
  318. #define FLT32X_MAX_10_EXP __FLT32X_MAX_10_EXP__
  319. #undef FLT32X_MAX
  320. #define FLT32X_MAX __FLT32X_MAX__
  321. #undef FLT32X_EPSILON
  322. #define FLT32X_EPSILON __FLT32X_EPSILON__
  323. #undef FLT32X_MIN
  324. #define FLT32X_MIN __FLT32X_MIN__
  325. #undef FLT32X_DECIMAL_DIG
  326. #define FLT32X_DECIMAL_DIG __FLT32X_DECIMAL_DIG__
  327. #undef FLT32X_TRUE_MIN
  328. #define FLT32X_TRUE_MIN __FLT32X_DENORM_MIN__
  329. #endif /* __FLT32X_MANT_DIG__. */
  330. #ifdef __FLT64X_MANT_DIG__
  331. #undef FLT64X_MANT_DIG
  332. #define FLT64X_MANT_DIG __FLT64X_MANT_DIG__
  333. #undef FLT64X_DIG
  334. #define FLT64X_DIG __FLT64X_DIG__
  335. #undef FLT64X_MIN_EXP
  336. #define FLT64X_MIN_EXP __FLT64X_MIN_EXP__
  337. #undef FLT64X_MIN_10_EXP
  338. #define FLT64X_MIN_10_EXP __FLT64X_MIN_10_EXP__
  339. #undef FLT64X_MAX_EXP
  340. #define FLT64X_MAX_EXP __FLT64X_MAX_EXP__
  341. #undef FLT64X_MAX_10_EXP
  342. #define FLT64X_MAX_10_EXP __FLT64X_MAX_10_EXP__
  343. #undef FLT64X_MAX
  344. #define FLT64X_MAX __FLT64X_MAX__
  345. #undef FLT64X_EPSILON
  346. #define FLT64X_EPSILON __FLT64X_EPSILON__
  347. #undef FLT64X_MIN
  348. #define FLT64X_MIN __FLT64X_MIN__
  349. #undef FLT64X_DECIMAL_DIG
  350. #define FLT64X_DECIMAL_DIG __FLT64X_DECIMAL_DIG__
  351. #undef FLT64X_TRUE_MIN
  352. #define FLT64X_TRUE_MIN __FLT64X_DENORM_MIN__
  353. #endif /* __FLT64X_MANT_DIG__. */
  354. #ifdef __FLT128X_MANT_DIG__
  355. #undef FLT128X_MANT_DIG
  356. #define FLT128X_MANT_DIG __FLT128X_MANT_DIG__
  357. #undef FLT128X_DIG
  358. #define FLT128X_DIG __FLT128X_DIG__
  359. #undef FLT128X_MIN_EXP
  360. #define FLT128X_MIN_EXP __FLT128X_MIN_EXP__
  361. #undef FLT128X_MIN_10_EXP
  362. #define FLT128X_MIN_10_EXP __FLT128X_MIN_10_EXP__
  363. #undef FLT128X_MAX_EXP
  364. #define FLT128X_MAX_EXP __FLT128X_MAX_EXP__
  365. #undef FLT128X_MAX_10_EXP
  366. #define FLT128X_MAX_10_EXP __FLT128X_MAX_10_EXP__
  367. #undef FLT128X_MAX
  368. #define FLT128X_MAX __FLT128X_MAX__
  369. #undef FLT128X_EPSILON
  370. #define FLT128X_EPSILON __FLT128X_EPSILON__
  371. #undef FLT128X_MIN
  372. #define FLT128X_MIN __FLT128X_MIN__
  373. #undef FLT128X_DECIMAL_DIG
  374. #define FLT128X_DECIMAL_DIG __FLT128X_DECIMAL_DIG__
  375. #undef FLT128X_TRUE_MIN
  376. #define FLT128X_TRUE_MIN __FLT128X_DENORM_MIN__
  377. #endif /* __FLT128X_MANT_DIG__. */
  378. #endif /* __STDC_WANT_IEC_60559_TYPES_EXT__. */
  379. #ifdef __STDC_WANT_DEC_FP__
  380. /* Draft Technical Report 24732, extension for decimal floating-point
  381. arithmetic: Characteristic of decimal floating types <float.h>. */
  382. /* Number of base-FLT_RADIX digits in the significand, p. */
  383. #undef DEC32_MANT_DIG
  384. #undef DEC64_MANT_DIG
  385. #undef DEC128_MANT_DIG
  386. #define DEC32_MANT_DIG __DEC32_MANT_DIG__
  387. #define DEC64_MANT_DIG __DEC64_MANT_DIG__
  388. #define DEC128_MANT_DIG __DEC128_MANT_DIG__
  389. /* Minimum exponent. */
  390. #undef DEC32_MIN_EXP
  391. #undef DEC64_MIN_EXP
  392. #undef DEC128_MIN_EXP
  393. #define DEC32_MIN_EXP __DEC32_MIN_EXP__
  394. #define DEC64_MIN_EXP __DEC64_MIN_EXP__
  395. #define DEC128_MIN_EXP __DEC128_MIN_EXP__
  396. /* Maximum exponent. */
  397. #undef DEC32_MAX_EXP
  398. #undef DEC64_MAX_EXP
  399. #undef DEC128_MAX_EXP
  400. #define DEC32_MAX_EXP __DEC32_MAX_EXP__
  401. #define DEC64_MAX_EXP __DEC64_MAX_EXP__
  402. #define DEC128_MAX_EXP __DEC128_MAX_EXP__
  403. /* Maximum representable finite decimal floating-point number
  404. (there are 6, 15, and 33 9s after the decimal points respectively). */
  405. #undef DEC32_MAX
  406. #undef DEC64_MAX
  407. #undef DEC128_MAX
  408. #define DEC32_MAX __DEC32_MAX__
  409. #define DEC64_MAX __DEC64_MAX__
  410. #define DEC128_MAX __DEC128_MAX__
  411. /* The difference between 1 and the least value greater than 1 that is
  412. representable in the given floating point type. */
  413. #undef DEC32_EPSILON
  414. #undef DEC64_EPSILON
  415. #undef DEC128_EPSILON
  416. #define DEC32_EPSILON __DEC32_EPSILON__
  417. #define DEC64_EPSILON __DEC64_EPSILON__
  418. #define DEC128_EPSILON __DEC128_EPSILON__
  419. /* Minimum normalized positive floating-point number. */
  420. #undef DEC32_MIN
  421. #undef DEC64_MIN
  422. #undef DEC128_MIN
  423. #define DEC32_MIN __DEC32_MIN__
  424. #define DEC64_MIN __DEC64_MIN__
  425. #define DEC128_MIN __DEC128_MIN__
  426. /* Minimum subnormal positive floating-point number. */
  427. #undef DEC32_SUBNORMAL_MIN
  428. #undef DEC64_SUBNORMAL_MIN
  429. #undef DEC128_SUBNORMAL_MIN
  430. #define DEC32_SUBNORMAL_MIN __DEC32_SUBNORMAL_MIN__
  431. #define DEC64_SUBNORMAL_MIN __DEC64_SUBNORMAL_MIN__
  432. #define DEC128_SUBNORMAL_MIN __DEC128_SUBNORMAL_MIN__
  433. /* The floating-point expression evaluation method.
  434. -1 indeterminate
  435. 0 evaluate all operations and constants just to the range and
  436. precision of the type
  437. 1 evaluate operations and constants of type _Decimal32
  438. and _Decimal64 to the range and precision of the _Decimal64
  439. type, evaluate _Decimal128 operations and constants to the
  440. range and precision of the _Decimal128 type;
  441. 2 evaluate all operations and constants to the range and
  442. precision of the _Decimal128 type. */
  443. #undef DEC_EVAL_METHOD
  444. #define DEC_EVAL_METHOD __DEC_EVAL_METHOD__
  445. #endif /* __STDC_WANT_DEC_FP__ */
  446. #endif /* _FLOAT_H___ */