Modify regression test.
authorager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 15 Jun 2009 13:18:51 +0000 (13:18 +0000)
committerager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 15 Jun 2009 13:18:51 +0000 (13:18 +0000)
Because of varying floating-point precision, the slow case is hard to
test with explicit values.  Instead, we check that sine and cosine do
not return the same value (the regression was that the slow case of
cosine accidentally did sine instead of cosine).

Review URL: http://codereview.chromium.org/126123

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2169 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

test/mjsunit/sin-cos.js

index dcee37e..1c89c70 100644 (file)
@@ -27,8 +27,8 @@
 
 // Test Math.sin and Math.cos.
 
-var input_sin = [0, Math.PI, Math.PI / 6, Math.PI / 2, Math.pow(2, 70)];
-var input_cos = [0, Math.PI, Math.PI / 6, Math.PI / 2, Math.pow(2, 70)];
+var input_sin = [0, Math.PI, Math.PI / 6, Math.PI / 2];
+var input_cos = [0, Math.PI, Math.PI / 6, Math.PI / 2];
 
 var output_sin = input_sin.map(Math.sin);
 var output_cos = input_sin.map(Math.cos);
@@ -36,14 +36,17 @@ var output_cos = input_sin.map(Math.cos);
 var expected_sin = [0,
                     1.2246063538223773e-16,
                     0.49999999999999994,
-                    1,
-                    -0.9983193022079332];
+                    1];
 
 var expected_cos = [1,
                     -1,
                     0.8660254037844387,
-                    6.123031769111886e-17,
-                    0.05795317798935058];
+                    6.123031769111886e-17];
 
 assertArrayEquals(expected_sin, output_sin, "sine");
 assertArrayEquals(expected_cos, output_cos, "cosine");
+
+// By accident, the slow case for sine and cosine were both sine at
+// some point.  This is a regression test for that issue.
+var x = Math.pow(2, 70);
+assertTrue(Math.sin(x) != Math.cos(x));