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))