1 | <html>
|
2 | <head>
|
3 | <title>Pi Bailey-Borwein-Plouffe</title>
|
4 | <script src="../node_modules/decimal.js/decimal.js"></script>
|
5 | </head>
|
6 | <body>
|
7 | <script>
|
8 | Decimal.config({precision: 100});
|
9 |
|
10 | function pi() {
|
11 |
|
12 |
|
13 |
|
14 | var zero = new Decimal(0);
|
15 | var one = new Decimal(1);
|
16 | var two = new Decimal(2);
|
17 | var four = new Decimal(4);
|
18 |
|
19 | var p16 = one;
|
20 | var pi = zero;
|
21 | var precision = Decimal.config().precision;
|
22 | var k8 = zero;
|
23 |
|
24 | for (var k = zero; k.lte(precision); k = k.plus(one)) {
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | var f = four.div(k8.plus(1))
|
33 | .minus(two.div(k8.plus(4)))
|
34 | .minus(one.div(k8.plus(5)))
|
35 | .minus(one.div(k8.plus(6)));
|
36 |
|
37 | pi = pi.plus(p16.times(f));
|
38 | p16 = p16.div(16);
|
39 | k8 = k8.plus(8);
|
40 | }
|
41 |
|
42 | return pi;
|
43 | }
|
44 |
|
45 | console.time('estimation');
|
46 | var calculatedPi = pi();
|
47 | console.timeEnd('estimation');
|
48 |
|
49 | document.write('<code>Real: 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664...</code><br>');
|
50 | document.write('<code>Est: ' + calculatedPi.toString() + '</code>');
|
51 |
|
52 | </script>
|
53 | </body>
|
54 | </html> |
\ | No newline at end of file |