#include <limits.h>
#include <ctype.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <float.h>
#include <math.h>
Go to the source code of this file.
|
| #define | IEEE_LITTLE_ENDIAN |
| |
| #define | NO_LONG_LONG |
| |
| #define | ISDIGIT(c) isdigit(c) |
| |
| #define | MALLOC xmalloc |
| |
| #define | FREE xfree |
| |
| #define | NO_SANITIZE(x, y) y |
| |
| #define | PRIVATE_MEM 2304 |
| |
| #define | PRIVATE_mem ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double)) |
| |
| #define | IEEE_Arith |
| |
| #define | word0(x) ((x).L[1]) |
| |
| #define | word1(x) ((x).L[0]) |
| |
| #define | dval(x) ((x).d) |
| |
| #define | Storeinc(a, b, c) |
| |
| #define | Exp_shift 20 |
| |
| #define | Exp_shift1 20 |
| |
| #define | Exp_msk1 0x100000 |
| |
| #define | Exp_msk11 0x100000 |
| |
| #define | Exp_mask 0x7ff00000 |
| |
| #define | P 53 |
| |
| #define | Bias 1023 |
| |
| #define | Emin (-1022) |
| |
| #define | Exp_1 0x3ff00000 |
| |
| #define | Exp_11 0x3ff00000 |
| |
| #define | Ebits 11 |
| |
| #define | Frac_mask 0xfffff |
| |
| #define | Frac_mask1 0xfffff |
| |
| #define | Ten_pmax 22 |
| |
| #define | Bletch 0x10 |
| |
| #define | Bndry_mask 0xfffff |
| |
| #define | Bndry_mask1 0xfffff |
| |
| #define | LSB 1 |
| |
| #define | Sign_bit 0x80000000 |
| |
| #define | Log2P 1 |
| |
| #define | Tiny0 0 |
| |
| #define | Tiny1 1 |
| |
| #define | Quick_max 14 |
| |
| #define | Int_max 14 |
| |
| #define | Avoid_Underflow |
| |
| #define | Flt_Rounds 1 |
| |
| #define | Rounding Flt_Rounds |
| |
| #define | rounded_product(a, b) ((a) *= (b)) |
| |
| #define | rounded_quotient(a, b) ((a) /= (b)) |
| |
| #define | Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1)) |
| |
| #define | Big1 0xffffffff |
| |
| #define | Pack_32 |
| |
| #define | FFFFFFFF 0xffffffffUL |
| |
| #define | MULTIPLE_THREADS 1 |
| |
| #define | ACQUIRE_DTOA_LOCK(n) /*unused right now*/ |
| |
| #define | FREE_DTOA_LOCK(n) /*unused right now*/ |
| |
| #define | ATOMIC_PTR_CAS(var, old, new) ((var) = (new), (old)) |
| |
| #define | LIKELY(x) (x) |
| |
| #define | UNLIKELY(x) (x) |
| |
| #define | ASSUME(x) (void)(x) |
| |
| #define | Kmax 15 |
| |
| #define | BLOCKING_BIGINT ((Bigint *)(-1)) |
| |
| #define | Bcopy(x, y) |
| |
| #define | d0 word0(d) |
| |
| #define | d1 word1(d) |
| |
| #define | d0 word0(d) |
| |
| #define | d1 word1(d) |
| |
| #define | Scale_Bit 0x10 |
| |
| #define | n_bigtens 5 |
| |
| #define | rv_alloc(i) MALLOC(i) |
| |
| #define | rv_strdup(s, rve) nrv_alloc((s), (rve), strlen(s)+1) |
| |
| #define | DBL_MANH_SIZE 20 |
| |
| #define | DBL_MANL_SIZE 32 |
| |
| #define | DBL_ADJ (DBL_MAX_EXP - 2) |
| |
| #define | SIGFIGS ((DBL_MANT_DIG + 3) / 4 + 1) |
| |
| #define | dexp_get(u) ((int)(word0(u) >> Exp_shift) & ~Exp_msk1) |
| |
| #define | dexp_set(u, v) (word0(u) = (((int)(word0(u)) & ~Exp_mask) | ((v) << Exp_shift))) |
| |
| #define | dmanh_get(u) ((uint32_t)(word0(u) & Frac_mask)) |
| |
| #define | dmanl_get(u) ((uint32_t)word1(u)) |
| |
|
| | NO_SANITIZE ("unsigned-integer-overflow", static Bigint *diff(Bigint *a, Bigint *b)) |
| |
| | NO_SANITIZE ("unsigned-integer-overflow", double strtod(const char *s00, char **se)) |
| |
| double | strtod (const char *s00, char **se) |
| |
| | NO_SANITIZE ("unsigned-integer-overflow", static int quorem(Bigint *b, Bigint *S)) |
| |
| char * | dtoa (double d_, int mode, int ndigits, int *decpt, int *sign, char **rve) |
| |
| char * | hdtoa (double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve) |
| |
◆ ACQUIRE_DTOA_LOCK
| #define ACQUIRE_DTOA_LOCK |
( |
|
n | ) |
/*unused right now*/ |
◆ ASSUME
| #define ASSUME |
( |
|
x | ) |
(void)(x) |
◆ ATOMIC_PTR_CAS
| #define ATOMIC_PTR_CAS |
( |
|
var, |
|
|
|
old, |
|
|
|
new |
|
) |
| ((var) = (new), (old)) |
◆ Avoid_Underflow
◆ Bcopy
Value:memcpy((
char *)&(x)->sign, (
char *)&(y)->sign, \
(y)->wds*sizeof(Long) + 2*sizeof(int))
Definition at line 605 of file dtoa.c.
◆ Bias
◆ Big0
◆ Big1
◆ Bletch
◆ BLOCKING_BIGINT
| #define BLOCKING_BIGINT ((Bigint *)(-1)) |
◆ Bndry_mask
| #define Bndry_mask 0xfffff |
◆ Bndry_mask1
| #define Bndry_mask1 0xfffff |
◆ d0 [1/2]
◆ d0 [2/2]
◆ d1 [1/2]
◆ d1 [2/2]
◆ DBL_ADJ
◆ DBL_MANH_SIZE
◆ DBL_MANL_SIZE
◆ dexp_get
◆ dexp_set
◆ dmanh_get
◆ dmanl_get
◆ dval
| #define dval |
( |
|
x | ) |
((x).d) |
◆ Ebits
◆ Emin
◆ Exp_1
◆ Exp_11
| #define Exp_11 0x3ff00000 |
◆ Exp_mask
| #define Exp_mask 0x7ff00000 |
◆ Exp_msk1
| #define Exp_msk1 0x100000 |
◆ Exp_msk11
| #define Exp_msk11 0x100000 |
◆ Exp_shift
◆ Exp_shift1
◆ FFFFFFFF
| #define FFFFFFFF 0xffffffffUL |
◆ Flt_Rounds
◆ Frac_mask
| #define Frac_mask 0xfffff |
◆ Frac_mask1
| #define Frac_mask1 0xfffff |
◆ FREE
◆ FREE_DTOA_LOCK
| #define FREE_DTOA_LOCK |
( |
|
n | ) |
/*unused right now*/ |
◆ IEEE_Arith
◆ IEEE_LITTLE_ENDIAN
| #define IEEE_LITTLE_ENDIAN |
◆ Int_max
◆ ISDIGIT
| #define ISDIGIT |
( |
|
c | ) |
isdigit(c) |
◆ Kmax
◆ LIKELY
◆ Log2P
◆ LSB
◆ MALLOC
◆ MULTIPLE_THREADS
| #define MULTIPLE_THREADS 1 |
◆ n_bigtens
◆ NO_LONG_LONG
◆ NO_SANITIZE
| #define NO_SANITIZE |
( |
|
x, |
|
|
|
y |
|
) |
| y |
◆ Pack_32
◆ PRIVATE_MEM
◆ PRIVATE_mem
| #define PRIVATE_mem ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double)) |
◆ Quick_max
◆ rounded_product
| #define rounded_product |
( |
|
a, |
|
|
|
b |
|
) |
| ((a) *= (b)) |
◆ rounded_quotient
| #define rounded_quotient |
( |
|
a, |
|
|
|
b |
|
) |
| ((a) /= (b)) |
◆ Rounding
◆ rv_alloc
| #define rv_alloc |
( |
|
i | ) |
MALLOC(i) |
◆ rv_strdup
| #define rv_strdup |
( |
|
s, |
|
|
|
rve |
|
) |
| nrv_alloc((s), (rve), strlen(s)+1) |
◆ Scale_Bit
◆ SIGFIGS
◆ Sign_bit
| #define Sign_bit 0x80000000 |
◆ Storeinc
| #define Storeinc |
( |
|
a, |
|
|
|
b, |
|
|
|
c |
|
) |
| |
Value:(((unsigned short *)(a))[1] = (unsigned short)(b), \
((unsigned short *)(a))[0] = (unsigned short)(c), (a)++)
Definition at line 331 of file dtoa.c.
◆ Ten_pmax
◆ Tiny0
◆ Tiny1
◆ UNLIKELY
| #define UNLIKELY |
( |
|
x | ) |
(x) |
◆ word0
| #define word0 |
( |
|
x | ) |
((x).L[1]) |
◆ word1
| #define word1 |
( |
|
x | ) |
((x).L[0]) |
◆ Bigint
◆ double_u
◆ dtoa()
| char * dtoa |
( |
double |
d_, |
|
|
int |
mode, |
|
|
int |
ndigits, |
|
|
int * |
decpt, |
|
|
int * |
sign, |
|
|
char ** |
rve |
|
) |
| |
Definition at line 2649 of file dtoa.c.
References Bcopy, Bias, Bletch, Bndry_mask, dval, Exp_1, Exp_11, Exp_mask, Exp_msk1, Exp_shift, Exp_shift1, Flt_Rounds, Frac_mask, Frac_mask1, int(), Int_max, Bigint::k, L, Log2P, n_bigtens, P, Quick_max, Rounding, rv_alloc, rv_strdup, S, Bigint::sign, Sign_bit, Ten_pmax, Bigint::wds, word0, word1, and Bigint::x.
◆ hdtoa()
| char * hdtoa |
( |
double |
d, |
|
|
const char * |
xdigs, |
|
|
int |
ndigits, |
|
|
int * |
decpt, |
|
|
int * |
sign, |
|
|
char ** |
rve |
|
) |
| |
Definition at line 3387 of file dtoa.c.
References U::d, DBL_ADJ, DBL_MANH_SIZE, DBL_MANL_SIZE, DBL_MANT_DIG, DBL_MAX_EXP, dexp_get, dexp_set, dmanh_get, dmanl_get, isinf(), isnan, NULL, rv_alloc, rv_strdup, SIGFIGS, Bigint::sign, Sign_bit, and word0.
◆ NO_SANITIZE() [1/3]
| NO_SANITIZE |
( |
"unsigned-integer-overflow" |
, |
|
|
double |
strtodconst char *s00, char **se |
|
) |
| |
◆ NO_SANITIZE() [2/3]
| NO_SANITIZE |
( |
"unsigned-integer-overflow" |
, |
|
|
static Bigint * |
diffBigint *a, Bigint *b |
|
) |
| |
◆ NO_SANITIZE() [3/3]
| NO_SANITIZE |
( |
"unsigned-integer-overflow" |
, |
|
|
static int |
quoremBigint *b, Bigint *S |
|
) |
| |
◆ strtod()
| double strtod |
( |
const char * |
s00, |
|
|
char ** |
se |
|
) |
| |
Definition at line 1497 of file dtoa.c.
References Avoid_Underflow, Bcopy, Bias, Big0, Big1, Bndry_mask, Bndry_mask1, DBL_DIG, DBL_MAX_10_EXP, DBL_MAX_EXP, dval, Emin, Exp_1, Exp_mask, Exp_msk1, Exp_shift, FLT_RADIX, Flt_Rounds, Frac_mask, hexdigit, IEEE_Arith, int(), ISDIGIT, Bigint::k, L, Log2P, LSB, match, n_bigtens, NULL, P, rounded_product, rounded_quotient, Rounding, Scale_Bit, Bigint::sign, strchr(), Ten_pmax, Tiny0, Tiny1, Bigint::wds, word0, word1, and Bigint::x.