Package org.apache.lucene.util

# 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`
  `byte315ToFloat(byte b)`
  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)`.