code: private static void split(final double d, final double split[]) {
          if (d < 8e298 && d > -8e298) {
              final double a = d * HEX_40000000;
              split[0] = (d + a) - a;
              split[1] = d - split[0];
          } else {
              final double a = d * 9.31322574615478515625E-10;
              split[0] = (d + a - d) * HEX_40000000;
              split[1] = d - split[0];
          }
      }
docs: Compute split[0], split[1] such that their sum is equal to d,
  and split[0] has its 30 least significant bits as zero.
  @param d number to split
  @param split placeholder where to place the result