com.github.jasonruckman.sidney.bitpacking.packers.le.int32.Packer11 Maven / Gradle / Ivy
The newest version!
package com.github.jasonruckman.sidney.bitpacking.packers.le.int32;
import com.github.jasonruckman.sidney.bitpacking.Int32BytePacker;
public final class Packer11 extends Int32BytePacker {
public Packer11() {
super(11);
}
public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) {
out[0 + outPos] = (byte) ((
// [76543210]
// [___76543210]
((in[0 + inPos] & 2047))) & 255);
out[1 + outPos] = (byte) ((
// [_____210]
// [098________]
((in[0 + inPos] & 2047) >>> 8)
| // [76543___]
// [______43210]
((in[1 + inPos] & 2047) << 3)) & 255);
out[2 + outPos] = (byte) ((
// [__543210]
// [098765_____]
((in[1 + inPos] & 2047) >>> 5)
| // [76______]
// [_________10]
((in[2 + inPos] & 2047) << 6)) & 255);
out[3 + outPos] = (byte) ((
// [76543210]
// [_98765432__]
((in[2 + inPos] & 2047) >>> 2)) & 255);
out[4 + outPos] = (byte) ((
// [_______0]
// [0__________]
((in[2 + inPos] & 2047) >>> 10)
| // [7654321_]
// [____6543210]
((in[3 + inPos] & 2047) << 1)) & 255);
out[5 + outPos] = (byte) ((
// [____3210]
// [0987_______]
((in[3 + inPos] & 2047) >>> 7)
| // [7654____]
// [_______3210]
((in[4 + inPos] & 2047) << 4)) & 255);
out[6 + outPos] = (byte) ((
// [_6543210]
// [0987654____]
((in[4 + inPos] & 2047) >>> 4)
| // [7_______]
// [__________0]
((in[5 + inPos] & 2047) << 7)) & 255);
out[7 + outPos] = (byte) ((
// [76543210]
// [__87654321_]
((in[5 + inPos] & 2047) >>> 1)) & 255);
out[8 + outPos] = (byte) ((
// [______10]
// [09_________]
((in[5 + inPos] & 2047) >>> 9)
| // [765432__]
// [_____543210]
((in[6 + inPos] & 2047) << 2)) & 255);
out[9 + outPos] = (byte) ((
// [___43210]
// [09876______]
((in[6 + inPos] & 2047) >>> 6)
| // [765_____]
// [________210]
((in[7 + inPos] & 2047) << 5)) & 255);
out[10 + outPos] = (byte) ((
// [76543210]
// [09876543___]
((in[7 + inPos] & 2047) >>> 3)) & 255);
}
public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) {
out[0 + outPos] = (byte) ((
// [76543210]
// [___76543210]
((in[0 + inPos] & 2047))) & 255);
out[1 + outPos] = (byte) ((
// [_____210]
// [098________]
((in[0 + inPos] & 2047) >>> 8)
| // [76543___]
// [______43210]
((in[1 + inPos] & 2047) << 3)) & 255);
out[2 + outPos] = (byte) ((
// [__543210]
// [098765_____]
((in[1 + inPos] & 2047) >>> 5)
| // [76______]
// [_________10]
((in[2 + inPos] & 2047) << 6)) & 255);
out[3 + outPos] = (byte) ((
// [76543210]
// [_98765432__]
((in[2 + inPos] & 2047) >>> 2)) & 255);
out[4 + outPos] = (byte) ((
// [_______0]
// [0__________]
((in[2 + inPos] & 2047) >>> 10)
| // [7654321_]
// [____6543210]
((in[3 + inPos] & 2047) << 1)) & 255);
out[5 + outPos] = (byte) ((
// [____3210]
// [0987_______]
((in[3 + inPos] & 2047) >>> 7)
| // [7654____]
// [_______3210]
((in[4 + inPos] & 2047) << 4)) & 255);
out[6 + outPos] = (byte) ((
// [_6543210]
// [0987654____]
((in[4 + inPos] & 2047) >>> 4)
| // [7_______]
// [__________0]
((in[5 + inPos] & 2047) << 7)) & 255);
out[7 + outPos] = (byte) ((
// [76543210]
// [__87654321_]
((in[5 + inPos] & 2047) >>> 1)) & 255);
out[8 + outPos] = (byte) ((
// [______10]
// [09_________]
((in[5 + inPos] & 2047) >>> 9)
| // [765432__]
// [_____543210]
((in[6 + inPos] & 2047) << 2)) & 255);
out[9 + outPos] = (byte) ((
// [___43210]
// [09876______]
((in[6 + inPos] & 2047) >>> 6)
| // [765_____]
// [________210]
((in[7 + inPos] & 2047) << 5)) & 255);
out[10 + outPos] = (byte) ((
// [76543210]
// [09876543___]
((in[7 + inPos] & 2047) >>> 3)) & 255);
out[11 + outPos] = (byte) ((
// [76543210]
// [___76543210]
((in[8 + inPos] & 2047))) & 255);
out[12 + outPos] = (byte) ((
// [_____210]
// [098________]
((in[8 + inPos] & 2047) >>> 8)
| // [76543___]
// [______43210]
((in[9 + inPos] & 2047) << 3)) & 255);
out[13 + outPos] = (byte) ((
// [__543210]
// [098765_____]
((in[9 + inPos] & 2047) >>> 5)
| // [76______]
// [_________10]
((in[10 + inPos] & 2047) << 6)) & 255);
out[14 + outPos] = (byte) ((
// [76543210]
// [_98765432__]
((in[10 + inPos] & 2047) >>> 2)) & 255);
out[15 + outPos] = (byte) ((
// [_______0]
// [0__________]
((in[10 + inPos] & 2047) >>> 10)
| // [7654321_]
// [____6543210]
((in[11 + inPos] & 2047) << 1)) & 255);
out[16 + outPos] = (byte) ((
// [____3210]
// [0987_______]
((in[11 + inPos] & 2047) >>> 7)
| // [7654____]
// [_______3210]
((in[12 + inPos] & 2047) << 4)) & 255);
out[17 + outPos] = (byte) ((
// [_6543210]
// [0987654____]
((in[12 + inPos] & 2047) >>> 4)
| // [7_______]
// [__________0]
((in[13 + inPos] & 2047) << 7)) & 255);
out[18 + outPos] = (byte) ((
// [76543210]
// [__87654321_]
((in[13 + inPos] & 2047) >>> 1)) & 255);
out[19 + outPos] = (byte) ((
// [______10]
// [09_________]
((in[13 + inPos] & 2047) >>> 9)
| // [765432__]
// [_____543210]
((in[14 + inPos] & 2047) << 2)) & 255);
out[20 + outPos] = (byte) ((
// [___43210]
// [09876______]
((in[14 + inPos] & 2047) >>> 6)
| // [765_____]
// [________210]
((in[15 + inPos] & 2047) << 5)) & 255);
out[21 + outPos] = (byte) ((
// [76543210]
// [09876543___]
((in[15 + inPos] & 2047) >>> 3)) & 255);
out[22 + outPos] = (byte) ((
// [76543210]
// [___76543210]
((in[16 + inPos] & 2047))) & 255);
out[23 + outPos] = (byte) ((
// [_____210]
// [098________]
((in[16 + inPos] & 2047) >>> 8)
| // [76543___]
// [______43210]
((in[17 + inPos] & 2047) << 3)) & 255);
out[24 + outPos] = (byte) ((
// [__543210]
// [098765_____]
((in[17 + inPos] & 2047) >>> 5)
| // [76______]
// [_________10]
((in[18 + inPos] & 2047) << 6)) & 255);
out[25 + outPos] = (byte) ((
// [76543210]
// [_98765432__]
((in[18 + inPos] & 2047) >>> 2)) & 255);
out[26 + outPos] = (byte) ((
// [_______0]
// [0__________]
((in[18 + inPos] & 2047) >>> 10)
| // [7654321_]
// [____6543210]
((in[19 + inPos] & 2047) << 1)) & 255);
out[27 + outPos] = (byte) ((
// [____3210]
// [0987_______]
((in[19 + inPos] & 2047) >>> 7)
| // [7654____]
// [_______3210]
((in[20 + inPos] & 2047) << 4)) & 255);
out[28 + outPos] = (byte) ((
// [_6543210]
// [0987654____]
((in[20 + inPos] & 2047) >>> 4)
| // [7_______]
// [__________0]
((in[21 + inPos] & 2047) << 7)) & 255);
out[29 + outPos] = (byte) ((
// [76543210]
// [__87654321_]
((in[21 + inPos] & 2047) >>> 1)) & 255);
out[30 + outPos] = (byte) ((
// [______10]
// [09_________]
((in[21 + inPos] & 2047) >>> 9)
| // [765432__]
// [_____543210]
((in[22 + inPos] & 2047) << 2)) & 255);
out[31 + outPos] = (byte) ((
// [___43210]
// [09876______]
((in[22 + inPos] & 2047) >>> 6)
| // [765_____]
// [________210]
((in[23 + inPos] & 2047) << 5)) & 255);
out[32 + outPos] = (byte) ((
// [76543210]
// [09876543___]
((in[23 + inPos] & 2047) >>> 3)) & 255);
out[33 + outPos] = (byte) ((
// [76543210]
// [___76543210]
((in[24 + inPos] & 2047))) & 255);
out[34 + outPos] = (byte) ((
// [_____210]
// [098________]
((in[24 + inPos] & 2047) >>> 8)
| // [76543___]
// [______43210]
((in[25 + inPos] & 2047) << 3)) & 255);
out[35 + outPos] = (byte) ((
// [__543210]
// [098765_____]
((in[25 + inPos] & 2047) >>> 5)
| // [76______]
// [_________10]
((in[26 + inPos] & 2047) << 6)) & 255);
out[36 + outPos] = (byte) ((
// [76543210]
// [_98765432__]
((in[26 + inPos] & 2047) >>> 2)) & 255);
out[37 + outPos] = (byte) ((
// [_______0]
// [0__________]
((in[26 + inPos] & 2047) >>> 10)
| // [7654321_]
// [____6543210]
((in[27 + inPos] & 2047) << 1)) & 255);
out[38 + outPos] = (byte) ((
// [____3210]
// [0987_______]
((in[27 + inPos] & 2047) >>> 7)
| // [7654____]
// [_______3210]
((in[28 + inPos] & 2047) << 4)) & 255);
out[39 + outPos] = (byte) ((
// [_6543210]
// [0987654____]
((in[28 + inPos] & 2047) >>> 4)
| // [7_______]
// [__________0]
((in[29 + inPos] & 2047) << 7)) & 255);
out[40 + outPos] = (byte) ((
// [76543210]
// [__87654321_]
((in[29 + inPos] & 2047) >>> 1)) & 255);
out[41 + outPos] = (byte) ((
// [______10]
// [09_________]
((in[29 + inPos] & 2047) >>> 9)
| // [765432__]
// [_____543210]
((in[30 + inPos] & 2047) << 2)) & 255);
out[42 + outPos] = (byte) ((
// [___43210]
// [09876______]
((in[30 + inPos] & 2047) >>> 6)
| // [765_____]
// [________210]
((in[31 + inPos] & 2047) << 5)) & 255);
out[43 + outPos] = (byte) ((
// [76543210]
// [09876543___]
((in[31 + inPos] & 2047) >>> 3)) & 255);
}
public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) {
out[0 + outPos] =
// [76543210]
// [___76543210]
(((((int) in[0 + inPos]) & 255)) & 2047)
| // [_____210]
// [098________]
(((((int) in[1 + inPos]) & 255) << 8) & 2047);
out[1 + outPos] =
// [76543___]
// [______43210]
(((((int) in[1 + inPos]) & 255) >>> 3) & 2047)
| // [__543210]
// [098765_____]
(((((int) in[2 + inPos]) & 255) << 5) & 2047);
out[2 + outPos] =
// [76______]
// [_________10]
(((((int) in[2 + inPos]) & 255) >>> 6) & 2047)
| // [76543210]
// [_98765432__]
(((((int) in[3 + inPos]) & 255) << 2) & 2047)
| // [_______0]
// [0__________]
(((((int) in[4 + inPos]) & 255) << 10) & 2047);
out[3 + outPos] =
// [7654321_]
// [____6543210]
(((((int) in[4 + inPos]) & 255) >>> 1) & 2047)
| // [____3210]
// [0987_______]
(((((int) in[5 + inPos]) & 255) << 7) & 2047);
out[4 + outPos] =
// [7654____]
// [_______3210]
(((((int) in[5 + inPos]) & 255) >>> 4) & 2047)
| // [_6543210]
// [0987654____]
(((((int) in[6 + inPos]) & 255) << 4) & 2047);
out[5 + outPos] =
// [7_______]
// [__________0]
(((((int) in[6 + inPos]) & 255) >>> 7) & 2047)
| // [76543210]
// [__87654321_]
(((((int) in[7 + inPos]) & 255) << 1) & 2047)
| // [______10]
// [09_________]
(((((int) in[8 + inPos]) & 255) << 9) & 2047);
out[6 + outPos] =
// [765432__]
// [_____543210]
(((((int) in[8 + inPos]) & 255) >>> 2) & 2047)
| // [___43210]
// [09876______]
(((((int) in[9 + inPos]) & 255) << 6) & 2047);
out[7 + outPos] =
// [765_____]
// [________210]
(((((int) in[9 + inPos]) & 255) >>> 5) & 2047)
| // [76543210]
// [09876543___]
(((((int) in[10 + inPos]) & 255) << 3) & 2047);
}
public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) {
out[0 + outPos] =
// [76543210]
// [___76543210]
(((((int) in[0 + inPos]) & 255)) & 2047)
| // [_____210]
// [098________]
(((((int) in[1 + inPos]) & 255) << 8) & 2047);
out[1 + outPos] =
// [76543___]
// [______43210]
(((((int) in[1 + inPos]) & 255) >>> 3) & 2047)
| // [__543210]
// [098765_____]
(((((int) in[2 + inPos]) & 255) << 5) & 2047);
out[2 + outPos] =
// [76______]
// [_________10]
(((((int) in[2 + inPos]) & 255) >>> 6) & 2047)
| // [76543210]
// [_98765432__]
(((((int) in[3 + inPos]) & 255) << 2) & 2047)
| // [_______0]
// [0__________]
(((((int) in[4 + inPos]) & 255) << 10) & 2047);
out[3 + outPos] =
// [7654321_]
// [____6543210]
(((((int) in[4 + inPos]) & 255) >>> 1) & 2047)
| // [____3210]
// [0987_______]
(((((int) in[5 + inPos]) & 255) << 7) & 2047);
out[4 + outPos] =
// [7654____]
// [_______3210]
(((((int) in[5 + inPos]) & 255) >>> 4) & 2047)
| // [_6543210]
// [0987654____]
(((((int) in[6 + inPos]) & 255) << 4) & 2047);
out[5 + outPos] =
// [7_______]
// [__________0]
(((((int) in[6 + inPos]) & 255) >>> 7) & 2047)
| // [76543210]
// [__87654321_]
(((((int) in[7 + inPos]) & 255) << 1) & 2047)
| // [______10]
// [09_________]
(((((int) in[8 + inPos]) & 255) << 9) & 2047);
out[6 + outPos] =
// [765432__]
// [_____543210]
(((((int) in[8 + inPos]) & 255) >>> 2) & 2047)
| // [___43210]
// [09876______]
(((((int) in[9 + inPos]) & 255) << 6) & 2047);
out[7 + outPos] =
// [765_____]
// [________210]
(((((int) in[9 + inPos]) & 255) >>> 5) & 2047)
| // [76543210]
// [09876543___]
(((((int) in[10 + inPos]) & 255) << 3) & 2047);
out[8 + outPos] =
// [76543210]
// [___76543210]
(((((int) in[11 + inPos]) & 255)) & 2047)
| // [_____210]
// [098________]
(((((int) in[12 + inPos]) & 255) << 8) & 2047);
out[9 + outPos] =
// [76543___]
// [______43210]
(((((int) in[12 + inPos]) & 255) >>> 3) & 2047)
| // [__543210]
// [098765_____]
(((((int) in[13 + inPos]) & 255) << 5) & 2047);
out[10 + outPos] =
// [76______]
// [_________10]
(((((int) in[13 + inPos]) & 255) >>> 6) & 2047)
| // [76543210]
// [_98765432__]
(((((int) in[14 + inPos]) & 255) << 2) & 2047)
| // [_______0]
// [0__________]
(((((int) in[15 + inPos]) & 255) << 10) & 2047);
out[11 + outPos] =
// [7654321_]
// [____6543210]
(((((int) in[15 + inPos]) & 255) >>> 1) & 2047)
| // [____3210]
// [0987_______]
(((((int) in[16 + inPos]) & 255) << 7) & 2047);
out[12 + outPos] =
// [7654____]
// [_______3210]
(((((int) in[16 + inPos]) & 255) >>> 4) & 2047)
| // [_6543210]
// [0987654____]
(((((int) in[17 + inPos]) & 255) << 4) & 2047);
out[13 + outPos] =
// [7_______]
// [__________0]
(((((int) in[17 + inPos]) & 255) >>> 7) & 2047)
| // [76543210]
// [__87654321_]
(((((int) in[18 + inPos]) & 255) << 1) & 2047)
| // [______10]
// [09_________]
(((((int) in[19 + inPos]) & 255) << 9) & 2047);
out[14 + outPos] =
// [765432__]
// [_____543210]
(((((int) in[19 + inPos]) & 255) >>> 2) & 2047)
| // [___43210]
// [09876______]
(((((int) in[20 + inPos]) & 255) << 6) & 2047);
out[15 + outPos] =
// [765_____]
// [________210]
(((((int) in[20 + inPos]) & 255) >>> 5) & 2047)
| // [76543210]
// [09876543___]
(((((int) in[21 + inPos]) & 255) << 3) & 2047);
out[16 + outPos] =
// [76543210]
// [___76543210]
(((((int) in[22 + inPos]) & 255)) & 2047)
| // [_____210]
// [098________]
(((((int) in[23 + inPos]) & 255) << 8) & 2047);
out[17 + outPos] =
// [76543___]
// [______43210]
(((((int) in[23 + inPos]) & 255) >>> 3) & 2047)
| // [__543210]
// [098765_____]
(((((int) in[24 + inPos]) & 255) << 5) & 2047);
out[18 + outPos] =
// [76______]
// [_________10]
(((((int) in[24 + inPos]) & 255) >>> 6) & 2047)
| // [76543210]
// [_98765432__]
(((((int) in[25 + inPos]) & 255) << 2) & 2047)
| // [_______0]
// [0__________]
(((((int) in[26 + inPos]) & 255) << 10) & 2047);
out[19 + outPos] =
// [7654321_]
// [____6543210]
(((((int) in[26 + inPos]) & 255) >>> 1) & 2047)
| // [____3210]
// [0987_______]
(((((int) in[27 + inPos]) & 255) << 7) & 2047);
out[20 + outPos] =
// [7654____]
// [_______3210]
(((((int) in[27 + inPos]) & 255) >>> 4) & 2047)
| // [_6543210]
// [0987654____]
(((((int) in[28 + inPos]) & 255) << 4) & 2047);
out[21 + outPos] =
// [7_______]
// [__________0]
(((((int) in[28 + inPos]) & 255) >>> 7) & 2047)
| // [76543210]
// [__87654321_]
(((((int) in[29 + inPos]) & 255) << 1) & 2047)
| // [______10]
// [09_________]
(((((int) in[30 + inPos]) & 255) << 9) & 2047);
out[22 + outPos] =
// [765432__]
// [_____543210]
(((((int) in[30 + inPos]) & 255) >>> 2) & 2047)
| // [___43210]
// [09876______]
(((((int) in[31 + inPos]) & 255) << 6) & 2047);
out[23 + outPos] =
// [765_____]
// [________210]
(((((int) in[31 + inPos]) & 255) >>> 5) & 2047)
| // [76543210]
// [09876543___]
(((((int) in[32 + inPos]) & 255) << 3) & 2047);
out[24 + outPos] =
// [76543210]
// [___76543210]
(((((int) in[33 + inPos]) & 255)) & 2047)
| // [_____210]
// [098________]
(((((int) in[34 + inPos]) & 255) << 8) & 2047);
out[25 + outPos] =
// [76543___]
// [______43210]
(((((int) in[34 + inPos]) & 255) >>> 3) & 2047)
| // [__543210]
// [098765_____]
(((((int) in[35 + inPos]) & 255) << 5) & 2047);
out[26 + outPos] =
// [76______]
// [_________10]
(((((int) in[35 + inPos]) & 255) >>> 6) & 2047)
| // [76543210]
// [_98765432__]
(((((int) in[36 + inPos]) & 255) << 2) & 2047)
| // [_______0]
// [0__________]
(((((int) in[37 + inPos]) & 255) << 10) & 2047);
out[27 + outPos] =
// [7654321_]
// [____6543210]
(((((int) in[37 + inPos]) & 255) >>> 1) & 2047)
| // [____3210]
// [0987_______]
(((((int) in[38 + inPos]) & 255) << 7) & 2047);
out[28 + outPos] =
// [7654____]
// [_______3210]
(((((int) in[38 + inPos]) & 255) >>> 4) & 2047)
| // [_6543210]
// [0987654____]
(((((int) in[39 + inPos]) & 255) << 4) & 2047);
out[29 + outPos] =
// [7_______]
// [__________0]
(((((int) in[39 + inPos]) & 255) >>> 7) & 2047)
| // [76543210]
// [__87654321_]
(((((int) in[40 + inPos]) & 255) << 1) & 2047)
| // [______10]
// [09_________]
(((((int) in[41 + inPos]) & 255) << 9) & 2047);
out[30 + outPos] =
// [765432__]
// [_____543210]
(((((int) in[41 + inPos]) & 255) >>> 2) & 2047)
| // [___43210]
// [09876______]
(((((int) in[42 + inPos]) & 255) << 6) & 2047);
out[31 + outPos] =
// [765_____]
// [________210]
(((((int) in[42 + inPos]) & 255) >>> 5) & 2047)
| // [76543210]
// [09876543___]
(((((int) in[43 + inPos]) & 255) << 3) & 2047);
}
}