xref: /freebsd/contrib/llvm-project/libc/include/llvm-libc-macros/float-macros.h (revision 718e5874be0306ea302fd2b8e1d97fc79682abbe)
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