org.apache.lucene.util
Class SmallFloat

java.lang.Object
  extended by 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.

Constructor Summary
SmallFloat()
           
 
Method Summary
static float byte315ToFloat(byte b)
          byteToFloat(b, mantissaBits=3, zeroExponent=15)
static float byte52ToFloat(byte b)
          byteToFloat(b, mantissaBits=5, zeroExponent=2)
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 byte floatToByte52(float f)
          floatToByte(b, mantissaBits=5, zeroExponent=2)
smallest nonzero value = 0.033203125
largest value = 1984.0
epsilon = 0.03125
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SmallFloat

public SmallFloat()
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 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)


floatToByte52

public static byte floatToByte52(float f)
floatToByte(b, mantissaBits=5, zeroExponent=2)
smallest nonzero value = 0.033203125
largest value = 1984.0
epsilon = 0.03125


byte52ToFloat

public static float byte52ToFloat(byte b)
byteToFloat(b, mantissaBits=5, zeroExponent=2)