v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. >= max_digits10.
16323{
16324 JSON_ASSERT(m_plus.e == m_minus.e);
16325 JSON_ASSERT(m_plus.e == v.e);
16326
16327
16328
16329
16330
16331
16332
16333
16335 const diyfp c_minus_k(cached.f, cached.e);
16336
16337 const diyfp w = diyfp::mul(v, c_minus_k);
16338 const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
16339 const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361 const diyfp M_minus(w_minus.f + 1, w_minus.e);
16362 const diyfp M_plus (w_plus.f - 1, w_plus.e );
16363 decimal_exponent = -cached.k;
16365}
void grisu2_digit_gen(char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
cached_power get_cached_power_for_binary_exponent(int e)