diff options
| -rw-r--r-- | core/java/android/util/Half.java | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/core/java/android/util/Half.java b/core/java/android/util/Half.java index 5718d994620d..70d049a6e985 100644 --- a/core/java/android/util/Half.java +++ b/core/java/android/util/Half.java @@ -162,6 +162,7 @@ public final class Half extends Number implements Comparable<Half> { private static final int FP32_EXPONENT_MASK = 0xff; private static final int FP32_SIGNIFICAND_MASK = 0x7fffff; private static final int FP32_EXPONENT_BIAS = 127; + private static final int FP32_QNAN_MASK = 0x400000; private static final int FP32_DENORMAL_MAGIC = 126 << 23; private static final float FP32_DENORMAL_FLOAT = Float.intBitsToFloat(FP32_DENORMAL_MAGIC); @@ -903,6 +904,9 @@ public final class Half extends Number implements Comparable<Half> { outM = m << 13; if (e == 0x1f) { // Infinite or NaN outE = 0xff; + if (outM != 0) { // SNaNs are quieted + outM |= FP32_QNAN_MASK; + } } else { outE = e - FP16_EXPONENT_BIAS + FP32_EXPONENT_BIAS; } |