public static long doubleHashCode(double value)
    {
        // canonicalize +0 and -0 to a single value
        value = value == -0 ? 0 : value;
        // doubleToLongBits converts all NaNs to the same representation
        return AbstractLongType.hash(doubleToLongBits(value));
    }
@Test
    public void testDoubleHashCode()
    {
        assertEquals(doubleHashCode(0), doubleHashCode(Double.parseDouble("-0")));
        //0x7ff8123412341234L is a different representation of NaN
        assertEquals(doubleHashCode(Double.NaN), doubleHashCode(longBitsToDouble(0x7ff8123412341234L)));
    }