Source code

Revision control

Copy as Markdown

Other Tools

var x = 0;
function test() {
function sincos1(a, b) {
var sa = Math.sin(a);
var sb = Math.sin(b);
var ca = Math.cos(a);
var cb = Math.cos(b);
var ra = sa * sa + ca * ca;
var rb = sb * sb + cb * cb;
var dec = 100000;
assertEq(Math.round(ra * dec) / dec, Math.round(rb * dec) / dec);
ca = Math.cos(a);
cb = Math.cos(b);
sa = Math.sin(a);
sb = Math.sin(b);
var ra = sa * sa + ca * ca;
var rb = sb * sb + cb * cb;
assertEq(Math.round(ra * dec) / dec, Math.round(rb * dec) / dec);
return ra;
}
function sincos2(x) {
var s1 = Math.sin(x);
var c1 = Math.cos(x);
var c2 = Math.cos(x);
var s2 = Math.sin(x);
return (s1 * s1 + c1 * c1) - (s2 * s2 + c2 * c2);
}
function bailoutHere() { bailout(); }
function sincos3(x) {
var s = Math.sin(x);
bailoutHere();
var c = Math.cos(x);
assertEq(Math.round(s * s + c * c), 1);
return s;
}
function sincos4(x) {
if (x < 2500)
x = Math.sin(x);
else
x = Math.cos(x);
return x;
}
for (var i=0; i<5000; i++) {
x += sincos1(x, x + 1);
x += sincos2(x);
x += sincos3(x);
x += sincos4(i);
}
}
x += 1;
test();