Class PForUtil
java.lang.Object
org.apache.lucene.backward_codecs.lucene90.PForUtil
Utility class to encode sequences of 128 small positive integers.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final byte[]private final ForUtilprivate static final intprivate static final long[]private static final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static booleanallEqual(long[] l) private voidapplyExceptions32(int bitsPerValue, int numExceptions, DataInput in, long[] longs) Apply the exceptions where the values are packed two-per-long inlongs.(package private) voidDecode 128 integers intolongs.(package private) voiddecodeAndPrefixSum(DataInput in, long base, long[] longs) Decode deltas, compute the prefix sum and addbaseto all decoded longs.(package private) voidencode(long[] longs, DataOutput out) Encode 128 integers fromlongsintoout.private static voidexpand32(long[] longs) Expand the values packed two-per-long inlongsinto 128 individual long values stored back intolongs.private static voidfillSameValue32(long[] longs, long val) Fills thelongswith the providedval, packed two values per long (using 32 bits per value).private static voidinnerPrefixSum32(long[] longs) Unrolled "inner" prefix sum logic where the values are packed two-per-long inlongs.private static voidprefixSum32(long[] longs, long base) Apply prefix sum logic where the values are packed two-per-long inlongs.private static voidprefixSumOf(long[] longs, long base, long val) Filllongswith the final values for the case of all deltas beingval.private static voidprefixSumOfOnes(long[] longs, long base) Filllongswith the final values for the case of all deltas being 1.(package private) voidSkip 128 integers.
-
Field Details
-
MAX_EXCEPTIONS
private static final int MAX_EXCEPTIONS- See Also:
-
HALF_BLOCK_SIZE
private static final int HALF_BLOCK_SIZE- See Also:
-
IDENTITY_PLUS_ONE
private static final long[] IDENTITY_PLUS_ONE -
forUtil
-
exceptionBuff
private final byte[] exceptionBuff
-
-
Constructor Details
-
PForUtil
PForUtil(ForUtil forUtil)
-
-
Method Details
-
allEqual
static boolean allEqual(long[] l) -
encode
Encode 128 integers fromlongsintoout.- Throws:
IOException
-
decode
Decode 128 integers intolongs.- Throws:
IOException
-
decodeAndPrefixSum
Decode deltas, compute the prefix sum and addbaseto all decoded longs.- Throws:
IOException
-
skip
Skip 128 integers.- Throws:
IOException
-
prefixSumOfOnes
private static void prefixSumOfOnes(long[] longs, long base) Filllongswith the final values for the case of all deltas being 1. Note this assumes there are no exceptions to apply. -
prefixSumOf
private static void prefixSumOf(long[] longs, long base, long val) Filllongswith the final values for the case of all deltas beingval. Note this assumes there are no exceptions to apply. -
fillSameValue32
private static void fillSameValue32(long[] longs, long val) Fills thelongswith the providedval, packed two values per long (using 32 bits per value). -
applyExceptions32
private void applyExceptions32(int bitsPerValue, int numExceptions, DataInput in, long[] longs) throws IOException Apply the exceptions where the values are packed two-per-long inlongs.- Throws:
IOException
-
prefixSum32
private static void prefixSum32(long[] longs, long base) Apply prefix sum logic where the values are packed two-per-long inlongs. -
expand32
private static void expand32(long[] longs) Expand the values packed two-per-long inlongsinto 128 individual long values stored back intolongs. -
innerPrefixSum32
private static void innerPrefixSum32(long[] longs) Unrolled "inner" prefix sum logic where the values are packed two-per-long inlongs. After this method, the final values will be correct for all high-order bits (values [0..63]) but a final prefix loop will still need to run to "correct" the values of [64..127] in the low-order bits, which need the 64th value added to all of them.
-