49 uint64_t ten_kappa, uint64_t wp_w)
51 while (rest < wp_w && delta - rest >= ten_kappa
52 && (rest + ten_kappa < wp_w ||
53 wp_w - rest > rest + ten_kappa - wp_w))
64 if (
n < 100)
return 2;
65 if (
n < 1000)
return 3;
66 if (
n < 10000)
return 4;
67 if (
n < 100000)
return 5;
68 if (
n < 1000000)
return 6;
69 if (
n < 10000000)
return 7;
70 if (
n < 100000000)
return 8;
71 if (
n < 1000000000)
return 9;
86 static const uint64_t pow10[] = {
114 case 10: d = p1 / 1000000000; p1 %= 1000000000;
break;
115 case 9: d = p1 / 100000000; p1 %= 100000000;
break;
116 case 8: d = p1 / 10000000; p1 %= 10000000;
break;
117 case 7: d = p1 / 1000000; p1 %= 1000000;
break;
118 case 6: d = p1 / 100000; p1 %= 100000;
break;
119 case 5: d = p1 / 10000; p1 %= 10000;
break;
120 case 4: d = p1 / 1000; p1 %= 1000;
break;
121 case 3: d = p1 / 100; p1 %= 100;
break;
122 case 2: d = p1 / 10; p1 %= 10;
break;
123 case 1: d = p1; p1 = 0;
break;
129 if (d != 0 ||
p !=
begin) {
140 tmp = ((uint64_t) p1 << -one.
exp) + p2;
155 c = (char) (p2 >> -one.
exp);
157 if (c != 0 ||
p !=
begin) {
171 tmp = (-kappa < 10) ? pow10[-kappa] : 0;
265 *--
p = u32 % 10 +
'0';
286 kk = length + dec_exp;
288 if (length <= kk && kk <= 21) {
291 if (kk - length > 0) {
292 if ((&
begin[length] + (kk - length)) <
end) {
302 else if (0 < kk && kk <= 21) {
305 if ((&
begin[kk + 1] + (length - kk)) >=
end) {
314 else if (-6 < kk && kk <= 0) {
338 else if (length == 1) {
354 if ((&
begin[2] + (length - 1)) >=
end) {
360 begin[length + 1] =
'e';
364 return (
size + length + 2);
388 if (signbit(
value)) {
403 return (minus + length);
lexbor_diyfp_t lexbor_cached_power_bin(int exp, int *dec_exp)
lxb_inline lexbor_diyfp_t lexbor_diyfp_sub(lexbor_diyfp_t lhs, lexbor_diyfp_t rhs)
#define LEXBOR_SIGNIFICAND_SHIFT
lxb_inline lexbor_diyfp_t lexbor_diyfp_mul(lexbor_diyfp_t lhs, lexbor_diyfp_t rhs)
lxb_inline lexbor_diyfp_t lexbor_diyfp_from_d2(double d)
#define lexbor_diyfp(_s, _e)
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_HIDDEN_BIT
lxb_inline size_t lexbor_prettify(lxb_char_t *begin, lxb_char_t *end, size_t len, int dec_exp)
lxb_inline int lexbor_dec_count(uint32_t n)
lxb_inline lexbor_diyfp_t lexbor_diyfp_normalize_boundary(lexbor_diyfp_t v)
size_t lexbor_dtoa(double value, lxb_char_t *begin, size_t len)
lxb_inline void lexbor_grisu2_round(lxb_char_t *start, size_t len, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t wp_w)
lxb_inline size_t lexbor_grisu2(double value, lxb_char_t *begin, lxb_char_t *end, int *dec_exp)
lxb_inline size_t lexbor_grisu2_gen(lexbor_diyfp_t W, lexbor_diyfp_t Mp, uint64_t delta, lxb_char_t *begin, lxb_char_t *end, int *dec_exp)
lxb_inline size_t lexbor_write_exponent(int exp, lxb_char_t *begin, lxb_char_t *end)
lxb_inline void lexbor_diyfp_normalize_boundaries(lexbor_diyfp_t v, lexbor_diyfp_t *minus, lexbor_diyfp_t *plus)
memset(ptr, 0, type->size)
zend_ffi_ctype_name_buf buf
unsigned const char * end