Class ThresholdFuncBitmap32

java.lang.Object
com.googlecode.javaewah32.symmetric.UpdateableBitmapFunction32
com.googlecode.javaewah32.symmetric.ThresholdFuncBitmap32

public final class ThresholdFuncBitmap32 extends UpdateableBitmapFunction32
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.2
See Also:
  • Field Details

    • min

      private final int min
    • buffers

      private int[] buffers
    • bufferUsed

      private int bufferUsed
    • bufcounters

      private final int[] bufcounters
    • zeroes64

      private static final int[] zeroes64
  • Constructor Details

    • ThresholdFuncBitmap32

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

    • dispatch

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

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

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

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

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

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

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