php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_strtod.c File Reference
#include <zend_operators.h>
#include <zend_strtod.h>
#include "zend_strtod_int.h"
#include "zend_globals.h"
#include "stdlib.h"
#include "string.h"
#include "errno.h"
#include "float.h"
#include "math.h"

Go to the source code of this file.

Data Structures

union  U
 
struct  BCinfo
 
struct  Bigint
 

Macros

#define Long   int32_t
 
#define ULong   uint32_t
 
#define Bigint   _zend_strtod_bigint
 
#define freelist   (EG(strtod_state).freelist)
 
#define p5s   (EG(strtod_state).p5s)
 
#define dtoa_result   (EG(strtod_state).result)
 
#define MALLOC   malloc
 
#define FREE   free
 
#define IEEE_Arith
 
#define CONST   const
 
#define word0(x)
 
#define word1(x)
 
#define dval(x)
 
#define STRTOD_DIGLIM   40
 
#define strtod_diglim   STRTOD_DIGLIM
 
#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 Nbits   53
 
#define Bias   1023
 
#define Emax   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)
 
#define rounded_quotient(a, b)
 
#define Big0   (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
 
#define Big1   0xffffffff
 
#define Pack_32
 
#define FFFFFFFF   0xffffffffUL
 
#define Llong   long long
 
#define ULLong   unsigned Llong
 
#define ACQUIRE_DTOA_LOCK(n)
 
#define FREE_DTOA_LOCK(n)
 
#define Kmax   ZEND_STRTOD_K_MAX
 
#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 ULbits   32
 
#define kshift   5
 
#define kmask   31
 

Typedefs

typedef struct BCinfo BCinfo
 
typedef struct Bigint Bigint
 

Functions

ZEND_API int zend_shutdown_strtod (void)
 
ZEND_API double zend_strtod (const char *s00, const char **se)
 
ZEND_API void zend_freedtoa (char *s)
 
ZEND_API char * zend_dtoa (double dd, int mode, int ndigits, int *decpt, bool *sign, char **rve)
 
ZEND_API double zend_hex_strtod (const char *str, const char **endptr)
 
ZEND_API double zend_oct_strtod (const char *str, const char **endptr)
 
ZEND_API double zend_bin_strtod (const char *str, const char **endptr)
 
ZEND_API char * zend_gcvt (double value, int ndigit, char dec_point, char exponent, char *buf)
 

Macro Definition Documentation

◆ ACQUIRE_DTOA_LOCK

#define ACQUIRE_DTOA_LOCK ( n)
Value:
/*nothing*/

Definition at line 533 of file zend_strtod.c.

◆ Avoid_Underflow

#define Avoid_Underflow

Definition at line 386 of file zend_strtod.c.

◆ Bcopy

#define Bcopy ( x,
y )
Value:
memcpy((char *)&x->sign, (char *)&y->sign, \
y->wds*sizeof(Long) + 2*sizeof(int))
memcpy(ptr1, ptr2, size)
#define Long

Definition at line 638 of file zend_strtod.c.

◆ Bias

#define Bias   1023

Definition at line 366 of file zend_strtod.c.

◆ Big0

#define Big0   (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))

Definition at line 496 of file zend_strtod.c.

◆ Big1

#define Big1   0xffffffff

Definition at line 497 of file zend_strtod.c.

◆ Bigint

#define Bigint   _zend_strtod_bigint

Definition at line 206 of file zend_strtod.c.

◆ Bletch

#define Bletch   0x10

Definition at line 375 of file zend_strtod.c.

◆ Bndry_mask

#define Bndry_mask   0xfffff

Definition at line 376 of file zend_strtod.c.

◆ Bndry_mask1

#define Bndry_mask1   0xfffff

Definition at line 377 of file zend_strtod.c.

◆ CONST

#define CONST   const

Definition at line 311 of file zend_strtod.c.

◆ d0 [1/2]

#define d0   word0(&d)

◆ d0 [2/2]

#define d0   word0(d)

◆ d1 [1/2]

double d1   word1(&d)

Definition at line 521 of file zend_vm_def.h.

◆ d1 [2/2]

#define d1   word1(d)

◆ dtoa_result

#define dtoa_result   (EG(strtod_state).result)

Definition at line 209 of file zend_strtod.c.

◆ dval

#define dval ( x)
Value:
(x)->d

Definition at line 328 of file zend_strtod.c.

◆ Ebits

#define Ebits   11

Definition at line 371 of file zend_strtod.c.

◆ Emax

#define Emax   1023

Definition at line 367 of file zend_strtod.c.

◆ Emin

#define Emin   (-1022)

Definition at line 368 of file zend_strtod.c.

◆ Exp_1

#define Exp_1   0x3ff00000

Definition at line 369 of file zend_strtod.c.

◆ Exp_11

#define Exp_11   0x3ff00000

Definition at line 370 of file zend_strtod.c.

◆ Exp_mask

#define Exp_mask   0x7ff00000

Definition at line 363 of file zend_strtod.c.

◆ Exp_msk1

#define Exp_msk1   0x100000

Definition at line 361 of file zend_strtod.c.

◆ Exp_msk11

#define Exp_msk11   0x100000

Definition at line 362 of file zend_strtod.c.

◆ Exp_shift

#define Exp_shift   20

Definition at line 359 of file zend_strtod.c.

◆ Exp_shift1

#define Exp_shift1   20

Definition at line 360 of file zend_strtod.c.

◆ FFFFFFFF

#define FFFFFFFF   0xffffffffUL

Definition at line 510 of file zend_strtod.c.

◆ Flt_Rounds

#define Flt_Rounds   1

