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