Make JetStream 2
[WebKit-https.git] / PerformanceTests / JetStream2 / worker / bomb-subtests / math-partial-sums.js
1 // The Computer Language Shootout
2 // http://shootout.alioth.debian.org/
3 // contributed by Isaac Gouy
4
5 function partial(n){
6     var a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 0.0;
7     var twothirds = 2.0/3.0;
8     var alt = -1.0;
9     var k2 = k3 = sk = ck = 0.0;
10     
11     for (var k = 1; k <= n; k++){
12         k2 = k*k;
13         k3 = k2*k;
14         sk = Math.sin(k);
15         ck = Math.cos(k);
16         alt = -alt;
17         
18         a1 += Math.pow(twothirds,k-1);
19         a2 += Math.pow(k,-0.5);
20         a3 += 1.0/(k*(k+1.0));
21         a4 += 1.0/(k3 * sk*sk);
22         a5 += 1.0/(k3 * ck*ck);
23         a6 += 1.0/k;
24         a7 += 1.0/k2;
25         a8 += alt/k;
26         a9 += alt/(2*k -1);
27     }
28     
29     // NOTE: We don't try to validate anything from pow(),  sin() or cos() because those aren't
30     // well-specified in ECMAScript.
31     return a6 + a7 + a8 + a9;
32 }
33
34 var total = 0;
35
36 for (var i = 1024; i <= 16384; i *= 2) {
37     total += partial(i);
38 }
39
40 var expected = 60.08994194659945;
41
42 if (total != expected) {
43     throw "ERROR: bad result: expected " + expected + " but got " + total;
44 }
45
46 postMessage("done");
47 close();