This test checks the behavior of the Math object as described in 15.8 of the language specification.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS Math.abs(NaN) is NaN
PASS Math.abs(0) is 0
PASS Math.abs(-0) is 0
PASS Math.abs(1) is 1
PASS Math.abs(-1) is 1
PASS Math.abs(Number.MIN_VALUE) is Number.MIN_VALUE
PASS Math.abs(-Number.MIN_VALUE) is Number.MIN_VALUE
PASS Math.abs(Number.MAX_VALUE) is Number.MAX_VALUE
PASS Math.abs(-Number.MAX_VALUE) is Number.MAX_VALUE
PASS Math.abs(Infinity) is Infinity
PASS Math.abs(-Infinity) is Infinity
PASS Math.acos(NaN) is NaN
PASS Math.acos(-0) is Math.acos(0)
PASS Math.acos(1) is 0
PASS Math.acos(1.1) is NaN
PASS Math.acos(-1.1) is NaN
PASS Math.acos(Infinity) is NaN
PASS Math.acos(-Infinity) is NaN
PASS Math.asin(NaN) is NaN
PASS Math.asin(0) is 0
PASS Math.asin(-0) is -0
PASS Math.asin(1) is -Math.asin(-1)
PASS Math.asin(1.1) is NaN
PASS Math.asin(-1.1) is NaN
PASS Math.asin(Infinity) is NaN
PASS Math.asin(-Infinity) is NaN
PASS Math.atan(NaN) is NaN
PASS Math.atan(0) is 0
PASS Math.atan(-0) is -0
PASS Math.atan(Infinity) is -Math.atan(-Infinity)
PASS Math.atan2(NaN, NaN) is NaN
PASS Math.atan2(NaN, 0) is NaN
PASS Math.atan2(NaN, -0) is NaN
PASS Math.atan2(NaN, 1) is NaN
PASS Math.atan2(NaN, Infinity) is NaN
PASS Math.atan2(NaN, -Infinity) is NaN
PASS Math.atan2(0, NaN) is NaN
PASS Math.atan2(-0, NaN) is NaN
PASS Math.atan2(1, NaN) is NaN
PASS Math.atan2(Infinity, NaN) is NaN
PASS Math.atan2(-Infinity, NaN) is NaN
PASS Math.ceil(NaN) is NaN
PASS Math.ceil(0) is 0
PASS Math.ceil(-0) is -0
PASS Math.ceil(-0.5) is -0
PASS Math.ceil(1) is 1
PASS Math.ceil(-1) is -1
PASS Math.ceil(1.1) is 2
PASS Math.ceil(-1.1) is -1
PASS Math.ceil(Number.MIN_VALUE) is 1
PASS Math.ceil(-Number.MIN_VALUE) is -0
PASS Math.ceil(Number.MAX_VALUE) is Number.MAX_VALUE
PASS Math.ceil(-Number.MAX_VALUE) is -Number.MAX_VALUE
PASS Math.ceil(Infinity) is Infinity
PASS Math.ceil(-Infinity) is -Infinity
PASS Math.cos(NaN) is NaN
PASS Math.cos(0) is 1
PASS Math.cos(-0) is 1
PASS Math.cos(Infinity) is NaN
PASS Math.cos(-Infinity) is NaN
PASS Math.exp(NaN) is NaN
PASS Math.exp(0) is 1
PASS Math.exp(-0) is 1
PASS Math.exp(Infinity) is Infinity
PASS Math.exp(-Infinity) is 0
PASS Math.floor(NaN) is NaN
PASS Math.floor(0) is 0
PASS Math.floor(-0) is -0
PASS Math.floor(0.5) is 0
PASS Math.floor(1) is 1
PASS Math.floor(-1) is -1
PASS Math.floor(1.1) is 1
PASS Math.floor(-1.1) is -2
PASS Math.floor(Number.MIN_VALUE) is 0
PASS Math.floor(-Number.MIN_VALUE) is -1
PASS Math.floor(Number.MAX_VALUE) is Number.MAX_VALUE
PASS Math.floor(-Number.MAX_VALUE) is -Number.MAX_VALUE
PASS Math.floor(Infinity) is Infinity
PASS Math.floor(-Infinity) is -Infinity
PASS Math.log(NaN) is NaN
PASS Math.log(0) is -Infinity
PASS Math.log(-0) is -Infinity
PASS Math.log(1) is 0
PASS Math.log(-1) is NaN
PASS Math.log(-1.1) is NaN
PASS Math.log(Infinity) is Infinity
PASS Math.log(-Infinity) is NaN
PASS Math.max() is -Infinity
PASS Math.max(NaN) is NaN
PASS Math.max(NaN,1) is NaN
PASS Math.max(0) is 0
PASS Math.max(-0) is -0
PASS Math.max(-0, 0) is 0
PASS Math.min() is Infinity
PASS Math.min(NaN) is NaN
PASS Math.min(NaN,1) is NaN
PASS Math.min(0) is 0
PASS Math.min(-0) is -0
PASS Math.min(-0, 0) is -0
PASS Math.pow(NaN, NaN) is NaN
PASS Math.pow(NaN, 0) is 1
PASS Math.pow(NaN, -0) is 1
PASS Math.pow(NaN, 1) is NaN
PASS Math.pow(NaN, Infinity) is NaN
PASS Math.pow(NaN, -Infinity) is NaN
PASS Math.pow(0, NaN) is NaN
PASS Math.pow(-0, NaN) is NaN
PASS Math.pow(1, NaN) is NaN
PASS Math.pow(Infinity, NaN) is NaN
PASS Math.pow(-Infinity, NaN) is NaN
PASS Math.round(NaN) is NaN
PASS Math.round(0) is 0
PASS Math.round(-0) is -0
PASS Math.round(0.4) is 0
PASS Math.round(-0.4) is -0
PASS Math.round(0.5) is 1
PASS Math.round(-0.5) is -0
PASS Math.round(0.6) is 1
PASS Math.round(-0.6) is -1
PASS Math.round(1) is 1
PASS Math.round(-1) is -1
PASS Math.round(1.1) is 1
PASS Math.round(-1.1) is -1
PASS Math.round(1.5) is 2
PASS Math.round(-1.5) is -1
PASS Math.round(1.6) is 2
PASS Math.round(-1.6) is -2
PASS Math.round(Infinity) is Infinity
PASS Math.round(-Infinity) is -Infinity
PASS Math.sin(NaN) is NaN
PASS Math.sin(0) is 0
PASS Math.sin(-0) is -0
PASS Math.sin(Infinity) is NaN
PASS Math.sin(-Infinity) is NaN
PASS Math.sqrt(NaN) is NaN
PASS Math.sqrt(0) is 0
PASS Math.sqrt(-0) is -0
PASS Math.sqrt(1) is 1
PASS Math.sqrt(-1) is NaN
PASS Math.sqrt(Infinity) is Infinity
PASS Math.sqrt(-Infinity) is NaN
PASS Math.tan(NaN) is NaN
PASS Math.tan(0) is 0
PASS Math.tan(-0) is -0
PASS Math.tan(Infinity) is NaN
PASS Math.tan(-Infinity) is NaN
PASS successfullyParsed is true

TEST COMPLETE

