xref: /llvm-project/libc/include/llvm-libc-macros/float-macros.h (revision 3c391a640dae1c9884cb564ef9d73d367ea4bf48)
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