Class ThresholdFuncBitmap

java.lang.Object
com.googlecode.javaewah.symmetric.UpdateableBitmapFunction
com.googlecode.javaewah.symmetric.ThresholdFuncBitmap

public final class ThresholdFuncBitmap extends UpdateableBitmapFunction
A threshold Boolean function returns true if the number of true values exceed a threshold. It is a symmetric Boolean function. This class implements an algorithm described in the following paper: Owen Kaser and Daniel Lemire, Compressed bitmap indexes: beyond unions and intersections http://arxiv.org/abs/1402.4466 It is not thread safe: you should use one object per thread.
Since:
0.8.0
See Also:
  • Field Details

    • min

      private final int min
    • buffers

      private long[] buffers
    • bufferUsed

      private int bufferUsed
    • bufCounters

      private final int[] bufCounters
    • zeroes64

      private static final int[] zeroes64
  • Constructor Details

    • ThresholdFuncBitmap

      public ThresholdFuncBitmap(int min)
      Construction a threshold function with a given threshold
      Parameters:
      min - threshold
  • Method Details

    • dispatch

      public void dispatch(BitmapStorage out, int runBegin, int runEnd)
      Description copied from class: UpdateableBitmapFunction
      Writes out the answer.
      Specified by:
      dispatch in class UpdateableBitmapFunction
      Parameters:
      out - output buffer
      runBegin - beginning of the run
      runEnd - end of the run
    • threshold2buf

      private long threshold2buf(int t, long[] buf, int bufUsed)
    • threshold3

      private static long threshold3(int t, long[] buffers, int bufUsed)
    • threshold4

      private long threshold4(int T, long[] buf, int bufUsed)
    • orLiterals

      private void orLiterals(BitmapStorage out, int runBegin, int runLength)
    • andLiterals

      private void andLiterals(BitmapStorage out, int runBegin, int runLength)
    • generalLiterals

      private void generalLiterals(int deficit, BitmapStorage out, int runBegin, int runLength)