var inf = 1/0 # same as: Inf var nan = 0/0 # same as: NaN var exprs = [ "1.0 / 0.0", "-1.0 / 0.0", "0.0 / 0.0", "- 0.0", "inf + 1", "5 - inf", "inf * 5", "inf / 5", "inf * 0", "1.0 / inf", "-1.0 / inf", "inf + inf", "inf - inf", "inf * inf", "inf / inf", "inf * 0.0", " 0 < inf", "inf == inf", "nan + 1", "nan * 5", "nan - nan", "nan * inf", "- nan", "nan == nan", "nan > 0", "nan < 0", "nan == 0", "0.0 == -0.0", ] exprs.each { |expr| "%15s => %s\n".printf(expr, eval(expr)) } say "-"*40 say("NaN equality: ", NaN == nan) say("Infinity equality: ", Inf == inf) say("-Infinity equality: ", -Inf == -inf) say "-"*40 say("sqrt(-1) = ", sqrt(-1)) say("tanh(-Inf) = ", tanh(-inf)) say("(-Inf)**2 = ", (-inf)**2) say("(-Inf)**3 = ", (-inf)**3) say("acos(Inf) = ", acos(inf)) say("atan(Inf) = ", atan(inf)) say("log(-1) = ", log(-1)) say("atanh(Inf) = ", atanh(inf))