packDouble method

void packDouble(
  1. num value
)

Implementation

void packDouble(num value) {
  int sign = 0;
  if (value < 0) {
    sign = 1;
    value = -value;
  }
  int exp = (log(value) / ln2).floor();
  num frac0 = value / (1 << exp) - 1;
  int frac1 = (frac0 * (1 << 52)).floor();
  int b32 = 1 << 32;
  int h32 = (sign << 31) | ((exp + 1023) << 20) | ((frac1 ~/ b32) & 0x0fffff);
  int l32 = frac1 % b32;
  _bufferBuilder.append(0xcb);
  packInt32(h32);
  packInt32(l32);
}