Class BroadWord
  
  Methods and constants inspired by the article
"Broadword Implementation of Rank/Select Queries" by Sebastiano Vigna, January 30, 2012:
This is a Lucene.NET INTERNAL API, use at your own risk
    Inheritance
    System.Object
    BroadWord
   
  
    Inherited Members
    
      System.Object.Equals(System.Object)
    
    
      System.Object.Equals(System.Object, System.Object)
    
    
      System.Object.GetHashCode()
    
    
      System.Object.GetType()
    
    
      System.Object.MemberwiseClone()
    
    
      System.Object.ReferenceEquals(System.Object, System.Object)
    
    
      System.Object.ToString()
    
   
  
  Assembly: Lucene.Net.dll
  Syntax
  
    public static class BroadWord
   
  Fields
  
  
    |
    Improve this Doc
  
  
    View Source
  
  H16_L
  
  
  Declaration
  
    public static readonly long H16_L
   
  Field Value
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 |  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  H8_L
  Hk = Lk << (k-1) .
These contain the high bit of each group of k bits.
The suffix _L indicates the System.Int64 implementation.
Declaration
  
    public static readonly long H8_L
   
  Field Value
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 |  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  L16_L
  
  
  Declaration
  
    public const long L16_L = 281479271743489L
   
  Field Value
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 |  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  L8_L
  Lk denotes the constant whose ones are in position 0, k, 2k, . . .
These contain the low bit of each group of k bits.
The suffix _L indicates the System.Int64 implementation.
Declaration
  
    public const long L8_L = 72340172838076673L
   
  Field Value
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 |  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  L9_L
  
  
  Declaration
  
    public const long L9_L = -9205322385119247871L
   
  Field Value
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 |  | 
    
  
  Methods
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  NotEquals0_8(Int64)
  An unsigned bytewise not equals 0 operator.
This uses the following numbers of basic System.Int64 operations: 2 or, 1 and, 1 minus. 
Declaration
  
    public static long NotEquals0_8(long x)
   
  Parameters
  
    
      
        | Type | Name | Description | 
    
    
      
        | System.Int64 | x |  | 
    
  
  Returns
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 | A System.Int64 with bits set in the H8_L positions corresponding to each unsigned byte that does not equal 0.  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Select(Int64, Int32)
  Select a 1-bit from a System.Int64. 
Declaration
  
    public static int Select(long x, int r)
   
  Parameters
  
    
      
        | Type | Name | Description | 
    
    
      
        | System.Int64 | x |  | 
      
        | System.Int32 | r |  | 
    
  
  Returns
  
    
      
        | Type | Description | 
    
    
      
        | System.Int32 | The index of the r-th 1 bit in x, or if no such bit exists, 72.  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  SelectNaive(Int64, Int32)
  Naive implementation of Select(Int64, Int32), using J2N.Numerics.BitOperation.TrailingZeroCount(System.Int64) repetitively.
Works relatively fast for low ranks. 
Declaration
  
    public static int SelectNaive(long x, int r)
   
  Parameters
  
    
      
        | Type | Name | Description | 
    
    
      
        | System.Int64 | x |  | 
      
        | System.Int32 | r |  | 
    
  
  Returns
  
    
      
        | Type | Description | 
    
    
      
        | System.Int32 | The index of the r-th 1 bit in x, or if no such bit exists, 72.  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Smalleru_8(Int64, Int64)
  An unsigned bytewise smaller <8 operator.
This uses the following numbers of basic System.Int64 operations: 3 or, 2 and, 2 xor, 1 minus, 1 not. 
Declaration
  
    public static long Smalleru_8(long x, long y)
   
  Parameters
  
    
      
        | Type | Name | Description | 
    
    
      
        | System.Int64 | x |  | 
      
        | System.Int64 | y |  | 
    
  
  Returns
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 | A System.Int64 with bits set in the H8_L positions corresponding to each input unsigned byte pair that compares smaller.  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  SmallerUpto15_16(Int64, Int64)
  A bytewise smaller <16 operator.
This uses the following numbers of basic System.Int64 operations: 1 or, 2 and, 2 xor, 1 minus, 1 not. 
Declaration
  
    public static long SmallerUpto15_16(long x, long y)
   
  Parameters
  
    
      
        | Type | Name | Description | 
    
    
      
        | System.Int64 | x |  | 
      
        | System.Int64 | y |  | 
    
  
  Returns
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 | A System.Int64 with bits set in the H16_L positions corresponding to each input signed short pair that compares smaller.  | 
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  SmallerUpTo7_8(Int64, Int64)
  A signed bytewise smaller <8 operator, for operands 0L<= x, y <=0x7L.
This uses the following numbers of basic System.Int64 operations: 1 or, 2 and, 2 xor, 1 minus, 1 not. 
Declaration
  
    public static long SmallerUpTo7_8(long x, long y)
   
  Parameters
  
    
      
        | Type | Name | Description | 
    
    
      
        | System.Int64 | x |  | 
      
        | System.Int64 | y |  | 
    
  
  Returns
  
    
      
        | Type | Description | 
    
    
      
        | System.Int64 | A System.Int64 with bits set in the H8_L positions corresponding to each input signed byte pair that compares smaller.  |