--- /dev/null
+// Basic cases of Math.log().
+
+// log(NaN).
+function logNaN(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logNaN);
+
+function testLogNaN() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logNaN(NaN);
+ if (!isNaN(result))
+ throw "logNaN(NaN) = " + result + ", expected NaN";
+ }
+}
+testLogNaN();
+
+
+// log(0).
+function logZero(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logZero);
+
+function testLogZero() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logZero(0);
+ if (result !== -Infinity)
+ throw "logZero(0) = " + result + ", expected -Infinity";
+ }
+}
+testLogZero();
+
+
+// log(1).
+function logOne(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logOne);
+
+function testLogOne() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logOne(1);
+ if (result !== 0)
+ throw "logOne(1) = " + result + ", expected 0";
+ }
+}
+testLogOne();
+
+
+// log(-1).
+function logMinusOne(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logMinusOne);
+
+function testLogMinusOne() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logMinusOne(-1);
+ if (!isNaN(result))
+ throw "logMinusOne(-1) = " + result + ", expected NaN";
+ }
+}
+testLogMinusOne();
+
+
+// log(Infinity).
+function logInfinity(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logInfinity);
+
+function testLogInfinity() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logInfinity(Infinity);
+ if (result !== Infinity)
+ throw "logInfinity(Infinity) = " + result + ", expected Infinity";
+ }
+}
+testLogInfinity();
+
+
+// log(-Infinity).
+function logMinusInfinity(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logMinusInfinity);
+
+function testLogMinusInfinity() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logMinusInfinity(-Infinity);
+ if (!isNaN(result))
+ throw "logMinusInfinity(-Infinity) = " + result + ", expected NaN";
+ }
+}
+testLogMinusInfinity();
+
+
+// log(integer).
+function logInteger(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logInteger);
+
+function testLogInteger() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logInteger(42);
+ if (result !== 3.7376696182833684)
+ throw "logInteger(42) = " + result + ", expected 3.7376696182833684";
+ }
+}
+testLogInteger();
+
+
+// log(double).
+function logDouble(antilogarithm) {
+ return Math.log(antilogarithm);
+}
+noInline(logDouble);
+
+function testLogDouble() {
+ for (var i = 0; i < 10000; ++i) {
+ var result = logDouble(Math.PI);
+ if (result !== 1.1447298858494002)
+ throw "logDouble(Math.PI) = " + result + ", expected 1.1447298858494002";
+ }
+}
+testLogDouble();
\ No newline at end of file