16bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/*===---- float.h - Characteristics of floating point types ----------------=== 26bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 36bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * Permission is hereby granted, free of charge, to any person obtaining a copy 46bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * of this software and associated documentation files (the "Software"), to deal 56bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * in the Software without restriction, including without limitation the rights 66bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 76bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * copies of the Software, and to permit persons to whom the Software is 86bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * furnished to do so, subject to the following conditions: 96bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * The above copyright notice and this permission notice shall be included in 116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * all copies or substantial portions of the Software. 126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * THE SOFTWARE. 206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker *===-----------------------------------------------------------------------=== 226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker */ 236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifndef __FLOAT_H 256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define __FLOAT_H 266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* If we're on MinGW, fall back to the system's float.h, which might have 286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * additional definitions provided for Windows. 296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx 306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker */ 316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#if (defined(__MINGW32__) || defined(_MSC_VER)) && __STDC_HOSTED__ && \ 326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __has_include_next(<float.h>) 336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# include_next <float.h> 346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Undefine anything that we'll be redefining below. */ 366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_EVAL_METHOD 376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_ROUNDS 386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_RADIX 396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MANT_DIG 406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MANT_DIG 416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MANT_DIG 426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) 436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DECIMAL_DIG 446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# endif 456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_DIG 466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_DIG 476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_DIG 486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MIN_EXP 496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MIN_EXP 506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MIN_EXP 516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MIN_10_EXP 526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MIN_10_EXP 536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MIN_10_EXP 546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MAX_EXP 556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MAX_EXP 566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MAX_EXP 576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MAX_10_EXP 586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MAX_10_EXP 596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MAX_10_EXP 606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MAX 616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MAX 626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MAX 636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_EPSILON 646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_EPSILON 656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_EPSILON 666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_MIN 676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_MIN 686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_MIN 696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) 706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_TRUE_MIN 716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_TRUE_MIN 726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_TRUE_MIN 736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef FLT_DECIMAL_DIG 746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef DBL_DECIMAL_DIG 756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# undef LDBL_DECIMAL_DIG 766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# endif 776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Characteristics of floating point types, C99 5.2.4.2.2 */ 806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ 826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_ROUNDS (__builtin_flt_rounds()) 836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_RADIX __FLT_RADIX__ 846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MANT_DIG __FLT_MANT_DIG__ 866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MANT_DIG __DBL_MANT_DIG__ 876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MANT_DIG __LDBL_MANT_DIG__ 886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) 906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define DECIMAL_DIG __DECIMAL_DIG__ 916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_DIG __FLT_DIG__ 946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_DIG __DBL_DIG__ 956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_DIG __LDBL_DIG__ 966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MIN_EXP __FLT_MIN_EXP__ 986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MIN_EXP __DBL_MIN_EXP__ 996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MIN_EXP __LDBL_MIN_EXP__ 1006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ 1026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ 1036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ 1046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MAX_EXP __FLT_MAX_EXP__ 1066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MAX_EXP __DBL_MAX_EXP__ 1076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MAX_EXP __LDBL_MAX_EXP__ 1086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ 1106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ 1116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ 1126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MAX __FLT_MAX__ 1146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MAX __DBL_MAX__ 1156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MAX __LDBL_MAX__ 1166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_EPSILON __FLT_EPSILON__ 1186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_EPSILON __DBL_EPSILON__ 1196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_EPSILON __LDBL_EPSILON__ 1206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define FLT_MIN __FLT_MIN__ 1226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define DBL_MIN __DBL_MIN__ 1236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define LDBL_MIN __LDBL_MIN__ 1246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) 1266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define FLT_TRUE_MIN __FLT_DENORM_MIN__ 1276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define DBL_TRUE_MIN __DBL_DENORM_MIN__ 1286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define LDBL_TRUE_MIN __LDBL_DENORM_MIN__ 1296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__ 1306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__ 1316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker# define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__ 1326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 1336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif /* __FLOAT_H */ 135