Class Binary16

java.lang.Object
com.io7m.ieee754b16.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 final int
    The bias value used to offset the encoded exponent.
    static final char
    The encoded form of negative infinity -∞.
    static final char
    The encoded form of negative zero -0.
    static final char
    The encoded form of positive infinity .
    static final char
    The encoded form of positive zero 0.
  • Method Summary

    Modifier and Type
    Method
    Description
    static char
     
    static boolean
    isInfinite(char k)
     
    static boolean
    isNaN(char k)
     
    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
    Encode the unbiased exponent e.
    static char
    Encode the significand s.
    static char
    Encode the sign bit s.
    static String
    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
    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
    Return the significand of the given packed binary16 value as an integer in the range [0, 1023].

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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 Details

    • exampleNaN

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

      public static boolean isInfinite(char k)
      Parameters:
      k - A packed binary16 value
      Returns:
      true if the given packed binary16 value is infinite.
    • isNaN

      public static boolean isNaN(char k)
      Parameters:
      k - A packed binary16 value
      Returns:
      true if the given packed binary16 value is not a number (NaN).
    • packDouble

      public static char packDouble(double k)

      Convert a double precision floating point value to a packed binary16 value.

      For the following specific cases, the function returns:

      Otherwise, the binary16 value that most closely represents k is returned. This may obviously be an infinite value as the interval of double precision values is far larger than that of the binary16 type.

      Parameters:
      k - A floating point value
      Returns:
      A packed binary16 value
      See Also:
    • unpackDouble

      public static double unpackDouble(char k)

      Convert a packed binary16 value k to a double-precision floating point value.

      The function returns:

      Parameters:
      k - A packed binary16 value
      Returns:
      A floating point value
      See Also:
    • unpackFloat

      public static float unpackFloat(char k)

      Convert a packed binary16 value k to a single-precision floating point value.

      The function returns:

      Parameters:
      k - A packed binary16 value
      Returns:
      A floating point value
      See Also:
    • packFloat

      public static char packFloat(float k)

      Convert a single precision floating point value to a packed binary16 value.

      For the following specific cases, the function returns:

      Otherwise, the binary16 value that most closely represents k is returned. This may obviously be an infinite value as the interval of single precision values is far larger than that of the binary16 type.

      Parameters:
      k - A floating point value
      Returns:
      A packed binary16 value
      See Also:
    • 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.

      Parameters:
      e - An exponent
      Returns:
      A packed exponent
      See Also:
    • 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.

      Parameters:
      s - A significand
      Returns:
      A packed significand
      See Also:
    • 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.

      Parameters:
      s - A sign bit
      Returns:
      A packed sign bit
      See Also:
    • toRawBinaryString

      public static String toRawBinaryString(char k)
      Show the given raw packed binary16 value as a string of binary digits.
      Parameters:
      k - A packed binary16 value
      Returns:
      A string representation
    • 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:

      Parameters:
      k - A packed binary16 value
      Returns:
      The unbiased exponent
      See Also:
    • 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].
      Parameters:
      k - A packed binary16 value
      Returns:
      An unpacked sign bit
      See Also:
    • unpackGetSignificand

      public static int unpackGetSignificand(char k)

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

      Parameters:
      k - A packed binary16 value
      Returns:
      An unpacked significand
      See Also: