Skip to content

Commit 067413a

Browse files
committed
Update float-macros.h with IEC-60559 definitions
1 parent dd0e537 commit 067413a

File tree

1 file changed

+94
-61
lines changed

1 file changed

+94
-61
lines changed

libc/include/llvm-libc-macros/float-macros.h

Lines changed: 94 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -11,206 +11,239 @@
1111

1212
#ifdef __FLT_RADIX__
1313
#define FLT_RADIX __FLT_RADIX__
14-
#else
14+
#else
1515
#define FLT_RADIX 2
1616
#endif // FLT_RADIX
1717

18-
#ifdef FLT_EVAL_METHOD
19-
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
20-
#endif // FLT_EVAL_METHOD
18+
// #ifdef FLT_EVAL_METHOD
19+
// #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
20+
// #endif // FLT_EVAL_METHOD
21+
// #define FLT_EVAL_METHOD 0
22+
//clarifiy
2123

2224
#ifdef DECIMAL_DIG
2325
#define DECIMAL_DIG __DECIMAL_DIG__
24-
#else
26+
#else
2527
#define DECIMAL_DIG 10
2628
#endif // DECIMAL_DIG
29+
//clarify
2730

28-
#ifdef FLT_DECIMAL_DIG
31+
#ifdef FLT_DECIMAL_DIG
2932
#define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
30-
#else
31-
#define FLT_DECIMAL_DIG 6
33+
#else
34+
#define FLT_DECIMAL_DIG 9
3235
#endif // FLT_DECIMAL_DIG
3336

3437
#ifdef DBL_DECIMAL_DIG
3538
#define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
36-
#else
37-
#define DBL_DECIMAL_DIG 10
39+
#else
40+
#define DBL_DECIMAL_DIG 17
3841
#endif // DBL_DECIMAL_DIG
3942

4043
#ifdef LDBL_DECIMAL_DIG
4144
#define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
42-
#else
45+
#else
4346
#define LDBL_DECIMAL_DIG 10
4447
#endif // LDBL_DECIMAL_DIG
48+
//clarify
4549

4650
#ifdef FLT_DIG
4751
#define FLT_DIG __FLT_DIG__
48-
#else
52+
#else
4953
#define FLT_DIG 6
5054
#endif // FLT_DIG
5155

5256
#ifdef DBL_DIG
5357
#define DBL_DIG __DBL_DIG__
54-
#else
55-
#define DBL_DIG 10
58+
#else
59+
#define DBL_DIG 15
5660
#endif // DBL_DIG
5761

5862
#ifdef LDBL_DIG
5963
#define LDBL_DIG __LDBL_DIG__
60-
#else
64+
#else
6165
#define LDBL_DIG 10
6266
#endif // LDBL_DIG
67+
//clarify
6368

6469
#ifdef FLT_MANT_DIG
6570
#define FLT_MANT_DIG __FLT_MANT_DIG__
66-
#else
71+
#else
6772
#define FLT_MANT_DIG 24
6873
#endif // FLT_MANT_DIG
6974

7075
#ifdef DBL_MANT_DIG
7176
#define DBL_MANT_DIG __DBL_MANT_DIG__
72-
#else
77+
#else
7378
#define DBL_MANT_DIG 53
7479
#endif // DBL_MANT_DIG
7580

7681
#ifdef LDBL_MANT_DIG
7782
#define LDBL_MANT_DIG __LDBL_MANT_DIG__
78-
#else
83+
#else
7984
#define LDBL_MANT_DIG 113
8085
#endif // LDBL_MANT_DIG
86+
//clarify
8187

8288
#ifdef FLT_MIN
8389
#define FLT_MIN __FLT_MIN__
84-
#else
85-
#define FLT_MIN 1E-37
90+
#else
91+
#define FLT_MIN 1.17549435082228750796873653722224568e-38F
8692
#endif // FLT_MIN
8793

8894
#ifdef DBL_MIN
8995
#define DBL_MIN __DBL_MIN__
90-
#else
91-
#define DBL_MIN 1E-37
96+
#else
97+
#define DBL_MIN 2.22507385850720138309023271733240406e-308L
9298
#endif // DBL_MIN
9399

94100
#ifdef LDBL_MIN
95101
#define LDBL_MIN __LDBL_MIN__
96-
#else
97-
#define LDBL_MIN 1E-37
102+
#else
103+
#define LDBL_MIN 1E-37
98104
#endif // LDBL_MIN
105+
//clarify
99106

100107
#ifdef FLT_MAX
101108
#define FLT_MAX __FLT_MAX__
102-
#else
103-
#define FLT_MAX 1E+37
109+
#else
110+
#define FLT_MAX 3.40282346638528859811704183484516925e+38F
104111
#endif // FLT_MAX
105112

106113
#ifdef DBL_MAX
107114
#define DBL_MAX __DBL_MAX__
108-
#else
109-
#define DBL_MAX 1E+37
115+
#else
116+
#define DBL_MAX 1.79769313486231570814527423731704357e+308L
110117
#endif // DBL_MAX
111118

112119
#ifdef LDBL_MAX
113120
#define LDBL_MAX __LDBL_MAX__
114-
#else
121+
#else
115122
#define LDBL_MAX 1E+37
116123
#endif // LDBL_MAX
124+
//clarify
125+
126+
#ifdef FLT_TRUE_MIN
127+
#define FLT_TRUE_MIN __FLT_DNORM_MIN
128+
#else
129+
#define FLT_TRUE_MIN 1.40129846432481707092372958328991613e-45F
130+
#endif // FLT_TRUE_MIN
117131

