Class Binary16


  • public final class Binary16
    extends Object

    Functions to convert values to/from the binary16 format specified in IEEE 754 2008.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int BIAS
      The bias value used to offset the encoded exponent.
      static char NEGATIVE_INFINITY
      The encoded form of negative infinity -∞.
      static char NEGATIVE_ZERO
      The encoded form of negative zero -0.
      static char POSITIVE_INFINITY
      The encoded form of positive infinity .
      static char POSITIVE_ZERO
      The encoded form of positive zero 0.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static char exampleNaN()
      One possible not-a-number value.
      static boolean isInfinite​(char k)
      Return true if the given packed binary16 value is infinite.
      static boolean isNaN​(char k)
      Return true if the given packed binary16 value is not a number (NaN).
      static char packDouble​(double k)
      Convert a double precision floating point value to a packed binary16 value.
      static char packFloat​(float k)
      Convert a single precision floating point value to a packed binary16 value.
      static char packSetExponentUnbiasedUnchecked​(int e)
      Encode the unbiased exponent e.
      static char packSetSignificandUnchecked​(int s)
      Encode the significand s.
      static char packSetSignUnchecked​(int s)
      Encode the sign bit s.
      static String toRawBinaryString​(char k)
      Show the given raw packed binary16 value as a string of binary digits.
      static double unpackDouble​(char k)
      Convert a packed binary16 value k to a double-precision floating point value.
      static float unpackFloat​(char k)
      Convert a packed binary16 value k to a single-precision floating point value.
      static int unpackGetExponentUnbiased​(char k)
      Extract and unbias the exponent of the given packed binary16 value.
      static int unpackGetSign​(char k)
      Retrieve the sign bit of the given packed binary16 value, as an integer in the range [0, 1].
      static int unpackGetSignificand​(char k)
      Return the significand of the given packed binary16 value as an integer in the range [0, 1023].
    • Field Detail

      • NEGATIVE_INFINITY

        public static final char NEGATIVE_INFINITY
        The encoded form of negative infinity -∞.
      • POSITIVE_INFINITY

        public static final char POSITIVE_INFINITY
        The encoded form of positive infinity .
      • POSITIVE_ZERO

        public static final char POSITIVE_ZERO
        The encoded form of positive zero 0.
      • NEGATIVE_ZERO

        public static final char NEGATIVE_ZERO
        The encoded form of negative zero -0.
      • BIAS

        public static final int BIAS
        The bias value used to offset the encoded exponent. A given exponent e is encoded as BIAS + e.
    • Method Detail

      • exampleNaN

        public static char exampleNaN()
        One possible not-a-number value.
      • isInfinite

        public static boolean isInfinite​(char k)
        Return true if the given packed binary16 value is infinite.
      • isNaN

        public static boolean isNaN​(char k)
        Return true if the given packed binary16 value is not a number (NaN).
      • packSetExponentUnbiasedUnchecked

        public static char packSetExponentUnbiasedUnchecked​(int e)

        Encode the unbiased exponent e. Values should be in the range [-15, 16] - values outside of this range will be truncated.

        See Also:
        unpackGetExponentUnbiased(char)
      • packSetSignificandUnchecked

        public static char packSetSignificandUnchecked​(int s)

        Encode the significand s. Values should be in the range [0, 1023]. Values outside of this range will be truncated.

        See Also:
        unpackGetSignificand(char)
      • packSetSignUnchecked

        public static char packSetSignUnchecked​(int s)

        Encode the sign bit s. Values should be in the range [0, 1], with 0 ironically denoting a positive value. Values outside of this range will be truncated.

        See Also:
        unpackGetSign(char)
      • toRawBinaryString

        public static String toRawBinaryString​(char k)
        Show the given raw packed binary16 value as a string of binary digits.
      • unpackGetExponentUnbiased

        public static int unpackGetExponentUnbiased​(char k)

        Extract and unbias the exponent of the given packed binary16 value.

        The exponent is encoded biased as a number in the range [0, 31], with 0 indicating that the number is subnormal and [1, 30] denoting the actual exponent plus BIAS. Infinite and NaN values always have an exponent of 31.

        This function will therefore return:

        See Also:
        packSetExponentUnbiasedUnchecked(int)
      • unpackGetSign

        public static int unpackGetSign​(char k)
        Retrieve the sign bit of the given packed binary16 value, as an integer in the range [0, 1].
        See Also:
        packSetSignUnchecked(int)
      • unpackGetSignificand

        public static int unpackGetSignificand​(char k)

        Return the significand of the given packed binary16 value as an integer in the range [0, 1023].

        See Also:
        packSetSignificandUnchecked(int)