[Pkg-javascript-commits] [science.js] 06/87: Add new science.lin module, for linear algebra.

bhuvan krishna bhuvan-guest at moszumanska.debian.org
Thu Dec 8 06:11:52 UTC 2016


This is an automated email from the git hooks/post-receive script.

bhuvan-guest pushed a commit to branch master
in repository science.js.

commit e1ad0d719d64d0803df2f366f02a07b8f23ccc64
Author: Jason Davies <jason at jasondavies.com>
Date:   Sat Jul 16 11:53:24 2011 +0100

    Add new science.lin module, for linear algebra.
---
 Makefile           |  8 ++++++++
 science.js         |  2 +-
 science.lin.js     | 27 +++++++++++++++++++++++++++
 science.lin.min.js |  1 +
 science.min.js     |  2 +-
 src/core/core.js   |  2 +-
 src/lin/lin.js     |  1 +
 src/lin/tridag.js  | 25 +++++++++++++++++++++++++
 8 files changed, 65 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 9115db3..33fd861 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,8 @@ JS_COMPILER = \
 all: \
 	science.js \
 	science.min.js \
+	science.lin.js \
+	science.lin.min.js \
 	science.stats.js \
 	science.stats.min.js
 
@@ -17,6 +19,12 @@ science.core.js: \
 	src/core/functor.js \
 	src/core/hypot.js
 
+science.lin.js: \
+	src/start.js \
+	src/lin/lin.js \
+	src/lin/tridag.js \
+	src/end.js
+
 science.stats.js: \
 	src/start.js \
 	src/stats/stats.js \
diff --git a/science.js b/science.js
index 387608c..89ceae4 100644
--- a/science.js
+++ b/science.js
@@ -1,4 +1,4 @@
-(function(){science = {version: "1.0.0"}; // semver
+(function(){science = {version: "1.1.0"}; // semver
 science.functor = function(v) {
   return typeof v === "function" ? v : function() { return v; };
 };
diff --git a/science.lin.js b/science.lin.js
new file mode 100644
index 0000000..233dc92
--- /dev/null
+++ b/science.lin.js
@@ -0,0 +1,27 @@
+(function(){science.lin = {};
+/**
+ * Solves tridiagonal systems of linear equations.
+ *
+ * Source: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
+ *
+ * @param {number[]} a
+ * @param {number[]} b
+ * @param {number[]} c
+ * @param {number[]} d
+ * @param {number[]} x
+ * @param {number} n
+ */
+science.lin.tridag = function(a, b, c, d, x, n) {
+  c[0] /= b[0];
+  d[0] /= b[0];
+  for (var i = 1; i < n; i++) {
+    var id = 1 / (b[i] - c[i-1] * a[i]);
+    c[i] *= id;
+    d[i] = (d[i] - d[i - 1] * a[i]) * id;
+  }
+  x[n] = d[n];
+  for (var i = n - 2; i >= 0; i--) {
+    x[i] = d[i] - c[i] * x[i + 1];
+  }
+};
+})()
\ No newline at end of file
diff --git a/science.lin.min.js b/science.lin.min.js
new file mode 100644
index 0000000..ba1b1cb
--- /dev/null
+++ b/science.lin.min.js
@@ -0,0 +1 @@
+(function(){science.lin={},science.lin.tridag=function(a,b,c,d,e,f){c[0]/=b[0],d[0]/=b[0];for(var g=1;g<f;g++){var h=1/(b[g]-c[g-1]*a[g]);c[g]*=h,d[g]=(d[g]-d[g-1]*a[g])*h}e[f]=d[f];for(var g=f-2;g>=0;g--)e[g]=d[g]-c[g]*e[g+1]}})()
\ No newline at end of file
diff --git a/science.min.js b/science.min.js
index 6c21dff..c6c441a 100644
--- a/science.min.js
+++ b/science.min.js
@@ -1 +1 @@
-(function(){science={version:"1.0.0"},science.functor=function(a){return typeof a=="function"?a:function(){return a}},science.hypot=function(a,b){a=Math.abs(a),b=Math.abs(b);var c,d;a>b?(c=a,d=b):(c=b,d=a);var e=d/c;return c*Math.sqrt(1+e*e)}})()
\ No newline at end of file
+(function(){science={version:"1.1.0"},science.functor=function(a){return typeof a=="function"?a:function(){return a}},science.hypot=function(a,b){a=Math.abs(a),b=Math.abs(b);var c,d;a>b?(c=a,d=b):(c=b,d=a);var e=d/c;return c*Math.sqrt(1+e*e)}})()
\ No newline at end of file
diff --git a/src/core/core.js b/src/core/core.js
index e78f628..e1d5047 100644
--- a/src/core/core.js
+++ b/src/core/core.js
@@ -1 +1 @@
-science = {version: "1.0.0"}; // semver
+science = {version: "1.1.0"}; // semver
diff --git a/src/lin/lin.js b/src/lin/lin.js
new file mode 100644
index 0000000..f7792aa
--- /dev/null
+++ b/src/lin/lin.js
@@ -0,0 +1 @@
+science.lin = {};
diff --git a/src/lin/tridag.js b/src/lin/tridag.js
new file mode 100644
index 0000000..dcc46c3
--- /dev/null
+++ b/src/lin/tridag.js
@@ -0,0 +1,25 @@
+/**
+ * Solves tridiagonal systems of linear equations.
+ *
+ * Source: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
+ *
+ * @param {number[]} a
+ * @param {number[]} b
+ * @param {number[]} c
+ * @param {number[]} d
+ * @param {number[]} x
+ * @param {number} n
+ */
+science.lin.tridag = function(a, b, c, d, x, n) {
+  c[0] /= b[0];
+  d[0] /= b[0];
+  for (var i = 1; i < n; i++) {
+    var id = 1 / (b[i] - c[i-1] * a[i]);
+    c[i] *= id;
+    d[i] = (d[i] - d[i - 1] * a[i]) * id;
+  }
+  x[n] = d[n];
+  for (var i = n - 2; i >= 0; i--) {
+    x[i] = d[i] - c[i] * x[i + 1];
+  }
+};

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/science.js.git



More information about the Pkg-javascript-commits mailing list