1 //===-- Definition of macros from float.h ---------------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef LLVM_LIBC_MACROS_FLOAT_MACROS_H
10 #define LLVM_LIBC_MACROS_FLOAT_MACROS_H
13 #define FLT_RADIX __FLT_RADIX__
16 #ifndef FLT_EVAL_METHOD
17 #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
18 #endif // FLT_EVAL_METHOD
21 #if __has_builtin(__builtin_flt_rounds)
22 #define FLT_ROUNDS __builtin_flt_rounds()
28 #ifndef FLT_DECIMAL_DIG
29 #define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
30 #endif // FLT_DECIMAL_DIG
32 #ifndef DBL_DECIMAL_DIG
33 #define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
34 #endif // DBL_DECIMAL_DIG
36 #ifndef LDBL_DECIMAL_DIG
37 #define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
38 #endif // LDBL_DECIMAL_DIG
41 #define DECIMAL_DIG __DECIMAL_DIG__
45 #define FLT_DIG __FLT_DIG__
49 #define DBL_DIG __DBL_DIG__
53 #define LDBL_DIG __LDBL_DIG__
57 #define FLT_MANT_DIG __FLT_MANT_DIG__
58 #endif // FLT_MANT_DIG
61 #define DBL_MANT_DIG __DBL_MANT_DIG__
62 #endif // DBL_MANT_DIG
65 #define LDBL_MANT_DIG __LDBL_MANT_DIG__
66 #endif // LDBL_MANT_DIG
69 #define FLT_MIN __FLT_MIN__
73 #define DBL_MIN __DBL_MIN__
77 #define LDBL_MIN __LDBL_MIN__
81 #define FLT_MAX __FLT_MAX__
85 #define DBL_MAX __DBL_MAX__
89 #define LDBL_MAX __LDBL_MAX__
93 #define FLT_TRUE_MIN __FLT_DENORM_MIN__
94 #endif // FLT_TRUE_MIN
97 #define DBL_TRUE_MIN __DBL_DENORM_MIN__
98 #endif // DBL_TRUE_MIN
100 #ifndef LDBL_TRUE_MIN
101 #define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
102 #endif // LDBL_TRUE_MIN
105 #define FLT_EPSILON __FLT_EPSILON__
106 #endif // FLT_EPSILON
109 #define DBL_EPSILON __DBL_EPSILON__
110 #endif // DBL_EPSILON
113 #define LDBL_EPSILON __LDBL_EPSILON__
114 #endif // LDBL_EPSILON
117 #define FLT_MIN_EXP __FLT_MIN_EXP__
118 #endif // FLT_MIN_EXP
121 #define DBL_MIN_EXP __DBL_MIN_EXP__
122 #endif // DBL_MIN_EXP
125 #define LDBL_MIN_EXP __LDBL_MIN_EXP__
126 #endif // LDBL_MIN_EXP
128 #ifndef FLT_MIN_10_EXP
129 #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
130 #endif // FLT_MIN_10_EXP
132 #ifndef DBL_MIN_10_EXP
133 #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
134 #endif // DBL_MIN_10_EXP
136 #ifndef LDBL_MIN_10_EXP
137 #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
138 #endif // LDBL_MIN_10_EXP
141 #define FLT_MAX_EXP __FLT_MAX_EXP__
142 #endif // FLT_MAX_EXP
145 #define DBL_MAX_EXP __DBL_MAX_EXP__
146 #endif // DBL_MAX_EXP
149 #define LDBL_MAX_EXP __LDBL_MAX_EXP__
150 #endif // LDBL_MAX_EXP
152 #ifndef FLT_MAX_10_EXP
153 #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
154 #endif // FLT_MAX_10_EXP
156 #ifndef DBL_MAX_10_EXP
157 #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
158 #endif // DBL_MAX_10_EXP
160 #ifndef LDBL_MAX_10_EXP
161 #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
162 #endif // LDBL_MAX_10_EXP
164 #ifndef FLT_HAS_SUBNORM
165 #define FLT_HAS_SUBNORM __FLT_HAS_DENORM__
166 #endif // FLT_HAS_SUBNORM
168 #ifndef DBL_HAS_SUBNORM
169 #define DBL_HAS_SUBNORM __DBL_HAS_DENORM__
170 #endif // DBL_HAS_SUBNORM
172 #ifndef LDBL_HAS_SUBNORM
173 #define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__
174 #endif // LDBL_HAS_SUBNORM
176 // TODO: Add FLT16 and FLT128 constants.
178 #endif // LLVM_LIBC_MACROS_FLOAT_MACROS_H