@Override public final boolean equals( double x ) { return doubleValue() == x; }
@Override public long longValue() { return (long) doubleValue(); }
@Override public int compareTo( FloatingPointValue other ) { return Double.compare( doubleValue(), other.doubleValue() ); }
@Override public boolean isNaN() { return Double.isNaN( this.doubleValue() ); }
@Override public long updateHash( HashFunction hashFunction, long hash ) { return hashFunction.update( hash, Double.doubleToLongBits( doubleValue() ) ); }
@Override public DoubleValue times( double b ) { return ValueMath.multiply( doubleValue(), b ); }
@Override public DoubleValue dividedBy( long b ) { return Values.doubleValue( doubleValue() / b ); }
@Override public final int computeHash() { return NumberValues.hash( doubleValue() ); }
@Override public DoubleValue plus( double b ) { return ValueMath.add( doubleValue(), b ); }
@Override public final boolean equals( long x ) { return NumberValues.numbersEqual( doubleValue(), x ); }
@Override public DoubleValue plus( long b ) { return ValueMath.add( doubleValue(), b ); }
public static double coerceToDouble( Value value ) { if ( value instanceof IntegralValue ) { return ((IntegralValue) value).longValue(); } if ( value instanceof FloatingPointValue ) { return ((FloatingPointValue) value).doubleValue(); } throw new UnsupportedOperationException( format( "Cannot coerce %s to double", value ) ); }
@Override public DoubleValue minus( long b ) { return ValueMath.subtract( doubleValue(), b ); }
@Override public DoubleValue minus( double b ) { return ValueMath.subtract( doubleValue(), b ); }
@Override public DoubleValue times( long b ) { return ValueMath.multiply( doubleValue(), b ); }
@Override public DoubleValue dividedBy( double b ) { return Values.doubleValue( doubleValue() / b ); } }
public static double safeCastFloatingPoint( String name, AnyValue value, double defaultValue ) { if ( value == null ) { return defaultValue; } if ( value instanceof IntegralValue ) { return ((IntegralValue) value).doubleValue(); } if ( value instanceof FloatingPointValue ) { return ((FloatingPointValue) value).doubleValue(); } throw new IllegalArgumentException( name + " must be a number value, but was a " + value.getClass().getSimpleName() ); }
@Override public int compareTo( IntegralValue other ) { return NumberValues.compareDoubleAgainstLong( doubleValue(), other.longValue() ); }
@Override public int compareTo( FloatingPointValue other ) { return NumberValues.compareLongAgainstDouble( longValue(), other.doubleValue() ); }
@Override public final boolean equals( Value other ) { if ( other instanceof IntegralValue ) { IntegralValue that = (IntegralValue) other; return this.longValue() == that.longValue(); } else if ( other instanceof FloatingPointValue ) { FloatingPointValue that = (FloatingPointValue) other; return NumberValues.numbersEqual( that.doubleValue(), this.longValue() ); } else { return false; } }