(b76ad15ed0da636161de0243c547ee1e6fc95681)
#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 | 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 598 of file dtoa.c.
 
 
◆ Bias
◆ Big0
◆ Big1
◆ Bletch
◆ 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 | 
        
          |  | ) |  |  | 
      
 
 
◆ hdtoa()
      
        
          | char* hdtoa | ( | double | d, | 
        
          |  |  | const char * | xdigs, | 
        
          |  |  | int | ndigits, | 
        
          |  |  | int * | decpt, | 
        
          |  |  | int * | sign, | 
        
          |  |  | char ** | rve | 
        
          |  | ) |  |  | 
      
 
 
◆ 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 | 
        
          |  | ) |  |  |