static void packBits61()

in src/main/java/org/apache/datasketches/theta/BitPacking.java [3135:3211]


  static void packBits61(final long[] values, final int i, final byte[] buf, int off) {
    buf[off++] = (byte) (values[i + 0] >>> 53);
    buf[off++] = (byte) (values[i + 0] >>> 45);
    buf[off++] = (byte) (values[i + 0] >>> 37);
    buf[off++] = (byte) (values[i + 0] >>> 29);
    buf[off++] = (byte) (values[i + 0] >>> 21);
    buf[off++] = (byte) (values[i + 0] >>> 13);
    buf[off++] = (byte) (values[i + 0] >>> 5);

    buf[off] = (byte) (values[i + 0] << 3);
    buf[off++] |= values[i + 1] >>> 58;
    buf[off++] = (byte) (values[i + 1] >>> 50);
    buf[off++] = (byte) (values[i + 1] >>> 42);
    buf[off++] = (byte) (values[i + 1] >>> 34);
    buf[off++] = (byte) (values[i + 1] >>> 26);
    buf[off++] = (byte) (values[i + 1] >>> 18);
    buf[off++] = (byte) (values[i + 1] >>> 10);
    buf[off++] = (byte) (values[i + 1] >>> 2);

    buf[off] = (byte) (values[i + 1] << 6);
    buf[off++] |= values[i + 2] >>> 55;
    buf[off++] = (byte) (values[i + 2] >>> 47);
    buf[off++] = (byte) (values[i + 2] >>> 39);
    buf[off++] = (byte) (values[i + 2] >>> 31);
    buf[off++] = (byte) (values[i + 2] >>> 23);
    buf[off++] = (byte) (values[i + 2] >>> 15);
    buf[off++] = (byte) (values[i + 2] >>> 7);

    buf[off] = (byte) (values[i + 2] << 1);
    buf[off++] |= values[i + 3] >>> 60;
    buf[off++] = (byte) (values[i + 3] >>> 52);
    buf[off++] = (byte) (values[i + 3] >>> 44);
    buf[off++] = (byte) (values[i + 3] >>> 36);
    buf[off++] = (byte) (values[i + 3] >>> 28);
    buf[off++] = (byte) (values[i + 3] >>> 20);
    buf[off++] = (byte) (values[i + 3] >>> 12);
    buf[off++] = (byte) (values[i + 3] >>> 4);

    buf[off] = (byte) (values[i + 3] << 4);
    buf[off++] |= values[i + 4] >>> 57;
    buf[off++] = (byte) (values[i + 4] >>> 49);
    buf[off++] = (byte) (values[i + 4] >>> 41);
    buf[off++] = (byte) (values[i + 4] >>> 33);
    buf[off++] = (byte) (values[i + 4] >>> 25);
    buf[off++] = (byte) (values[i + 4] >>> 17);
    buf[off++] = (byte) (values[i + 4] >>> 9);
    buf[off++] = (byte) (values[i + 4] >>> 1);

    buf[off] = (byte) (values[i + 4] << 7);
    buf[off++] |= values[i + 5] >>> 54;
    buf[off++] = (byte) (values[i + 5] >>> 46);
    buf[off++] = (byte) (values[i + 5] >>> 38);
    buf[off++] = (byte) (values[i + 5] >>> 30);
    buf[off++] = (byte) (values[i + 5] >>> 22);
    buf[off++] = (byte) (values[i + 5] >>> 14);
    buf[off++] = (byte) (values[i + 5] >>> 6);

    buf[off] = (byte) (values[i + 5] << 2);
    buf[off++] |= values[i + 6] >>> 59;
    buf[off++] = (byte) (values[i + 6] >>> 51);
    buf[off++] = (byte) (values[i + 6] >>> 43);
    buf[off++] = (byte) (values[i + 6] >>> 35);
    buf[off++] = (byte) (values[i + 6] >>> 27);
    buf[off++] = (byte) (values[i + 6] >>> 19);
    buf[off++] = (byte) (values[i + 6] >>> 11);
    buf[off++] = (byte) (values[i + 6] >>> 3);

    buf[off] = (byte) (values[i + 6] << 5);
    buf[off++] |= values[i + 7] >>> 56;
    buf[off++] = (byte) (values[i + 7] >>> 48);
    buf[off++] = (byte) (values[i + 7] >>> 40);
    buf[off++] = (byte) (values[i + 7] >>> 32);
    buf[off++] = (byte) (values[i + 7] >>> 24);
    buf[off++] = (byte) (values[i + 7] >>> 16);
    buf[off++] = (byte) (values[i + 7] >>> 8);
    buf[off] = (byte) (values[i + 7]);
  }