public static long realHashCode(float value)
    {
        // canonicalize +0 and -0 to a single value
        value = value == -0 ? 0 : value;
        // floatToIntBits converts all NaNs to the same representation
        return AbstractIntType.hash(floatToIntBits(value));
    }
@Test
    public void testRealHashCode()
    {
        assertEquals(realHashCode(0), realHashCode(Float.parseFloat("-0")));
        // 0x7fc01234 is a different representation of NaN
        assertEquals(realHashCode(Float.NaN), realHashCode(intBitsToFloat(0x7fc01234)));
    }