27#define lexbor_diyfp(_s, _e) { .significand = (_s), .exp = (int) (_e) }
29#define lexbor_diyfp(_s, _e) (lexbor_diyfp_t) \
30 { .significand = (_s), .exp = (int) (_e) }
32#define lexbor_uint64_hl(h, l) (((uint64_t) (h) << 32) + (l))
35#define LEXBOR_DBL_SIGNIFICAND_SIZE 52
36#define LEXBOR_DBL_EXPONENT_BIAS (0x3FF + LEXBOR_DBL_SIGNIFICAND_SIZE)
37#define LEXBOR_DBL_EXPONENT_MIN (-LEXBOR_DBL_EXPONENT_BIAS)
38#define LEXBOR_DBL_EXPONENT_MAX (0x7FF - LEXBOR_DBL_EXPONENT_BIAS)
39#define LEXBOR_DBL_EXPONENT_DENORMAL (-LEXBOR_DBL_EXPONENT_BIAS + 1)
41#define LEXBOR_DBL_SIGNIFICAND_MASK lexbor_uint64_hl(0x000FFFFF, 0xFFFFFFFF)
42#define LEXBOR_DBL_HIDDEN_BIT lexbor_uint64_hl(0x00100000, 0x00000000)
43#define LEXBOR_DBL_EXPONENT_MASK lexbor_uint64_hl(0x7FF00000, 0x00000000)
45#define LEXBOR_DIYFP_SIGNIFICAND_SIZE 64
47#define LEXBOR_SIGNIFICAND_SIZE 53
48#define LEXBOR_SIGNIFICAND_SHIFT (LEXBOR_DIYFP_SIGNIFICAND_SIZE \
49 - LEXBOR_DBL_SIGNIFICAND_SIZE)
51#define LEXBOR_DECIMAL_EXPONENT_OFF 348
52#define LEXBOR_DECIMAL_EXPONENT_MIN (-348)
53#define LEXBOR_DECIMAL_EXPONENT_MAX 340
54#define LEXBOR_DECIMAL_EXPONENT_DIST 8
74#ifdef LEXBOR_HAVE_BUILTIN_CLZLL
75#define nxt_leading_zeros64(x) (((x) == 0) ? 64 : __builtin_clzll(x))
90 while ((x & 0x8000000000000000) == 0) {
104 uint64_t significand;
119 if (biased_exp != 0) {
135 uint64_t significand, biased_exp;
144 significand =
v.significand;
202#ifdef LEXBOR_HAVE_UNSIGNED_INT128
215 if (l & ((uint64_t) 1 << 63)) {
223 uint64_t
a, b, c, d, ac, bc, ad, bd, tmp;
235 tmp = (bd >> 32) + (ad & 0xffffffff) + (bc & 0xffffffff);
241 return lexbor_diyfp(ac + (ad >> 32) + (bc >> 32) + (tmp >> 32),
lxb_inline lexbor_diyfp_t lexbor_diyfp_sub(lexbor_diyfp_t lhs, lexbor_diyfp_t rhs)
lxb_inline lexbor_diyfp_t lexbor_diyfp_shift_right(lexbor_diyfp_t v, unsigned shift)
lxb_inline lexbor_diyfp_t lexbor_diyfp_mul(lexbor_diyfp_t lhs, lexbor_diyfp_t rhs)
#define LEXBOR_DBL_EXPONENT_MAX
lxb_inline lexbor_diyfp_t lexbor_diyfp_from_d2(double d)
LXB_API lexbor_diyfp_t lexbor_cached_power_dec(int exp, int *dec_exp)
#define LEXBOR_DBL_EXPONENT_BIAS
LXB_API lexbor_diyfp_t lexbor_cached_power_bin(int exp, int *dec_exp)
#define lexbor_diyfp(_s, _e)
#define LEXBOR_DBL_SIGNIFICAND_MASK
lxb_inline double lexbor_diyfp_2d(lexbor_diyfp_t v)
#define LEXBOR_DBL_EXPONENT_DENORMAL
#define LEXBOR_DBL_EXPONENT_MIN
#define LEXBOR_DBL_EXPONENT_MASK
lxb_inline lexbor_diyfp_t lexbor_diyfp_shift_left(lexbor_diyfp_t v, unsigned shift)
lxb_inline lexbor_diyfp_t lexbor_diyfp_normalize(lexbor_diyfp_t v)
#define LEXBOR_DBL_SIGNIFICAND_SIZE
#define LEXBOR_DBL_HIDDEN_BIT
lxb_inline uint64_t lexbor_diyfp_leading_zeros64(uint64_t x)