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// __has_builtin is a Clang extension; GCC < 10 doesn't define it, which
13// turns a bare `#if __has_builtin(...)` into a preprocessor syntax error.
14#ifndef __has_builtin
15#define __has_builtin(x) 0
16#endif
17
18#ifndef FLT_RADIX
19#define FLT_RADIX __FLT_RADIX__
20#endif // FLT_RADIX
21
22#ifndef FLT_EVAL_METHOD
23#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
24#endif // FLT_EVAL_METHOD
25
26#ifndef FLT_ROUNDS
27#if __has_builtin(__builtin_flt_rounds)
28#define FLT_ROUNDS __builtin_flt_rounds()
29#else
30#define FLT_ROUNDS 1
31#endif
32#endif // FLT_ROUNDS
33
34#ifndef FLT_DECIMAL_DIG
35#define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
36#endif // FLT_DECIMAL_DIG
37
38#ifndef DBL_DECIMAL_DIG
39#define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
40#endif // DBL_DECIMAL_DIG
41
42#ifndef LDBL_DECIMAL_DIG
43#define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
44#endif // LDBL_DECIMAL_DIG
45
46#ifndef DECIMAL_DIG
47#define DECIMAL_DIG __DECIMAL_DIG__
48#endif // DECIMAL_DIG
49
50#ifndef FLT_DIG
51#define FLT_DIG __FLT_DIG__
52#endif // FLT_DIG
53
54#ifndef DBL_DIG
55#define DBL_DIG __DBL_DIG__
56#endif // DBL_DIG
57
58#ifndef LDBL_DIG
59#define LDBL_DIG __LDBL_DIG__
60#endif // LDBL_DIG
61
62#ifndef FLT_MANT_DIG
63#define FLT_MANT_DIG __FLT_MANT_DIG__
64#endif // FLT_MANT_DIG
65
66#ifndef DBL_MANT_DIG
67#define DBL_MANT_DIG __DBL_MANT_DIG__
68#endif // DBL_MANT_DIG
69
70#ifndef LDBL_MANT_DIG
71#define LDBL_MANT_DIG __LDBL_MANT_DIG__
72#endif // LDBL_MANT_DIG
73
74#ifndef FLT_MIN
75#define FLT_MIN __FLT_MIN__
76#endif // FLT_MIN
77
78#ifndef DBL_MIN
79#define DBL_MIN __DBL_MIN__
80#endif // DBL_MIN
81
82#ifndef LDBL_MIN
83#define LDBL_MIN __LDBL_MIN__
84#endif // LDBL_MIN
85
86#ifndef FLT_MAX
87#define FLT_MAX __FLT_MAX__
88#endif // FLT_MAX
89
90#ifndef DBL_MAX
91#define DBL_MAX __DBL_MAX__
92#endif // DBL_MAX
93
94#ifndef LDBL_MAX
95#define LDBL_MAX __LDBL_MAX__
96#endif // LDBL_MAX
97
98#ifndef FLT_TRUE_MIN
99#define FLT_TRUE_MIN __FLT_DENORM_MIN__
100#endif // FLT_TRUE_MIN
101
102#ifndef DBL_TRUE_MIN
103#define DBL_TRUE_MIN __DBL_DENORM_MIN__
104#endif // DBL_TRUE_MIN
105
106#ifndef LDBL_TRUE_MIN
107#define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
108#endif // LDBL_TRUE_MIN
109
110#ifndef FLT_EPSILON
111#define FLT_EPSILON __FLT_EPSILON__
112#endif // FLT_EPSILON
113
114#ifndef DBL_EPSILON
115#define DBL_EPSILON __DBL_EPSILON__
116#endif // DBL_EPSILON
117
118#ifndef LDBL_EPSILON
119#define LDBL_EPSILON __LDBL_EPSILON__
120#endif // LDBL_EPSILON
121
122#ifndef FLT_MIN_EXP
123#define FLT_MIN_EXP __FLT_MIN_EXP__
124#endif // FLT_MIN_EXP
125
126#ifndef DBL_MIN_EXP
127#define DBL_MIN_EXP __DBL_MIN_EXP__
128#endif // DBL_MIN_EXP
129
130#ifndef LDBL_MIN_EXP
131#define LDBL_MIN_EXP __LDBL_MIN_EXP__
132#endif // LDBL_MIN_EXP
133
134#ifndef FLT_MIN_10_EXP
135#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
136#endif // FLT_MIN_10_EXP
137
138#ifndef DBL_MIN_10_EXP
139#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
140#endif // DBL_MIN_10_EXP
141
142#ifndef LDBL_MIN_10_EXP
143#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
144#endif // LDBL_MIN_10_EXP
145
146#ifndef FLT_MAX_EXP
147#define FLT_MAX_EXP __FLT_MAX_EXP__
148#endif // FLT_MAX_EXP
149
150#ifndef DBL_MAX_EXP
151#define DBL_MAX_EXP __DBL_MAX_EXP__
152#endif // DBL_MAX_EXP
153
154#ifndef LDBL_MAX_EXP
155#define LDBL_MAX_EXP __LDBL_MAX_EXP__
156#endif // LDBL_MAX_EXP
157
158#ifndef FLT_MAX_10_EXP
159#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
160#endif // FLT_MAX_10_EXP
161
162#ifndef DBL_MAX_10_EXP
163#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
164#endif // DBL_MAX_10_EXP
165
166#ifndef LDBL_MAX_10_EXP
167#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
168#endif // LDBL_MAX_10_EXP
169
170#ifndef FLT_HAS_SUBNORM
171#define FLT_HAS_SUBNORM __FLT_HAS_DENORM__
172#endif // FLT_HAS_SUBNORM
173
174#ifndef DBL_HAS_SUBNORM
175#define DBL_HAS_SUBNORM __DBL_HAS_DENORM__
176#endif // DBL_HAS_SUBNORM
177
178#ifndef LDBL_HAS_SUBNORM
179#define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__
180#endif // LDBL_HAS_SUBNORM
181
182// TODO: Add FLT16 and FLT128 constants.
183
184#endif // LLVM_LIBC_MACROS_FLOAT_MACROS_H
185