From 7277cbd14aed0c695ac3b104b69cde454803c73c Mon Sep 17 00:00:00 2001
From: Neil Gershenfeld <gersh@cba.mit.edu>
Date: Sat, 24 Nov 2018 08:18:43 -0500
Subject: [PATCH] wip

---
 JavaScript/pi.html |  8 ++++----
 Node/clusterpi.js  |  2 +-
 Node/pi.js         | 19 +++++++++++++++++++
 README.md          |  1 +
 4 files changed, 25 insertions(+), 5 deletions(-)
 create mode 100644 Node/pi.js

diff --git a/JavaScript/pi.html b/JavaScript/pi.html
index b092f26..435cbcc 100644
--- a/JavaScript/pi.html
+++ b/JavaScript/pi.html
@@ -17,9 +17,9 @@ function serial_benchmark() {
    var pi = 0
    var tstart = Date.now()/1000
    for (var i = 1; i <= points; ++i)
-      pi += a/((i-b)*(i-c));
+      pi += a/((i-b)*(i-c))
    var tend = Date.now()/1000
-   var mflops = points*5.0*1e-6/(tend-tstart);
+   var mflops = points*5.0*1e-6/(tend-tstart)
    document.getElementById('div_pi_serial').innerHTML = 'pi: '+pi
    document.getElementById('div_time_serial').innerHTML = 'time: '+(tend-tstart).toFixed(1)+'s'
    document.getElementById('div_flop_serial').innerHTML = 'estimated MFlops: '+mflops.toFixed(1)
@@ -34,7 +34,7 @@ function reduce_benchmark() {
    var array = new Float64Array(points)
    var pi = array.reduce(function(sum,val,i,arr){return sum+a/(((i+1)-b)*((i+1)-c))},0)
    var tend = Date.now()/1000
-   var mflops = points*5.0*1e-6/(tend-tstart);
+   var mflops = points*5.0*1e-6/(tend-tstart)
    document.getElementById('div_pi_reduce').innerHTML = 'pi: '+pi
    document.getElementById('div_time_reduce').innerHTML = 'time: '+(tend-tstart).toFixed(1)+'s'
    document.getElementById('div_flop_reduce').innerHTML = 'estimated MFlops: '+mflops.toFixed(1)
@@ -56,7 +56,7 @@ function parallel_benchmark() {
          workers[evt.data.index].terminate()
          if (results.length == threads) {
             var tend = Date.now()/1000
-            var mflops = (threads*points)*5.0*1e-6/(tend-tstart);
+            var mflops = (threads*points)*5.0*1e-6/(tend-tstart)
             var pi = results.reduce(function(x,y){return x+y},0)
             document.getElementById('div_pi_parallel').innerHTML = 'pi: '+pi
             document.getElementById('div_time_parallel').innerHTML = 'time: '+(tend-tstart).toFixed(1)+'s'
diff --git a/Node/clusterpi.js b/Node/clusterpi.js
index 61b49af..194c57d 100644
--- a/Node/clusterpi.js
+++ b/Node/clusterpi.js
@@ -25,7 +25,7 @@ function master() {
          results += 1
          if (results == processes) {
             var tend = Date.now()/1000
-            var mflops = (processes*points)*5.0*1e-6/(tend-tstart);
+            var mflops = (processes*points)*5.0*1e-6/(tend-tstart)
             console.log('pi: '+pi)
             console.log('time: '+(tend-tstart).toFixed(1)+'s')
             console.log('processes: '+processes)
diff --git a/Node/pi.js b/Node/pi.js
new file mode 100644
index 0000000..3fa5fae
--- /dev/null
+++ b/Node/pi.js
@@ -0,0 +1,19 @@
+//
+// pi.js
+// Neil Gershenfeld 11/24/18
+// pi calculation benchmark
+// pi = 3.14159265358979323846
+//
+var points = 1e8
+var a = 0.5
+var b = 0.75
+var c = 0.25
+var pi = 0
+var tstart = Date.now()/1000
+for (var i = 1; i <= points; ++i)
+   pi += a/((i-b)*(i-c))
+var tend = Date.now()/1000
+var mflops = points*5.0*1e-6/(tend-tstart)
+console.log('pi: '+pi)
+console.log('time: '+(tend-tstart).toFixed(1)+'s')
+console.log('estimated MFlops: '+mflops.toFixed(1))
diff --git a/README.md b/README.md
index edfb9eb..95020ca 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@
 |9.371|[pi.c](C/pi.c)|C<br>gcc pi.c -o pi -lm -O3 -ffast-math|Intel i7-8700T|Nov 17, 2018|
 |3.734|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 1 worker|Intel i7-8700T|Nov 17, 2018|
 |3.472|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 1 worker|Intel 2x E5-2680|Nov 19, 2018|
+|3.817|[pi.js](Node/pi.js)|Node|Intel 2x E5-2680|Nov 24, 2018|
 |3.007|[clusterpi.js](Node/clusterpi.js)|Node, 12 processes|Intel 2x E5-2680|Nov 24, 2018|
 |0.573|[pi.c](C/pi.c)|C<br>gcc pi.c -o pi -lm|Intel i7-8700T|Nov 17, 2018|
 |0.470|[numpi.py](Python/numpi.py)|Python, NumPy|Intel i7-8700T|Nov 17, 2018|
-- 
GitLab