11188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/*===---- float.h - Characteristics of floating point types ----------------===
21188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
31188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * Permission is hereby granted, free of charge, to any person obtaining a copy
41188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * of this software and associated documentation files (the "Software"), to deal
51188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * in the Software without restriction, including without limitation the rights
61188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
71188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * copies of the Software, and to permit persons to whom the Software is
81188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * furnished to do so, subject to the following conditions:
91188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * The above copyright notice and this permission notice shall be included in
111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * all copies or substantial portions of the Software.
121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * THE SOFTWARE.
201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *===-----------------------------------------------------------------------===
221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker */
231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifndef __FLOAT_H
251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define __FLOAT_H
261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* If we're on MinGW, fall back to the system's float.h, which might have
281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * additional definitions provided for Windows.
291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx
301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker */
311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#if (defined(__MINGW32__) || defined(_MSC_VER)) && __STDC_HOSTED__ && \
321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker    __has_include_next(<float.h>)
331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  include_next <float.h>
341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Undefine anything that we'll be redefining below. */
361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_EVAL_METHOD
371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_ROUNDS
381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_RADIX
391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MANT_DIG
401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MANT_DIG
411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MANT_DIG
421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__)
431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef DECIMAL_DIG
441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  endif
451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_DIG
461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_DIG
471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_DIG
481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MIN_EXP
491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MIN_EXP
501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MIN_EXP
511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MIN_10_EXP
521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MIN_10_EXP
531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MIN_10_EXP
541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MAX_EXP
551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MAX_EXP
561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MAX_EXP
571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MAX_10_EXP
581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MAX_10_EXP
591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MAX_10_EXP
601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MAX
611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MAX
621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MAX
631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_EPSILON
641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_EPSILON
651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_EPSILON
661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef FLT_MIN
671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef DBL_MIN
681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  undef LDBL_MIN
691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__)
701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef FLT_TRUE_MIN
711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef DBL_TRUE_MIN
721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef LDBL_TRUE_MIN
731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef FLT_DECIMAL_DIG
741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef DBL_DECIMAL_DIG
751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#    undef LDBL_DECIMAL_DIG
761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  endif
771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif
781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Characteristics of floating point types, C99 5.2.4.2.2 */
801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_ROUNDS (__builtin_flt_rounds())
831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_RADIX __FLT_RADIX__
841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MANT_DIG __FLT_MANT_DIG__
861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MANT_DIG __DBL_MANT_DIG__
871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MANT_DIG __LDBL_MANT_DIG__
881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__)
901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define DECIMAL_DIG __DECIMAL_DIG__
911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif
921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_DIG __FLT_DIG__
941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_DIG __DBL_DIG__
951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_DIG __LDBL_DIG__
961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MIN_EXP __FLT_MIN_EXP__
981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MIN_EXP __DBL_MIN_EXP__
991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MIN_EXP __LDBL_MIN_EXP__
1001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
1021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
1031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
1041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MAX_EXP __FLT_MAX_EXP__
1061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MAX_EXP __DBL_MAX_EXP__
1071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MAX_EXP __LDBL_MAX_EXP__
1081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
1101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
1111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
1121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MAX __FLT_MAX__
1141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MAX __DBL_MAX__
1151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MAX __LDBL_MAX__
1161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_EPSILON __FLT_EPSILON__
1181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_EPSILON __DBL_EPSILON__
1191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_EPSILON __LDBL_EPSILON__
1201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define FLT_MIN __FLT_MIN__
1221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define DBL_MIN __DBL_MIN__
1231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define LDBL_MIN __LDBL_MIN__
1241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__)
1261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define FLT_TRUE_MIN __FLT_DENORM_MIN__
1271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define DBL_TRUE_MIN __DBL_DENORM_MIN__
1281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
1291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
1301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
1311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#  define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
1321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif
1331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif /* __FLOAT_H */
135