scala/ScalaBook/chapter-02/math.scala
var zero:Double = 0;
if ((0 / zero) == Math.NaN_DOUBLE)
println("0 / 0 can be tested with NaN_DOUBLE.")
else
println("0 / 0 cannot be tested with NaN_DOUBLE")
if ( (0 / 0.0).isNaN )
println("NaN")
if ( (1 / 0.0).isInfinity )
println("Infinity")
if ( (-1 / 0.0).isNegInfinity )
println("-Infinity")
if ( (+1 / 0.0).isPosInfinity )
println("+Infinity")
///////////////////////////////////////////////////////////
def Increment(value: Double): Double = {
if( value.isInfinity || value.isNaN )
return value
var signed64: Long = java.lang.Double.doubleToRawLongBits(value)
if(signed64 < 0)
signed64 -= 1
else
signed64 += 1
if(signed64 == Math.MIN_LONG) // = "-0", make it "+0"
return 0
var tmp_value = java.lang.Double.longBitsToDouble(signed64)
if( tmp_value.isNaN )
return Math.NaN_DOUBLE
else
return tmp_value
}
if ( (Increment(Math.MAX_DOUBLE)).isInfinity )
println("ok")
else
println("error")
if (Increment(0.0) == Math.EPS_DOUBLE)
println("ok")
else
println("error")
println(Increment(100.0))