bug984018.js (1383B)
1 var x = 0; 2 function test() { 3 function sincos1(a, b) { 4 var sa = Math.sin(a); 5 var sb = Math.sin(b); 6 var ca = Math.cos(a); 7 var cb = Math.cos(b); 8 var ra = sa * sa + ca * ca; 9 var rb = sb * sb + cb * cb; 10 var dec = 100000; 11 12 assertEq(Math.round(ra * dec) / dec, Math.round(rb * dec) / dec); 13 14 ca = Math.cos(a); 15 cb = Math.cos(b); 16 sa = Math.sin(a); 17 sb = Math.sin(b); 18 19 var ra = sa * sa + ca * ca; 20 var rb = sb * sb + cb * cb; 21 22 assertEq(Math.round(ra * dec) / dec, Math.round(rb * dec) / dec); 23 return ra; 24 } 25 26 function sincos2(x) { 27 var s1 = Math.sin(x); 28 var c1 = Math.cos(x); 29 30 var c2 = Math.cos(x); 31 var s2 = Math.sin(x); 32 33 return (s1 * s1 + c1 * c1) - (s2 * s2 + c2 * c2); 34 } 35 36 function bailoutHere() { bailout(); } 37 38 function sincos3(x) { 39 var s = Math.sin(x); 40 bailoutHere(); 41 var c = Math.cos(x); 42 assertEq(Math.round(s * s + c * c), 1); 43 return s; 44 } 45 46 function sincos4(x) { 47 if (x < 2500) 48 x = Math.sin(x); 49 else 50 x = Math.cos(x); 51 return x; 52 } 53 54 for (var i=0; i<5000; i++) { 55 x += sincos1(x, x + 1); 56 x += sincos2(x); 57 x += sincos3(x); 58 x += sincos4(i); 59 } 60 } 61 x += 1; 62 test();