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)`.