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
All Methods Static Methods Concrete Methods 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 withintToByte4(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.125static long
int4ToLong(int i)
Decode values encoded withlongToInt4(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.
-
-
-
Method Detail
-
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 exponentzeroExp
- 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 withlongToInt4(long)
.
-
intToByte4
public static byte intToByte4(int i)
Encode an integer to a byte. It is built uponlongToInt4(long)
and leverages the fact thatlongToInt4(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 withintToByte4(int)
.
-
-