118-
// #ifdef FLT_TRUE_MIN
119-
// #define FLT_TRUE_MIN __FLT_DNORM_MIN //acc to Clang's define [remove after review]
120-
// #else
121-
// #define FLT_TRUE_MIN 1E-37
122-
// #endif // FLT_TRUE_MIN
123-
//
124-
// #ifdef DBL_TRUE_MIN
125-
// #define DBL_TRUE_MIN __DBL_DENORM_MIN__ //acc to Clang's define [remove after review]
126-
// #else
127-
// #define DBL_TRUE_MIN 1E-37
128-
// #endif // DBL_TRUE_MIN
129-
//
130-
// #ifdef LDBL_TRUE_MIN
131-
// #define LDBL_TRUE_MIN __LDBL_DENORM_MIN__ //acc to Clang's define [remove after review]
132-
// #else
133-
// #define LDBL_TRUE_MIN 1E-37
134-
// #endif // LDBL_TRUE_MIN
132+
#ifdef DBL_TRUE_MIN
133+
#define DBL_TRUE_MIN __DBL_DENORM_MIN__
134+
#else
135+
#define DBL_TRUE_MIN 4.94065645841246544176568792868221372e-324L
136+
#endif // DBL_TRUE_MIN
137+
138+
#ifdef LDBL_TRUE_MIN
139+
#define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
140+
#else
141+
#define LDBL_TRUE_MIN 1E-37
142+
#endif // LDBL_TRUE_MIN
143+
//clarify
135144

136145
#ifdef FLT_EPSILON
137146
#define FLT_EPSILON __FLT_EPSILON__
138-
#else
139-
#define FLT_EPSILON 1E-5
147+
#else
148+
#define FLT_EPSILON 1.1920928955078125e-7F
140149
#endif // FLT_EPSILON
141150

142151
#ifdef DBL_EPSILON
143152
#define DBL_EPSILON __DBL_EPSILON__
144-
#else
145-
#define DBL_EPSILON 1E-9
153+
#else
154+
#define DBL_EPSILON 2.22044604925031308084726333618164062e-16L
146155
#endif // DBL_EPSILON
147156

148157
#ifdef LDBL_EPSILON
149158
#define LDBL_EPSILON __LDBL_EPSILON__
150-
#else
159+
#else
151160
#define LDBL_EPSILON 1E-9
152161
#endif // LDBL_EPSILON
162+
//clarify
153163

154164
#ifdef FLT_MIN_EXP
155165
#define FLT_MIN_EXP __FLT_MIN_EXP__
166+
#else
167+
#define FLT_MIN_EXP (-125)
156168
#endif // FLT_MIN_EXP
157169

158170
#ifdef DBL_MIN_EXP
159171
#define DBL_MIN_EXP __DBL_MIN_EXP__
172+
#else
173+
#define DBL_MIN_EXP (-1021)
160174
#endif // DBL_MIN_EXP
161175

162176
#ifdef LDBL_MIN_EXP
163177
#define LDBL_MIN_EXP __LDBL_MIN_EXP__
164178
#endif // LDBL_MIN_EXP
179+
//clarify
165180

166181
#ifdef FLT_MIN_10_EXP
167182
#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
168-
#else
169-
#define FLT_MIN_10_EXP -37
183+
#else
184+
#define FLT_MIN_10_EXP (-37)
170185
#endif // FLT_MIN_10_EXP
171186

172187
#ifdef DBL_MIN_10_EXP
173188
#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
174-
#else
175-
#define DBL_MIN_10_EXP -37
189+
#else
190+
#define DBL_MIN_10_EXP (-307)
176191
#endif // DBL_MIN_10_EXP
177192

178193
#ifdef LDBL_MIN_10_EXP
179194
#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
180-
#else
195+
#else
181196
#define LDBL_MIN_10_EXP -37
182197
#endif // LDBL_MIN_10_EXP
198+
//clarify
183199

184200
#ifdef FLT_MAX_EXP
185201
#define FLT_MAX_EXP __FLT_MAX_EXP__
202+
#else
203+
#define FLT_MAX_EXP 128
186204
#endif // FLT_MAX_EXP
187205

188206
#ifdef DBL_MAX_EXP
189207
#define DBL_MAX_EXP __DBL_MAX_EXP__
208+
#else
209+
#define DBL_MAX_EXP 1024
190210
#endif // DBL_MAX_EXP
191211

192212
#ifdef LDBL_MAX_EXP
193213
#define LDBL_MAX_EXP __LDBL_MAX_EXP__
194214
#endif // LDBL_MAX_EXP
215+
//clarify
195216

196217
#ifdef FLT_MAX_10_EXP
197218
#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
198-
#else
199-
#define FLT_MAX_10_EXP +37
219+
#else
220+
#define FLT_MAX_10_EXP 38
200221
#endif // FLT_MAX_10_EXP
201222

202223
#ifdef DBL_MAX_10_EXP
203224
#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
204-
#else
205-
#define DBL_MAX_10_EXP +37
225+
#else
226+
#define DBL_MAX_10_EXP 308
206227
#endif // DBL_MAX_10_EXP
207228

208229
#ifdef LDBL_MAX_10_EXP
209230
#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
210-
#else
231+
#else
211232
#define LDBL_MAX_10_EXP +37
212233
#endif // LDBL_MAX_10_EXP
213234

235+
#if defined(LIBC_TARGET_ARCH_IS_RISCV64) || defined(LIBC_TARGET_ARCH_IS_ANY_RISCV)
236+
237+
#endif
238+
239+
#if defined(LIBC_TARGET_ARCH_IS_X86_32)
240+
241+
#endif
242+
243+
#if defined(LIBC_TARGET_ARCH_IS_X86_64)
244+
245+
#endif
246+
214247
// TODO: Add FLT16 and FLT128 constants.
215248

216249
#endif // LLVM_LIBC_MACROS_FLOAT_MACROS_H

0 commit comments

Comments
 (0)