php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
diyfp.h File Reference
#include "lexbor/core/base.h"
#include <math.h>

Go to the source code of this file.

Data Structures

struct  lexbor_diyfp_t
 

Macros

#define lexbor_diyfp(_s, _e)
 
#define lexbor_uint64_hl(h, l)
 
#define LEXBOR_DBL_SIGNIFICAND_SIZE   52
 
#define LEXBOR_DBL_EXPONENT_BIAS   (0x3FF + LEXBOR_DBL_SIGNIFICAND_SIZE)
 
#define LEXBOR_DBL_EXPONENT_MIN   (-LEXBOR_DBL_EXPONENT_BIAS)
 
#define LEXBOR_DBL_EXPONENT_MAX   (0x7FF - LEXBOR_DBL_EXPONENT_BIAS)
 
#define LEXBOR_DBL_EXPONENT_DENORMAL   (-LEXBOR_DBL_EXPONENT_BIAS + 1)
 
#define LEXBOR_DBL_SIGNIFICAND_MASK   lexbor_uint64_hl(0x000FFFFF, 0xFFFFFFFF)
 
#define LEXBOR_DBL_HIDDEN_BIT   lexbor_uint64_hl(0x00100000, 0x00000000)
 
#define LEXBOR_DBL_EXPONENT_MASK   lexbor_uint64_hl(0x7FF00000, 0x00000000)
 
#define LEXBOR_DIYFP_SIGNIFICAND_SIZE   64
 
#define LEXBOR_SIGNIFICAND_SIZE   53
 
#define LEXBOR_SIGNIFICAND_SHIFT
 
#define LEXBOR_DECIMAL_EXPONENT_OFF   348
 
#define LEXBOR_DECIMAL_EXPONENT_MIN   (-348)
 
#define LEXBOR_DECIMAL_EXPONENT_MAX   340
 
#define LEXBOR_DECIMAL_EXPONENT_DIST   8
 

Functions

LXB_API lexbor_diyfp_t lexbor_cached_power_dec (int exp, int *dec_exp)
 
LXB_API lexbor_diyfp_t lexbor_cached_power_bin (int exp, int *dec_exp)
 
lxb_inline uint64_t lexbor_diyfp_leading_zeros64 (uint64_t x)
 
lxb_inline lexbor_diyfp_t lexbor_diyfp_from_d2 (double d)
 
lxb_inline double lexbor_diyfp_2d (lexbor_diyfp_t v)
 
lxb_inline lexbor_diyfp_t lexbor_diyfp_shift_left (lexbor_diyfp_t v, unsigned shift)
 
lxb_inline lexbor_diyfp_t lexbor_diyfp_shift_right (lexbor_diyfp_t v, unsigned shift)
 
lxb_inline lexbor_diyfp_t lexbor_diyfp_sub (lexbor_diyfp_t lhs, lexbor_diyfp_t rhs)
 
lxb_inline lexbor_diyfp_t lexbor_diyfp_mul (lexbor_diyfp_t lhs, lexbor_diyfp_t rhs)
 
lxb_inline lexbor_diyfp_t lexbor_diyfp_normalize (lexbor_diyfp_t v)
 

Macro Definition Documentation

◆ LEXBOR_DBL_EXPONENT_BIAS

#define LEXBOR_DBL_EXPONENT_BIAS   (0x3FF + LEXBOR_DBL_SIGNIFICAND_SIZE)

Definition at line 36 of file diyfp.h.

◆ LEXBOR_DBL_EXPONENT_DENORMAL

#define LEXBOR_DBL_EXPONENT_DENORMAL   (-LEXBOR_DBL_EXPONENT_BIAS + 1)

Definition at line 39 of file diyfp.h.

◆ LEXBOR_DBL_EXPONENT_MASK

#define LEXBOR_DBL_EXPONENT_MASK   lexbor_uint64_hl(0x7FF00000, 0x00000000)

Definition at line 43 of file diyfp.h.

◆ LEXBOR_DBL_EXPONENT_MAX

#define LEXBOR_DBL_EXPONENT_MAX   (0x7FF - LEXBOR_DBL_EXPONENT_BIAS)

Definition at line 38 of file diyfp.h.

◆ LEXBOR_DBL_EXPONENT_MIN

#define LEXBOR_DBL_EXPONENT_MIN   (-LEXBOR_DBL_EXPONENT_BIAS)

Definition at line 37 of file diyfp.h.

◆ LEXBOR_DBL_HIDDEN_BIT

#define LEXBOR_DBL_HIDDEN_BIT   lexbor_uint64_hl(0x00100000, 0x00000000)

