Class SmallFloat

java.lang.Object
org.apache.lucene.util.SmallFloat

public class SmallFloat extends Object
Floating point numbers smaller than 32 bits.
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
  • Method Summary

    Modifier and Type
    Method
    Description
    static float
    byteToFloat(b, mantissaBits=3, zeroExponent=15)
    static int
    byte4ToInt(byte b)
    Decode values that have been encoded with intToByte4(int).
    static float
    byteToFloat(byte b, int numMantissaBits, int zeroExp)
    Converts an 8 bit float to a 32 bit float.
    static byte
    floatToByte(float f, int numMantissaBits, int zeroExp)
    Converts a 32 bit float to an 8 bit float.
    static byte
    floatToByte315(float f)
    floatToByte(b, mantissaBits=3, zeroExponent=15)
    smallest non-zero value = 5.820766E-10
    largest value = 7.5161928E9
    epsilon = 0.125
    static final long
    int4ToLong(int i)
    Decode values encoded with longToInt4(long).
    static byte
    intToByte4(int i)
    Encode an integer to a byte.
    static int
    longToInt4(long i)
    Float-like encoding for positive longs that preserves ordering and 4 significant bits.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • floatToByte

      public static byte floatToByte(float f, int numMantissaBits, int zeroExp)
      Converts a 32 bit float to an 8 bit float.
      Values less than zero are all mapped to zero.
      Values are truncated (rounded down) to the nearest 8 bit value.
      Values between zero and the smallest representable value are rounded up.
      Parameters:
      f - the 32 bit float to be converted to an 8 bit float (byte)
      numMantissaBits - the number of mantissa bits to use in the byte, with the remainder to be used in the exponent
      zeroExp - the zero-point in the range of exponent values
      Returns:
      the 8 bit float representation
    • byteToFloat

      public static float byteToFloat(byte b, int numMantissaBits, int zeroExp)
      Converts an 8 bit float to a 32 bit float.
    • floatToByte315

      public static byte floatToByte315(float f)
      floatToByte(b, mantissaBits=3, zeroExponent=15)
      smallest non-zero value = 5.820766E-10
      largest value = 7.5161928E9
      epsilon = 0.125
    • byte315ToFloat

      public static float byte315ToFloat(byte b)
      byteToFloat(b, mantissaBits=3, zeroExponent=15)
    • longToInt4

      public static int longToInt4(long i)
      Float-like encoding for positive longs that preserves ordering and 4 significant bits.
    • int4ToLong

      public static final long int4ToLong(int i)
      Decode values encoded with longToInt4(long).
    • intToByte4

      public static byte intToByte4(int i)
      Encode an integer to a byte. It is built upon longToInt4(long) and leverages the fact that longToInt4(Integer.MAX_VALUE) is less than 255 to encode low values more accurately.
    • byte4ToInt

      public static int byte4ToInt(byte b)
      Decode values that have been encoded with intToByte4(int).