Index: test/mjsunit/es6/math-hyperbolic.js |
diff --git a/test/mjsunit/es6/math-hyperbolic.js b/test/mjsunit/es6/math-hyperbolic.js |
index 1632e00b222c5ff277bd385ec1e4d2d15795c59d..8f7164dfef02afeb713014e0818c74e5d9cd4849 100644 |
--- a/test/mjsunit/es6/math-hyperbolic.js |
+++ b/test/mjsunit/es6/math-hyperbolic.js |
@@ -166,3 +166,23 @@ assertEquals(Infinity, Math.sinh(710.475860073944)); |
assertEquals(-Infinity, Math.sinh(-710.475860073944)); |
assertEquals(Infinity, Math.sinh(1000)); |
assertEquals(-Infinity, Math.sinh(-1000)); |
+ |
+// Implementation-specific tests for cosh. |
+// Case |x| < 2^-55 |
+assertEquals(1, Math.cosh(Math.pow(2, -55))); |
+assertEquals(1, Math.cosh(-Math.pow(2, -55))); |
Raymond Toy
2014/08/29 16:23:31
Oops. This is a mistake in original test. If we wa
Yang
2014/09/01 09:35:42
Done.
|
+// Case |x| < 1/2*log(2). cosh(Math.LN2/4) = (sqrt(2)+1)/2^(5/4) |
+assertEquals(1.0150517651282178, Math.cosh(Math.LN2/4)); |
+assertEquals(1.0150517651282178, Math.cosh(-Math.LN2/4)); |
+// Case 1/2*log(2) < |x| < 22. cosh(10*Math.LN2) = 1048577/2048 |
+assertEquals(512.00048828125, Math.cosh(10*Math.LN2)); |
+assertEquals(512.00048828125, Math.cosh(-10*Math.LN2)); |
+// Case 22 <= |x| < log(maxdouble) |
+assertEquals(2.1474836479999983e9, Math.cosh(32*Math.LN2)); |
+assertEquals(2.1474836479999983e9, Math.cosh(-32*Math.LN2)); |
+// Case log(maxdouble) <= |x| <= overflowthreshold |
+assertEquals(1.7976931348621744e308, Math.cosh(710.4758600739439)); |
+assertEquals(1.7976931348621744e308, Math.cosh(-710.4758600739439)); |
+// Overflow. |
+assertEquals(Infinity, Math.cosh(710.475860073944)); |
+assertEquals(Infinity, Math.cosh(-710.475860073944)); |