Class Binary16

java.lang.Object
com.jogamp.opengl.math.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
    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
    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

    equals, 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()
      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).
    • 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.

      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.

      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.

      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.

      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.

      See Also:
    • toRawBinaryString

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

      public static double unpackDouble(char k)

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

      The function returns:

      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:

      See Also:
    • 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:
    • 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:
    • 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: