|
64 | 64 |
|
65 | 65 | #ifndef LDBL_MANT_DIG /* May be defined in a toolchain header */ |
66 | 66 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
67 | | -# define LDBL_MANT_DIG DBL_MANT_DIG /* FIX ME */ |
| 67 | +# error "LDBL_MANT_DIG has to be defined in compiler.h" |
68 | 68 | # else |
69 | 69 | # define LDBL_MANT_DIG DBL_MANT_DIG |
70 | 70 | # endif |
|
96 | 96 | #endif |
97 | 97 |
|
98 | 98 | #ifndef LDBL_DIG /* May be defined in a toolchain header */ |
99 | | -# ifdef CONFIG_HAVE_LONG_DOUBLE |
100 | | -# define LDBL_DIG DBL_DIG /* FIX ME */ |
| 99 | +# ifdef CONFIG_HAVE_LONG_DOUBLE |
| 100 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 101 | +# define LDBL_DIG DBL_DIG |
| 102 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 103 | +# define LDBL_DIG 18 |
| 104 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 105 | +# define LDBL_DIG 33 |
| 106 | +# else |
| 107 | +# error "Unknown long double format" |
| 108 | +# endif |
101 | 109 | # else |
102 | 110 | # define LDBL_DIG DBL_DIG |
103 | 111 | # endif |
|
121 | 129 |
|
122 | 130 | #ifndef LDBL_MIN_EXP /* May be defined in a toolchain header */ |
123 | 131 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
124 | | -# define LDBL_MIN_EXP DBL_MIN_EXP /* FIX ME */ |
| 132 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 133 | +# define LDBL_MIN_EXP DBL_MIN_EXP |
| 134 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 135 | +# define LDBL_MIN_EXP (-16381) |
| 136 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 137 | +# define LDBL_MIN_EXP (-16381) |
| 138 | +# else |
| 139 | +# error "Unknown long double format" |
| 140 | +# endif |
125 | 141 | # else |
126 | 142 | # define LDBL_MIN_EXP DBL_MIN_EXP |
127 | 143 | # endif |
|
145 | 161 |
|
146 | 162 | #ifndef LDBL_MIN_10_EXP /* May be defined in a toolchain header */ |
147 | 163 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
148 | | -# define LDBL_MIN_10_EXP DBL_MIN_10_EXP /* FIX ME */ |
| 164 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 165 | +# define LDBL_MIN_10_EXP DBL_MIN_10_EXP |
| 166 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 167 | +# define LDBL_MIN_10_EXP (-4931) |
| 168 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 169 | +# define LDBL_MIN_10_EXP (-4931) |
| 170 | +# else |
| 171 | +# error "Unknown long double format" |
| 172 | +# endif |
149 | 173 | # else |
150 | 174 | # define LDBL_MIN_10_EXP DBL_MIN_10_EXP |
151 | 175 | # endif |
|
169 | 193 |
|
170 | 194 | #ifndef LDBL_MAX_EXP /* May be defined in a toolchain header */ |
171 | 195 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
172 | | -# define LDBL_MAX_EXP DBL_MAX_EXP /* FIX ME */ |
| 196 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 197 | +# define LDBL_MAX_EXP DBL_MAX_EXP |
| 198 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 199 | +# define LDBL_MAX_EXP 16384 |
| 200 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 201 | +# define LDBL_MAX_EXP 16384 |
| 202 | +# else |
| 203 | +# error "Unknown long double format" |
| 204 | +# endif |
173 | 205 | # else |
174 | 206 | # define LDBL_MAX_EXP DBL_MAX_EXP |
175 | 207 | # endif |
|
193 | 225 |
|
194 | 226 | #ifndef LDBL_MAX_10_EXP /* May be defined in toolchain header */ |
195 | 227 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
196 | | -# define LDBL_MAX_10_EXP DBL_MAX_10_EXP /* FIX ME */ |
| 228 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 229 | +# define LDBL_MAX_10_EXP DBL_MAX_10_EXP |
| 230 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 231 | +# define LDBL_MAX_10_EXP 4932 |
| 232 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 233 | +# define LDBL_MAX_10_EXP 4932 |
| 234 | +# else |
| 235 | +# error "Unknown long double format" |
| 236 | +# endif |
197 | 237 | # else |
198 | 238 | # define LDBL_MAX_10_EXP DBL_MAX_10_EXP |
199 | 239 | # endif |
|
215 | 255 |
|
216 | 256 | #ifndef LDBL_MAX /* May be defined in toolchain header */ |
217 | 257 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
218 | | -# define LDBL_MAX DBL_MAX /* FIX ME */ |
| 258 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 259 | +# define LDBL_MAX DBL_MAX |
| 260 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 261 | +# define LDBL_MAX 1.18973149535723176502126385303097021e+4932L |
| 262 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 263 | +# define LDBL_MAX 1.18973149535723176508575932662800702e+4932L |
| 264 | +# else |
| 265 | +# error "Unknown long double format" |
| 266 | +# endif |
219 | 267 | # else |
220 | 268 | # define LDBL_MAX DBL_MAX |
221 | 269 | # endif |
|
239 | 287 |
|
240 | 288 | #ifndef LDBL_EPSILON /* May be defined in toolchain header */ |
241 | 289 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
242 | | -# define LDBL_EPSILON DBL_EPSILON /* FIX ME */ |
| 290 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 291 | +# define LDBL_EPSILON DBL_EPSILON |
| 292 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 293 | +# define LDBL_EPSILON 1.08420217248550443400745280086994171e-19L |
| 294 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 295 | +# define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L |
| 296 | +# else |
| 297 | +# error "Unknown long double format" |
| 298 | +# endif |
243 | 299 | # else |
244 | 300 | # define LDBL_EPSILON DBL_EPSILON |
245 | 301 | # endif |
|
261 | 317 |
|
262 | 318 | #ifndef LDBL_MIN /* May be defined in toolchain header */ |
263 | 319 | # ifdef CONFIG_HAVE_LONG_DOUBLE |
264 | | -# define LDBL_MIN DBL_MIN /* FIX ME */ |
| 320 | +# if LDBL_MANT_DIG == 53 /* IEEE binary64 */ |
| 321 | +# define LDBL_MIN DBL_MIN |
| 322 | +# elif LDBL_MANT_DIG == 64 /* x87 80-bit */ |
| 323 | +# define LDBL_MIN 3.36210314311209350626267781732175260e-4932L |
| 324 | +# elif LDBL_MANT_DIG == 113 /* IEEE binary128 */ |
| 325 | +# define LDBL_MIN 3.36210314311209350626267781732175260e-4932L |
| 326 | +# else |
| 327 | +# error "Unknown long double format" |
| 328 | +# endif |
265 | 329 | # else |
266 | 330 | # define LDBL_MIN DBL_MIN |
267 | 331 | # endif |
|
0 commit comments