docs: private static double scalbn(double x, int n) {
          int hx = hi(x);
          int lx = lo(x);
          int k = (hx & 0x7ff00000) >> 20;         // extract exponent
          if (k == 0) {                          // 0 or subnormal x
              if ((lx | (hx & 0x7fffffff)) == 0) {
                  return x; // +-0
              }
              x *= two54;
              hx = hi(x);
              k = ((hx & 0x7ff00000) >> 20) - 54;
              if (n < -50000) {
                  return tiny * x;                   // underflow
              }
          }
          if (k == 0x7ff) {
              return x + x;                        // NaN or Inf
          }
          k = k + n;
          if (k > 0x7fe) {
              return huge * copysign(huge, x);      // overflow
          }
          if (k > 0) {
              // normal result
              return fromhilo((hx & 0x800fffff) | (k << 20), lo(x));
          }
          if (k <= -54) {
              if (n > 50000) {
                  // in case integer overflow in n+k
                  return huge * copysign(huge, x);  // overflow
              }
              else {
                  return tiny * copysign(tiny, x);    // underflow
              }
          }
          k += 54;                             // subnormal result
          x = fromhilo((hx & 0x800fffff) | (k << 20), lo(x));
          return x * twom54;
      }