JAL-1807 still testing
[jalviewjs.git] / bin / javajs / util / Eigen.js
index 4d28a61..b08955b 100644 (file)
-Clazz.declarePackage ("javajs.util");
-Clazz.load (["javajs.api.EigenInterface"], "javajs.util.Eigen", ["javajs.util.V3"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.n = 3;
-this.d = null;
-this.e = null;
-this.V = null;
-Clazz.instantialize (this, arguments);
-}, javajs.util, "Eigen", null, javajs.api.EigenInterface);
-Clazz.makeConstructor (c$, 
-function () {
-});
-Clazz.defineMethod (c$, "set", 
-function (n) {
-this.n = n;
-this.V =  Clazz.newDoubleArray (n, n, 0);
-this.d =  Clazz.newDoubleArray (n, 0);
-this.e =  Clazz.newDoubleArray (n, 0);
-return this;
-}, "~N");
-Clazz.overrideMethod (c$, "setM", 
-function (m) {
-this.set (m.length);
-this.calc (m);
-return this;
-}, "~A");
-Clazz.overrideMethod (c$, "getEigenvalues", 
-function () {
-return this.d;
-});
-Clazz.overrideMethod (c$, "fillFloatArrays", 
-function (eigenVectors, eigenValues) {
-for (var i = 0; i < 3; i++) {
-if (eigenVectors != null) {
-if (eigenVectors[i] == null) eigenVectors[i] =  new javajs.util.V3 ();
-eigenVectors[i].set (this.V[0][i], this.V[1][i], this.V[2][i]);
-}if (eigenValues != null) eigenValues[i] = this.d[i];
-}
-}, "~A,~A");
-Clazz.overrideMethod (c$, "getEigenvectorsFloatTransposed", 
-function () {
-var f =  Clazz.newFloatArray (this.n, this.n, 0);
-for (var i = this.n; --i >= 0; ) for (var j = this.n; --j >= 0; ) f[j][i] = this.V[i][j];
-
-
-return f;
-});
-Clazz.defineMethod (c$, "calc", 
-function (A) {
-for (var i = 0; i < this.n; i++) {
-for (var j = 0; j < this.n; j++) {
-this.V[i][j] = A[i][j];
-}
-}
-this.tred2 ();
-this.tql2 ();
-}, "~A");
-Clazz.defineMethod (c$, "getRealEigenvalues", 
-function () {
-return this.d;
-});
-Clazz.defineMethod (c$, "getImagEigenvalues", 
-function () {
-return this.e;
-});
-Clazz.defineMethod (c$, "tred2", 
-($fz = function () {
-for (var j = 0; j < this.n; j++) {
-this.d[j] = this.V[this.n - 1][j];
-}
-for (var i = this.n - 1; i > 0; i--) {
-var scale = 0.0;
-var h = 0.0;
-for (var k = 0; k < i; k++) {
-scale = scale + Math.abs (this.d[k]);
-}
-if (scale == 0.0) {
-this.e[i] = this.d[i - 1];
-for (var j = 0; j < i; j++) {
-this.d[j] = this.V[i - 1][j];
-this.V[i][j] = 0.0;
-this.V[j][i] = 0.0;
-}
-} else {
-for (var k = 0; k < i; k++) {
-this.d[k] /= scale;
-h += this.d[k] * this.d[k];
-}
-var f = this.d[i - 1];
-var g = Math.sqrt (h);
-if (f > 0) {
-g = -g;
-}this.e[i] = scale * g;
-h = h - f * g;
-this.d[i - 1] = f - g;
-for (var j = 0; j < i; j++) {
-this.e[j] = 0.0;
-}
-for (var j = 0; j < i; j++) {
-f = this.d[j];
-this.V[j][i] = f;
-g = this.e[j] + this.V[j][j] * f;
-for (var k = j + 1; k <= i - 1; k++) {
-g += this.V[k][j] * this.d[k];
-this.e[k] += this.V[k][j] * f;
-}
-this.e[j] = g;
-}
-f = 0.0;
-for (var j = 0; j < i; j++) {
-this.e[j] /= h;
-f += this.e[j] * this.d[j];
-}
-var hh = f / (h + h);
-for (var j = 0; j < i; j++) {
-this.e[j] -= hh * this.d[j];
-}
-for (var j = 0; j < i; j++) {
-f = this.d[j];
-g = this.e[j];
-for (var k = j; k <= i - 1; k++) {
-this.V[k][j] -= (f * this.e[k] + g * this.d[k]);
-}
-this.d[j] = this.V[i - 1][j];
-this.V[i][j] = 0.0;
-}
-}this.d[i] = h;
-}
-for (var i = 0; i < this.n - 1; i++) {
-this.V[this.n - 1][i] = this.V[i][i];
-this.V[i][i] = 1.0;
-var h = this.d[i + 1];
-if (h != 0.0) {
-for (var k = 0; k <= i; k++) {
-this.d[k] = this.V[k][i + 1] / h;
-}
-for (var j = 0; j <= i; j++) {
-var g = 0.0;
-for (var k = 0; k <= i; k++) {
-g += this.V[k][i + 1] * this.V[k][j];
-}
-for (var k = 0; k <= i; k++) {
-this.V[k][j] -= g * this.d[k];
-}
-}
-}for (var k = 0; k <= i; k++) {
-this.V[k][i + 1] = 0.0;
-}
-}
-for (var j = 0; j < this.n; j++) {
-this.d[j] = this.V[this.n - 1][j];
-this.V[this.n - 1][j] = 0.0;
-}
-this.V[this.n - 1][this.n - 1] = 1.0;
-this.e[0] = 0.0;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "tql2", 
-($fz = function () {
-for (var i = 1; i < this.n; i++) {
-this.e[i - 1] = this.e[i];
-}
-this.e[this.n - 1] = 0.0;
-var f = 0.0;
-var tst1 = 0.0;
-var eps = Math.pow (2.0, -52.0);
-for (var l = 0; l < this.n; l++) {
-tst1 = Math.max (tst1, Math.abs (this.d[l]) + Math.abs (this.e[l]));
-var m = l;
-while (m < this.n) {
-if (Math.abs (this.e[m]) <= eps * tst1) {
-break;
-}m++;
-}
-if (m > l) {
-var iter = 0;
-do {
-iter = iter + 1;
-var g = this.d[l];
-var p = (this.d[l + 1] - g) / (2.0 * this.e[l]);
-var r = javajs.util.Eigen.hypot (p, 1.0);
-if (p < 0) {
-r = -r;
-}this.d[l] = this.e[l] / (p + r);
-this.d[l + 1] = this.e[l] * (p + r);
-var dl1 = this.d[l + 1];
-var h = g - this.d[l];
-for (var i = l + 2; i < this.n; i++) {
-this.d[i] -= h;
-}
-f = f + h;
-p = this.d[m];
-var c = 1.0;
-var c2 = c;
-var c3 = c;
-var el1 = this.e[l + 1];
-var s = 0.0;
-var s2 = 0.0;
-for (var i = m - 1; i >= l; i--) {
-c3 = c2;
-c2 = c;
-s2 = s;
-g = c * this.e[i];
-h = c * p;
-r = javajs.util.Eigen.hypot (p, this.e[i]);
-this.e[i + 1] = s * r;
-s = this.e[i] / r;
-c = p / r;
-p = c * this.d[i] - s * g;
-this.d[i + 1] = h + s * (c * g + s * this.d[i]);
-for (var k = 0; k < this.n; k++) {
-h = this.V[k][i + 1];
-this.V[k][i + 1] = s * this.V[k][i] + c * h;
-this.V[k][i] = c * this.V[k][i] - s * h;
-}
-}
-p = -s * s2 * c3 * el1 * this.e[l] / dl1;
-this.e[l] = s * p;
-this.d[l] = c * p;
-} while (Math.abs (this.e[l]) > eps * tst1);
-}this.d[l] = this.d[l] + f;
-this.e[l] = 0.0;
-}
-for (var i = 0; i < this.n - 1; i++) {
-var k = i;
-var p = this.d[i];
-for (var j = i + 1; j < this.n; j++) {
-if (this.d[j] < p) {
-k = j;
-p = this.d[j];
-}}
-if (k != i) {
-this.d[k] = this.d[i];
-this.d[i] = p;
-for (var j = 0; j < this.n; j++) {
-p = this.V[j][i];
-this.V[j][i] = this.V[j][k];
-this.V[j][k] = p;
-}
-}}
-}, $fz.isPrivate = true, $fz));
-c$.hypot = Clazz.defineMethod (c$, "hypot", 
-($fz = function (a, b) {
-var r;
-if (Math.abs (a) > Math.abs (b)) {
-r = b / a;
-r = Math.abs (a) * Math.sqrt (1 + r * r);
-} else if (b != 0) {
-r = a / b;
-r = Math.abs (b) * Math.sqrt (1 + r * r);
-} else {
-r = 0.0;
-}return r;
-}, $fz.isPrivate = true, $fz), "~N,~N");
-});
+Clazz.declarePackage ("javajs.util");\r
+Clazz.load (["javajs.api.EigenInterface"], "javajs.util.Eigen", ["javajs.util.V3"], function () {\r
+c$ = Clazz.decorateAsClass (function () {\r
+this.n = 3;\r
+this.d = null;\r
+this.e = null;\r
+this.V = null;\r
+Clazz.instantialize (this, arguments);\r
+}, javajs.util, "Eigen", null, javajs.api.EigenInterface);\r
+Clazz.makeConstructor (c$, \r
+function () {\r
+});\r
+Clazz.defineMethod (c$, "set", \r
+function (n) {\r
+this.n = n;\r
+this.V =  Clazz.newDoubleArray (n, n, 0);\r
+this.d =  Clazz.newDoubleArray (n, 0);\r
+this.e =  Clazz.newDoubleArray (n, 0);\r
+return this;\r
+}, "~N");\r
+Clazz.overrideMethod (c$, "setM", \r
+function (m) {\r
+this.set (m.length);\r
+this.calc (m);\r
+return this;\r
+}, "~A");\r
+Clazz.overrideMethod (c$, "getEigenvalues", \r
+function () {\r
+return this.d;\r
+});\r
+Clazz.overrideMethod (c$, "fillFloatArrays", \r
+function (eigenVectors, eigenValues) {\r
+for (var i = 0; i < 3; i++) {\r
+if (eigenVectors != null) {\r
+if (eigenVectors[i] == null) eigenVectors[i] =  new javajs.util.V3 ();\r
+eigenVectors[i].set (this.V[0][i], this.V[1][i], this.V[2][i]);\r
+}if (eigenValues != null) eigenValues[i] = this.d[i];\r
+}\r
+}, "~A,~A");\r
+Clazz.overrideMethod (c$, "getEigenvectorsFloatTransposed", \r
+function () {\r
+var f =  Clazz.newFloatArray (this.n, this.n, 0);\r
+for (var i = this.n; --i >= 0; ) for (var j = this.n; --j >= 0; ) f[j][i] = this.V[i][j];\r
+\r
+\r
+return f;\r
+});\r
+Clazz.defineMethod (c$, "calc", \r
+function (A) {\r
+for (var i = 0; i < this.n; i++) {\r
+for (var j = 0; j < this.n; j++) {\r
+this.V[i][j] = A[i][j];\r
+}\r
+}\r
+this.tred2 ();\r
+this.tql2 ();\r
+}, "~A");\r
+Clazz.defineMethod (c$, "getRealEigenvalues", \r
+function () {\r
+return this.d;\r
+});\r
+Clazz.defineMethod (c$, "getImagEigenvalues", \r
+function () {\r
+return this.e;\r
+});\r
+Clazz.defineMethod (c$, "tred2", \r
+($fz = function () {\r
+for (var j = 0; j < this.n; j++) {\r
+this.d[j] = this.V[this.n - 1][j];\r
+}\r
+for (var i = this.n - 1; i > 0; i--) {\r
+var scale = 0.0;\r
+var h = 0.0;\r
+for (var k = 0; k < i; k++) {\r
+scale = scale + Math.abs (this.d[k]);\r
+}\r
+if (scale == 0.0) {\r
+this.e[i] = this.d[i - 1];\r
+for (var j = 0; j < i; j++) {\r
+this.d[j] = this.V[i - 1][j];\r
+this.V[i][j] = 0.0;\r
+this.V[j][i] = 0.0;\r
+}\r
+} else {\r
+for (var k = 0; k < i; k++) {\r
+this.d[k] /= scale;\r
+h += this.d[k] * this.d[k];\r
+}\r
+var f = this.d[i - 1];\r
+var g = Math.sqrt (h);\r
+if (f > 0) {\r
+g = -g;\r
+}this.e[i] = scale * g;\r
+h = h - f * g;\r
+this.d[i - 1] = f - g;\r
+for (var j = 0; j < i; j++) {\r
+this.e[j] = 0.0;\r
+}\r
+for (var j = 0; j < i; j++) {\r
+f = this.d[j];\r
+this.V[j][i] = f;\r
+g = this.e[j] + this.V[j][j] * f;\r
+for (var k = j + 1; k <= i - 1; k++) {\r
+g += this.V[k][j] * this.d[k];\r
+this.e[k] += this.V[k][j] * f;\r
+}\r
+this.e[j] = g;\r
+}\r
+f = 0.0;\r
+for (var j = 0; j < i; j++) {\r
+this.e[j] /= h;\r
+f += this.e[j] * this.d[j];\r
+}\r
+var hh = f / (h + h);\r
+for (var j = 0; j < i; j++) {\r
+this.e[j] -= hh * this.d[j];\r
+}\r
+for (var j = 0; j < i; j++) {\r
+f = this.d[j];\r
+g = this.e[j];\r
+for (var k = j; k <= i - 1; k++) {\r
+this.V[k][j] -= (f * this.e[k] + g * this.d[k]);\r
+}\r
+this.d[j] = this.V[i - 1][j];\r
+this.V[i][j] = 0.0;\r
+}\r
+}this.d[i] = h;\r
+}\r
+for (var i = 0; i < this.n - 1; i++) {\r
+this.V[this.n - 1][i] = this.V[i][i];\r
+this.V[i][i] = 1.0;\r
+var h = this.d[i + 1];\r
+if (h != 0.0) {\r
+for (var k = 0; k <= i; k++) {\r
+this.d[k] = this.V[k][i + 1] / h;\r
+}\r
+for (var j = 0; j <= i; j++) {\r
+var g = 0.0;\r
+for (var k = 0; k <= i; k++) {\r
+g += this.V[k][i + 1] * this.V[k][j];\r
+}\r
+for (var k = 0; k <= i; k++) {\r
+this.V[k][j] -= g * this.d[k];\r
+}\r
+}\r
+}for (var k = 0; k <= i; k++) {\r
+this.V[k][i + 1] = 0.0;\r
+}\r
+}\r
+for (var j = 0; j < this.n; j++) {\r
+this.d[j] = this.V[this.n - 1][j];\r
+this.V[this.n - 1][j] = 0.0;\r
+}\r
+this.V[this.n - 1][this.n - 1] = 1.0;\r
+this.e[0] = 0.0;\r
+}, $fz.isPrivate = true, $fz));\r
+Clazz.defineMethod (c$, "tql2", \r
+($fz = function () {\r
+for (var i = 1; i < this.n; i++) {\r
+this.e[i - 1] = this.e[i];\r
+}\r
+this.e[this.n - 1] = 0.0;\r
+var f = 0.0;\r
+var tst1 = 0.0;\r
+var eps = Math.pow (2.0, -52.0);\r
+for (var l = 0; l < this.n; l++) {\r
+tst1 = Math.max (tst1, Math.abs (this.d[l]) + Math.abs (this.e[l]));\r
+var m = l;\r
+while (m < this.n) {\r
+if (Math.abs (this.e[m]) <= eps * tst1) {\r
+break;\r
+}m++;\r
+}\r
+if (m > l) {\r
+var iter = 0;\r
+do {\r
+iter = iter + 1;\r
+var g = this.d[l];\r
+var p = (this.d[l + 1] - g) / (2.0 * this.e[l]);\r
+var r = javajs.util.Eigen.hypot (p, 1.0);\r
+if (p < 0) {\r
+r = -r;\r
+}this.d[l] = this.e[l] / (p + r);\r
+this.d[l + 1] = this.e[l] * (p + r);\r
+var dl1 = this.d[l + 1];\r
+var h = g - this.d[l];\r
+for (var i = l + 2; i < this.n; i++) {\r
+this.d[i] -= h;\r
+}\r
+f = f + h;\r
+p = this.d[m];\r
+var c = 1.0;\r
+var c2 = c;\r
+var c3 = c;\r
+var el1 = this.e[l + 1];\r
+var s = 0.0;\r
+var s2 = 0.0;\r
+for (var i = m - 1; i >= l; i--) {\r
+c3 = c2;\r
+c2 = c;\r
+s2 = s;\r
+g = c * this.e[i];\r
+h = c * p;\r
+r = javajs.util.Eigen.hypot (p, this.e[i]);\r
+this.e[i + 1] = s * r;\r
+s = this.e[i] / r;\r
+c = p / r;\r
+p = c * this.d[i] - s * g;\r
+this.d[i + 1] = h + s * (c * g + s * this.d[i]);\r
+for (var k = 0; k < this.n; k++) {\r
+h = this.V[k][i + 1];\r
+this.V[k][i + 1] = s * this.V[k][i] + c * h;\r
+this.V[k][i] = c * this.V[k][i] - s * h;\r
+}\r
+}\r
+p = -s * s2 * c3 * el1 * this.e[l] / dl1;\r
+this.e[l] = s * p;\r
+this.d[l] = c * p;\r
+} while (Math.abs (this.e[l]) > eps * tst1);\r
+}this.d[l] = this.d[l] + f;\r
+this.e[l] = 0.0;\r
+}\r
+for (var i = 0; i < this.n - 1; i++) {\r
+var k = i;\r
+var p = this.d[i];\r
+for (var j = i + 1; j < this.n; j++) {\r
+if (this.d[j] < p) {\r
+k = j;\r
+p = this.d[j];\r
+}}\r
+if (k != i) {\r
+this.d[k] = this.d[i];\r
+this.d[i] = p;\r
+for (var j = 0; j < this.n; j++) {\r
+p = this.V[j][i];\r
+this.V[j][i] = this.V[j][k];\r
+this.V[j][k] = p;\r
+}\r
+}}\r
+}, $fz.isPrivate = true, $fz));\r
+c$.hypot = Clazz.defineMethod (c$, "hypot", \r
+($fz = function (a, b) {\r
+var r;\r
+if (Math.abs (a) > Math.abs (b)) {\r
+r = b / a;\r
+r = Math.abs (a) * Math.sqrt (1 + r * r);\r
+} else if (b != 0) {\r
+r = a / b;\r
+r = Math.abs (b) * Math.sqrt (1 + r * r);\r
+} else {\r
+r = 0.0;\r
+}return r;\r
+}, $fz.isPrivate = true, $fz), "~N,~N");\r
+});\r