Definition at line 396 of file zend_strtod.c.

◆ Frac_mask

#define Frac_mask   0xfffff

Definition at line 372 of file zend_strtod.c.

◆ Frac_mask1

#define Frac_mask1   0xfffff

Definition at line 373 of file zend_strtod.c.

◆ FREE

#define FREE   free

Definition at line 238 of file zend_strtod.c.

◆ FREE_DTOA_LOCK

#define FREE_DTOA_LOCK ( n)
Value:
/*nothing*/

Definition at line 534 of file zend_strtod.c.

◆ freelist

#define freelist   (EG(strtod_state).freelist)

Definition at line 207 of file zend_strtod.c.

◆ IEEE_Arith

#define IEEE_Arith

Definition at line 255 of file zend_strtod.c.

◆ Int_max

#define Int_max   14

Definition at line 384 of file zend_strtod.c.

◆ kmask

#define kmask   31

Definition at line 1676 of file zend_strtod.c.

◆ Kmax

Definition at line 537 of file zend_strtod.c.

◆ kshift

#define kshift   5

Definition at line 1675 of file zend_strtod.c.

◆ Llong

#define Llong   long long

Definition at line 525 of file zend_strtod.c.

◆ Log2P

#define Log2P   1

Definition at line 380 of file zend_strtod.c.

◆ Long

#define Long   int32_t

Definition at line 195 of file zend_strtod.c.

◆ LSB

#define LSB   1

Definition at line 378 of file zend_strtod.c.

◆ MALLOC

#define MALLOC   malloc

Definition at line 237 of file zend_strtod.c.

◆ n_bigtens

#define n_bigtens   5

Definition at line 1504 of file zend_strtod.c.

◆ Nbits

#define Nbits   53

Definition at line 365 of file zend_strtod.c.

◆ P

#define P   53

Definition at line 364 of file zend_strtod.c.

◆ p5s

#define p5s   (EG(strtod_state).p5s)

Definition at line 208 of file zend_strtod.c.

◆ Pack_32

#define Pack_32

Definition at line 500 of file zend_strtod.c.

◆ Quick_max

#define Quick_max   14

Definition at line 383 of file zend_strtod.c.

◆ rounded_product

#define rounded_product ( a,
b )
Value:
a *= b
$obj a
Definition test.php:84

Definition at line 492 of file zend_strtod.c.

◆ rounded_quotient

#define rounded_quotient ( a,
b )
Value:
a /= b

Definition at line 493 of file zend_strtod.c.

◆ Rounding

#define Rounding   Flt_Rounds

Definition at line 404 of file zend_strtod.c.

◆ Scale_Bit

#define Scale_Bit   0x10

Definition at line 1503 of file zend_strtod.c.

◆ Sign_bit

#define Sign_bit   0x80000000

Definition at line 379 of file zend_strtod.c.

◆ 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 345 of file zend_strtod.c.

◆ STRTOD_DIGLIM

#define STRTOD_DIGLIM   40

Definition at line 331 of file zend_strtod.c.

◆ strtod_diglim

#define strtod_diglim   STRTOD_DIGLIM

Definition at line 337 of file zend_strtod.c.

◆ Ten_pmax

#define Ten_pmax   22

Definition at line 374 of file zend_strtod.c.

◆ Tiny0

#define Tiny0   0

Definition at line 381 of file zend_strtod.c.

◆ Tiny1

#define Tiny1   1

Definition at line 382 of file zend_strtod.c.

◆ ULbits

#define ULbits   32

Definition at line 1674 of file zend_strtod.c.

◆ ULLong

#define ULLong   unsigned Llong

Definition at line 528 of file zend_strtod.c.

◆ ULong

#define ULong   uint32_t

Definition at line 198 of file zend_strtod.c.

◆ word0

#define word0 ( x)
Value:
(x)->L[1]

Definition at line 322 of file zend_strtod.c.

◆ word1

#define word1 ( x)
Value:
(x)->L[0]

Definition at line 323 of file zend_strtod.c.

Typedef Documentation

◆ BCinfo

typedef struct BCinfo BCinfo

Definition at line 503 of file zend_strtod.c.

◆ Bigint

typedef struct Bigint Bigint

Definition at line 546 of file zend_strtod.c.

Function Documentation

◆ zend_bin_strtod()

ZEND_API double zend_bin_strtod ( const char * str,
const char ** endptr )

Definition at line 4475 of file zend_strtod.c.

◆ zend_dtoa()

ZEND_API char * zend_dtoa ( double dd,
int mode,
int ndigits,
int * decpt,
bool * sign,
char ** rve )

Definition at line 3707 of file zend_strtod.c.

◆ zend_freedtoa()

ZEND_API void zend_freedtoa ( char * s)

Definition at line 3661 of file zend_strtod.c.

◆ zend_gcvt()

ZEND_API char * zend_gcvt ( double value,
int ndigit,
char dec_point,
char exponent,
char * buf )

Definition at line 4513 of file zend_strtod.c.

◆ zend_hex_strtod()

ZEND_API double zend_hex_strtod ( const char * str,
const char ** endptr )

Definition at line 4410 of file zend_strtod.c.

◆ zend_oct_strtod()

ZEND_API double zend_oct_strtod ( const char * str,
const char ** endptr )

Definition at line 4443 of file zend_strtod.c.

◆ zend_shutdown_strtod()

ZEND_API int zend_shutdown_strtod ( void )

Definition at line 560 of file zend_strtod.c.

◆ zend_strtod()

ZEND_API double zend_strtod ( const char * s00,
const char ** se )

Definition at line 2521 of file zend_strtod.c.