1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21: #include <float.h>
22:
23: #define FLOAT_TYPE long double
24: #define FUNC_PREFIX q
25: #define FLOAT_FMT_FLAG "L"
26: #define FLOAT_NAME_EXT l
27: #define FLOAT_MIN_10_EXP LDBL_MIN_10_EXP
28: #if LDBL_MANT_DIG == 64
29: # define NDIGIT_MAX 21
30: #elif LDBL_MANT_DIG == 53
31: # define NDIGIT_MAX 17
32: #elif LDBL_MANT_DIG == 113
33: # define NDIGIT_MAX 36
34: #elif LDBL_MANT_DIG == 106
35: # define NDIGIT_MAX 34
36: #elif LDBL_MANT_DIG == 56
37: # define NDIGIT_MAX 18
38: #else
39:
40:
41: # error "NDIGIT_MAX must be precomputed"
42: # define NDIGIT_MAX (lrint (ceil (M_LN2 / M_LN10 * LDBL_MANT_DIG + 1.0)))
43: #endif
44: #if LDBL_MIN_10_EXP == -37
45: # define FLOAT_MIN_10_NORM 1.0e-37L
46: #elif LDBL_MIN_10_EXP == -291
47: # define FLOAT_MIN_10_NORM 1.0e-291L
48: #elif LDBL_MIN_10_EXP == -307
49: # define FLOAT_MIN_10_NORM 1.0e-307L
50: #elif LDBL_MIN_10_EXP == -4931
51: # define FLOAT_MIN_10_NORM 1.0e-4931L
52: #else
53:
54: # error "FLOAT_MIN_10_NORM must be precomputed"
55: # define FLOAT_MIN_10_NORM exp10l (LDBL_MIN_10_EXP)
56: #endif
57:
58: #include "efgcvt_r.c"