diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Half.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Half.java index 9e21fb2a..23591f1d 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Half.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Half.java @@ -87,11 +87,6 @@ public final class Half extends Number implements Comparable { } else if (exponent != 0) { // Normalized value exponent += 0x1c000; // exp - 15 + 127 - - // Smooth transition - if (mantissa == 0 && exponent > 0x1c400) { - return Float.intBitsToFloat((shortBits & 0x8000) << 16 | exponent << 13 | 0x3ff); - } } else if (mantissa != 0) { // && exp == 0 -> subnormal exponent = 0x1c400; // Make it normal diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/HalfTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/HalfTest.java index c99e0f97..5ca770a8 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/HalfTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/HalfTest.java @@ -1,16 +1,16 @@ package com.twelvemonkeys.imageio.metadata.tiff; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import com.twelvemonkeys.io.FastByteArrayOutputStream; + +import org.junit.Test; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Random; -import org.junit.Test; - -import com.twelvemonkeys.io.FastByteArrayOutputStream; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * HalfTest. @@ -36,6 +36,13 @@ public class HalfTest { } } + @Test + public void testExactEncoding() { + for (short half = -2048; half < 2048; half++) { + assertEquals(String.valueOf(half), half, Half.shortBitsToFloat(Half.floatToShortBits(half)), 0); + } + } + @Test public void testRoundTripBack() { for (int i = 0; i < 1024; i++) {