29package com.jogamp.math;
69 public static final int BIAS;
79 private static final int MASK_SIGN;
80 private static final int MASK_EXPONENT;
81 private static final int MASK_SIGNIFICAND;
85 MASK_EXPONENT = 0x7C00;
86 MASK_SIGNIFICAND = 0x03FF;
98 final char c = (char) n;
128 return (e == 16) && (s > 0);
161 if (Double.isNaN(k)) {
164 if (k == Double.POSITIVE_INFINITY) {
167 if (k == Double.NEGATIVE_INFINITY) {
170 if (Double.doubleToLongBits(k) ==
Binary64.NEGATIVE_ZERO_BITS) {
186 final int rem = (int) (de & 0x001F);
193 final long rnm = dn & 0xFFC0000000000L;
194 final long rns = rnm >> 42;
201 return (
char) (rsr | rer | rnr);
234 if (Float.isNaN(k)) {
237 if (k == Float.POSITIVE_INFINITY) {
240 if (k == Float.NEGATIVE_INFINITY) {
243 if (Float.floatToIntBits(k) ==
Binary32.NEGATIVE_ZERO_BITS) {
259 final int rem = (int) (de & 0x001F);
266 final long rnm = dn & 0x7FE000L;
267 final long rns = rnm >> 13;
274 return (
char) (rsr | rer | rnr);
291 final int es = eb << 10;
292 final int em = es &
Binary16.MASK_EXPONENT;
308 final int sm = s &
Binary16.MASK_SIGNIFICAND;
325 final int ss = s << 15;
326 final int sm = ss &
Binary16.MASK_SIGN;
338 final StringBuilder b =
new StringBuilder();
340 for (
int i = 0; i < 16; ++i) {
383 return Double.POSITIVE_INFINITY;
386 return Double.NEGATIVE_INFINITY;
404 final long rsr = s << 63;
413 final long reb = (e +
Binary64.BIAS);
414 final long rer = reb << 52;
421 final long rnr = n << 42;
422 return Double.longBitsToDouble(rsr | rer | rnr);
457 return Float.POSITIVE_INFINITY;
460 return Float.NEGATIVE_INFINITY;
478 final int rsr = s << 31;
487 final int reb = (e +
Binary32.BIAS);
488 final int rer = reb << 23;
495 final int rnr = n << 13;
496 return Float.intBitsToFloat(rsr | rer | rnr);
532 final int em = k &
Binary16.MASK_EXPONENT;
533 final int es = em >> 10;
547 return (k &
Binary16.MASK_SIGN) >> 15;
562 return k &
Binary16.MASK_SIGNIFICAND;
567 throw new AssertionError(
"Unreachable code, report this bug!");
static char packSetExponentUnbiasedUnchecked(final int e)
static char packSetSignificandUnchecked(final int s)
static final char NEGATIVE_INFINITY
The encoded form of negative infinity -∞.
static int unpackGetExponentUnbiased(final char k)
static char exampleNaN()
One possible not-a-number value.
static char packDouble(final double k)
static boolean isNaN(final char k)
Return true if the given packed binary16 value is not a number (NaN).
static final char POSITIVE_INFINITY
The encoded form of positive infinity ∞.
static final char NEGATIVE_ZERO
The encoded form of negative zero -0.
static int unpackGetSignificand(final char k)
static char packSetSignUnchecked(final int s)
static final int BIAS
The bias value used to offset the encoded exponent.
static String toRawBinaryString(final char k)
Show the given raw packed binary16 value as a string of binary digits.
static char packFloat(final float k)
static double unpackDouble(final char k)
static boolean isInfinite(final char k)
Return true if the given packed binary16 value is infinite.
static final char POSITIVE_ZERO
The encoded form of positive zero 0.
static int unpackGetSign(final char k)
Retrieve the sign bit of the given packed binary16 value, as an integer in the range [0,...
static float unpackFloat(final char k)
Functions for interrogating binary32 (float) values.
static int unpackGetSign(final float d)
static int unpackGetExponentUnbiased(final float d)
static int unpackGetSignificand(final float d)
Functions for interrogating binary64 (double) values.
static long unpackGetSign(final double d)
static long unpackGetExponentUnbiased(final double d)
static long unpackGetSignificand(final double d)