RosettaCodeData/Task/Extreme-floating-point-values/AWK/extreme-floating-point-values.awk
2023-07-01 13:44:08 -04:00

34 lines
929 B
Awk

BEGIN {
# This requires 1e400 to overflow to infinity.
nzero = -0
nan = 0 * 1e400
pinf = 1e400
ninf = -1e400
print "nzero =", nzero
print "nan =", nan
print "pinf =", pinf
print "ninf =", ninf
print
# When y == 0, sign of x decides if atan2(y, x) is 0 or pi.
print "atan2(0, 0) =", atan2(0, 0)
print "atan2(0, pinf) =", atan2(0, pinf)
print "atan2(0, nzero) =", atan2(0, nzero)
print "atan2(0, ninf) =", atan2(0, ninf)
print
# From least to most: ninf, -1e200, 1e200, pinf.
print "ninf * -1 =", ninf * -1
print "pinf * -1 =", pinf * -1
print "-1e200 > ninf?", (-1e200 > ninf) ? "yes" : "no"
print "1e200 < pinf?", (1e200 < pinf) ? "yes" : "no"
print
# NaN spreads from input to output.
print "nan test:", (1 + 2 * 3 - 4) / (-5.6e7 + nan)
# NaN never equals anything. These tests should print "no".
print "nan == nan?", (nan == nan) ? "yes" : "no"
print "nan == 42?", (nan == 42) ? "yes" : "no"
}