Definition at line 42 of file diyfp.h.

◆ LEXBOR_DBL_SIGNIFICAND_MASK

#define LEXBOR_DBL_SIGNIFICAND_MASK   lexbor_uint64_hl(0x000FFFFF, 0xFFFFFFFF)

Definition at line 41 of file diyfp.h.

◆ LEXBOR_DBL_SIGNIFICAND_SIZE

#define LEXBOR_DBL_SIGNIFICAND_SIZE   52

Definition at line 35 of file diyfp.h.

◆ LEXBOR_DECIMAL_EXPONENT_DIST

#define LEXBOR_DECIMAL_EXPONENT_DIST   8

Definition at line 54 of file diyfp.h.

◆ LEXBOR_DECIMAL_EXPONENT_MAX

#define LEXBOR_DECIMAL_EXPONENT_MAX   340

Definition at line 53 of file diyfp.h.

◆ LEXBOR_DECIMAL_EXPONENT_MIN

#define LEXBOR_DECIMAL_EXPONENT_MIN   (-348)

Definition at line 52 of file diyfp.h.

◆ LEXBOR_DECIMAL_EXPONENT_OFF

#define LEXBOR_DECIMAL_EXPONENT_OFF   348

Definition at line 51 of file diyfp.h.

◆ lexbor_diyfp

#define lexbor_diyfp ( _s,
_e )
Value:
{ .significand = (_s), .exp = (int) (_e) }
exp(float $num)

Definition at line 29 of file diyfp.h.

◆ LEXBOR_DIYFP_SIGNIFICAND_SIZE

#define LEXBOR_DIYFP_SIGNIFICAND_SIZE   64

Definition at line 45 of file diyfp.h.

◆ LEXBOR_SIGNIFICAND_SHIFT

#define LEXBOR_SIGNIFICAND_SHIFT
Value:
#define LEXBOR_DIYFP_SIGNIFICAND_SIZE
Definition diyfp.h:45
#define LEXBOR_DBL_SIGNIFICAND_SIZE
Definition diyfp.h:35

Definition at line 48 of file diyfp.h.

◆ LEXBOR_SIGNIFICAND_SIZE

#define LEXBOR_SIGNIFICAND_SIZE   53

Definition at line 47 of file diyfp.h.

◆ lexbor_uint64_hl

#define lexbor_uint64_hl ( h,
l )
Value:
(((uint64_t) (h) << 32) + (l))

Definition at line 32 of file diyfp.h.

Function Documentation

◆ lexbor_cached_power_bin()

LXB_API lexbor_diyfp_t lexbor_cached_power_bin ( int exp,
int * dec_exp )

Definition at line 134 of file diyfp.c.

◆ lexbor_cached_power_dec()

LXB_API lexbor_diyfp_t lexbor_cached_power_dec ( int exp,
int * dec_exp )

Definition at line 120 of file diyfp.c.

◆ lexbor_diyfp_2d()

lxb_inline double lexbor_diyfp_2d ( lexbor_diyfp_t v)

Definition at line 132 of file diyfp.h.

◆ lexbor_diyfp_from_d2()

lxb_inline lexbor_diyfp_t lexbor_diyfp_from_d2 ( double d)

Definition at line 101 of file diyfp.h.

◆ lexbor_diyfp_leading_zeros64()

lxb_inline uint64_t lexbor_diyfp_leading_zeros64 ( uint64_t x)

Definition at line 80 of file diyfp.h.

◆ lexbor_diyfp_mul()

lxb_inline lexbor_diyfp_t lexbor_diyfp_mul ( lexbor_diyfp_t lhs,
lexbor_diyfp_t rhs )

Definition at line 200 of file diyfp.h.

◆ lexbor_diyfp_normalize()

lxb_inline lexbor_diyfp_t lexbor_diyfp_normalize ( lexbor_diyfp_t v)

Definition at line 247 of file diyfp.h.

◆ lexbor_diyfp_shift_left()

lxb_inline lexbor_diyfp_t lexbor_diyfp_shift_left ( lexbor_diyfp_t v,
unsigned shift )

Definition at line 182 of file diyfp.h.

◆ lexbor_diyfp_shift_right()

lxb_inline lexbor_diyfp_t lexbor_diyfp_shift_right ( lexbor_diyfp_t v,
unsigned shift )

Definition at line 188 of file diyfp.h.

◆ lexbor_diyfp_sub()

lxb_inline lexbor_diyfp_t lexbor_diyfp_sub ( lexbor_diyfp_t lhs,
lexbor_diyfp_t rhs )

Definition at line 194 of file diyfp.h.