1 //===-- Definition of macros from float.h ---------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_LIBC_MACROS_FLOAT_MACROS_H 10 #define LLVM_LIBC_MACROS_FLOAT_MACROS_H 11 12 #ifndef FLT_RADIX 13 #define FLT_RADIX __FLT_RADIX__ 14 #endif // FLT_RADIX 15 16 #ifndef FLT_EVAL_METHOD 17 #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ 18 #endif // FLT_EVAL_METHOD 19 20 #ifndef FLT_ROUNDS 21 #if __has_builtin(__builtin_flt_rounds) 22 #define FLT_ROUNDS __builtin_flt_rounds() 23 #else 24 #define FLT_ROUNDS 1 25 #endif 26 #endif // FLT_ROUNDS 27 28 #ifndef FLT_DECIMAL_DIG 29 #define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__ 30 #endif // FLT_DECIMAL_DIG 31 32 #ifndef DBL_DECIMAL_DIG 33 #define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__ 34 #endif // DBL_DECIMAL_DIG 35 36 #ifndef LDBL_DECIMAL_DIG 37 #define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__ 38 #endif // LDBL_DECIMAL_DIG 39 40 #ifndef DECIMAL_DIG 41 #define DECIMAL_DIG __DECIMAL_DIG__ 42 #endif // DECIMAL_DIG 43 44 #ifndef FLT_DIG 45 #define FLT_DIG __FLT_DIG__ 46 #endif // FLT_DIG 47 48 #ifndef DBL_DIG 49 #define DBL_DIG __DBL_DIG__ 50 #endif // DBL_DIG 51 52 #ifndef LDBL_DIG 53 #define LDBL_DIG __LDBL_DIG__ 54 #endif // LDBL_DIG 55 56 #ifndef FLT_MANT_DIG 57 #define FLT_MANT_DIG __FLT_MANT_DIG__ 58 #endif // FLT_MANT_DIG 59 60 #ifndef DBL_MANT_DIG 61 #define DBL_MANT_DIG __DBL_MANT_DIG__ 62 #endif // DBL_MANT_DIG 63 64 // Kludge for gcc defining LDBL_MANT_DIG as 53 on i386 65 #if defined(LDBL_MANT_DIG) && defined(__GNUC__) && !defined(__clang__) && defined(__i386__) 66 #undef LDBL_MANT_DIG 67 #endif 68 69 #ifndef LDBL_MANT_DIG 70 #define LDBL_MANT_DIG __LDBL_MANT_DIG__ 71 #endif // LDBL_MANT_DIG 72 73 #ifndef FLT_MIN 74 #define FLT_MIN __FLT_MIN__ 75 #endif // FLT_MIN 76 77 #ifndef DBL_MIN 78 #define DBL_MIN __DBL_MIN__ 79 #endif // DBL_MIN 80 81 #ifndef LDBL_MIN 82 #define LDBL_MIN __LDBL_MIN__ 83 #endif // LDBL_MIN 84 85 #ifndef FLT_MAX 86 #define FLT_MAX __FLT_MAX__ 87 #endif // FLT_MAX 88 89 #ifndef DBL_MAX 90 #define DBL_MAX __DBL_MAX__ 91 #endif // DBL_MAX 92 93 #ifndef LDBL_MAX 94 #define LDBL_MAX __LDBL_MAX__ 95 #endif // LDBL_MAX 96 97 #ifndef FLT_TRUE_MIN 98 #define FLT_TRUE_MIN __FLT_DENORM_MIN__ 99 #endif // FLT_TRUE_MIN 100 101 #ifndef DBL_TRUE_MIN 102 #define DBL_TRUE_MIN __DBL_DENORM_MIN__ 103 #endif // DBL_TRUE_MIN 104 105 #ifndef LDBL_TRUE_MIN 106 #define LDBL_TRUE_MIN __LDBL_DENORM_MIN__ 107 #endif // LDBL_TRUE_MIN 108 109 #ifndef FLT_EPSILON 110 #define FLT_EPSILON __FLT_EPSILON__ 111 #endif // FLT_EPSILON 112 113 #ifndef DBL_EPSILON 114 #define DBL_EPSILON __DBL_EPSILON__ 115 #endif // DBL_EPSILON 116 117 #ifndef LDBL_EPSILON 118 #define LDBL_EPSILON __LDBL_EPSILON__ 119 #endif // LDBL_EPSILON 120 121 #ifndef FLT_MIN_EXP 122 #define FLT_MIN_EXP __FLT_MIN_EXP__ 123 #endif // FLT_MIN_EXP 124 125 #ifndef DBL_MIN_EXP 126 #define DBL_MIN_EXP __DBL_MIN_EXP__ 127 #endif // DBL_MIN_EXP 128 129 #ifndef LDBL_MIN_EXP 130 #define LDBL_MIN_EXP __LDBL_MIN_EXP__ 131 #endif // LDBL_MIN_EXP 132 133 #ifndef FLT_MIN_10_EXP 134 #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ 135 #endif // FLT_MIN_10_EXP 136 137 #ifndef DBL_MIN_10_EXP 138 #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ 139 #endif // DBL_MIN_10_EXP 140 141 #ifndef LDBL_MIN_10_EXP 142 #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ 143 #endif // LDBL_MIN_10_EXP 144 145 #ifndef FLT_MAX_EXP 146 #define FLT_MAX_EXP __FLT_MAX_EXP__ 147 #endif // FLT_MAX_EXP 148 149 #ifndef DBL_MAX_EXP 150 #define DBL_MAX_EXP __DBL_MAX_EXP__ 151 #endif // DBL_MAX_EXP 152 153 #ifndef LDBL_MAX_EXP 154 #define LDBL_MAX_EXP __LDBL_MAX_EXP__ 155 #endif // LDBL_MAX_EXP 156 157 #ifndef FLT_MAX_10_EXP 158 #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ 159 #endif // FLT_MAX_10_EXP 160 161 #ifndef DBL_MAX_10_EXP 162 #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ 163 #endif // DBL_MAX_10_EXP 164 165 #ifndef LDBL_MAX_10_EXP 166 #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ 167 #endif // LDBL_MAX_10_EXP 168 169 #ifndef FLT_HAS_SUBNORM 170 #define FLT_HAS_SUBNORM __FLT_HAS_DENORM__ 171 #endif // FLT_HAS_SUBNORM 172 173 #ifndef DBL_HAS_SUBNORM 174 #define DBL_HAS_SUBNORM __DBL_HAS_DENORM__ 175 #endif // DBL_HAS_SUBNORM 176 177 #ifndef LDBL_HAS_SUBNORM 178 #define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__ 179 #endif // LDBL_HAS_SUBNORM 180 181 // TODO: Add FLT16 and FLT128 constants. 182 183 #endif // LLVM_LIBC_MACROS_FLOAT_MACROS_H 184