From e2b83da9674399bad7f6b6e5768692aaacd0b3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 11 Jun 2015 15:08:12 +0200 Subject: [PATCH 1/2] :arrow_up: matrix v0.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 59b318d..e810625 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "homepage": "https://github.com/mljs/ml", "dependencies": { "ml-distance": "1.0.0", - "ml-matrix": "0.0.3", + "ml-matrix": "0.0.4", "ml-som": "0.0.6", "ml-stat": "1.0.1" }, From cd7aba20d4300f15c81832b4ee568dbd79e2ba25 Mon Sep 17 00:00:00 2001 From: cheminfo bot Date: Wed, 17 Jun 2015 15:11:18 +0000 Subject: [PATCH 2/2] Release v0.3.0 --- bower.json | 2 +- dist/ml.js | 363 +++++++++++++++++++++++++-------------------- dist/ml.min.js | 6 +- dist/ml.min.js.map | 2 +- package.json | 2 +- 5 files changed, 211 insertions(+), 164 deletions(-) diff --git a/bower.json b/bower.json index 4ccdcfb..78046c0 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ml", - "version": "0.2.3", + "version": "0.3.0", "main": [ "dist/ml.js", "dist/ml.min.js" diff --git a/dist/ml.js b/dist/ml.js index 9c80589..9409388 100644 --- a/dist/ml.js +++ b/dist/ml.js @@ -1,6 +1,6 @@ /** * ml - Machine learning tools - * @version v0.2.3 + * @version v0.3.0 * @link https://github.com/mljs/ml * @license MIT */ @@ -27,7 +27,7 @@ var NN = exports.NN = exports.nn = {}; NN.SOM = require('ml-som'); -},{"ml-distance":52,"ml-matrix":54,"ml-som":56,"ml-stat/array":59,"ml-stat/matrix":60}],2:[function(require,module,exports){ +},{"ml-distance":52,"ml-matrix":60,"ml-som":62,"ml-stat/array":65,"ml-stat/matrix":66}],2:[function(require,module,exports){ module.exports = function additiveSymmetric(a, b) { var i = 0, ii = a.length, @@ -616,10 +616,105 @@ exports.avg = require('./dist/avg'); },{"./dist/additiveSymmetric":2,"./dist/avg":3,"./dist/bhattacharyya":4,"./dist/canberra":5,"./dist/chebyshev":6,"./dist/clark":7,"./dist/cosine":8,"./dist/czekanowski":9,"./dist/czekanowskiS":10,"./dist/dice":11,"./dist/diceS":12,"./dist/divergence":13,"./dist/euclidean":14,"./dist/fidelity":15,"./dist/gower":16,"./dist/harmonicMean":17,"./dist/hellinger":18,"./dist/innerProduct":19,"./dist/intersection":20,"./dist/intersectionS":21,"./dist/jaccard":22,"./dist/jaccardS":23,"./dist/jeffreys":24,"./dist/jensenDifference":25,"./dist/jensenShannon":26,"./dist/kdivergence":27,"./dist/kulczynski":28,"./dist/kulczynskiS":29,"./dist/kullbackLeibler":30,"./dist/kumarHassebrook":31,"./dist/kumarJohnson":32,"./dist/lorentzian":33,"./dist/manhattan":34,"./dist/matusita":35,"./dist/minkowski":36,"./dist/motyka":37,"./dist/neyman":38,"./dist/pearson":39,"./dist/probabilisticSymmetric":40,"./dist/ruzicka":41,"./dist/soergel":42,"./dist/sorensen":43,"./dist/squared":45,"./dist/squared-euclidean":44,"./dist/squaredChord":46,"./dist/squaredChordS":47,"./dist/taneja":48,"./dist/tanimoto":49,"./dist/topsoe":50,"./dist/waveHedges":51}],53:[function(require,module,exports){ 'use strict'; -var Matrix = require('./matrix'); +var Matrix = require('../matrix'); + +// https://github.com/lutzroeder/Mapack/blob/master/Source/CholeskyDecomposition.cs +function CholeskyDecomposition(value) { + if (!(this instanceof CholeskyDecomposition)) { + return new CholeskyDecomposition(value); + } + value = Matrix.checkMatrix(value); + if (!value.isSymmetric()) + throw new Error('Matrix is not symmetric'); + + var a = value, + dimension = a.rows, + l = new Matrix(dimension, dimension), + positiveDefinite = true, + i, j, k; + + for (j = 0; j < dimension; j++) { + var Lrowj = l[j]; + var d = 0; + for (k = 0; k < j; k++) { + var Lrowk = l[k]; + var s = 0; + for (i = 0; i < k; i++) { + s += Lrowk[i] * Lrowj[i]; + } + Lrowj[k] = s = (a[j][k] - s) / l[k][k]; + d = d + s * s; + } + + d = a[j][j] - d; + + positiveDefinite &= (d > 0); + l[j][j] = Math.sqrt(Math.max(d, 0)); + for (k = j + 1; k < dimension; k++) { + l[j][k] = 0; + } + } + + if (!positiveDefinite) { + throw new Error('Matrix is not positive definite'); + } + + this.L = l; +} + +CholeskyDecomposition.prototype = { + get leftTriangularFactor() { + return this.L; + }, + solve: function (value) { + value = Matrix.checkMatrix(value); + + var l = this.L, + dimension = l.rows; + + if (value.rows !== dimension) { + throw new Error('Matrix dimensions do not match'); + } + + var count = value.columns, + B = value.clone(), + i, j, k; + + for (k = 0; k < dimension; k++) { + for (j = 0; j < count; j++) { + for (i = 0; i < k; i++) { + B[k][j] -= B[i][j] * l[k][i]; + } + B[k][j] /= l[k][k]; + } + } + + for (k = dimension - 1; k >= 0; k--) { + for (j = 0; j < count; j++) { + for (i = k + 1; i < dimension; i++) { + B[k][j] -= B[i][j] * l[i][k]; + } + B[k][j] /= l[k][k]; + } + } + + return B; + } +}; + +module.exports = CholeskyDecomposition; + +},{"../matrix":61}],54:[function(require,module,exports){ +'use strict'; + +var Matrix = require('../matrix'); +var hypotenuse = require('./util').hypotenuse; // https://github.com/lutzroeder/Mapack/blob/master/Source/EigenvalueDecomposition.cs function EigenvalueDecomposition(matrix) { + if (!(this instanceof EigenvalueDecomposition)) { + return new EigenvalueDecomposition(matrix); + } matrix = Matrix.checkMatrix(matrix); if (!matrix.isSquare()) { throw new Error('Matrix is not a square matrix'); @@ -653,9 +748,44 @@ function EigenvalueDecomposition(matrix) { hqr2(n, e, d, V, H); } - return new EigenvalueDecompositionResult(n, e, d, V); + this.n = n; + this.e = e; + this.d = d; + this.V = V; } +EigenvalueDecomposition.prototype = { + get realEigenvalues() { + return this.d; + }, + get imaginaryEigenvalues() { + return this.e; + }, + get eigenvectorMatrix() { + return this.V; + }, + get diagonalMatrix() { + var n = this.n, + e = this.e, + d = this.d, + X = new Matrix(n, n), + i, j; + for (i = 0; i < n; i++) { + for (j = 0; j < n; j++) { + X[i][j] = 0; + } + X[i][i] = d[i]; + if (e[i] > 0) { + X[i][i + 1] = e[i]; + } + else if (e[i] < 0) { + X[i][i - 1] = e[i]; + } + } + return X; + } +}; + function tred2(n, e, d, V) { var f, g, h, i, j, k, @@ -1340,47 +1470,18 @@ function cdiv(xr, xi, yr, yi) { } } -function EigenvalueDecompositionResult(n, e, d, V) { - this.n = n; - this.e = e; - this.d = d; - this.V = V; -} +module.exports = EigenvalueDecomposition; -EigenvalueDecompositionResult.prototype = { - get realEigenvalues() { - return this.d; - }, - get imaginaryEigenvalues() { - return this.e; - }, - get eigenvectorMatrix() { - return this.V; - }, - get diagonalMatrix() { - var n = this.n, - e = this.e, - d = this.d, - X = new Matrix(n, n), - i, j; - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - X[i][j] = 0; - } - X[i][i] = d[i]; - if (e[i] > 0) { - X[i][i + 1] = e[i]; - } - else if (e[i] < 0) { - X[i][i - 1] = e[i]; - } - } - return X; - } -}; +},{"../matrix":61,"./util":58}],55:[function(require,module,exports){ +'use strict'; + +var Matrix = require('../matrix'); // https://github.com/lutzroeder/Mapack/blob/master/Source/LuDecomposition.cs function LuDecomposition(matrix) { + if (!(this instanceof LuDecomposition)) { + return new LuDecomposition(matrix); + } matrix = Matrix.checkMatrix(matrix); var lu = matrix.clone(), @@ -1441,17 +1542,12 @@ function LuDecomposition(matrix) { } } - return new LuDecompositionResult(lu, pivotVector, pivotSign); - -} - -function LuDecompositionResult(lu, vector, sign) { this.LU = lu; - this.pivotVector = vector; - this.pivotSign = sign; + this.pivotVector = pivotVector; + this.pivotSign = pivotSign; } -LuDecompositionResult.prototype = { +LuDecomposition.prototype = { isSingular: function () { var data = this.LU, col = data.columns; @@ -1545,9 +1641,20 @@ LuDecompositionResult.prototype = { } }; +module.exports = LuDecomposition; + +},{"../matrix":61}],56:[function(require,module,exports){ +'use strict'; + +var Matrix = require('../matrix'); +var hypotenuse = require('./util').hypotenuse; + //https://github.com/lutzroeder/Mapack/blob/master/Source/QrDecomposition.cs function QrDecomposition(value) { - value = Matrix.checkMatrix(value) + if (!(this instanceof QrDecomposition)) { + return new QrDecomposition(value); + } + value = Matrix.checkMatrix(value); var qr = value.clone(), m = value.rows, @@ -1582,15 +1689,11 @@ function QrDecomposition(value) { rdiag[k] = -nrm; } - return new QrDecompositionResult(qr, rdiag); -} - -function QrDecompositionResult(qr, rdiag) { this.QR = qr; this.Rdiag = rdiag; } -QrDecompositionResult.prototype = { +QrDecomposition.prototype = { solve: function (value) { value = Matrix.checkMatrix(value); @@ -1690,8 +1793,19 @@ QrDecompositionResult.prototype = { } }; +module.exports = QrDecomposition; + +},{"../matrix":61,"./util":58}],57:[function(require,module,exports){ +'use strict'; + +var Matrix = require('../matrix'); +var hypotenuse = require('./util').hypotenuse; + // https://github.com/lutzroeder/Mapack/blob/master/Source/SingularValueDecomposition.cs function SingularValueDecomposition(value, options) { + if (!(this instanceof SingularValueDecomposition)) { + return new SingularValueDecomposition(value, options); + } value = Matrix.checkMatrix(value); options = options || {}; @@ -1711,7 +1825,7 @@ function SingularValueDecomposition(value, options) { var swapped = false; if (m < n) { if (!autoTranspose) { - console.warn('WARNING: Computing SVD on a matrix with more columns than rows.'); + console.warn('Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose'); } else { a = a.transpose(); m = a.rows; @@ -2062,10 +2176,6 @@ function SingularValueDecomposition(value, options) { U = tmp; } - return new SingularValueDecompositionResult(m, n, s, U, V); -} - -function SingularValueDecompositionResult(m, n, s, U, V) { this.m = m; this.n = n; this.s = s; @@ -2073,7 +2183,7 @@ function SingularValueDecompositionResult(m, n, s, U, V) { this.V = V; } -SingularValueDecompositionResult.prototype = { +SingularValueDecomposition.prototype = { get condition() { return this.s[0] / this.s[Math.min(this.m, this.n) - 1]; }, @@ -2119,8 +2229,9 @@ SingularValueDecompositionResult.prototype = { for (i = 0; i < scols; i++) { if (Math.abs(this.s[i]) <= e) { Ls[i][i] = 0; + } else { + Ls[i][i] = 1 / this.s[i]; } - else Ls[i][i] = 1 / this.s[i]; } @@ -2156,6 +2267,8 @@ SingularValueDecompositionResult.prototype = { for (j = 0; j < vcols; j++) { if (Math.abs(this.s[j]) > e) { X[i][j] = this.V[i][j] / this.s[j]; + } else { + X[i][j] = 0; } } } @@ -2179,92 +2292,12 @@ SingularValueDecompositionResult.prototype = { } }; -// https://github.com/lutzroeder/Mapack/blob/master/Source/CholeskyDecomposition.cs -function CholeskyDecomposition(value) { - value = Matrix.checkMatrix(value); - if (!value.isSymmetric()) - throw new Error('Matrix is not symmetric'); - - var a = value, - dimension = a.rows, - l = new Matrix(dimension, dimension), - positiveDefinite = true, - i, j, k; - - for (j = 0; j < dimension; j++) { - var Lrowj = l[j]; - var d = 0; - for (k = 0; k < j; k++) { - var Lrowk = l[k]; - var s = 0; - for (i = 0; i < k; i++) { - s += Lrowk[i] * Lrowj[i]; - } - Lrowj[k] = s = (a[j][k] - s) / l[k][k]; - d = d + s * s; - } - - d = a[j][j] - d; - - positiveDefinite &= (d > 0); - l[j][j] = Math.sqrt(Math.max(d, 0)); - for (k = j + 1; k < dimension; k++) { - l[j][k] = 0; - } - } - - if (!positiveDefinite) { - throw new Error('Matrix is not positive definite'); - } - - return new CholeskyDecompositionResult(l); -} - -function CholeskyDecompositionResult(l) { - this.L = l; -} - -CholeskyDecompositionResult.prototype = { - get leftTriangularFactor() { - return this.L; - }, - solve: function (value) { - value = Matrix.checkMatrix(value); - - var l = this.L, - dimension = l.rows; - - if (value.rows !== dimension) { - throw new Error('Matrix dimensions do not match'); - } - - var count = value.columns, - B = value.clone(), - i, j, k; - - for (k = 0; k < dimension; k++) { - for (j = 0; j < count; j++) { - for (i = 0; i < k; i++) { - B[k][j] -= B[i][j] * l[k][i]; - } - B[k][j] /= l[k][k]; - } - } - - for (k = dimension - 1; k >= 0; k--) { - for (j = 0; j < count; j++) { - for (i = k + 1; i < dimension; i++) { - B[k][j] -= B[i][j] * l[i][k]; - } - B[k][j] /= l[k][k]; - } - } +module.exports = SingularValueDecomposition; - return B; - } -}; +},{"../matrix":61,"./util":58}],58:[function(require,module,exports){ +'use strict'; -function hypotenuse(a, b) { +exports.hypotenuse = function hypotenuse(a, b) { var r; if (Math.abs(a) > Math.abs(b)) { r = b / a; @@ -2275,7 +2308,18 @@ function hypotenuse(a, b) { return Math.abs(b) * Math.sqrt(1 + r * r); } return 0; -} +}; + +},{}],59:[function(require,module,exports){ +'use strict'; + +var Matrix = require('./matrix'); + +var SingularValueDecomposition = require('./dc/svd'); +var EigenvalueDecomposition = require('./dc/evd'); +var LuDecomposition = require('./dc/lu'); +var QrDecomposition = require('./dc/qr'); +var CholeskyDecomposition = require('./dc/cholesky'); function inverse(matrix) { return solve(matrix, Matrix.eye(matrix.rows)); @@ -2294,26 +2338,27 @@ Matrix.prototype.solve = function (other) { }; module.exports = { - LuDecomposition: LuDecomposition, - LU: LuDecomposition, - QrDecomposition: QrDecomposition, - QR: QrDecomposition, SingularValueDecomposition: SingularValueDecomposition, SVD: SingularValueDecomposition, EigenvalueDecomposition: EigenvalueDecomposition, EVD: EigenvalueDecomposition, + LuDecomposition: LuDecomposition, + LU: LuDecomposition, + QrDecomposition: QrDecomposition, + QR: QrDecomposition, CholeskyDecomposition: CholeskyDecomposition, CHO: CholeskyDecomposition, inverse: inverse, solve: solve }; -},{"./matrix":55}],54:[function(require,module,exports){ +},{"./dc/cholesky":53,"./dc/evd":54,"./dc/lu":55,"./dc/qr":56,"./dc/svd":57,"./matrix":61}],60:[function(require,module,exports){ 'use strict'; module.exports = require('./matrix'); module.exports.Decompositions = module.exports.DC = require('./decompositions'); -},{"./decompositions":53,"./matrix":55}],55:[function(require,module,exports){ + +},{"./decompositions":59,"./matrix":61}],61:[function(require,module,exports){ 'use strict'; var Asplice = Array.prototype.splice, @@ -3603,6 +3648,8 @@ Matrix.prototype.dot = function dot(other) { * @returns {Matrix} */ Matrix.prototype.mmul = function mmul(other) { + if (!Matrix.isMatrix(other)) + throw new MatrixError('parameter "other" must be a matrix'); if (this.columns !== other.rows) console.warn('Number of columns of left matrix are not equal to number of rows of right matrix.'); @@ -3774,7 +3821,7 @@ Matrix.MatrixError = MatrixError; module.exports = Matrix; -},{}],56:[function(require,module,exports){ +},{}],62:[function(require,module,exports){ 'use strict'; var NodeSquare = require('./node-square'), @@ -4196,7 +4243,7 @@ function getMaxDistance(distance, numWeights) { } module.exports = SOM; -},{"./node-hexagonal":57,"./node-square":58}],57:[function(require,module,exports){ +},{"./node-hexagonal":63,"./node-square":64}],63:[function(require,module,exports){ var NodeSquare = require('./node-square'); function NodeHexagonal(x, y, weights, som) { @@ -4227,7 +4274,7 @@ NodeHexagonal.prototype.getPosition = function getPosition() { }; module.exports = NodeHexagonal; -},{"./node-square":58}],58:[function(require,module,exports){ +},{"./node-square":64}],64:[function(require,module,exports){ function NodeSquare(x, y, weights, som) { this.x = x; this.y = y; @@ -4334,7 +4381,7 @@ NodeSquare.prototype.getPosition = function getPosition(element) { }; module.exports = NodeSquare; -},{}],59:[function(require,module,exports){ +},{}],65:[function(require,module,exports){ 'use strict'; // https://github.com/accord-net/framework/blob/development/Sources/Accord.Statistics/Tools.cs @@ -4699,7 +4746,7 @@ module.exports = { cumulativeSum: cumulativeSum }; -},{}],60:[function(require,module,exports){ +},{}],66:[function(require,module,exports){ 'use strict'; // https://github.com/accord-net/framework/blob/development/Sources/Accord.Statistics/Tools.cs diff --git a/dist/ml.min.js b/dist/ml.min.js index eac8cc7..dc75726 100644 --- a/dist/ml.min.js +++ b/dist/ml.min.js @@ -1,4 +1,4 @@ -// ml@v0.2.3, MIT licensed. https://github.com/mljs/ml -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r;"undefined"!=typeof window?r=window:"undefined"!=typeof global?r=global:"undefined"!=typeof self&&(r=self),r.ML=t()}}(function(){var define,module,exports;return function t(r,n,o){function e(s,a){if(!n[s]){if(!r[s]){var h="function"==typeof require&&require;if(!a&&h)return h(s,!0);if(i)return i(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var u=n[s]={exports:{}};r[s][0].call(u.exports,function(t){var n=r[s][1][t];return e(n?n:t)},u,u.exports,t,r,n,o)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;sn;n++)e+=(t[n]-r[n])*(t[n]-r[n])*(t[n]+r[n])/(t[n]*r[n]);return 2*e}},{}],3:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)i=Math.abs(t[s]-r[s]),e+=i,i>o&&(o=i);return(o+e)/2}},{}],4:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return-Math.log(o)}},{}],5:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e])/(t[e]+r[e]);return o}},{}],6:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)e=Math.abs(t[i]-r[i]),e>o&&(o=e);return o}},{}],7:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.sqrt((t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n])));return 2*e}},{}],8:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(Math.sqrt(e)*Math.sqrt(i))}},{}],9:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-2*o/e}},{}],10:[function(t,r){var n=t("./czekanowski");r.exports=function(t,r){return 1-n(t,r)}},{"./czekanowski":9}],11:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*t[s],e+=r[s]*r[s],i+=(t[s]-r[s])*(t[s]-r[s]);return i/(o+e)}},{}],12:[function(t,r){var n=t("./dice");r.exports=function(t,r){return 1-n(t,r)}},{"./dice":11}],13:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n]));return 2*e}},{}],14:[function(t,r){var n=t("./squared-euclidean");r.exports=function(t,r){return Math.sqrt(n(t,r))}},{"./squared-euclidean":44}],15:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return o}},{}],16:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e]);return o/n}},{}],17:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e]/(t[e]+r[e]);return 2*o}},{}],18:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return 2*Math.sqrt(1-o)}},{}],19:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e];return o}},{}],20:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.min(t[e],r[e]);return 1-o}},{}],21:[function(t,r){var n=t("./intersection");r.exports=function(t,r){return 1-n(t,r)}},{"./intersection":20}],22:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0,a=0;n>a;a++)o+=t[a]*r[a],e+=t[a]*t[a],i+=r[a]*r[a],s+=(t[a]-r[a])*(t[a]-r[a]);return s/(e+i-o)}},{}],23:[function(t,r){var n=t("./jaccard");r.exports=function(t,r){return 1-n(t,r)}},{"./jaccard":22}],24:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]-r[e])*Math.log(t[e]/r[e]);return o}},{}],25:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]*Math.log(t[e])+r[e]*Math.log(r[e]))/2-(t[e]+r[e])/2*Math.log((t[e]+r[e])/2);return o}},{}],26:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=t[i]*Math.log(2*t[i]/(t[i]+r[i])),e+=r[i]*Math.log(2*r[i]/(t[i]+r[i]));return(o+e)/2}},{}],27:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]));return o}},{}],28:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.min(t[i],r[i]);return o/e}},{}],29:[function(t,r){var n=t("./kulczynski");r.exports=function(t,r){return 1/n(t,r)}},{"./kulczynski":28}],30:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(t[e]/r[e]);return o}},{}],31:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(e+i-o)}},{}],32:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.pow(t[e]*t[e]-r[e]*r[e],2)/(2*Math.pow(t[e]*r[e],1.5));return o}},{}],33:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.log(Math.abs(t[e]-r[e])+1);return o}},{}],34:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.abs(t[n]-r[n]);return e}},{}],35:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return Math.sqrt(2-2*o)}},{}],36:[function(t,r){r.exports=function(t,r,n){for(var o=0,e=t.length,i=0;e>o;o++)i+=Math.pow(Math.abs(t[o]-r[o]),n);return Math.pow(i,1/n)}},{}],37:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-o/e}},{}],38:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/t[n];return e}},{}],39:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/r[n];return e}},{}],40:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return 2*e}},{}],41:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],42:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],43:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=t[i]+r[i];return o/e}},{}],44:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n]);return e}},{}],45:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return e}},{}],46:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(Math.sqrt(t[e])-Math.sqrt(r[e]))*(Math.sqrt(t[e])-Math.sqrt(r[e]));return o}},{}],47:[function(t,r){var n=t("./squaredChord");r.exports=function(t,r){return 1-n(t,r)}},{"./squaredChord":46}],48:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]+r[e])/2*Math.log((t[e]+r[e])/(2*Math.sqrt(t[e]*r[e])));return o}},{}],49:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s],e+=r[s],i+=Math.min(t[s],r[s]);return(o+e-2*i)/(o+e-i)}},{}],50:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]))+r[e]*Math.log(2*r[e]/(t[e]+r[e]));return o}},{}],51:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=1-Math.min(t[e],r[e])/Math.max(t[e],r[e]);return o}},{}],52:[function(t,r,n){n.euclidean=t("./dist/euclidean"),n.squaredEuclidean=t("./dist/squared-euclidean"),n.manhattan=t("./dist/manhattan"),n.minkowski=t("./dist/minkowski"),n.chebyshev=t("./dist/chebyshev"),n.sorensen=t("./dist/sorensen"),n.gower=t("./dist/gower"),n.soergel=t("./dist/soergel"),n.kulczynski=t("./dist/kulczynski"),n.kulczynskiS=t("./dist/kulczynskiS"),n.canberra=t("./dist/canberra"),n.lorentzian=t("./dist/lorentzian"),n.intersection=t("./dist/intersection"),n.intersectionS=t("./dist/intersectionS"),n.waveHedges=t("./dist/waveHedges"),n.czekanowski=t("./dist/czekanowski"),n.czekanowskiS=t("./dist/czekanowskiS"),n.motyka=t("./dist/motyka"),n.kulczynskiS=t("./dist/kulczynskiS"),n.ruzicka=t("./dist/ruzicka"),n.tanimoto=t("./dist/tanimoto"),n.innerProduct=t("./dist/innerProduct"),n.harmonicMean=t("./dist/harmonicMean"),n.cosine=t("./dist/cosine"),n.kumarHassebrook=t("./dist/kumarHassebrook"),n.jaccard=t("./dist/jaccard"),n.jaccardS=t("./dist/jaccardS"),n.dice=t("./dist/dice"),n.diceS=t("./dist/diceS"),n.fidelity=t("./dist/fidelity"),n.bhattacharyya=t("./dist/bhattacharyya"),n.hellinger=t("./dist/hellinger"),n.matusita=t("./dist/matusita"),n.squaredChord=t("./dist/squaredChord"),n.squaredChordS=t("./dist/squaredChordS"),n.pearson=t("./dist/pearson"),n.neyman=t("./dist/neyman"),n.squared=t("./dist/squared"),n.probabilisticSymmetric=t("./dist/probabilisticSymmetric"),n.divergence=t("./dist/divergence"),n.clark=t("./dist/clark"),n.additiveSymmetric=t("./dist/additiveSymmetric"),n.kullbackLeibler=t("./dist/kullbackLeibler"),n.jeffreys=t("./dist/jeffreys"),n.kdivergence=t("./dist/kdivergence"),n.topsoe=t("./dist/topsoe"),n.jensenShannon=t("./dist/jensenShannon"),n.jensenDifference=t("./dist/jensenDifference"),n.taneja=t("./dist/taneja"),n.kumarJohnson=t("./dist/kumarJohnson"),n.avg=t("./dist/avg")},{"./dist/additiveSymmetric":2,"./dist/avg":3,"./dist/bhattacharyya":4,"./dist/canberra":5,"./dist/chebyshev":6,"./dist/clark":7,"./dist/cosine":8,"./dist/czekanowski":9,"./dist/czekanowskiS":10,"./dist/dice":11,"./dist/diceS":12,"./dist/divergence":13,"./dist/euclidean":14,"./dist/fidelity":15,"./dist/gower":16,"./dist/harmonicMean":17,"./dist/hellinger":18,"./dist/innerProduct":19,"./dist/intersection":20,"./dist/intersectionS":21,"./dist/jaccard":22,"./dist/jaccardS":23,"./dist/jeffreys":24,"./dist/jensenDifference":25,"./dist/jensenShannon":26,"./dist/kdivergence":27,"./dist/kulczynski":28,"./dist/kulczynskiS":29,"./dist/kullbackLeibler":30,"./dist/kumarHassebrook":31,"./dist/kumarJohnson":32,"./dist/lorentzian":33,"./dist/manhattan":34,"./dist/matusita":35,"./dist/minkowski":36,"./dist/motyka":37,"./dist/neyman":38,"./dist/pearson":39,"./dist/probabilisticSymmetric":40,"./dist/ruzicka":41,"./dist/soergel":42,"./dist/sorensen":43,"./dist/squared":45,"./dist/squared-euclidean":44,"./dist/squaredChord":46,"./dist/squaredChordS":47,"./dist/taneja":48,"./dist/tanimoto":49,"./dist/topsoe":50,"./dist/waveHedges":51}],53:[function(t,r){"use strict";function n(t){if(t=M.checkMatrix(t),!t.isSquare())throw new Error("Matrix is not a square matrix");var r,n,a=t.columns,f=M.zeros(a,a),u=new Array(a),c=new Array(a),l=t;if(t.isSymmetric()){for(r=0;a>r;r++)for(n=0;a>n;n++)f[r][n]=l[r][n];o(a,c,u,f),e(a,c,u,f)}else{var d=M.zeros(a,a),m=new Array(a);for(n=0;a>n;n++)for(r=0;a>r;r++)d[r][n]=l[r][n];i(a,d,m,f),s(a,c,u,f,d)}return new h(a,c,u,f)}function o(t,r,n,o){var e,i,s,a,h,f,u,c;for(h=0;t>h;h++)n[h]=o[t-1][h];for(a=t-1;a>0;a--){for(c=0,s=0,f=0;a>f;f++)c+=Math.abs(n[f]);if(0===c)for(r[a]=n[a-1],h=0;a>h;h++)n[h]=o[a-1][h],o[a][h]=0,o[h][a]=0;else{for(f=0;a>f;f++)n[f]/=c,s+=n[f]*n[f];for(e=n[a-1],i=Math.sqrt(s),e>0&&(i=-i),r[a]=c*i,s-=e*i,n[a-1]=e-i,h=0;a>h;h++)r[h]=0;for(h=0;a>h;h++){for(e=n[h],o[h][a]=e,i=r[h]+o[h][h]*e,f=h+1;a-1>=f;f++)i+=o[f][h]*n[f],r[f]+=o[f][h]*e;r[h]=i}for(e=0,h=0;a>h;h++)r[h]/=s,e+=r[h]*n[h];for(u=e/(s+s),h=0;a>h;h++)r[h]-=u*n[h];for(h=0;a>h;h++){for(e=n[h],i=r[h],f=h;a-1>=f;f++)o[f][h]-=e*r[f]+i*n[f];n[h]=o[a-1][h],o[a][h]=0}}n[a]=s}for(a=0;t-1>a;a++){if(o[t-1][a]=o[a][a],o[a][a]=1,s=n[a+1],0!==s){for(f=0;a>=f;f++)n[f]=o[f][a+1]/s;for(h=0;a>=h;h++){for(i=0,f=0;a>=f;f++)i+=o[f][a+1]*o[f][h];for(f=0;a>=f;f++)o[f][h]-=i*n[f]}}for(f=0;a>=f;f++)o[f][a+1]=0}for(h=0;t>h;h++)n[h]=o[t-1][h],o[t-1][h]=0;o[t-1][t-1]=1,r[0]=0}function e(t,r,n,o){var e,i,s,a,h,f,u,c,l,d,m,p,v,g,y,M,x;for(s=1;t>s;s++)r[s-1]=r[s];r[t-1]=0;var b=0,k=0,A=Math.pow(2,-52);for(f=0;t>f;f++){for(k=Math.max(k,Math.abs(n[f])+Math.abs(r[f])),u=f;t>u&&!(Math.abs(r[u])<=A*k);)u++;if(u>f){x=0;do{for(x+=1,e=n[f],c=(n[f+1]-e)/(2*r[f]),l=w(c,1),0>c&&(l=-l),n[f]=r[f]/(c+l),n[f+1]=r[f]*(c+l),d=n[f+1],i=e-n[f],s=f+2;t>s;s++)n[s]-=i;for(b+=i,c=n[u],m=1,p=m,v=m,g=r[f+1],y=0,M=0,s=u-1;s>=f;s--)for(v=p,p=m,M=y,e=m*r[s],i=m*c,l=w(c,r[s]),r[s+1]=y*l,y=r[s]/l,m=c/l,c=m*n[s]-y*e,n[s+1]=i+y*(m*e+y*n[s]),h=0;t>h;h++)i=o[h][s+1],o[h][s+1]=y*o[h][s]+m*i,o[h][s]=m*o[h][s]-y*i;c=-y*M*v*g*r[f]/d,r[f]=y*c,n[f]=m*c}while(Math.abs(r[f])>A*k)}n[f]=n[f]+b,r[f]=0}for(s=0;t-1>s;s++){for(h=s,c=n[s],a=s+1;t>a;a++)n[a]a;a++)c=o[a][s],o[a][s]=o[a][h],o[a][h]=c}}function i(t,r,n,o){var e,i,s,a,h,f,u,c=0,l=t-1;for(f=c+1;l-1>=f;f++){for(u=0,a=f;l>=a;a++)u+=Math.abs(r[a][f-1]);if(0!==u){for(s=0,a=l;a>=f;a--)n[a]=r[a][f-1]/u,s+=n[a]*n[a];for(i=Math.sqrt(s),n[f]>0&&(i=-i),s-=n[f]*i,n[f]=n[f]-i,h=f;t>h;h++){for(e=0,a=l;a>=f;a--)e+=n[a]*r[a][h];for(e/=s,a=f;l>=a;a++)r[a][h]-=e*n[a]}for(a=0;l>=a;a++){for(e=0,h=l;h>=f;h--)e+=n[h]*r[a][h];for(e/=s,h=f;l>=h;h++)r[a][h]-=e*n[h]}n[f]=u*n[f],r[f][f-1]=u*i}}for(a=0;t>a;a++)for(h=0;t>h;h++)o[a][h]=a===h?1:0;for(f=l-1;f>=c+1;f--)if(0!==r[f][f-1]){for(a=f+1;l>=a;a++)n[a]=r[a][f-1];for(h=f;l>=h;h++){for(i=0,a=f;l>=a;a++)i+=n[a]*o[a][h];for(i=i/n[f]/r[f][f-1],a=f;l>=a;a++)o[a][h]+=i*n[a]}}}function s(t,r,n,o,e){var i,s,h,f,u,c,l,d,m,p,v,w,g,y,M,x=t-1,b=0,k=t-1,A=Math.pow(2,-52),S=0,q=0,j=0,R=0,D=0,z=0,C=0,O=0;for(i=0;t>i;i++)for((b>i||i>k)&&(n[i]=e[i][i],r[i]=0),s=Math.max(i-1,0);t>s;s++)q+=Math.abs(e[i][s]);for(;x>=b;){for(f=x;f>b&&(z=Math.abs(e[f-1][f-1])+Math.abs(e[f][f]),0===z&&(z=q),!(Math.abs(e[f][f-1])=0){for(C=j>=0?j+C:j-C,n[x-1]=d+C,n[x]=n[x-1],0!==C&&(n[x]=d-l/C),r[x-1]=0,r[x]=0,d=e[x][x-1],z=Math.abs(d)+Math.abs(C),j=d/z,R=C/z,D=Math.sqrt(j*j+R*R),j/=D,R/=D,s=x-1;t>s;s++)C=e[x-1][s],e[x-1][s]=R*C+j*e[x][s],e[x][s]=R*e[x][s]-j*C;for(i=0;x>=i;i++)C=e[i][x-1],e[i][x-1]=R*C+j*e[i][x],e[i][x]=R*e[i][x]-j*C;for(i=b;k>=i;i++)C=o[i][x-1],o[i][x-1]=R*C+j*o[i][x],o[i][x]=R*o[i][x]-j*C}else n[x-1]=d+j,n[x]=d+j,r[x-1]=C,r[x]=-C;x-=2,O=0}else{if(d=e[x][x],m=0,l=0,x>f&&(m=e[x-1][x-1],l=e[x][x-1]*e[x-1][x]),10===O){for(S+=d,i=b;x>=i;i++)e[i][i]-=d;z=Math.abs(e[x][x-1])+Math.abs(e[x-1][x-2]),d=m=.75*z,l=-.4375*z*z}if(30===O&&(z=(m-d)/2,z=z*z+l,z>0)){for(z=Math.sqrt(z),d>m&&(z=-z),z=d-l/((m-d)/2+z),i=b;x>=i;i++)e[i][i]-=z;S+=z,d=m=l=.964}for(O+=1,u=x-2;u>=f&&(C=e[u][u],D=d-C,z=m-C,j=(D*z-l)/e[u+1][u]+e[u][u+1],R=e[u+1][u+1]-C-D-z,D=e[u+2][u+1],z=Math.abs(j)+Math.abs(R)+Math.abs(D),j/=z,R/=z,D/=z,u!==f)&&!(Math.abs(e[u][u-1])*(Math.abs(R)+Math.abs(D))=i;i++)e[i][i-2]=0,i>u+2&&(e[i][i-3]=0);for(h=u;x-1>=h&&(y=h!==x-1,h!==u&&(j=e[h][h-1],R=e[h+1][h-1],D=y?e[h+2][h-1]:0,d=Math.abs(j)+Math.abs(R)+Math.abs(D),0!==d&&(j/=d,R/=d,D/=d)),0!==d);h++)if(z=Math.sqrt(j*j+R*R+D*D),0>j&&(z=-z),0!==z){for(h!==u?e[h][h-1]=-z*d:f!==u&&(e[h][h-1]=-e[h][h-1]),j+=z,d=j/z,m=R/z,C=D/z,R/=j,D/=j,s=h;t>s;s++)j=e[h][s]+R*e[h+1][s],y&&(j+=D*e[h+2][s],e[h+2][s]=e[h+2][s]-j*C),e[h][s]=e[h][s]-j*d,e[h+1][s]=e[h+1][s]-j*m;for(i=0;i<=Math.min(x,h+3);i++)j=d*e[i][h]+m*e[i][h+1],y&&(j+=C*e[i][h+2],e[i][h+2]=e[i][h+2]-j*D),e[i][h]=e[i][h]-j,e[i][h+1]=e[i][h+1]-j*R;for(i=b;k>=i;i++)j=d*o[i][h]+m*o[i][h+1],y&&(j+=C*o[i][h+2],o[i][h+2]=o[i][h+2]-j*D),o[i][h]=o[i][h]-j,o[i][h+1]=o[i][h+1]-j*R}}}if(0!==q){for(x=t-1;x>=0;x--)if(j=n[x],R=r[x],0===R)for(f=x,e[x][x]=1,i=x-1;i>=0;i--){for(l=e[i][i]-j,D=0,s=f;x>=s;s++)D+=e[i][s]*e[s][x];if(r[i]<0)C=l,z=D;else if(f=i,0===r[i]?e[i][x]=0!==l?-D/l:-D/(A*q):(d=e[i][i+1],m=e[i+1][i],R=(n[i]-j)*(n[i]-j)+r[i]*r[i],c=(d*z-C*D)/R,e[i][x]=c,e[i+1][x]=Math.abs(d)>Math.abs(C)?(-D-l*c)/d:(-z-m*c)/C),c=Math.abs(e[i][x]),A*c*c>1)for(s=i;x>=s;s++)e[s][x]=e[s][x]/c}else if(0>R)for(f=x-1,Math.abs(e[x][x-1])>Math.abs(e[x-1][x])?(e[x-1][x-1]=R/e[x][x-1],e[x-1][x]=-(e[x][x]-j)/e[x][x-1]):(M=a(0,-e[x-1][x],e[x-1][x-1]-j,R),e[x-1][x-1]=M[0],e[x-1][x]=M[1]),e[x][x-1]=0,e[x][x]=1,i=x-2;i>=0;i--){for(p=0,v=0,s=f;x>=s;s++)p+=e[i][s]*e[s][x-1],v+=e[i][s]*e[s][x];if(l=e[i][i]-j,r[i]<0)C=l,D=p,z=v;else if(f=i,0===r[i]?(M=a(-p,-v,l,R),e[i][x-1]=M[0],e[i][x]=M[1]):(d=e[i][i+1],m=e[i+1][i],w=(n[i]-j)*(n[i]-j)+r[i]*r[i]-R*R,g=2*(n[i]-j)*R,0===w&&0===g&&(w=A*q*(Math.abs(l)+Math.abs(R)+Math.abs(d)+Math.abs(m)+Math.abs(C))),M=a(d*D-C*p+R*v,d*z-C*v-R*p,w,g),e[i][x-1]=M[0],e[i][x]=M[1],Math.abs(d)>Math.abs(C)+Math.abs(R)?(e[i+1][x-1]=(-p-l*e[i][x-1]+R*e[i][x])/d,e[i+1][x]=(-v-l*e[i][x]-R*e[i][x-1])/d):(M=a(-D-m*e[i][x-1],-z-m*e[i][x],C,R),e[i+1][x-1]=M[0],e[i+1][x]=M[1])),c=Math.max(Math.abs(e[i][x-1]),Math.abs(e[i][x])),A*c*c>1)for(s=i;x>=s;s++)e[s][x-1]=e[s][x-1]/c,e[s][x]=e[s][x]/c}for(i=0;t>i;i++)if(b>i||i>k)for(s=i;t>s;s++)o[i][s]=e[i][s];for(s=t-1;s>=b;s--)for(i=b;k>=i;i++){for(C=0,h=b;h<=Math.min(s,k);h++)C+=o[i][h]*e[h][s];o[i][s]=C}}}function a(t,r,n,o){var e,i;return Math.abs(n)>Math.abs(o)?(e=o/n,i=n+e*o,[(t+e*r)/i,(r-e*t)/i]):(e=n/o,i=o+e*n,[(e*t+r)/i,(e*r-t)/i])}function h(t,r,n,o){this.n=t,this.e=r,this.d=n,this.V=o}function f(t){t=M.checkMatrix(t);var r,n,o,e,i,s,a,h,f,c,l=t.clone(),d=l.rows,m=l.columns,p=new Array(d),v=1;for(r=0;d>r;r++)p[r]=r;for(f=new Array(d),n=0;m>n;n++){for(r=0;d>r;r++)f[r]=l[r][n];for(r=0;d>r;r++){for(h=l[r],c=Math.min(r,n),i=0,o=0;c>o;o++)i+=h[o]*f[o];h[n]=f[r]-=i}for(e=n,r=n+1;d>r;r++)Math.abs(f[r])>Math.abs(f[e])&&(e=r);if(e!==n){for(o=0;m>o;o++)s=l[e][o],l[e][o]=l[n][o],l[n][o]=s;a=p[e],p[e]=p[n],p[n]=a,v=-v}if(d>n&&0!==l[n][n])for(r=n+1;d>r;r++)l[r][n]/=l[n][n]}return new u(l,p,v)}function u(t,r,n){this.LU=t,this.pivotVector=r,this.pivotSign=n}function c(t){t=M.checkMatrix(t);var r,n,o,e,i=t.clone(),s=t.rows,a=t.columns,h=new Array(a);for(o=0;a>o;o++){var f=0;for(r=o;s>r;r++)f=w(f,i[r][o]);if(0!==f){for(i[o][o]<0&&(f=-f),r=o;s>r;r++)i[r][o]/=f;for(i[o][o]+=1,n=o+1;a>n;n++){for(e=0,r=o;s>r;r++)e+=i[r][o]*i[r][n];for(e=-e/i[o][o],r=o;s>r;r++)i[r][n]+=e*i[r][o]}}h[o]=-f}return new l(i,h)}function l(t,r){this.QR=t,this.Rdiag=r}function d(t,r){t=M.checkMatrix(t),r=r||{};var n=t.clone(),o=t.rows,e=t.columns,i=Math.min(o,e),s=!0,a=!0;r.computeLeftSingularVectors===!1&&(s=!1),r.computeRightSingularVectors===!1&&(a=!1);var h=r.autoTranspose===!0,f=!1;if(e>o)if(h){n=n.transpose(),o=n.rows,e=n.columns,f=!0;var u=s;s=a,a=u}else console.warn("WARNING: Computing SVD on a matrix with more columns than rows.");var c,l,d,p,v,g,y,x,b,k,A,S,q,j,R,D,z,C,O,I,V,E=new Array(Math.min(o+1,e)),U=M.zeros(o,i),L=M.zeros(e,e),N=new Array(e),_=new Array(o),T=Math.min(o-1,e),P=Math.max(0,Math.min(e-2,o));for(d=0,k=Math.max(T,P);k>d;d++){if(T>d){for(E[d]=0,c=d;o>c;c++)E[d]=w(E[d],n[c][d]);if(0!==E[d]){for(n[d][d]<0&&(E[d]=-E[d]),c=d;o>c;c++)n[c][d]/=E[d];n[d][d]+=1}E[d]=-E[d]}for(l=d+1;e>l;l++){if(T>d&&0!==E[d]){for(v=0,c=d;o>c;c++)v+=n[c][d]*n[c][l];for(v=-v/n[d][d],c=d;o>c;c++)n[c][l]+=v*n[c][d]}N[l]=n[d][l]}if(s&&T>d)for(c=d;o>c;c++)U[c][d]=n[c][d];if(P>d){for(N[d]=0,c=d+1;e>c;c++)N[d]=w(N[d],N[c]);if(0!==N[d]){for(N[d+1]<0&&(N[d]=-N[d]),c=d+1;e>c;c++)N[c]/=N[d];N[d+1]+=1}if(N[d]=-N[d],o>d+1&&0!==N[d]){for(c=d+1;o>c;c++)_[c]=0;for(l=d+1;e>l;l++)for(c=d+1;o>c;c++)_[c]+=N[l]*n[c][l];for(l=d+1;e>l;l++)for(v=-N[l]/N[d+1],c=d+1;o>c;c++)n[c][l]+=v*_[c]}if(a)for(c=d+1;e>c;c++)L[c][d]=N[c]}}if(p=Math.min(e,o+1),e>T&&(E[T]=n[T][T]),p>o&&(E[p-1]=0),p>P+1&&(N[P]=n[P][p-1]),N[p-1]=0,s){for(l=T;i>l;l++){for(c=0;o>c;c++)U[c][l]=0;U[l][l]=1}for(d=T-1;d>=0;d--)if(0!==E[d]){for(l=d+1;i>l;l++){for(v=0,c=d;o>c;c++)v+=U[c][d]*U[c][l];for(v=-v/U[d][d],c=d;o>c;c++)U[c][l]+=v*U[c][d]}for(c=d;o>c;c++)U[c][d]=-U[c][d];for(U[d][d]=1+U[d][d],c=0;d-1>c;c++)U[c][d]=0}else{for(c=0;o>c;c++)U[c][d]=0;U[d][d]=1}}if(a)for(d=e-1;d>=0;d--){if(P>d&&0!==N[d])for(l=d+1;e>l;l++){for(v=0,c=d+1;e>c;c++)v+=L[c][d]*L[c][l];for(v=-v/L[d+1][d],c=d+1;e>c;c++)L[c][l]+=v*L[c][d]}for(c=0;e>c;c++)L[c][d]=0;L[d][d]=1}for(var H=p-1,Q=0,W=Math.pow(2,-52);p>0;){for(d=p-2;d>=-1&&-1!==d;d--)if(Math.abs(N[d])<=W*(Math.abs(E[d])+Math.abs(E[d+1]))){N[d]=0;break}if(d===p-2)A=4;else{for(g=p-1;g>=d&&g!==d;g--)if(v=(g!==p?Math.abs(N[g]):0)+(g!==d+1?Math.abs(N[g-1]):0),Math.abs(E[g])<=W*v){E[g]=0;break}g===d?A=3:g===p-1?A=1:(A=2,d=g)}switch(d++,A){case 1:for(y=N[p-2],N[p-2]=0,l=p-2;l>=d;l--)if(v=w(E[l],y),x=E[l]/v,b=y/v,E[l]=v,l!==d&&(y=-b*N[l-1],N[l-1]=x*N[l-1]),a)for(c=0;e>c;c++)v=x*L[c][l]+b*L[c][p-1],L[c][p-1]=-b*L[c][l]+x*L[c][p-1],L[c][l]=v;break;case 2:for(y=N[d-1],N[d-1]=0,l=d;p>l;l++)if(v=w(E[l],y),x=E[l]/v,b=y/v,E[l]=v,y=-b*N[l],N[l]=x*N[l],s)for(c=0;o>c;c++)v=x*U[c][l]+b*U[c][d-1],U[c][d-1]=-b*U[c][l]+x*U[c][d-1],U[c][l]=v;break;case 3:for(S=Math.max(Math.max(Math.max(Math.max(Math.abs(E[p-1]),Math.abs(E[p-2])),Math.abs(N[p-2])),Math.abs(E[d])),Math.abs(N[d])),q=E[p-1]/S,j=E[p-2]/S,R=N[p-2]/S,D=E[d]/S,z=N[d]/S,C=((j+q)*(j-q)+R*R)/2,O=q*R*q*R,I=0,(0!==C||0!==O)&&(I=Math.sqrt(C*C+O),0>C&&(I=-I),I=O/(C+I)),y=(D+q)*(D-q)+I,V=D*z,l=d;p-1>l;l++){if(v=w(y,V),x=y/v,b=V/v,l!==d&&(N[l-1]=v),y=x*E[l]+b*N[l],N[l]=x*N[l]-b*E[l],V=b*E[l+1],E[l+1]=x*E[l+1],a)for(c=0;e>c;c++)v=x*L[c][l]+b*L[c][l+1],L[c][l+1]=-b*L[c][l]+x*L[c][l+1],L[c][l]=v;if(v=w(y,V),x=y/v,b=V/v,E[l]=v,y=x*N[l]+b*E[l+1],E[l+1]=-b*N[l]+x*E[l+1],V=b*N[l+1],N[l+1]=x*N[l+1],s&&o-1>l)for(c=0;o>c;c++)v=x*U[c][l]+b*U[c][l+1],U[c][l+1]=-b*U[c][l]+x*U[c][l+1],U[c][l]=v}N[p-2]=y,Q+=1;break;case 4:if(E[d]<=0&&(E[d]=E[d]<0?-E[d]:0,a))for(c=0;H>=c;c++)L[c][d]=-L[c][d];for(;H>d&&!(E[d]>=E[d+1]);){if(v=E[d],E[d]=E[d+1],E[d+1]=v,a&&e-1>d)for(c=0;e>c;c++)v=L[c][d+1],L[c][d+1]=L[c][d],L[c][d]=v;if(s&&o-1>d)for(c=0;o>c;c++)v=U[c][d+1],U[c][d+1]=U[c][d],U[c][d]=v;d++}Q=0,p--}}if(f){var B=L;L=U,U=B}return new m(o,e,E,U,L)}function m(t,r,n,o,e){this.m=t,this.n=r,this.s=n,this.U=o,this.V=e}function p(t){if(t=M.checkMatrix(t),!t.isSymmetric())throw new Error("Matrix is not symmetric");var r,n,o,e=t,i=e.rows,s=new M(i,i),a=!0;for(n=0;i>n;n++){var h=s[n],f=0;for(o=0;n>o;o++){var u=s[o],c=0;for(r=0;o>r;r++)c+=u[r]*h[r];h[o]=c=(e[n][o]-c)/s[o][o],f+=c*c}for(f=e[n][n]-f,a&=f>0,s[n][n]=Math.sqrt(Math.max(f,0)),o=n+1;i>o;o++)s[n][o]=0}if(!a)throw new Error("Matrix is not positive definite");return new v(s)}function v(t){this.L=t}function w(t,r){var n;return Math.abs(t)>Math.abs(r)?(n=r/t,Math.abs(t)*Math.sqrt(1+n*n)):0!==r?(n=t/r,Math.abs(r)*Math.sqrt(1+n*n)):0}function g(t){return y(t,M.eye(t.rows))}function y(t,r){return t.isSquare()?new f(t).solve(r):new c(t).solve(r)}var M=t("./matrix");h.prototype={get realEigenvalues(){return this.d},get imaginaryEigenvalues(){return this.e},get eigenvectorMatrix(){return this.V},get diagonalMatrix(){var t,r,n=this.n,o=this.e,e=this.d,i=new M(n,n);for(t=0;n>t;t++){for(r=0;n>r;r++)i[t][r]=0;i[t][t]=e[t],o[t]>0?i[t][t+1]=o[t]:o[t]<0&&(i[t][t-1]=o[t])}return i}},u.prototype={isSingular:function(){for(var t=this.LU,r=t.columns,n=0;r>n;n++)if(0===t[n][n])return!0;return!1},get determinant(){var t=this.LU;if(!t.isSquare())throw new Error("Matrix must be square");for(var r=this.pivotSign,n=t.columns,o=0;n>o;o++)r*=t[o][o];return r},get lowerTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,o=new M(r,n),e=0;r>e;e++)for(var i=0;n>i;i++)o[e][i]=e>i?t[e][i]:e===i?1:0;return o},get upperTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,o=new M(r,n),e=0;r>e;e++)for(var i=0;n>i;i++)o[e][i]=i>=e?t[e][i]:0;return o},get pivotPermutationVector(){return this.pivotVector.slice()},solve:function(t){t=M.checkMatrix(t);var r=this.LU,n=r.rows;if(n!==t.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");var o,e,i,s=t.columns,a=t.subMatrixRow(this.pivotVector,0,s-1),h=r.columns;for(i=0;h>i;i++)for(o=i+1;h>o;o++)for(e=0;s>e;e++)a[o][e]-=a[i][e]*r[o][i];for(i=h-1;i>=0;i--){for(e=0;s>e;e++)a[i][e]/=r[i][i];for(o=0;i>o;o++)for(e=0;s>e;e++)a[o][e]-=a[i][e]*r[o][i]}return a}},l.prototype={solve:function(t){t=M.checkMatrix(t);var r=this.QR,n=r.rows;if(t.rows!==n)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");var o,e,i,s,a=t.columns,h=t.clone(),f=r.columns;for(i=0;f>i;i++)for(e=0;a>e;e++){for(s=0,o=i;n>o;o++)s+=r[o][i]*h[o][e];for(s=-s/r[i][i],o=i;n>o;o++)h[o][e]+=s*r[o][i]}for(i=f-1;i>=0;i--){for(e=0;a>e;e++)h[i][e]/=this.Rdiag[i];for(o=0;i>o;o++)for(e=0;a>e;e++)h[o][e]-=h[i][e]*r[o][i]}return h.subMatrix(0,f-1,0,a-1)},isFullRank:function(){for(var t=this.QR.columns,r=0;t>r;r++)if(0===this.Rdiag[r])return!1;return!0},get upperTriangularFactor(){var t,r,n=this.QR,o=n.columns,e=new M(o,o);for(t=0;o>t;t++)for(r=0;o>r;r++)e[t][r]=r>t?n[t][r]:t===r?this.Rdiag[t]:0;return e},get orthogonalFactor(){var t,r,n,o,e=this.QR,i=e.rows,s=e.columns,a=new M(i,s);for(n=s-1;n>=0;n--){for(t=0;i>t;t++)a[t][n]=0;for(a[n][n]=1,r=n;s>r;r++)if(0!==e[n][n]){for(o=0,t=n;i>t;t++)o+=e[t][n]*a[t][r];for(o=-o/e[n][n],t=n;i>t;t++)a[t][r]+=o*e[t][n]}}return a}},m.prototype={get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]},get norm2(){return this.s[0]},get rank(){for(var t=Math.pow(2,-52),r=Math.max(this.m,this.n)*this.s[0]*t,n=0,o=this.s,e=0,i=o.length;i>e;e++)o[e]>r&&n++;return n},get diagonal(){return this.s},get threshold(){return Math.pow(2,-52)/2*Math.max(this.m,this.n)*this.s[0]},get leftSingularVectors(){return this.U},get rightSingularVectors(){return this.V},get diagonalMatrix(){return M.diag(this.s)},solve:function(t){var r,n=t,o=this.threshold,e=this.s.length,i=M.zeros(e,e);for(r=0;e>r;r++)i[r][r]=Math.abs(this.s[r])<=o?0:1/this.s[r];var s,a,h,f=this.V.mmul(i),u=this.V.rows,c=this.U.rows,l=M.zeros(u,c);for(r=0;u>r;r++)for(s=0;c>s;s++){for(h=0,a=0;e>a;a++)h+=f[r][a]*this.U[s][a];l[r][s]=h}return l.mmul(n)},solveForDiagonal:function(t){return this.solve(M.diag(t))},inverse:function(){var t,r,n=this.threshold,o=this.V.rows,e=this.V.columns,i=new M(o,this.s.length);for(t=0;o>t;t++)for(r=0;e>r;r++)Math.abs(this.s[r])>n&&(i[t][r]=this.V[t][r]/this.s[r]);var s,a,h=this.U.rows,f=this.U.columns,u=new M(o,h);for(t=0;o>t;t++)for(r=0;h>r;r++){for(a=0,s=0;f>s;s++)a+=i[t][s]*this.U[r][s];u[t][r]=a}return u}},v.prototype={get leftTriangularFactor(){return this.L},solve:function(t){t=M.checkMatrix(t);var r=this.L,n=r.rows;if(t.rows!==n)throw new Error("Matrix dimensions do not match");var o,e,i,s=t.columns,a=t.clone();for(i=0;n>i;i++)for(e=0;s>e;e++){for(o=0;i>o;o++)a[i][e]-=a[o][e]*r[i][o];a[i][e]/=r[i][i]}for(i=n-1;i>=0;i--)for(e=0;s>e;e++){for(o=i+1;n>o;o++)a[i][e]-=a[o][e]*r[o][i];a[i][e]/=r[i][i]}return a}},M.prototype.inverse=function(){return g(this)},M.prototype.solve=function(t){return y(this,t)},r.exports={LuDecomposition:f,LU:f,QrDecomposition:c,QR:c,SingularValueDecomposition:d,SVD:d,EigenvalueDecomposition:n,EVD:n,CholeskyDecomposition:p,CHO:p,inverse:g,solve:y}},{"./matrix":55}],54:[function(t,r){"use strict";r.exports=t("./matrix"),r.exports.Decompositions=r.exports.DC=t("./decompositions")},{"./decompositions":53,"./matrix":55}],55:[function(t,r){"use strict";function n(t){for(var r=0,n=t.length,o=new Array(n);n>r;r++)o[r]=t[r];return o}function o(t){this.message=t||"Unknown matrix error"}function e(t,r){var i,s,a=0;if(Array.isArray(t)){if(s=r,i=s?n(t):t,t=i.length,r=i[0].length,"undefined"==typeof r)throw new o("Data must be a 2D array");if(!(t>0&&r>0))throw new o("Invalid dimensions: "+t+"x"+r);for(;t>a;a++){if(i[a].length!==r)throw new o("Inconsistent array dimensions");s&&(i[a]=n(i[a]))}}else{if("number"!=typeof t)throw new o("Invalid arguments");if(!(t>0&&r>0))throw new o("Invalid dimensions: "+t+"x"+r);for(i=new Array(t);t>a;a++)i[a]=new Array(r)}return Object.defineProperty(i,"rows",{writable:!0,value:t}),Object.defineProperty(i,"columns",{writable:!0,value:r}),i.__proto__=e.prototype,i}var i=Array.prototype.splice,s=Array.prototype.concat;o.prototype=Object.create(Error.prototype),o.prototype.name="MatrixError",o.prototype.constructor=o,e.from1DArray=function(t,r,n){var i,s,a=0;if(i=t*r,i!==n.length)throw new o("Data length does not match given dimensions");for(s=new Array(t);t>a;a++)s[a]=n.slice(a*r,(a+1)*r);return new e(s)},e.rowVector=function(t){return new e([t])},e.columnVector=function(t){for(var r=t.length,n=new Array(r),o=0;r>o;o++)n[o]=[t[o]];return new e(n)},e.empty=function(t,r){return new e(t,r)},e.zeros=function(t,r){return e.empty(t,r).fill(0)},e.ones=function(t,r){return e.empty(t,r).fill(1)},e.rand=function(t,r){for(var n=e.empty(t,r),o=0,i=n.rows;i>o;o++)for(var s=0,a=n.columns;a>s;s++)n[o][s]=Math.random();return n},e.eye=function(t){for(var r=e.zeros(t,t),n=r.rows,o=0;n>o;o++)r[o][o]=1;return r},e.diag=function(t){for(var r=t.length,n=e.zeros(r,r),o=0;r>o;o++)n[o][o]=t[o];return n},e.indices=function(t,r){for(var n=new Array(r-t),o=0;os&&(s=arguments[r].columns);var a=e.zeros(i,s),h=0;for(r=0;rt||t>this.rows-1)throw new o("Row index out of range.")},e.prototype.checkColumnIndex=function(t){if(0>t||t>this.columns-1)throw new o("Column index out of range.")},e.prototype.checkDimensions=function(t){if(this.rows!==t.rows||this.columns!==t.columns)throw new o("Matrices dimensions must be equal.")},e.prototype.apply=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t.call(this,o,e);return this},e.prototype.clone=function(){return new e(this.to2DArray())},e.prototype.to1DArray=function(){return s.apply([],this)},e.prototype.to2DArray=function(){for(var t=this.rows,r=new Array(t),o=0;t>o;o++)r[o]=n(this[o]);return r},e.prototype.isRowVector=function(){return 1===this.rows},e.prototype.isColumnVector=function(){return 1===this.columns},e.prototype.isVector=function(){return 1===this.rows||1===this.columns},e.prototype.isSquare=function(){return this.rows===this.columns},e.prototype.isSymmetric=function(){if(this.isSquare()){for(var t=this.rows,r=0;t>r;r++)for(var n=0;r>=n;n++)if(this[r][n]!==this[n][r])return!1;return!0}return!1},e.prototype.set=function(t,r,n){return this[t][r]=n,this},e.prototype.get=function(t,r){return this[t][r]},e.prototype.fill=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]=t;return this},e.prototype.neg=function(){return this.mulS(-1)},e.prototype.add=function(t){return"number"==typeof t?this.addS(t):(t=e.checkMatrix(t),this.addM(t))},e.prototype.addS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t;return this},e.prototype.addM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o][e];return this},e.prototype.sub=function(t){return"number"==typeof t?this.subS(t):(t=e.checkMatrix(t),this.subM(t))},e.prototype.subS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t; -return this},e.prototype.subM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o][e];return this},e.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):(t=e.checkMatrix(t),this.mulM(t))},e.prototype.mulS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t;return this},e.prototype.mulM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o][e];return this},e.prototype.div=function(t){return"number"==typeof t?this.divS(t):(t=e.checkMatrix(t),this.divM(t))},e.prototype.divS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t;return this},e.prototype.divM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o][e];return this},e.prototype.getRow=function(t){return this.checkRowIndex(t),n(this[t])},e.prototype.setRow=function(t,r){if(this.checkRowIndex(t),e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o("Invalid row size");return this[t]=n(r),this},e.prototype.removeRow=function(t){if(this.checkRowIndex(t),1===this.rows)throw new o("A matrix cannot have less than one row");return i.call(this,t,1),this.rows-=1,this},e.prototype.addRow=function(t,r){if("undefined"==typeof r&&(r=t,t=this.rows),0>t||t>this.rows)throw new o("Row index out of range.");if(e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o("Invalid row size");return i.call(this,t,0,n(r)),this.rows+=1,this},e.prototype.swapRows=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);var n=this[t];return this[t]=this[r],this[r]=n,this},e.prototype.getColumn=function(t){this.checkColumnIndex(t);for(var r=this.rows,n=new Array(r),o=0;r>o;o++)n[o]=this[o][t];return n},e.prototype.setColumn=function(t,r){this.checkColumnIndex(t),e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o("Invalid column size");for(var i=0;n>i;i++)this[i][t]=r[i];return this},e.prototype.removeColumn=function(t){if(this.checkColumnIndex(t),1===this.columns)throw new o("A matrix cannot have less than one column");for(var r=0,n=this.rows;n>r;r++)this[r].splice(t,1);return this.columns-=1,this},e.prototype.addColumn=function(t,r){if("undefined"==typeof r&&(r=t,t=this.columns),0>t||t>this.columns)throw new o("Column index out of range.");e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o("Invalid column size");for(var i=0;n>i;i++)this[i].splice(t,0,r[i]);return this.columns+=1,this},e.prototype.swapColumns=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);for(var n,o,e=this.rows,i=0;e>i;i++)o=this[i],n=o[t],o[t]=o[r],o[r]=n;return this},e.prototype.checkRowVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.columns)throw new o("vector size must be the same as the number of columns");return t},e.prototype.checkColumnVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.rows)throw new o("vector size must be the same as the number of rows");return t},e.prototype.addRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[e];return this},e.prototype.subRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[e];return this},e.prototype.mulRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[e];return this},e.prototype.divRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[e];return this},e.prototype.addColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o];return this},e.prototype.subColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o];return this},e.prototype.mulColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o];return this},e.prototype.divColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o];return this},e.prototype.mulRow=function(t,r){this.checkRowIndex(t);for(var n=0,o=this.columns;o>n;n++)this[t][n]*=r;return this},e.prototype.mulColumn=function(t,r){this.checkColumnIndex(t);for(var n=0,o=this.rows;o>n;n++)this[n][t]*=r},e.prototype.max=function(){for(var t=-1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]>t&&(t=this[o][e]);return t},e.prototype.maxIndex=function(){for(var t=-1/0,r={},n=this.rows,o=this.columns,e=0;n>e;e++)for(var i=0;o>i;i++)this[e][i]>t&&(t=this[e][i],r.row=e,r.column=i);return r},e.prototype.min=function(){for(var t=1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]e;e++)for(var i=0;o>i;i++)this[e][i]n;n++)this[t][n]>r&&(r=this[t][n]);return r},e.prototype.maxRowIndex=function(t){this.checkRowIndex(t);for(var r=-1/0,n={row:t},o=0,e=this.columns;e>o;o++)this[t][o]>r&&(r=this[t][o],n.column=o);return n},e.prototype.minRow=function(t){this.checkRowIndex(t);for(var r=1/0,n=0,o=this.columns;o>n;n++)this[t][n]o;o++)this[t][o]n;n++)this[n][t]>r&&(r=this[n][t]);return r},e.prototype.maxColumnIndex=function(t){this.checkColumnIndex(t);for(var r=-1/0,n={row:0,column:t},o=0,e=this.rows;e>o;o++)this[o][t]>r&&(r=this[o][t],n.row=o);return n},e.prototype.minColumn=function(t){this.checkColumnIndex(t);for(var r=1/0,n=0,o=this.rows;o>n;n++)this[n][t]o;o++)this[o][t]t;t++)a[t]=this[t][t];return a},e.prototype.sum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e];return t},e.prototype.mean=function(){return this.sum()/this.size},e.prototype.prod=function h(){for(var h=1,t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)h*=this[n][o];return h},e.prototype.cumulativeSum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e],this[o][e]=t;return this},e.prototype.dot=function f(t){if(this.size!==t.size)throw new o("vectors do not have the same size");for(var r=this.to1DArray(),n=t.to1DArray(),f=0,e=r.length,i=0;e>i;i++)f+=r[i]*n[i];return f},e.prototype.mmul=function(t){this.columns!==t.rows&&console.warn("Number of columns of left matrix are not equal to number of rows of right matrix.");var r,n,o,i=this.rows,s=this.columns,a=t.columns,h=new e(i,a),f=new Array(s);for(n=0;a>n;n++){for(o=0;s>o;o++)f[o]=t[o][n];for(r=0;i>r;r++){var u=this[r],c=0;for(o=0;s>o;o++)c+=u[o]*f[o];h[r][n]=c}}return h},e.prototype.sortRows=function(t){for(var r=0,n=this.rows;n>r;r++)this[r].sort(t);return this},e.prototype.sortColumns=function(t){for(var r=0,n=this.columns;n>r;r++)this.setColumn(r,this.getColumn(r).sort(t));return this},e.prototype.transpose=function(){for(var t=new e(this.columns,this.rows),r=this.rows,n=this.columns,o=0;r>o;o++)for(var i=0;n>i;i++)t[i][o]=this[o][i];return t},e.prototype.subMatrix=function(t,r,n,i){if(t>r||n>i||0>t||t>=this.rows||0>r||r>=this.rows||0>n||n>=this.columns||0>i||i>=this.columns)throw new o("Argument out of range");for(var s=new e(r-t+1,i-n+1),a=t;r>=a;a++)for(var h=n;i>=h;h++)s[a-t][h-n]=this[a][h];return s},e.prototype.subMatrixRow=function(t,r,n){if("undefined"==typeof r?(r=0,n=this.columns-1):"undefined"==typeof n&&(n=this.columns-1),r>n||0>r||r>=this.columns||0>n||n>=this.columns)throw new o("Argument out of range.");for(var i=t.length,s=this.rows,a=new e(i,n-r+1),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o("Argument out of range.");a[h][f-r]=this[t[h]][f]}return a},e.prototype.subMatrixColumn=function(t,r,n){if("undefined"==typeof r?(r=0,n=this.rows-1):"undefined"==typeof n&&(n=this.rows-1),r>n||0>r||r>=this.rows||0>n||n>=this.rows)throw new o("Argument out of range.");for(var i=t.length,s=this.columns,a=new e(n-r+1,i),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o("Argument out of range.");a[f-r][h]=this[f][t[h]]}return a},e.prototype.trace=function u(){if(!this.isSquare())throw new o("The matrix is not square");for(var u=0,t=0,r=this.rows;r>t;t++)u+=this[t][t];return u},e.prototype.abs=function(){for(var t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)this[n][o]=Math.abs(this[n][o])},e.MatrixError=o,r.exports=e},{}],56:[function(require,module,exports){"use strict";function SOM(t,r,n,o){this.x=t,this.y=r,n=n||{},this.options={};for(var e in defaultOptions)this.options[e]=n.hasOwnProperty(e)?n[e]:defaultOptions[e];if("number"==typeof this.options.fields)this.numWeights=this.options.fields;else{if(!Array.isArray(this.options.fields))throw new Error("Invalid fields definition");this.numWeights=this.options.fields.length;var i=getConverters(this.options.fields);this.extractor=i.extractor,this.creator=i.creator}if("rect"===this.options.gridType)this.nodeType=NodeSquare,this.gridDim={x:t,y:r};else{this.nodeType=NodeHexagonal;var s=this.x-Math.floor(this.y/2);this.gridDim={x:s,y:this.y,z:-(0-s-this.y)}}if(this.torus=this.options.torus,this.distanceMethod=this.torus?"getDistanceTorus":"getDistance",this.distance=this.options.distance,this.maxDistance=getMaxDistance(this.distance,this.numWeights),o===!0)return void(this.done=!0);if(!(t>0&&r>0))throw new Error("x and y must be positive");this.times={findBMU:0,adjust:0},this.randomizer=this.options.randomizer,this.iterationCount=0,this.iterations=this.options.iterations,this.startLearningRate=this.learningRate=this.options.learningRate,this.mapRadius=Math.floor(Math.max(t,r)/2),this.algorithmMethod=this.options.method,this._initNodes(),this.done=!1}function getConverters(t){for(var r=t.length,n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=getNormalizer(t[e].range),o[e]=getDenormalizer(t[e].range);return{extractor:function(o){for(var e=new Array(r),i=0;r>i;i++)e[i]=n[i](o[t[i].name]);return e},creator:function(n){for(var e={},i=0;r>i;i++)e[t[i].name]=o[i](n[i]);return e}}}function getNormalizer(t){return function(r){return(r-t[0])/(t[1]-t[0])}}function getDenormalizer(t){return function(r){return t[0]+r*(t[1]-t[0])}}function squareEuclidean(t,r){for(var n=0,o=0,e=t.length;e>o;o++)n+=(t[o]-r[o])*(t[o]-r[o]);return n}function getRandomValue(t,r){return t[Math.floor(r()*t.length)]}function getMaxDistance(t,r){for(var n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=0,o[e]=1;return t(n,o)}var NodeSquare=require("./node-square"),NodeHexagonal=require("./node-hexagonal"),defaultOptions={fields:3,randomizer:Math.random,distance:squareEuclidean,iterations:10,learningRate:.1,gridType:"rect",torus:!0,method:"random"};SOM.load=function loadModel(model,distance){if("SOM"===model.name){var x=model.data.length,y=model.data[0].length;distance?model.options.distance=distance:model.options.distance&&(model.options.distance=eval("("+model.options.distance+")"));var som=new SOM(x,y,model.options,!0);som.nodes=new Array(x);for(var i=0;x>i;i++){som.nodes[i]=new Array(y);for(var j=0;y>j;j++)som.nodes[i][j]=new som.nodeType(i,j,model.data[i][j],som)}return som}throw new Error("expecting a SOM model")},SOM.prototype["export"]=function(t){if(!this.done)throw new Error("model is not ready yet");var r={name:"SOM"};r.options={fields:this.options.fields,gridType:this.options.gridType,torus:this.options.torus},r.data=new Array(this.x);for(var n=0;nr;r++)o[r]=this.extractor(t[r]);this.numIterations=this.iterations*e,this.timeConstant="random"===this.algorithmMethod?this.numIterations/Math.log(this.mapRadius):e/Math.log(this.mapRadius),this.trainingSet=o,this.times.setTraining=Date.now()-n},SOM.prototype.trainOne=function(){if(this.done)return!1;if(this.numIterations-->0){var t,r,n;return"random"===this.algorithmMethod?(t=this.mapRadius*Math.exp(-this.iterationCount/this.timeConstant),r=getRandomValue(this.trainingSet,this.randomizer),this._adjust(r,t),this.learningRate=this.startLearningRate*Math.exp(-this.iterationCount/this.numIterations)):(n=-Math.floor(this.iterationCount/this.trainingSet.length),t=this.mapRadius*Math.exp(n/this.timeConstant),r=this.trainingSet[this.iterationCount%this.trainingSet.length],this._adjust(r,t),(this.iterationCount+1)%this.trainingSet.length===0&&(this.learningRate=this.startLearningRate*Math.exp(n/Math.floor(this.numIterations/this.trainingSet.length)))),this.iterationCount++,!0}return this.done=!0,!1},SOM.prototype._adjust=function(t,r){var n,o,e,i,s=Date.now(),a=this._findBestMatchingUnit(t),h=Date.now();this.times.findBMU+=h-s;var f=Math.floor(r),u=a.x-f,c=a.x+f,l=a.y-f,d=a.y+f;for(n=u;c>=n;n++){var m=n;for(0>n?m+=this.x:n>=this.x&&(m-=this.x),o=l;d>=o;o++){var p=o;0>o?p+=this.y:o>=this.y&&(p-=this.y),e=a[this.distanceMethod](this.nodes[m][p]),r>e&&(i=Math.exp(-e/(2*r)),this.nodes[m][p].adjustWeights(t,this.learningRate,i))}}this.times.adjust+=Date.now()-h},SOM.prototype.train=function(t){if(!this.done)for(this.setTraining(t);this.trainOne(););},SOM.prototype.getConvertedNodes=function(){for(var t=new Array(this.x),r=0;rn&&(o=n,r=this.nodes[e][i]);return r},SOM.prototype.predict=function(t,r){if("boolean"==typeof t&&(r=t,t=null),t||(t=this.trainingSet),Array.isArray(t)&&(Array.isArray(t[0])||"object"==typeof t[0])){var n=this;return t.map(function(t){return n._predict(t,r)})}return this._predict(t,r)},SOM.prototype._predict=function(t,r){Array.isArray(t)||(t=this.extractor(t));var n=this._findBestMatchingUnit(t),o=[n.x,n.y];return r&&(o[2]=n.getPosition(t)),o},SOM.prototype.getQuantizationError=function(){for(var t=this.getFit(),r=t.length,n=0,o=0;r>o;o++)n+=t[o];return n/r},SOM.prototype.getFit=function(t){t||(t=this.trainingSet);for(var r,n=t.length,o=new Array(n),e=0;n>e;e++)r=this._findBestMatchingUnit(t[e]),o[e]=Math.sqrt(this.distance(t[e],r.weights));return o},module.exports=SOM},{"./node-hexagonal":57,"./node-square":58}],57:[function(t,r){function n(t,r,n,e){o.call(this,t,r,n,e),this.hX=t-Math.floor(r/2),this.z=0-this.hX-r}var o=t("./node-square");n.prototype=new o,n.prototype.constructor=n,n.prototype.getDistance=function(t){return Math.max(Math.abs(this.hX-t.hX),Math.abs(this.y-t.y),Math.abs(this.z-t.z))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.hX-t.hX),n=Math.abs(this.y-t.y),o=Math.abs(this.z-t.z);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n),Math.min(o,this.som.gridDim.z-o))},n.prototype.getPosition=function(){throw new Error("Unimplemented : cannot get position of the points for hexagonal grid")},r.exports=n},{"./node-square":58}],58:[function(t,r){function n(t,r,n,o){this.x=t,this.y=r,this.weights=n,this.som=o,this.neighbors={}}n.prototype.adjustWeights=function(t,r,n){for(var o=0,e=this.weights.length;e>o;o++)this.weights[o]+=r*n*(t[o]-this.weights[o])},n.prototype.getDistance=function(t){return Math.max(Math.abs(this.x-t.x),Math.abs(this.y-t.y))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.x-t.x),n=Math.abs(this.y-t.y);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n))},n.prototype.getNeighbors=function(t){if(!this.neighbors[t]){this.neighbors[t]=new Array(2);var r;if(this[t]>0?r=this[t]-1:this.som.torus&&(r=this.som.gridDim[t]-1),"undefined"!=typeof r){var n,o;"x"===t?(n=r,o=this.y):(n=this.x,o=r),this.neighbors[t][0]=this.som.nodes[n][o]}var e;this[t]s?(n=e[0],o=-1):(n=e[1],o=1)}else n=e[0],o=-1;else n=e[1],o=1;var h=1-i(r,this.weights),f=1-i(r,n.weights),u=(h-f)/(2-h-f);return.5+.5*u*o},n.prototype.getPosition=function(t){return[this.getPos("x",t),this.getPos("y",t)]},r.exports=n},{}],59:[function(t,r){"use strict";function n(t){for(var r=-1/0,n=t.length,o=0;n>o;o++)t[o]>r&&(r=t[o]);return r}function o(t){for(var r=1/0,n=t.length,o=0;n>o;o++)t[o]e;e++)t[e]n&&(n=t[e]);return{min:r,max:n}}function i(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r/n}function s(t){for(var r=0,n=t.length,o=0;n>o;o++)r*=t[o];return Math.pow(r,1/n)}function a(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=Math.log(t[o]);return r/n}function h(t,r){for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=r[i]*t[i],o+=r[i];return n/o}function f(t,r,n){"undefined"==typeof n&&(n=!1),t=n?t:t.slice(),t.sort();for(var o=t.length,e=Math.floor(o*r),i=0,s=e;o-e>s;s++)i+=t[s];return i/(o-2*e)}function u(t,r){"undefined"==typeof r&&(r=1);for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=Math.pow(t[i],r+1),o+=Math.pow(t[i],r);return n/o}function c(t,r){return Math.sqrt(p(t,r))}function l(t){return c(t)/Math.sqrt(t.length)}function d(t,r){"undefined"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length,o=Math.floor(n/2);return n%2===0?.5*(t[o-1]+t[o]):t[o]}function m(t,r){"undefined"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length/4,o=t[Math.ceil(n)-1],e=d(t,!0),i=t[Math.ceil(3*n)-1];return{q1:o,q2:e,q3:i}}function p(t,r){"undefined"==typeof r&&(r=!0);for(var n=i(t),o=0,e=t.length,s=0;e>s;s++){var a=t[s]-n;o+=a*a}return r?o/(e-1):o/e}function v(t,r){return Math.sqrt(w(t,r))}function w(t,r){"undefined"==typeof r&&(r=!0);for(var n=0,o=0,e=t.length,i=0;e>i;i++){var s=t[i],a=p(s);n+=(s.length-1)*a,o+=r?s.length-1:s.length}return n/o}function g(t){var r,n=t.length,o=new Array(n);for(r=0;n>r;r++)o[r]=0;var e=new Array(n),i=0;for(r=0;n>r;r++){var s=e.indexOf(t[r]);s>=0?o[s]++:(e[i]=t[r],o[i]=1,i++)}var a=0,h=0;for(r=0;i>r;r++)o[r]>a&&(a=o[r],h=r);return e[h]}function y(t,r,n){"undefined"==typeof n&&(n=!0);var o=i(t),e=i(r);if(t.length!==r.length)throw"Vectors do not have the same dimensions";for(var s=0,a=t.length,h=0;a>h;h++){var f=t[h]-o,u=r[h]-e;s+=f*u}return n?s/(a-1):s/a}function M(t,r){"undefined"==typeof r&&(r=!0);for(var n=i(t),o=0,e=0,s=t.length,a=0;s>a;a++){var h=t[a]-n;o+=h*h,e+=h*h*h}var f=o/s,u=e/s,c=u/Math.pow(f,1.5);if(r){var l=Math.sqrt(s*(s-1)),d=s-2;return l/d*c}return c}function x(t,r){"undefined"==typeof r&&(r=!0);for(var n=i(t),o=t.length,e=0,s=0,a=0;o>a;a++){var h=t[a]-n;e+=h*h,s+=h*h*h*h}var f=e/o,u=s/o;if(r){var c=e/(o-1),l=o*(o+1)/((o-1)*(o-2)*(o-3)),d=s/(c*c),m=(o-1)*(o-1)/((o-2)*(o-3));return l*d-3*m}return u/(f*f)-3}function b(t,r){"undefined"==typeof r&&(r=0);for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*Math.log(t[e]+r);return-n}function k(t,r){for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*r[e];return n}function A(t,r){return Math.sqrt(S(t,r))}function S(t,r){for(var n=k(t,r),o=0,e=t.length,i=0,s=0,a=0;e>a;a++){var h=t[a]-n,f=r[a];o+=f*h*h,s+=f,i+=f*f}return o*(s/(s*s-i))}function q(t,r){"undefined"==typeof r&&(r=!1);var n=t;r||(n=t.slice());for(var o=i(n),e=n.length,s=0;e>s;s++)n[s]-=o}function j(t,r,n){"undefined"==typeof r&&(r=c(t)),"undefined"==typeof n&&(n=!1);for(var o=t.length,e=n?t:new Array(o),i=0;o>i;i++)e[i]=t[i]/r;return e}function R(t){var r=t.length,n=new Array(r);n[0]=t[0];for(var o=1;r>o;o++)n[o]=n[o-1]+t[o];return n}r.exports={min:o,max:n,minMax:e,mean:i,geometricMean:s,logGeometricMean:a,grandMean:h,truncatedMean:f,contraHarmonicMean:u,standardDeviation:c,standardError:l,median:d,quartiles:m,variance:p,pooledStandardDeviation:v,pooledVariance:w,mode:g,covariance:y,skewness:M,kurtosis:x,entropy:b,weightedMean:k,weightedStandardDeviation:A,weightedVariance:S,center:q,standardize:j,cumulativeSum:R}},{}],60:[function(t,r){"use strict";function n(t,r){"undefined"==typeof r&&(r=0);for(var n=0,o=t.length,e=t[0].length,i=0;o>i;i++)for(var s=0;e>s;s++)n+=t[i][s]*Math.log(t[i][s]+r);return-n}function o(t,r){"undefined"==typeof r&&(r=0);var n,o,e,i,s=t.length,a=t[0].length;if(-1===r){for(n=[0],o=s*a,e=0;s>e;e++)for(i=0;a>i;i++)n[0]+=t[e][i];n[0]/=o}else if(0===r)for(n=new Array(a),o=s,i=0;a>i;i++){for(n[i]=0,e=0;s>e;e++)n[i]+=t[e][i];n[i]/=o}else{if(1!==r)throw new Error("Invalid dimension");for(n=new Array(s),o=a,i=0;s>i;i++){for(n[i]=0,e=0;a>e;e++)n[i]+=t[i][e];n[i]/=o}}return n}function e(t,r,n){for(var o=i(t,r,n),e=o.length,s=0;e>s;s++)o[s]=Math.sqrt(o[s]);return o}function i(t,r,n){"undefined"==typeof n&&(n=!0),r=r||o(t);var e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++)u=t[c][a]-r[a],h+=u,f+=u*u;s[a]=n?(f-h*h/e)/(e-1):(f-h*h/e)/e}return s}function s(t){for(var r=t.length,n=t[0].length,o=new Array(n),e=0;n>e;e++){for(var i=new Array(r),s=0;r>s;s++)i[s]=t[s][e];i.sort();var a=i.length;o[e]=a%2===0?.5*(i[a/2]+i[a/2-1]):i[Math.floor(a/2)]}return o}function a(t){var r,n,o=t.length,e=t[0].length,i=new Array(e);for(r=0;e>r;r++){for(var s=new Array(o),a=0;o>a;a++)s[a]=0;var h=new Array(o),f=0;for(n=0;o>n;n++){var u=h.indexOf(t[n][r]);u>=0?s[u]++:(h[f]=t[n][r],s[f]=1,f++)}var c=0,l=0;for(n=0;f>n;n++)s[n]>c&&(c=s[n],l=n);i[r]=h[l]}return i}function h(t,r){"undefined"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=n.length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c}var l=h/e,d=f/e,m=d/Math.pow(l,1.5);if(r){var p=Math.sqrt(e*(e-1)),v=e-2;s[a]=p/v*m}else s[a]=m}return s}function f(t,r){"undefined"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c*c}var l=h/e,d=f/e;if(r){var m=h/(e-1),p=e*(e+1)/((e-1)*(e-2)*(e-3)),v=f/(m*m),w=(e-1)*(e-1)/((e-2)*(e-3));s[a]=p*v-3*w}else s[a]=d/(l*l)-3}return s}function u(t){for(var r=t.length,n=e(t),o=n.length,i=new Array(o),s=Math.sqrt(r),a=0;o>a;a++)i[a]=n[a]/s;return i}function c(t,r){return l(t,void 0,r)}function l(t,r,n){"undefined"==typeof n&&(n=0),"undefined"==typeof r&&(0===n?r=t.length-1:1===n&&(r=t[0].length-1));var e=o(t,n),i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===n){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(f=0,u=0;i>u;u++)f+=(t[u][h]-e[h])*(t[u][a]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}else{if(1!==n)throw new Error("Invalid dimension");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(f=0,u=0;c>u;u++)f+=(t[h][u]-e[h])*(t[a][u]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}return s}function d(t){var r,n,i=o(t),s=e(t,!0,i),a=m(t,i,s),h=t.length,f=t[0].length,u=new Array(f);for(r=0;f>r;r++)u[r]=new Array(f);for(r=0;f>r;r++)for(n=r;f>n;n++){for(var c=0,l=0,d=a.length;d>l;l++)c+=a[l][n]*a[l][r];c/=h-1,u[r][n]=c,u[n][r]=c}return u}function m(t,r,n){return r=r||o(t),"undefined"==typeof n&&(n=e(t,!0,r)),v(p(t,r,!1),n,!0)}function p(t,r,n){r=r||o(t);var e,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),e=0;h>e;e++)a[e]=new Array(t[e].length);for(e=0;h>e;e++){var f=a[e];for(i=0,s=f.length;s>i;i++)f[i]=t[e][i]-r[i]}return a}function v(t,r,n){"undefined"==typeof r&&(r=e(t));var o,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),o=0;h>o;o++)a[o]=new Array(t[o].length);for(o=0;h>o;o++){var f=a[o],u=t[o];for(i=0,s=f.length;s>i;i++)0===r[i]||isNaN(r[i])||(f[i]=u[i]/r[i])}return a}function w(t,r){var n=o(t),e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++){var l=t[c][a]-n[a],d=r[c];h+=d*l*l,u+=d,f+=d*d}s[a]=h*(u/(u*u-f))}return s}function g(t,r,n){"undefined"==typeof n&&(n=0);var o=t.length;if(0===o)return[];var e,i,s,a,h,f,u=t[0].length;if(0===n){for(e=new Array(u),i=0;u>i;i++)e[i]=0;for(i=0;o>i;i++)for(f=t[i],h=r[i],a=0;u>a;a++)e[a]+=f[a]*h}else{if(1!==n)throw new Error("Invalid dimension");for(e=new Array(o),i=0;o>i;i++)e[i]=0;for(a=0;o>a;a++)for(f=t[a],h=r[a],i=0;u>i;i++)e[a]+=f[i]*h}var c=x(r);if(0!==c)for(i=0,s=e.length;s>i;i++)e[i]/=c;return e}function y(t,r,n,o){o=o||0,n=n||g(t,r,o);for(var e=0,i=0,s=0,a=r.length;a>s;s++)e+=r[s],i+=r[s]*r[s];var h=e/(e*e-i);return M(t,r,n,h,o)}function M(t,r,n,o,e){e=e||0,n=n||g(t,r,e),"undefined"==typeof o&&(o=1);var i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===e){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(u=0,f=0;i>f;f++)u+=r[f]*(t[f][h]-n[h])*(t[f][a]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}else{if(1!==e)throw new Error("Invalid dimension");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(u=0,f=0;c>f;f++)u+=r[f]*(t[h][f]-n[h])*(t[a][f]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}return s}function x(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r}r.exports={entropy:n,mean:o,standardDeviation:e,variance:i,median:s,mode:a,skewness:h,kurtosis:f,standardError:u,covariance:c,scatter:l,correlation:d,zScores:m,center:p,standardize:v,weightedVariance:w,weightedMean:g,weightedCovariance:y,weightedScatter:M}},{}]},{},[1])(1)}); +// ml@v0.3.0, MIT licensed. https://github.com/mljs/ml +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r;"undefined"!=typeof window?r=window:"undefined"!=typeof global?r=global:"undefined"!=typeof self&&(r=self),r.ML=t()}}(function(){var define,module,exports;return function t(r,n,o){function e(s,a){if(!n[s]){if(!r[s]){var h="function"==typeof require&&require;if(!a&&h)return h(s,!0);if(i)return i(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var u=n[s]={exports:{}};r[s][0].call(u.exports,function(t){var n=r[s][1][t];return e(n?n:t)},u,u.exports,t,r,n,o)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;sn;n++)e+=(t[n]-r[n])*(t[n]-r[n])*(t[n]+r[n])/(t[n]*r[n]);return 2*e}},{}],3:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)i=Math.abs(t[s]-r[s]),e+=i,i>o&&(o=i);return(o+e)/2}},{}],4:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return-Math.log(o)}},{}],5:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e])/(t[e]+r[e]);return o}},{}],6:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)e=Math.abs(t[i]-r[i]),e>o&&(o=e);return o}},{}],7:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.sqrt((t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n])));return 2*e}},{}],8:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(Math.sqrt(e)*Math.sqrt(i))}},{}],9:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-2*o/e}},{}],10:[function(t,r){var n=t("./czekanowski");r.exports=function(t,r){return 1-n(t,r)}},{"./czekanowski":9}],11:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*t[s],e+=r[s]*r[s],i+=(t[s]-r[s])*(t[s]-r[s]);return i/(o+e)}},{}],12:[function(t,r){var n=t("./dice");r.exports=function(t,r){return 1-n(t,r)}},{"./dice":11}],13:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n]));return 2*e}},{}],14:[function(t,r){var n=t("./squared-euclidean");r.exports=function(t,r){return Math.sqrt(n(t,r))}},{"./squared-euclidean":44}],15:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return o}},{}],16:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e]);return o/n}},{}],17:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e]/(t[e]+r[e]);return 2*o}},{}],18:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return 2*Math.sqrt(1-o)}},{}],19:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e];return o}},{}],20:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.min(t[e],r[e]);return 1-o}},{}],21:[function(t,r){var n=t("./intersection");r.exports=function(t,r){return 1-n(t,r)}},{"./intersection":20}],22:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0,a=0;n>a;a++)o+=t[a]*r[a],e+=t[a]*t[a],i+=r[a]*r[a],s+=(t[a]-r[a])*(t[a]-r[a]);return s/(e+i-o)}},{}],23:[function(t,r){var n=t("./jaccard");r.exports=function(t,r){return 1-n(t,r)}},{"./jaccard":22}],24:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]-r[e])*Math.log(t[e]/r[e]);return o}},{}],25:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]*Math.log(t[e])+r[e]*Math.log(r[e]))/2-(t[e]+r[e])/2*Math.log((t[e]+r[e])/2);return o}},{}],26:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=t[i]*Math.log(2*t[i]/(t[i]+r[i])),e+=r[i]*Math.log(2*r[i]/(t[i]+r[i]));return(o+e)/2}},{}],27:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]));return o}},{}],28:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.min(t[i],r[i]);return o/e}},{}],29:[function(t,r){var n=t("./kulczynski");r.exports=function(t,r){return 1/n(t,r)}},{"./kulczynski":28}],30:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(t[e]/r[e]);return o}},{}],31:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(e+i-o)}},{}],32:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.pow(t[e]*t[e]-r[e]*r[e],2)/(2*Math.pow(t[e]*r[e],1.5));return o}},{}],33:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.log(Math.abs(t[e]-r[e])+1);return o}},{}],34:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.abs(t[n]-r[n]);return e}},{}],35:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return Math.sqrt(2-2*o)}},{}],36:[function(t,r){r.exports=function(t,r,n){for(var o=0,e=t.length,i=0;e>o;o++)i+=Math.pow(Math.abs(t[o]-r[o]),n);return Math.pow(i,1/n)}},{}],37:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-o/e}},{}],38:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/t[n];return e}},{}],39:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/r[n];return e}},{}],40:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return 2*e}},{}],41:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],42:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],43:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=t[i]+r[i];return o/e}},{}],44:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n]);return e}},{}],45:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return e}},{}],46:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(Math.sqrt(t[e])-Math.sqrt(r[e]))*(Math.sqrt(t[e])-Math.sqrt(r[e]));return o}},{}],47:[function(t,r){var n=t("./squaredChord");r.exports=function(t,r){return 1-n(t,r)}},{"./squaredChord":46}],48:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]+r[e])/2*Math.log((t[e]+r[e])/(2*Math.sqrt(t[e]*r[e])));return o}},{}],49:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s],e+=r[s],i+=Math.min(t[s],r[s]);return(o+e-2*i)/(o+e-i)}},{}],50:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]))+r[e]*Math.log(2*r[e]/(t[e]+r[e]));return o}},{}],51:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=1-Math.min(t[e],r[e])/Math.max(t[e],r[e]);return o}},{}],52:[function(t,r,n){n.euclidean=t("./dist/euclidean"),n.squaredEuclidean=t("./dist/squared-euclidean"),n.manhattan=t("./dist/manhattan"),n.minkowski=t("./dist/minkowski"),n.chebyshev=t("./dist/chebyshev"),n.sorensen=t("./dist/sorensen"),n.gower=t("./dist/gower"),n.soergel=t("./dist/soergel"),n.kulczynski=t("./dist/kulczynski"),n.kulczynskiS=t("./dist/kulczynskiS"),n.canberra=t("./dist/canberra"),n.lorentzian=t("./dist/lorentzian"),n.intersection=t("./dist/intersection"),n.intersectionS=t("./dist/intersectionS"),n.waveHedges=t("./dist/waveHedges"),n.czekanowski=t("./dist/czekanowski"),n.czekanowskiS=t("./dist/czekanowskiS"),n.motyka=t("./dist/motyka"),n.kulczynskiS=t("./dist/kulczynskiS"),n.ruzicka=t("./dist/ruzicka"),n.tanimoto=t("./dist/tanimoto"),n.innerProduct=t("./dist/innerProduct"),n.harmonicMean=t("./dist/harmonicMean"),n.cosine=t("./dist/cosine"),n.kumarHassebrook=t("./dist/kumarHassebrook"),n.jaccard=t("./dist/jaccard"),n.jaccardS=t("./dist/jaccardS"),n.dice=t("./dist/dice"),n.diceS=t("./dist/diceS"),n.fidelity=t("./dist/fidelity"),n.bhattacharyya=t("./dist/bhattacharyya"),n.hellinger=t("./dist/hellinger"),n.matusita=t("./dist/matusita"),n.squaredChord=t("./dist/squaredChord"),n.squaredChordS=t("./dist/squaredChordS"),n.pearson=t("./dist/pearson"),n.neyman=t("./dist/neyman"),n.squared=t("./dist/squared"),n.probabilisticSymmetric=t("./dist/probabilisticSymmetric"),n.divergence=t("./dist/divergence"),n.clark=t("./dist/clark"),n.additiveSymmetric=t("./dist/additiveSymmetric"),n.kullbackLeibler=t("./dist/kullbackLeibler"),n.jeffreys=t("./dist/jeffreys"),n.kdivergence=t("./dist/kdivergence"),n.topsoe=t("./dist/topsoe"),n.jensenShannon=t("./dist/jensenShannon"),n.jensenDifference=t("./dist/jensenDifference"),n.taneja=t("./dist/taneja"),n.kumarJohnson=t("./dist/kumarJohnson"),n.avg=t("./dist/avg")},{"./dist/additiveSymmetric":2,"./dist/avg":3,"./dist/bhattacharyya":4,"./dist/canberra":5,"./dist/chebyshev":6,"./dist/clark":7,"./dist/cosine":8,"./dist/czekanowski":9,"./dist/czekanowskiS":10,"./dist/dice":11,"./dist/diceS":12,"./dist/divergence":13,"./dist/euclidean":14,"./dist/fidelity":15,"./dist/gower":16,"./dist/harmonicMean":17,"./dist/hellinger":18,"./dist/innerProduct":19,"./dist/intersection":20,"./dist/intersectionS":21,"./dist/jaccard":22,"./dist/jaccardS":23,"./dist/jeffreys":24,"./dist/jensenDifference":25,"./dist/jensenShannon":26,"./dist/kdivergence":27,"./dist/kulczynski":28,"./dist/kulczynskiS":29,"./dist/kullbackLeibler":30,"./dist/kumarHassebrook":31,"./dist/kumarJohnson":32,"./dist/lorentzian":33,"./dist/manhattan":34,"./dist/matusita":35,"./dist/minkowski":36,"./dist/motyka":37,"./dist/neyman":38,"./dist/pearson":39,"./dist/probabilisticSymmetric":40,"./dist/ruzicka":41,"./dist/soergel":42,"./dist/sorensen":43,"./dist/squared":45,"./dist/squared-euclidean":44,"./dist/squaredChord":46,"./dist/squaredChordS":47,"./dist/taneja":48,"./dist/tanimoto":49,"./dist/topsoe":50,"./dist/waveHedges":51}],53:[function(t,r){"use strict";function n(t){if(!(this instanceof n))return new n(t);if(t=o.checkMatrix(t),!t.isSymmetric())throw new Error("Matrix is not symmetric");var r,e,i,s=t,a=s.rows,h=new o(a,a),f=!0;for(e=0;a>e;e++){var u=h[e],c=0;for(i=0;e>i;i++){var l=h[i],d=0;for(r=0;i>r;r++)d+=l[r]*u[r];u[i]=d=(s[e][i]-d)/h[i][i],c+=d*d}for(c=s[e][e]-c,f&=c>0,h[e][e]=Math.sqrt(Math.max(c,0)),i=e+1;a>i;i++)h[e][i]=0}if(!f)throw new Error("Matrix is not positive definite");this.L=h}var o=t("../matrix");n.prototype={get leftTriangularFactor(){return this.L},solve:function(t){t=o.checkMatrix(t);var r=this.L,n=r.rows;if(t.rows!==n)throw new Error("Matrix dimensions do not match");var e,i,s,a=t.columns,h=t.clone();for(s=0;n>s;s++)for(i=0;a>i;i++){for(e=0;s>e;e++)h[s][i]-=h[e][i]*r[s][e];h[s][i]/=r[s][s]}for(s=n-1;s>=0;s--)for(i=0;a>i;i++){for(e=s+1;n>e;e++)h[s][i]-=h[e][i]*r[e][s];h[s][i]/=r[s][s]}return h}},r.exports=n},{"../matrix":61}],54:[function(t,r){"use strict";function n(t){if(!(this instanceof n))return new n(t);if(t=h.checkMatrix(t),!t.isSquare())throw new Error("Matrix is not a square matrix");var r,a,f=t.columns,u=h.zeros(f,f),c=new Array(f),l=new Array(f),d=t;if(t.isSymmetric()){for(r=0;f>r;r++)for(a=0;f>a;a++)u[r][a]=d[r][a];o(f,l,c,u),e(f,l,c,u)}else{var m=h.zeros(f,f),p=new Array(f);for(a=0;f>a;a++)for(r=0;f>r;r++)m[r][a]=d[r][a];i(f,m,p,u),s(f,l,c,u,m)}this.n=f,this.e=l,this.d=c,this.V=u}function o(t,r,n,o){var e,i,s,a,h,f,u,c;for(h=0;t>h;h++)n[h]=o[t-1][h];for(a=t-1;a>0;a--){for(c=0,s=0,f=0;a>f;f++)c+=Math.abs(n[f]);if(0===c)for(r[a]=n[a-1],h=0;a>h;h++)n[h]=o[a-1][h],o[a][h]=0,o[h][a]=0;else{for(f=0;a>f;f++)n[f]/=c,s+=n[f]*n[f];for(e=n[a-1],i=Math.sqrt(s),e>0&&(i=-i),r[a]=c*i,s-=e*i,n[a-1]=e-i,h=0;a>h;h++)r[h]=0;for(h=0;a>h;h++){for(e=n[h],o[h][a]=e,i=r[h]+o[h][h]*e,f=h+1;a-1>=f;f++)i+=o[f][h]*n[f],r[f]+=o[f][h]*e;r[h]=i}for(e=0,h=0;a>h;h++)r[h]/=s,e+=r[h]*n[h];for(u=e/(s+s),h=0;a>h;h++)r[h]-=u*n[h];for(h=0;a>h;h++){for(e=n[h],i=r[h],f=h;a-1>=f;f++)o[f][h]-=e*r[f]+i*n[f];n[h]=o[a-1][h],o[a][h]=0}}n[a]=s}for(a=0;t-1>a;a++){if(o[t-1][a]=o[a][a],o[a][a]=1,s=n[a+1],0!==s){for(f=0;a>=f;f++)n[f]=o[f][a+1]/s;for(h=0;a>=h;h++){for(i=0,f=0;a>=f;f++)i+=o[f][a+1]*o[f][h];for(f=0;a>=f;f++)o[f][h]-=i*n[f]}}for(f=0;a>=f;f++)o[f][a+1]=0}for(h=0;t>h;h++)n[h]=o[t-1][h],o[t-1][h]=0;o[t-1][t-1]=1,r[0]=0}function e(t,r,n,o){var e,i,s,a,h,u,c,l,d,m,p,v,w,g,y,M,x;for(s=1;t>s;s++)r[s-1]=r[s];r[t-1]=0;var b=0,k=0,A=Math.pow(2,-52);for(u=0;t>u;u++){for(k=Math.max(k,Math.abs(n[u])+Math.abs(r[u])),c=u;t>c&&!(Math.abs(r[c])<=A*k);)c++;if(c>u){x=0;do{for(x+=1,e=n[u],l=(n[u+1]-e)/(2*r[u]),d=f(l,1),0>l&&(d=-d),n[u]=r[u]/(l+d),n[u+1]=r[u]*(l+d),m=n[u+1],i=e-n[u],s=u+2;t>s;s++)n[s]-=i;for(b+=i,l=n[c],p=1,v=p,w=p,g=r[u+1],y=0,M=0,s=c-1;s>=u;s--)for(w=v,v=p,M=y,e=p*r[s],i=p*l,d=f(l,r[s]),r[s+1]=y*d,y=r[s]/d,p=l/d,l=p*n[s]-y*e,n[s+1]=i+y*(p*e+y*n[s]),h=0;t>h;h++)i=o[h][s+1],o[h][s+1]=y*o[h][s]+p*i,o[h][s]=p*o[h][s]-y*i;l=-y*M*w*g*r[u]/m,r[u]=y*l,n[u]=p*l}while(Math.abs(r[u])>A*k)}n[u]=n[u]+b,r[u]=0}for(s=0;t-1>s;s++){for(h=s,l=n[s],a=s+1;t>a;a++)n[a]a;a++)l=o[a][s],o[a][s]=o[a][h],o[a][h]=l}}function i(t,r,n,o){var e,i,s,a,h,f,u,c=0,l=t-1;for(f=c+1;l-1>=f;f++){for(u=0,a=f;l>=a;a++)u+=Math.abs(r[a][f-1]);if(0!==u){for(s=0,a=l;a>=f;a--)n[a]=r[a][f-1]/u,s+=n[a]*n[a];for(i=Math.sqrt(s),n[f]>0&&(i=-i),s-=n[f]*i,n[f]=n[f]-i,h=f;t>h;h++){for(e=0,a=l;a>=f;a--)e+=n[a]*r[a][h];for(e/=s,a=f;l>=a;a++)r[a][h]-=e*n[a]}for(a=0;l>=a;a++){for(e=0,h=l;h>=f;h--)e+=n[h]*r[a][h];for(e/=s,h=f;l>=h;h++)r[a][h]-=e*n[h]}n[f]=u*n[f],r[f][f-1]=u*i}}for(a=0;t>a;a++)for(h=0;t>h;h++)o[a][h]=a===h?1:0;for(f=l-1;f>=c+1;f--)if(0!==r[f][f-1]){for(a=f+1;l>=a;a++)n[a]=r[a][f-1];for(h=f;l>=h;h++){for(i=0,a=f;l>=a;a++)i+=n[a]*o[a][h];for(i=i/n[f]/r[f][f-1],a=f;l>=a;a++)o[a][h]+=i*n[a]}}}function s(t,r,n,o,e){var i,s,h,f,u,c,l,d,m,p,v,w,g,y,M,x=t-1,b=0,k=t-1,A=Math.pow(2,-52),S=0,q=0,j=0,D=0,R=0,z=0,C=0,O=0;for(i=0;t>i;i++)for((b>i||i>k)&&(n[i]=e[i][i],r[i]=0),s=Math.max(i-1,0);t>s;s++)q+=Math.abs(e[i][s]);for(;x>=b;){for(f=x;f>b&&(z=Math.abs(e[f-1][f-1])+Math.abs(e[f][f]),0===z&&(z=q),!(Math.abs(e[f][f-1])=0){for(C=j>=0?j+C:j-C,n[x-1]=d+C,n[x]=n[x-1],0!==C&&(n[x]=d-l/C),r[x-1]=0,r[x]=0,d=e[x][x-1],z=Math.abs(d)+Math.abs(C),j=d/z,D=C/z,R=Math.sqrt(j*j+D*D),j/=R,D/=R,s=x-1;t>s;s++)C=e[x-1][s],e[x-1][s]=D*C+j*e[x][s],e[x][s]=D*e[x][s]-j*C;for(i=0;x>=i;i++)C=e[i][x-1],e[i][x-1]=D*C+j*e[i][x],e[i][x]=D*e[i][x]-j*C;for(i=b;k>=i;i++)C=o[i][x-1],o[i][x-1]=D*C+j*o[i][x],o[i][x]=D*o[i][x]-j*C}else n[x-1]=d+j,n[x]=d+j,r[x-1]=C,r[x]=-C;x-=2,O=0}else{if(d=e[x][x],m=0,l=0,x>f&&(m=e[x-1][x-1],l=e[x][x-1]*e[x-1][x]),10===O){for(S+=d,i=b;x>=i;i++)e[i][i]-=d;z=Math.abs(e[x][x-1])+Math.abs(e[x-1][x-2]),d=m=.75*z,l=-.4375*z*z}if(30===O&&(z=(m-d)/2,z=z*z+l,z>0)){for(z=Math.sqrt(z),d>m&&(z=-z),z=d-l/((m-d)/2+z),i=b;x>=i;i++)e[i][i]-=z;S+=z,d=m=l=.964}for(O+=1,u=x-2;u>=f&&(C=e[u][u],R=d-C,z=m-C,j=(R*z-l)/e[u+1][u]+e[u][u+1],D=e[u+1][u+1]-C-R-z,R=e[u+2][u+1],z=Math.abs(j)+Math.abs(D)+Math.abs(R),j/=z,D/=z,R/=z,u!==f)&&!(Math.abs(e[u][u-1])*(Math.abs(D)+Math.abs(R))=i;i++)e[i][i-2]=0,i>u+2&&(e[i][i-3]=0);for(h=u;x-1>=h&&(y=h!==x-1,h!==u&&(j=e[h][h-1],D=e[h+1][h-1],R=y?e[h+2][h-1]:0,d=Math.abs(j)+Math.abs(D)+Math.abs(R),0!==d&&(j/=d,D/=d,R/=d)),0!==d);h++)if(z=Math.sqrt(j*j+D*D+R*R),0>j&&(z=-z),0!==z){for(h!==u?e[h][h-1]=-z*d:f!==u&&(e[h][h-1]=-e[h][h-1]),j+=z,d=j/z,m=D/z,C=R/z,D/=j,R/=j,s=h;t>s;s++)j=e[h][s]+D*e[h+1][s],y&&(j+=R*e[h+2][s],e[h+2][s]=e[h+2][s]-j*C),e[h][s]=e[h][s]-j*d,e[h+1][s]=e[h+1][s]-j*m;for(i=0;i<=Math.min(x,h+3);i++)j=d*e[i][h]+m*e[i][h+1],y&&(j+=C*e[i][h+2],e[i][h+2]=e[i][h+2]-j*R),e[i][h]=e[i][h]-j,e[i][h+1]=e[i][h+1]-j*D;for(i=b;k>=i;i++)j=d*o[i][h]+m*o[i][h+1],y&&(j+=C*o[i][h+2],o[i][h+2]=o[i][h+2]-j*R),o[i][h]=o[i][h]-j,o[i][h+1]=o[i][h+1]-j*D}}}if(0!==q){for(x=t-1;x>=0;x--)if(j=n[x],D=r[x],0===D)for(f=x,e[x][x]=1,i=x-1;i>=0;i--){for(l=e[i][i]-j,R=0,s=f;x>=s;s++)R+=e[i][s]*e[s][x];if(r[i]<0)C=l,z=R;else if(f=i,0===r[i]?e[i][x]=0!==l?-R/l:-R/(A*q):(d=e[i][i+1],m=e[i+1][i],D=(n[i]-j)*(n[i]-j)+r[i]*r[i],c=(d*z-C*R)/D,e[i][x]=c,e[i+1][x]=Math.abs(d)>Math.abs(C)?(-R-l*c)/d:(-z-m*c)/C),c=Math.abs(e[i][x]),A*c*c>1)for(s=i;x>=s;s++)e[s][x]=e[s][x]/c}else if(0>D)for(f=x-1,Math.abs(e[x][x-1])>Math.abs(e[x-1][x])?(e[x-1][x-1]=D/e[x][x-1],e[x-1][x]=-(e[x][x]-j)/e[x][x-1]):(M=a(0,-e[x-1][x],e[x-1][x-1]-j,D),e[x-1][x-1]=M[0],e[x-1][x]=M[1]),e[x][x-1]=0,e[x][x]=1,i=x-2;i>=0;i--){for(p=0,v=0,s=f;x>=s;s++)p+=e[i][s]*e[s][x-1],v+=e[i][s]*e[s][x];if(l=e[i][i]-j,r[i]<0)C=l,R=p,z=v;else if(f=i,0===r[i]?(M=a(-p,-v,l,D),e[i][x-1]=M[0],e[i][x]=M[1]):(d=e[i][i+1],m=e[i+1][i],w=(n[i]-j)*(n[i]-j)+r[i]*r[i]-D*D,g=2*(n[i]-j)*D,0===w&&0===g&&(w=A*q*(Math.abs(l)+Math.abs(D)+Math.abs(d)+Math.abs(m)+Math.abs(C))),M=a(d*R-C*p+D*v,d*z-C*v-D*p,w,g),e[i][x-1]=M[0],e[i][x]=M[1],Math.abs(d)>Math.abs(C)+Math.abs(D)?(e[i+1][x-1]=(-p-l*e[i][x-1]+D*e[i][x])/d,e[i+1][x]=(-v-l*e[i][x]-D*e[i][x-1])/d):(M=a(-R-m*e[i][x-1],-z-m*e[i][x],C,D),e[i+1][x-1]=M[0],e[i+1][x]=M[1])),c=Math.max(Math.abs(e[i][x-1]),Math.abs(e[i][x])),A*c*c>1)for(s=i;x>=s;s++)e[s][x-1]=e[s][x-1]/c,e[s][x]=e[s][x]/c}for(i=0;t>i;i++)if(b>i||i>k)for(s=i;t>s;s++)o[i][s]=e[i][s];for(s=t-1;s>=b;s--)for(i=b;k>=i;i++){for(C=0,h=b;h<=Math.min(s,k);h++)C+=o[i][h]*e[h][s];o[i][s]=C}}}function a(t,r,n,o){var e,i;return Math.abs(n)>Math.abs(o)?(e=o/n,i=n+e*o,[(t+e*r)/i,(r-e*t)/i]):(e=n/o,i=o+e*n,[(e*t+r)/i,(e*r-t)/i])}var h=t("../matrix"),f=t("./util").hypotenuse;n.prototype={get realEigenvalues(){return this.d},get imaginaryEigenvalues(){return this.e},get eigenvectorMatrix(){return this.V},get diagonalMatrix(){var t,r,n=this.n,o=this.e,e=this.d,i=new h(n,n);for(t=0;n>t;t++){for(r=0;n>r;r++)i[t][r]=0;i[t][t]=e[t],o[t]>0?i[t][t+1]=o[t]:o[t]<0&&(i[t][t-1]=o[t])}return i}},r.exports=n},{"../matrix":61,"./util":58}],55:[function(t,r){"use strict";function n(t){if(!(this instanceof n))return new n(t);t=o.checkMatrix(t);var r,e,i,s,a,h,f,u,c,l,d=t.clone(),m=d.rows,p=d.columns,v=new Array(m),w=1;for(r=0;m>r;r++)v[r]=r;for(c=new Array(m),e=0;p>e;e++){for(r=0;m>r;r++)c[r]=d[r][e];for(r=0;m>r;r++){for(u=d[r],l=Math.min(r,e),a=0,i=0;l>i;i++)a+=u[i]*c[i];u[e]=c[r]-=a}for(s=e,r=e+1;m>r;r++)Math.abs(c[r])>Math.abs(c[s])&&(s=r);if(s!==e){for(i=0;p>i;i++)h=d[s][i],d[s][i]=d[e][i],d[e][i]=h;f=v[s],v[s]=v[e],v[e]=f,w=-w}if(m>e&&0!==d[e][e])for(r=e+1;m>r;r++)d[r][e]/=d[e][e]}this.LU=d,this.pivotVector=v,this.pivotSign=w}var o=t("../matrix");n.prototype={isSingular:function(){for(var t=this.LU,r=t.columns,n=0;r>n;n++)if(0===t[n][n])return!0;return!1},get determinant(){var t=this.LU;if(!t.isSquare())throw new Error("Matrix must be square");for(var r=this.pivotSign,n=t.columns,o=0;n>o;o++)r*=t[o][o];return r},get lowerTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,e=new o(r,n),i=0;r>i;i++)for(var s=0;n>s;s++)e[i][s]=i>s?t[i][s]:i===s?1:0;return e},get upperTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,e=new o(r,n),i=0;r>i;i++)for(var s=0;n>s;s++)e[i][s]=s>=i?t[i][s]:0;return e},get pivotPermutationVector(){return this.pivotVector.slice()},solve:function(t){t=o.checkMatrix(t);var r=this.LU,n=r.rows;if(n!==t.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");var e,i,s,a=t.columns,h=t.subMatrixRow(this.pivotVector,0,a-1),f=r.columns;for(s=0;f>s;s++)for(e=s+1;f>e;e++)for(i=0;a>i;i++)h[e][i]-=h[s][i]*r[e][s];for(s=f-1;s>=0;s--){for(i=0;a>i;i++)h[s][i]/=r[s][s];for(e=0;s>e;e++)for(i=0;a>i;i++)h[e][i]-=h[s][i]*r[e][s]}return h}},r.exports=n},{"../matrix":61}],56:[function(t,r){"use strict";function n(t){if(!(this instanceof n))return new n(t);t=o.checkMatrix(t);var r,i,s,a,h=t.clone(),f=t.rows,u=t.columns,c=new Array(u);for(s=0;u>s;s++){var l=0;for(r=s;f>r;r++)l=e(l,h[r][s]);if(0!==l){for(h[s][s]<0&&(l=-l),r=s;f>r;r++)h[r][s]/=l;for(h[s][s]+=1,i=s+1;u>i;i++){for(a=0,r=s;f>r;r++)a+=h[r][s]*h[r][i];for(a=-a/h[s][s],r=s;f>r;r++)h[r][i]+=a*h[r][s]}}c[s]=-l}this.QR=h,this.Rdiag=c}var o=t("../matrix"),e=t("./util").hypotenuse;n.prototype={solve:function(t){t=o.checkMatrix(t);var r=this.QR,n=r.rows;if(t.rows!==n)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");var e,i,s,a,h=t.columns,f=t.clone(),u=r.columns;for(s=0;u>s;s++)for(i=0;h>i;i++){for(a=0,e=s;n>e;e++)a+=r[e][s]*f[e][i];for(a=-a/r[s][s],e=s;n>e;e++)f[e][i]+=a*r[e][s]}for(s=u-1;s>=0;s--){for(i=0;h>i;i++)f[s][i]/=this.Rdiag[s];for(e=0;s>e;e++)for(i=0;h>i;i++)f[e][i]-=f[s][i]*r[e][s]}return f.subMatrix(0,u-1,0,h-1)},isFullRank:function(){for(var t=this.QR.columns,r=0;t>r;r++)if(0===this.Rdiag[r])return!1;return!0},get upperTriangularFactor(){var t,r,n=this.QR,e=n.columns,i=new o(e,e);for(t=0;e>t;t++)for(r=0;e>r;r++)i[t][r]=r>t?n[t][r]:t===r?this.Rdiag[t]:0;return i},get orthogonalFactor(){var t,r,n,e,i=this.QR,s=i.rows,a=i.columns,h=new o(s,a);for(n=a-1;n>=0;n--){for(t=0;s>t;t++)h[t][n]=0;for(h[n][n]=1,r=n;a>r;r++)if(0!==i[n][n]){for(e=0,t=n;s>t;t++)e+=i[t][n]*h[t][r];for(e=-e/i[n][n],t=n;s>t;t++)h[t][r]+=e*i[t][n]}}return h}},r.exports=n},{"../matrix":61,"./util":58}],57:[function(t,r){"use strict";function n(t,r){if(!(this instanceof n))return new n(t,r);t=o.checkMatrix(t),r=r||{};var i=t.clone(),s=t.rows,a=t.columns,h=Math.min(s,a),f=!0,u=!0;r.computeLeftSingularVectors===!1&&(f=!1),r.computeRightSingularVectors===!1&&(u=!1);var c=r.autoTranspose===!0,l=!1;if(a>s)if(c){i=i.transpose(),s=i.rows,a=i.columns,l=!0;var d=f;f=u,u=d}else console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");var m,p,v,w,g,y,M,x,b,k,A,S,q,j,D,R,z,C,O,I,V,E=new Array(Math.min(s+1,a)),U=o.zeros(s,h),L=o.zeros(a,a),N=new Array(a),T=new Array(s),_=Math.min(s-1,a),P=Math.max(0,Math.min(a-2,s));for(v=0,k=Math.max(_,P);k>v;v++){if(_>v){for(E[v]=0,m=v;s>m;m++)E[v]=e(E[v],i[m][v]);if(0!==E[v]){for(i[v][v]<0&&(E[v]=-E[v]),m=v;s>m;m++)i[m][v]/=E[v];i[v][v]+=1}E[v]=-E[v]}for(p=v+1;a>p;p++){if(_>v&&0!==E[v]){for(g=0,m=v;s>m;m++)g+=i[m][v]*i[m][p];for(g=-g/i[v][v],m=v;s>m;m++)i[m][p]+=g*i[m][v]}N[p]=i[v][p]}if(f&&_>v)for(m=v;s>m;m++)U[m][v]=i[m][v];if(P>v){for(N[v]=0,m=v+1;a>m;m++)N[v]=e(N[v],N[m]);if(0!==N[v]){for(N[v+1]<0&&(N[v]=-N[v]),m=v+1;a>m;m++)N[m]/=N[v];N[v+1]+=1}if(N[v]=-N[v],s>v+1&&0!==N[v]){for(m=v+1;s>m;m++)T[m]=0;for(p=v+1;a>p;p++)for(m=v+1;s>m;m++)T[m]+=N[p]*i[m][p];for(p=v+1;a>p;p++)for(g=-N[p]/N[v+1],m=v+1;s>m;m++)i[m][p]+=g*T[m]}if(u)for(m=v+1;a>m;m++)L[m][v]=N[m]}}if(w=Math.min(a,s+1),a>_&&(E[_]=i[_][_]),w>s&&(E[w-1]=0),w>P+1&&(N[P]=i[P][w-1]),N[w-1]=0,f){for(p=_;h>p;p++){for(m=0;s>m;m++)U[m][p]=0;U[p][p]=1}for(v=_-1;v>=0;v--)if(0!==E[v]){for(p=v+1;h>p;p++){for(g=0,m=v;s>m;m++)g+=U[m][v]*U[m][p];for(g=-g/U[v][v],m=v;s>m;m++)U[m][p]+=g*U[m][v]}for(m=v;s>m;m++)U[m][v]=-U[m][v];for(U[v][v]=1+U[v][v],m=0;v-1>m;m++)U[m][v]=0}else{for(m=0;s>m;m++)U[m][v]=0;U[v][v]=1}}if(u)for(v=a-1;v>=0;v--){if(P>v&&0!==N[v])for(p=v+1;a>p;p++){for(g=0,m=v+1;a>m;m++)g+=L[m][v]*L[m][p];for(g=-g/L[v+1][v],m=v+1;a>m;m++)L[m][p]+=g*L[m][v]}for(m=0;a>m;m++)L[m][v]=0;L[v][v]=1}for(var H=w-1,Q=0,W=Math.pow(2,-52);w>0;){for(v=w-2;v>=-1&&-1!==v;v--)if(Math.abs(N[v])<=W*(Math.abs(E[v])+Math.abs(E[v+1]))){N[v]=0;break}if(v===w-2)A=4;else{for(y=w-1;y>=v&&y!==v;y--)if(g=(y!==w?Math.abs(N[y]):0)+(y!==v+1?Math.abs(N[y-1]):0),Math.abs(E[y])<=W*g){E[y]=0;break}y===v?A=3:y===w-1?A=1:(A=2,v=y)}switch(v++,A){case 1:for(M=N[w-2],N[w-2]=0,p=w-2;p>=v;p--)if(g=e(E[p],M),x=E[p]/g,b=M/g,E[p]=g,p!==v&&(M=-b*N[p-1],N[p-1]=x*N[p-1]),u)for(m=0;a>m;m++)g=x*L[m][p]+b*L[m][w-1],L[m][w-1]=-b*L[m][p]+x*L[m][w-1],L[m][p]=g;break;case 2:for(M=N[v-1],N[v-1]=0,p=v;w>p;p++)if(g=e(E[p],M),x=E[p]/g,b=M/g,E[p]=g,M=-b*N[p],N[p]=x*N[p],f)for(m=0;s>m;m++)g=x*U[m][p]+b*U[m][v-1],U[m][v-1]=-b*U[m][p]+x*U[m][v-1],U[m][p]=g;break;case 3:for(S=Math.max(Math.max(Math.max(Math.max(Math.abs(E[w-1]),Math.abs(E[w-2])),Math.abs(N[w-2])),Math.abs(E[v])),Math.abs(N[v])),q=E[w-1]/S,j=E[w-2]/S,D=N[w-2]/S,R=E[v]/S,z=N[v]/S,C=((j+q)*(j-q)+D*D)/2,O=q*D*q*D,I=0,(0!==C||0!==O)&&(I=Math.sqrt(C*C+O),0>C&&(I=-I),I=O/(C+I)),M=(R+q)*(R-q)+I,V=R*z,p=v;w-1>p;p++){if(g=e(M,V),x=M/g,b=V/g,p!==v&&(N[p-1]=g),M=x*E[p]+b*N[p],N[p]=x*N[p]-b*E[p],V=b*E[p+1],E[p+1]=x*E[p+1],u)for(m=0;a>m;m++)g=x*L[m][p]+b*L[m][p+1],L[m][p+1]=-b*L[m][p]+x*L[m][p+1],L[m][p]=g;if(g=e(M,V),x=M/g,b=V/g,E[p]=g,M=x*N[p]+b*E[p+1],E[p+1]=-b*N[p]+x*E[p+1],V=b*N[p+1],N[p+1]=x*N[p+1],f&&s-1>p)for(m=0;s>m;m++)g=x*U[m][p]+b*U[m][p+1],U[m][p+1]=-b*U[m][p]+x*U[m][p+1],U[m][p]=g}N[w-2]=M,Q+=1;break;case 4:if(E[v]<=0&&(E[v]=E[v]<0?-E[v]:0,u))for(m=0;H>=m;m++)L[m][v]=-L[m][v];for(;H>v&&!(E[v]>=E[v+1]);){if(g=E[v],E[v]=E[v+1],E[v+1]=g,u&&a-1>v)for(m=0;a>m;m++)g=L[m][v+1],L[m][v+1]=L[m][v],L[m][v]=g;if(f&&s-1>v)for(m=0;s>m;m++)g=U[m][v+1],U[m][v+1]=U[m][v],U[m][v]=g;v++}Q=0,w--}}if(l){var B=L;L=U,U=B}this.m=s,this.n=a,this.s=E,this.U=U,this.V=L}var o=t("../matrix"),e=t("./util").hypotenuse;n.prototype={get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]},get norm2(){return this.s[0]},get rank(){for(var t=Math.pow(2,-52),r=Math.max(this.m,this.n)*this.s[0]*t,n=0,o=this.s,e=0,i=o.length;i>e;e++)o[e]>r&&n++;return n},get diagonal(){return this.s},get threshold(){return Math.pow(2,-52)/2*Math.max(this.m,this.n)*this.s[0]},get leftSingularVectors(){return this.U},get rightSingularVectors(){return this.V},get diagonalMatrix(){return o.diag(this.s)},solve:function(t){var r,n=t,e=this.threshold,i=this.s.length,s=o.zeros(i,i);for(r=0;i>r;r++)s[r][r]=Math.abs(this.s[r])<=e?0:1/this.s[r];var a,h,f,u=this.V.mmul(s),c=this.V.rows,l=this.U.rows,d=o.zeros(c,l);for(r=0;c>r;r++)for(a=0;l>a;a++){for(f=0,h=0;i>h;h++)f+=u[r][h]*this.U[a][h];d[r][a]=f}return d.mmul(n)},solveForDiagonal:function(t){return this.solve(o.diag(t))},inverse:function(){var t,r,n=this.threshold,e=this.V.rows,i=this.V.columns,s=new o(e,this.s.length);for(t=0;e>t;t++)for(r=0;i>r;r++)s[t][r]=Math.abs(this.s[r])>n?this.V[t][r]/this.s[r]:0;var a,h,f=this.U.rows,u=this.U.columns,c=new o(e,f);for(t=0;e>t;t++)for(r=0;f>r;r++){for(h=0,a=0;u>a;a++)h+=s[t][a]*this.U[r][a];c[t][r]=h}return c}},r.exports=n},{"../matrix":61,"./util":58}],58:[function(t,r,n){"use strict";n.hypotenuse=function(t,r){var n;return Math.abs(t)>Math.abs(r)?(n=r/t,Math.abs(t)*Math.sqrt(1+n*n)):0!==r?(n=t/r,Math.abs(r)*Math.sqrt(1+n*n)):0}},{}],59:[function(t,r){"use strict";function n(t){return o(t,e.eye(t.rows))}function o(t,r){return t.isSquare()?new a(t).solve(r):new h(t).solve(r)}var e=t("./matrix"),i=t("./dc/svd"),s=t("./dc/evd"),a=t("./dc/lu"),h=t("./dc/qr"),f=t("./dc/cholesky");e.prototype.inverse=function(){return n(this)},e.prototype.solve=function(t){return o(this,t)},r.exports={SingularValueDecomposition:i,SVD:i,EigenvalueDecomposition:s,EVD:s,LuDecomposition:a,LU:a,QrDecomposition:h,QR:h,CholeskyDecomposition:f,CHO:f,inverse:n,solve:o}},{"./dc/cholesky":53,"./dc/evd":54,"./dc/lu":55,"./dc/qr":56,"./dc/svd":57,"./matrix":61}],60:[function(t,r){"use strict";r.exports=t("./matrix"),r.exports.Decompositions=r.exports.DC=t("./decompositions")},{"./decompositions":59,"./matrix":61}],61:[function(t,r){"use strict";function n(t){for(var r=0,n=t.length,o=new Array(n);n>r;r++)o[r]=t[r];return o}function o(t){this.message=t||"Unknown matrix error"}function e(t,r){var i,s,a=0;if(Array.isArray(t)){if(s=r,i=s?n(t):t,t=i.length,r=i[0].length,"undefined"==typeof r)throw new o("Data must be a 2D array");if(!(t>0&&r>0))throw new o("Invalid dimensions: "+t+"x"+r);for(;t>a;a++){if(i[a].length!==r)throw new o("Inconsistent array dimensions");s&&(i[a]=n(i[a]))}}else{if("number"!=typeof t)throw new o("Invalid arguments");if(!(t>0&&r>0))throw new o("Invalid dimensions: "+t+"x"+r);for(i=new Array(t);t>a;a++)i[a]=new Array(r)}return Object.defineProperty(i,"rows",{writable:!0,value:t}),Object.defineProperty(i,"columns",{writable:!0,value:r}),i.__proto__=e.prototype,i}var i=Array.prototype.splice,s=Array.prototype.concat;o.prototype=Object.create(Error.prototype),o.prototype.name="MatrixError",o.prototype.constructor=o,e.from1DArray=function(t,r,n){var i,s,a=0;if(i=t*r,i!==n.length)throw new o("Data length does not match given dimensions");for(s=new Array(t);t>a;a++)s[a]=n.slice(a*r,(a+1)*r);return new e(s)},e.rowVector=function(t){return new e([t])},e.columnVector=function(t){for(var r=t.length,n=new Array(r),o=0;r>o;o++)n[o]=[t[o]];return new e(n)},e.empty=function(t,r){return new e(t,r)},e.zeros=function(t,r){return e.empty(t,r).fill(0)},e.ones=function(t,r){return e.empty(t,r).fill(1)},e.rand=function(t,r){for(var n=e.empty(t,r),o=0,i=n.rows;i>o;o++)for(var s=0,a=n.columns;a>s;s++)n[o][s]=Math.random();return n},e.eye=function(t){for(var r=e.zeros(t,t),n=r.rows,o=0;n>o;o++)r[o][o]=1;return r},e.diag=function(t){for(var r=t.length,n=e.zeros(r,r),o=0;r>o;o++)n[o][o]=t[o];return n},e.indices=function(t,r){for(var n=new Array(r-t),o=0;os&&(s=arguments[r].columns);var a=e.zeros(i,s),h=0;for(r=0;rt||t>this.rows-1)throw new o("Row index out of range.")},e.prototype.checkColumnIndex=function(t){if(0>t||t>this.columns-1)throw new o("Column index out of range.")},e.prototype.checkDimensions=function(t){if(this.rows!==t.rows||this.columns!==t.columns)throw new o("Matrices dimensions must be equal.")},e.prototype.apply=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t.call(this,o,e);return this},e.prototype.clone=function(){return new e(this.to2DArray())},e.prototype.to1DArray=function(){return s.apply([],this)},e.prototype.to2DArray=function(){for(var t=this.rows,r=new Array(t),o=0;t>o;o++)r[o]=n(this[o]);return r},e.prototype.isRowVector=function(){return 1===this.rows},e.prototype.isColumnVector=function(){return 1===this.columns},e.prototype.isVector=function(){return 1===this.rows||1===this.columns},e.prototype.isSquare=function(){return this.rows===this.columns},e.prototype.isSymmetric=function(){if(this.isSquare()){for(var t=this.rows,r=0;t>r;r++)for(var n=0;r>=n;n++)if(this[r][n]!==this[n][r])return!1;return!0}return!1},e.prototype.set=function(t,r,n){return this[t][r]=n,this +},e.prototype.get=function(t,r){return this[t][r]},e.prototype.fill=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]=t;return this},e.prototype.neg=function(){return this.mulS(-1)},e.prototype.add=function(t){return"number"==typeof t?this.addS(t):(t=e.checkMatrix(t),this.addM(t))},e.prototype.addS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t;return this},e.prototype.addM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o][e];return this},e.prototype.sub=function(t){return"number"==typeof t?this.subS(t):(t=e.checkMatrix(t),this.subM(t))},e.prototype.subS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t;return this},e.prototype.subM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o][e];return this},e.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):(t=e.checkMatrix(t),this.mulM(t))},e.prototype.mulS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t;return this},e.prototype.mulM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o][e];return this},e.prototype.div=function(t){return"number"==typeof t?this.divS(t):(t=e.checkMatrix(t),this.divM(t))},e.prototype.divS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t;return this},e.prototype.divM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o][e];return this},e.prototype.getRow=function(t){return this.checkRowIndex(t),n(this[t])},e.prototype.setRow=function(t,r){if(this.checkRowIndex(t),e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o("Invalid row size");return this[t]=n(r),this},e.prototype.removeRow=function(t){if(this.checkRowIndex(t),1===this.rows)throw new o("A matrix cannot have less than one row");return i.call(this,t,1),this.rows-=1,this},e.prototype.addRow=function(t,r){if("undefined"==typeof r&&(r=t,t=this.rows),0>t||t>this.rows)throw new o("Row index out of range.");if(e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o("Invalid row size");return i.call(this,t,0,n(r)),this.rows+=1,this},e.prototype.swapRows=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);var n=this[t];return this[t]=this[r],this[r]=n,this},e.prototype.getColumn=function(t){this.checkColumnIndex(t);for(var r=this.rows,n=new Array(r),o=0;r>o;o++)n[o]=this[o][t];return n},e.prototype.setColumn=function(t,r){this.checkColumnIndex(t),e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o("Invalid column size");for(var i=0;n>i;i++)this[i][t]=r[i];return this},e.prototype.removeColumn=function(t){if(this.checkColumnIndex(t),1===this.columns)throw new o("A matrix cannot have less than one column");for(var r=0,n=this.rows;n>r;r++)this[r].splice(t,1);return this.columns-=1,this},e.prototype.addColumn=function(t,r){if("undefined"==typeof r&&(r=t,t=this.columns),0>t||t>this.columns)throw new o("Column index out of range.");e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o("Invalid column size");for(var i=0;n>i;i++)this[i].splice(t,0,r[i]);return this.columns+=1,this},e.prototype.swapColumns=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);for(var n,o,e=this.rows,i=0;e>i;i++)o=this[i],n=o[t],o[t]=o[r],o[r]=n;return this},e.prototype.checkRowVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.columns)throw new o("vector size must be the same as the number of columns");return t},e.prototype.checkColumnVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.rows)throw new o("vector size must be the same as the number of rows");return t},e.prototype.addRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[e];return this},e.prototype.subRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[e];return this},e.prototype.mulRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[e];return this},e.prototype.divRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[e];return this},e.prototype.addColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o];return this},e.prototype.subColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o];return this},e.prototype.mulColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o];return this},e.prototype.divColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o];return this},e.prototype.mulRow=function(t,r){this.checkRowIndex(t);for(var n=0,o=this.columns;o>n;n++)this[t][n]*=r;return this},e.prototype.mulColumn=function(t,r){this.checkColumnIndex(t);for(var n=0,o=this.rows;o>n;n++)this[n][t]*=r},e.prototype.max=function(){for(var t=-1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]>t&&(t=this[o][e]);return t},e.prototype.maxIndex=function(){for(var t=-1/0,r={},n=this.rows,o=this.columns,e=0;n>e;e++)for(var i=0;o>i;i++)this[e][i]>t&&(t=this[e][i],r.row=e,r.column=i);return r},e.prototype.min=function(){for(var t=1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]e;e++)for(var i=0;o>i;i++)this[e][i]n;n++)this[t][n]>r&&(r=this[t][n]);return r},e.prototype.maxRowIndex=function(t){this.checkRowIndex(t);for(var r=-1/0,n={row:t},o=0,e=this.columns;e>o;o++)this[t][o]>r&&(r=this[t][o],n.column=o);return n},e.prototype.minRow=function(t){this.checkRowIndex(t);for(var r=1/0,n=0,o=this.columns;o>n;n++)this[t][n]o;o++)this[t][o]n;n++)this[n][t]>r&&(r=this[n][t]);return r},e.prototype.maxColumnIndex=function(t){this.checkColumnIndex(t);for(var r=-1/0,n={row:0,column:t},o=0,e=this.rows;e>o;o++)this[o][t]>r&&(r=this[o][t],n.row=o);return n},e.prototype.minColumn=function(t){this.checkColumnIndex(t);for(var r=1/0,n=0,o=this.rows;o>n;n++)this[n][t]o;o++)this[o][t]t;t++)a[t]=this[t][t];return a},e.prototype.sum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e];return t},e.prototype.mean=function(){return this.sum()/this.size},e.prototype.prod=function h(){for(var h=1,t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)h*=this[n][o];return h},e.prototype.cumulativeSum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e],this[o][e]=t;return this},e.prototype.dot=function f(t){if(this.size!==t.size)throw new o("vectors do not have the same size");for(var r=this.to1DArray(),n=t.to1DArray(),f=0,e=r.length,i=0;e>i;i++)f+=r[i]*n[i];return f},e.prototype.mmul=function(t){if(!e.isMatrix(t))throw new o('parameter "other" must be a matrix');this.columns!==t.rows&&console.warn("Number of columns of left matrix are not equal to number of rows of right matrix.");var r,n,i,s=this.rows,a=this.columns,h=t.columns,f=new e(s,h),u=new Array(a);for(n=0;h>n;n++){for(i=0;a>i;i++)u[i]=t[i][n];for(r=0;s>r;r++){var c=this[r],l=0;for(i=0;a>i;i++)l+=c[i]*u[i];f[r][n]=l}}return f},e.prototype.sortRows=function(t){for(var r=0,n=this.rows;n>r;r++)this[r].sort(t);return this},e.prototype.sortColumns=function(t){for(var r=0,n=this.columns;n>r;r++)this.setColumn(r,this.getColumn(r).sort(t));return this},e.prototype.transpose=function(){for(var t=new e(this.columns,this.rows),r=this.rows,n=this.columns,o=0;r>o;o++)for(var i=0;n>i;i++)t[i][o]=this[o][i];return t},e.prototype.subMatrix=function(t,r,n,i){if(t>r||n>i||0>t||t>=this.rows||0>r||r>=this.rows||0>n||n>=this.columns||0>i||i>=this.columns)throw new o("Argument out of range");for(var s=new e(r-t+1,i-n+1),a=t;r>=a;a++)for(var h=n;i>=h;h++)s[a-t][h-n]=this[a][h];return s},e.prototype.subMatrixRow=function(t,r,n){if("undefined"==typeof r?(r=0,n=this.columns-1):"undefined"==typeof n&&(n=this.columns-1),r>n||0>r||r>=this.columns||0>n||n>=this.columns)throw new o("Argument out of range.");for(var i=t.length,s=this.rows,a=new e(i,n-r+1),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o("Argument out of range.");a[h][f-r]=this[t[h]][f]}return a},e.prototype.subMatrixColumn=function(t,r,n){if("undefined"==typeof r?(r=0,n=this.rows-1):"undefined"==typeof n&&(n=this.rows-1),r>n||0>r||r>=this.rows||0>n||n>=this.rows)throw new o("Argument out of range.");for(var i=t.length,s=this.columns,a=new e(n-r+1,i),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o("Argument out of range.");a[f-r][h]=this[f][t[h]]}return a},e.prototype.trace=function u(){if(!this.isSquare())throw new o("The matrix is not square");for(var u=0,t=0,r=this.rows;r>t;t++)u+=this[t][t];return u},e.prototype.abs=function(){for(var t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)this[n][o]=Math.abs(this[n][o])},e.MatrixError=o,r.exports=e},{}],62:[function(require,module,exports){"use strict";function SOM(t,r,n,o){this.x=t,this.y=r,n=n||{},this.options={};for(var e in defaultOptions)this.options[e]=n.hasOwnProperty(e)?n[e]:defaultOptions[e];if("number"==typeof this.options.fields)this.numWeights=this.options.fields;else{if(!Array.isArray(this.options.fields))throw new Error("Invalid fields definition");this.numWeights=this.options.fields.length;var i=getConverters(this.options.fields);this.extractor=i.extractor,this.creator=i.creator}if("rect"===this.options.gridType)this.nodeType=NodeSquare,this.gridDim={x:t,y:r};else{this.nodeType=NodeHexagonal;var s=this.x-Math.floor(this.y/2);this.gridDim={x:s,y:this.y,z:-(0-s-this.y)}}if(this.torus=this.options.torus,this.distanceMethod=this.torus?"getDistanceTorus":"getDistance",this.distance=this.options.distance,this.maxDistance=getMaxDistance(this.distance,this.numWeights),o===!0)return void(this.done=!0);if(!(t>0&&r>0))throw new Error("x and y must be positive");this.times={findBMU:0,adjust:0},this.randomizer=this.options.randomizer,this.iterationCount=0,this.iterations=this.options.iterations,this.startLearningRate=this.learningRate=this.options.learningRate,this.mapRadius=Math.floor(Math.max(t,r)/2),this.algorithmMethod=this.options.method,this._initNodes(),this.done=!1}function getConverters(t){for(var r=t.length,n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=getNormalizer(t[e].range),o[e]=getDenormalizer(t[e].range);return{extractor:function(o){for(var e=new Array(r),i=0;r>i;i++)e[i]=n[i](o[t[i].name]);return e},creator:function(n){for(var e={},i=0;r>i;i++)e[t[i].name]=o[i](n[i]);return e}}}function getNormalizer(t){return function(r){return(r-t[0])/(t[1]-t[0])}}function getDenormalizer(t){return function(r){return t[0]+r*(t[1]-t[0])}}function squareEuclidean(t,r){for(var n=0,o=0,e=t.length;e>o;o++)n+=(t[o]-r[o])*(t[o]-r[o]);return n}function getRandomValue(t,r){return t[Math.floor(r()*t.length)]}function getMaxDistance(t,r){for(var n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=0,o[e]=1;return t(n,o)}var NodeSquare=require("./node-square"),NodeHexagonal=require("./node-hexagonal"),defaultOptions={fields:3,randomizer:Math.random,distance:squareEuclidean,iterations:10,learningRate:.1,gridType:"rect",torus:!0,method:"random"};SOM.load=function loadModel(model,distance){if("SOM"===model.name){var x=model.data.length,y=model.data[0].length;distance?model.options.distance=distance:model.options.distance&&(model.options.distance=eval("("+model.options.distance+")"));var som=new SOM(x,y,model.options,!0);som.nodes=new Array(x);for(var i=0;x>i;i++){som.nodes[i]=new Array(y);for(var j=0;y>j;j++)som.nodes[i][j]=new som.nodeType(i,j,model.data[i][j],som)}return som}throw new Error("expecting a SOM model")},SOM.prototype["export"]=function(t){if(!this.done)throw new Error("model is not ready yet");var r={name:"SOM"};r.options={fields:this.options.fields,gridType:this.options.gridType,torus:this.options.torus},r.data=new Array(this.x);for(var n=0;nr;r++)o[r]=this.extractor(t[r]);this.numIterations=this.iterations*e,this.timeConstant="random"===this.algorithmMethod?this.numIterations/Math.log(this.mapRadius):e/Math.log(this.mapRadius),this.trainingSet=o,this.times.setTraining=Date.now()-n},SOM.prototype.trainOne=function(){if(this.done)return!1;if(this.numIterations-->0){var t,r,n;return"random"===this.algorithmMethod?(t=this.mapRadius*Math.exp(-this.iterationCount/this.timeConstant),r=getRandomValue(this.trainingSet,this.randomizer),this._adjust(r,t),this.learningRate=this.startLearningRate*Math.exp(-this.iterationCount/this.numIterations)):(n=-Math.floor(this.iterationCount/this.trainingSet.length),t=this.mapRadius*Math.exp(n/this.timeConstant),r=this.trainingSet[this.iterationCount%this.trainingSet.length],this._adjust(r,t),(this.iterationCount+1)%this.trainingSet.length===0&&(this.learningRate=this.startLearningRate*Math.exp(n/Math.floor(this.numIterations/this.trainingSet.length)))),this.iterationCount++,!0}return this.done=!0,!1},SOM.prototype._adjust=function(t,r){var n,o,e,i,s=Date.now(),a=this._findBestMatchingUnit(t),h=Date.now();this.times.findBMU+=h-s;var f=Math.floor(r),u=a.x-f,c=a.x+f,l=a.y-f,d=a.y+f;for(n=u;c>=n;n++){var m=n;for(0>n?m+=this.x:n>=this.x&&(m-=this.x),o=l;d>=o;o++){var p=o;0>o?p+=this.y:o>=this.y&&(p-=this.y),e=a[this.distanceMethod](this.nodes[m][p]),r>e&&(i=Math.exp(-e/(2*r)),this.nodes[m][p].adjustWeights(t,this.learningRate,i))}}this.times.adjust+=Date.now()-h},SOM.prototype.train=function(t){if(!this.done)for(this.setTraining(t);this.trainOne(););},SOM.prototype.getConvertedNodes=function(){for(var t=new Array(this.x),r=0;rn&&(o=n,r=this.nodes[e][i]);return r},SOM.prototype.predict=function(t,r){if("boolean"==typeof t&&(r=t,t=null),t||(t=this.trainingSet),Array.isArray(t)&&(Array.isArray(t[0])||"object"==typeof t[0])){var n=this;return t.map(function(t){return n._predict(t,r)})}return this._predict(t,r)},SOM.prototype._predict=function(t,r){Array.isArray(t)||(t=this.extractor(t));var n=this._findBestMatchingUnit(t),o=[n.x,n.y];return r&&(o[2]=n.getPosition(t)),o},SOM.prototype.getQuantizationError=function(){for(var t=this.getFit(),r=t.length,n=0,o=0;r>o;o++)n+=t[o];return n/r},SOM.prototype.getFit=function(t){t||(t=this.trainingSet);for(var r,n=t.length,o=new Array(n),e=0;n>e;e++)r=this._findBestMatchingUnit(t[e]),o[e]=Math.sqrt(this.distance(t[e],r.weights));return o},module.exports=SOM},{"./node-hexagonal":63,"./node-square":64}],63:[function(t,r){function n(t,r,n,e){o.call(this,t,r,n,e),this.hX=t-Math.floor(r/2),this.z=0-this.hX-r}var o=t("./node-square");n.prototype=new o,n.prototype.constructor=n,n.prototype.getDistance=function(t){return Math.max(Math.abs(this.hX-t.hX),Math.abs(this.y-t.y),Math.abs(this.z-t.z))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.hX-t.hX),n=Math.abs(this.y-t.y),o=Math.abs(this.z-t.z);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n),Math.min(o,this.som.gridDim.z-o))},n.prototype.getPosition=function(){throw new Error("Unimplemented : cannot get position of the points for hexagonal grid")},r.exports=n},{"./node-square":64}],64:[function(t,r){function n(t,r,n,o){this.x=t,this.y=r,this.weights=n,this.som=o,this.neighbors={}}n.prototype.adjustWeights=function(t,r,n){for(var o=0,e=this.weights.length;e>o;o++)this.weights[o]+=r*n*(t[o]-this.weights[o])},n.prototype.getDistance=function(t){return Math.max(Math.abs(this.x-t.x),Math.abs(this.y-t.y))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.x-t.x),n=Math.abs(this.y-t.y);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n))},n.prototype.getNeighbors=function(t){if(!this.neighbors[t]){this.neighbors[t]=new Array(2);var r;if(this[t]>0?r=this[t]-1:this.som.torus&&(r=this.som.gridDim[t]-1),"undefined"!=typeof r){var n,o;"x"===t?(n=r,o=this.y):(n=this.x,o=r),this.neighbors[t][0]=this.som.nodes[n][o]}var e;this[t]s?(n=e[0],o=-1):(n=e[1],o=1)}else n=e[0],o=-1;else n=e[1],o=1;var h=1-i(r,this.weights),f=1-i(r,n.weights),u=(h-f)/(2-h-f);return.5+.5*u*o},n.prototype.getPosition=function(t){return[this.getPos("x",t),this.getPos("y",t)]},r.exports=n},{}],65:[function(t,r){"use strict";function n(t){for(var r=-1/0,n=t.length,o=0;n>o;o++)t[o]>r&&(r=t[o]);return r}function o(t){for(var r=1/0,n=t.length,o=0;n>o;o++)t[o]e;e++)t[e]n&&(n=t[e]);return{min:r,max:n}}function i(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r/n}function s(t){for(var r=0,n=t.length,o=0;n>o;o++)r*=t[o];return Math.pow(r,1/n)}function a(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=Math.log(t[o]);return r/n}function h(t,r){for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=r[i]*t[i],o+=r[i];return n/o}function f(t,r,n){"undefined"==typeof n&&(n=!1),t=n?t:t.slice(),t.sort();for(var o=t.length,e=Math.floor(o*r),i=0,s=e;o-e>s;s++)i+=t[s];return i/(o-2*e)}function u(t,r){"undefined"==typeof r&&(r=1);for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=Math.pow(t[i],r+1),o+=Math.pow(t[i],r);return n/o}function c(t,r){return Math.sqrt(p(t,r))}function l(t){return c(t)/Math.sqrt(t.length)}function d(t,r){"undefined"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length,o=Math.floor(n/2);return n%2===0?.5*(t[o-1]+t[o]):t[o]}function m(t,r){"undefined"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length/4,o=t[Math.ceil(n)-1],e=d(t,!0),i=t[Math.ceil(3*n)-1];return{q1:o,q2:e,q3:i}}function p(t,r){"undefined"==typeof r&&(r=!0);for(var n=i(t),o=0,e=t.length,s=0;e>s;s++){var a=t[s]-n;o+=a*a}return r?o/(e-1):o/e}function v(t,r){return Math.sqrt(w(t,r))}function w(t,r){"undefined"==typeof r&&(r=!0);for(var n=0,o=0,e=t.length,i=0;e>i;i++){var s=t[i],a=p(s);n+=(s.length-1)*a,o+=r?s.length-1:s.length}return n/o}function g(t){var r,n=t.length,o=new Array(n);for(r=0;n>r;r++)o[r]=0;var e=new Array(n),i=0;for(r=0;n>r;r++){var s=e.indexOf(t[r]);s>=0?o[s]++:(e[i]=t[r],o[i]=1,i++)}var a=0,h=0;for(r=0;i>r;r++)o[r]>a&&(a=o[r],h=r);return e[h]}function y(t,r,n){"undefined"==typeof n&&(n=!0);var o=i(t),e=i(r);if(t.length!==r.length)throw"Vectors do not have the same dimensions";for(var s=0,a=t.length,h=0;a>h;h++){var f=t[h]-o,u=r[h]-e;s+=f*u}return n?s/(a-1):s/a}function M(t,r){"undefined"==typeof r&&(r=!0);for(var n=i(t),o=0,e=0,s=t.length,a=0;s>a;a++){var h=t[a]-n;o+=h*h,e+=h*h*h}var f=o/s,u=e/s,c=u/Math.pow(f,1.5);if(r){var l=Math.sqrt(s*(s-1)),d=s-2;return l/d*c}return c}function x(t,r){"undefined"==typeof r&&(r=!0);for(var n=i(t),o=t.length,e=0,s=0,a=0;o>a;a++){var h=t[a]-n;e+=h*h,s+=h*h*h*h}var f=e/o,u=s/o;if(r){var c=e/(o-1),l=o*(o+1)/((o-1)*(o-2)*(o-3)),d=s/(c*c),m=(o-1)*(o-1)/((o-2)*(o-3));return l*d-3*m}return u/(f*f)-3}function b(t,r){"undefined"==typeof r&&(r=0);for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*Math.log(t[e]+r);return-n}function k(t,r){for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*r[e];return n}function A(t,r){return Math.sqrt(S(t,r))}function S(t,r){for(var n=k(t,r),o=0,e=t.length,i=0,s=0,a=0;e>a;a++){var h=t[a]-n,f=r[a];o+=f*h*h,s+=f,i+=f*f}return o*(s/(s*s-i))}function q(t,r){"undefined"==typeof r&&(r=!1);var n=t;r||(n=t.slice());for(var o=i(n),e=n.length,s=0;e>s;s++)n[s]-=o}function j(t,r,n){"undefined"==typeof r&&(r=c(t)),"undefined"==typeof n&&(n=!1);for(var o=t.length,e=n?t:new Array(o),i=0;o>i;i++)e[i]=t[i]/r;return e}function D(t){var r=t.length,n=new Array(r);n[0]=t[0];for(var o=1;r>o;o++)n[o]=n[o-1]+t[o];return n}r.exports={min:o,max:n,minMax:e,mean:i,geometricMean:s,logGeometricMean:a,grandMean:h,truncatedMean:f,contraHarmonicMean:u,standardDeviation:c,standardError:l,median:d,quartiles:m,variance:p,pooledStandardDeviation:v,pooledVariance:w,mode:g,covariance:y,skewness:M,kurtosis:x,entropy:b,weightedMean:k,weightedStandardDeviation:A,weightedVariance:S,center:q,standardize:j,cumulativeSum:D}},{}],66:[function(t,r){"use strict";function n(t,r){"undefined"==typeof r&&(r=0);for(var n=0,o=t.length,e=t[0].length,i=0;o>i;i++)for(var s=0;e>s;s++)n+=t[i][s]*Math.log(t[i][s]+r);return-n}function o(t,r){"undefined"==typeof r&&(r=0);var n,o,e,i,s=t.length,a=t[0].length;if(-1===r){for(n=[0],o=s*a,e=0;s>e;e++)for(i=0;a>i;i++)n[0]+=t[e][i];n[0]/=o}else if(0===r)for(n=new Array(a),o=s,i=0;a>i;i++){for(n[i]=0,e=0;s>e;e++)n[i]+=t[e][i];n[i]/=o}else{if(1!==r)throw new Error("Invalid dimension");for(n=new Array(s),o=a,i=0;s>i;i++){for(n[i]=0,e=0;a>e;e++)n[i]+=t[i][e];n[i]/=o}}return n}function e(t,r,n){for(var o=i(t,r,n),e=o.length,s=0;e>s;s++)o[s]=Math.sqrt(o[s]);return o}function i(t,r,n){"undefined"==typeof n&&(n=!0),r=r||o(t);var e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++)u=t[c][a]-r[a],h+=u,f+=u*u;s[a]=n?(f-h*h/e)/(e-1):(f-h*h/e)/e}return s}function s(t){for(var r=t.length,n=t[0].length,o=new Array(n),e=0;n>e;e++){for(var i=new Array(r),s=0;r>s;s++)i[s]=t[s][e];i.sort();var a=i.length;o[e]=a%2===0?.5*(i[a/2]+i[a/2-1]):i[Math.floor(a/2)]}return o}function a(t){var r,n,o=t.length,e=t[0].length,i=new Array(e);for(r=0;e>r;r++){for(var s=new Array(o),a=0;o>a;a++)s[a]=0;var h=new Array(o),f=0;for(n=0;o>n;n++){var u=h.indexOf(t[n][r]);u>=0?s[u]++:(h[f]=t[n][r],s[f]=1,f++)}var c=0,l=0;for(n=0;f>n;n++)s[n]>c&&(c=s[n],l=n);i[r]=h[l]}return i}function h(t,r){"undefined"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=n.length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c}var l=h/e,d=f/e,m=d/Math.pow(l,1.5);if(r){var p=Math.sqrt(e*(e-1)),v=e-2;s[a]=p/v*m}else s[a]=m}return s}function f(t,r){"undefined"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c*c}var l=h/e,d=f/e;if(r){var m=h/(e-1),p=e*(e+1)/((e-1)*(e-2)*(e-3)),v=f/(m*m),w=(e-1)*(e-1)/((e-2)*(e-3));s[a]=p*v-3*w}else s[a]=d/(l*l)-3}return s}function u(t){for(var r=t.length,n=e(t),o=n.length,i=new Array(o),s=Math.sqrt(r),a=0;o>a;a++)i[a]=n[a]/s;return i}function c(t,r){return l(t,void 0,r)}function l(t,r,n){"undefined"==typeof n&&(n=0),"undefined"==typeof r&&(0===n?r=t.length-1:1===n&&(r=t[0].length-1));var e=o(t,n),i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===n){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(f=0,u=0;i>u;u++)f+=(t[u][h]-e[h])*(t[u][a]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}else{if(1!==n)throw new Error("Invalid dimension");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(f=0,u=0;c>u;u++)f+=(t[h][u]-e[h])*(t[a][u]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}return s}function d(t){var r,n,i=o(t),s=e(t,!0,i),a=m(t,i,s),h=t.length,f=t[0].length,u=new Array(f);for(r=0;f>r;r++)u[r]=new Array(f);for(r=0;f>r;r++)for(n=r;f>n;n++){for(var c=0,l=0,d=a.length;d>l;l++)c+=a[l][n]*a[l][r];c/=h-1,u[r][n]=c,u[n][r]=c}return u}function m(t,r,n){return r=r||o(t),"undefined"==typeof n&&(n=e(t,!0,r)),v(p(t,r,!1),n,!0)}function p(t,r,n){r=r||o(t);var e,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),e=0;h>e;e++)a[e]=new Array(t[e].length);for(e=0;h>e;e++){var f=a[e];for(i=0,s=f.length;s>i;i++)f[i]=t[e][i]-r[i]}return a}function v(t,r,n){"undefined"==typeof r&&(r=e(t));var o,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),o=0;h>o;o++)a[o]=new Array(t[o].length);for(o=0;h>o;o++){var f=a[o],u=t[o];for(i=0,s=f.length;s>i;i++)0===r[i]||isNaN(r[i])||(f[i]=u[i]/r[i])}return a}function w(t,r){var n=o(t),e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++){var l=t[c][a]-n[a],d=r[c];h+=d*l*l,u+=d,f+=d*d}s[a]=h*(u/(u*u-f))}return s}function g(t,r,n){"undefined"==typeof n&&(n=0);var o=t.length;if(0===o)return[];var e,i,s,a,h,f,u=t[0].length;if(0===n){for(e=new Array(u),i=0;u>i;i++)e[i]=0;for(i=0;o>i;i++)for(f=t[i],h=r[i],a=0;u>a;a++)e[a]+=f[a]*h}else{if(1!==n)throw new Error("Invalid dimension");for(e=new Array(o),i=0;o>i;i++)e[i]=0;for(a=0;o>a;a++)for(f=t[a],h=r[a],i=0;u>i;i++)e[a]+=f[i]*h}var c=x(r);if(0!==c)for(i=0,s=e.length;s>i;i++)e[i]/=c;return e}function y(t,r,n,o){o=o||0,n=n||g(t,r,o);for(var e=0,i=0,s=0,a=r.length;a>s;s++)e+=r[s],i+=r[s]*r[s];var h=e/(e*e-i);return M(t,r,n,h,o)}function M(t,r,n,o,e){e=e||0,n=n||g(t,r,e),"undefined"==typeof o&&(o=1);var i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===e){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(u=0,f=0;i>f;f++)u+=r[f]*(t[f][h]-n[h])*(t[f][a]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}else{if(1!==e)throw new Error("Invalid dimension");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(u=0,f=0;c>f;f++)u+=r[f]*(t[h][f]-n[h])*(t[a][f]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}return s}function x(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r}r.exports={entropy:n,mean:o,standardDeviation:e,variance:i,median:s,mode:a,skewness:h,kurtosis:f,standardError:u,covariance:c,scatter:l,correlation:d,zScores:m,center:p,standardize:v,weightedVariance:w,weightedMean:g,weightedCovariance:y,weightedScatter:M}},{}]},{},[1])(1)}); //# sourceMappingURL=ml.min.js.map \ No newline at end of file diff --git a/dist/ml.min.js.map b/dist/ml.min.js.map index 32c5e2c..c907032 100644 --- a/dist/ml.min.js.map +++ b/dist/ml.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["ml.min.js"],"names":["e","exports","module","define","amd","f","window","global","self","ML","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"Math","Matrix","Distance","Stat","array","matrix","NN","nn","SOM","ml-distance","ml-matrix","ml-som","ml-stat/array","ml-stat/matrix",2,"b","ii","d",3,"max","ans","aux","abs",4,"sqrt","log",5,6,7,8,"p","p2","q2",9,"up","down","min",10,"czekanowski","./czekanowski",11,"q1",12,"dice","./dice",13,14,"squaredEuclidean","./squared-euclidean",15,16,17,18,19,20,21,"intersection","./intersection",22,"p1",23,"jaccard","./jaccard",24,25,26,"q",27,28,29,"kulczynski","./kulczynski",30,31,32,"pow",33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,"squaredChord","./squaredChord",48,49,"m",50,51,52,"euclidean","manhattan","minkowski","chebyshev","sorensen","gower","soergel","kulczynskiS","canberra","lorentzian","intersectionS","waveHedges","czekanowskiS","motyka","ruzicka","tanimoto","innerProduct","harmonicMean","cosine","kumarHassebrook","jaccardS","diceS","fidelity","bhattacharyya","hellinger","matusita","squaredChordS","pearson","neyman","squared","probabilisticSymmetric","divergence","clark","additiveSymmetric","kullbackLeibler","jeffreys","kdivergence","topsoe","jensenShannon","jensenDifference","taneja","kumarJohnson","avg","./dist/additiveSymmetric","./dist/avg","./dist/bhattacharyya","./dist/canberra","./dist/chebyshev","./dist/clark","./dist/cosine","./dist/czekanowski","./dist/czekanowskiS","./dist/dice","./dist/diceS","./dist/divergence","./dist/euclidean","./dist/fidelity","./dist/gower","./dist/harmonicMean","./dist/hellinger","./dist/innerProduct","./dist/intersection","./dist/intersectionS","./dist/jaccard","./dist/jaccardS","./dist/jeffreys","./dist/jensenDifference","./dist/jensenShannon","./dist/kdivergence","./dist/kulczynski","./dist/kulczynskiS","./dist/kullbackLeibler","./dist/kumarHassebrook","./dist/kumarJohnson","./dist/lorentzian","./dist/manhattan","./dist/matusita","./dist/minkowski","./dist/motyka","./dist/neyman","./dist/pearson","./dist/probabilisticSymmetric","./dist/ruzicka","./dist/soergel","./dist/sorensen","./dist/squared","./dist/squared-euclidean","./dist/squaredChord","./dist/squaredChordS","./dist/taneja","./dist/tanimoto","./dist/topsoe","./dist/waveHedges",53,"EigenvalueDecomposition","checkMatrix","isSquare","j","columns","V","zeros","Array","value","isSymmetric","tred2","tql2","H","ort","orthes","hqr2","EigenvalueDecompositionResult","g","h","k","hh","scale","dl1","c","c2","c3","el1","s2","iter","tst1","eps","hypotenuse","low","high","w","x","y","ra","sa","vr","vi","notlast","cdivres","exshift","norm","z","cdiv","xr","xi","yr","yi","this","LuDecomposition","v","LUrowi","LUcolj","kmax","lu","clone","rows","pivotVector","pivotSign","LuDecompositionResult","vector","sign","LU","QrDecomposition","qr","rdiag","nrm","QrDecompositionResult","QR","Rdiag","SingularValueDecomposition","options","nu","wantu","wantv","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","swapped","transpose","console","warn","ks","cs","sn","kase","sp","spm1","epm1","sk","ek","shift","U","work","nct","nrt","pp","tmp","SingularValueDecompositionResult","CholeskyDecomposition","dimension","positiveDefinite","Lrowj","Lrowk","CholeskyDecompositionResult","L","inverse","solve","eye","leftHandSide","rightHandSide","prototype",{"end":{"file":"?","comments_before":[],"nlb":false,"endpos":38441,"pos":38426,"col":8,"line":1351,"value":"realEigenvalues","type":"name"},"start":{"file":"?","comments_before":[],"nlb":false,"endpos":38441,"pos":38426,"col":8,"line":1351,"value":"realEigenvalues","type":"name"},"name":"realEigenvalues"},"realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","diagonalMatrix","X","isSingular","data","col","determinant","lowerTriangularFactor","upperTriangularFactor","pivotPermutationVector","slice","count","subMatrixRow","isFullRank","subMatrix","orthogonalFactor","condition","norm2","rank","tol","diagonal","threshold","leftSingularVectors","rightSingularVectors","diag","Y","scols","Ls","sum","VL","mmul","vrows","urows","VLU","solveForDiagonal","vcols","ucols","leftTriangularFactor","B","other","SVD","EVD","CHO","./matrix",54,"Decompositions","DC","./decompositions",55,"arr","result","MatrixError","message","nRows","nColumns","newInstance","isArray","Object","defineProperty","writable","__proto__","Asplice","splice","Aconcat","concat","create","name","constructor","from1DArray","newRows","newColumns","newData","rowVector","columnVector","empty","fill","ones","rand","jj","random","indices","from","to","stack","arg1","isMatrix","cols","arguments","current","setRow","expand","base","expansion","push","klass","get","checkRowIndex","index","checkColumnIndex","checkDimensions","otherMatrix","apply","callback","to2DArray","to1DArray","copy","isRowVector","isColumnVector","isVector","set","rowIndex","columnIndex","neg","mulS","add","addS","addM","sub","subS","subM","mul","mulM","div","divS","divM","getRow","removeRow","addRow","swapRows","row1","row2","temp","getColumn","column","setColumn","removeColumn","addColumn","swapColumns","column1","column2","row","checkRowVector","checkColumnVector","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","Infinity","maxIndex","idx","minIndex","maxRow","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","mean","size","prod","cumulativeSum","dot","vector1","vector2","Bcolj","Arowi","sortRows","compareFunction","sort","sortColumns","startRow","endRow","startColumn","endColumn","newMatrix","subMatrixColumn","trace",56,"reload","defaultOptions","hasOwnProperty","fields","numWeights","converters","getConverters","extractor","creator","gridType","nodeType","NodeSquare","gridDim","NodeHexagonal","hx","floor","torus","distanceMethod","distance","maxDistance","getMaxDistance","done","times","findBMU","adjust","randomizer","iterationCount","iterations","startLearningRate","learningRate","mapRadius","algorithmMethod","method","_initNodes","normalizers","denormalizers","getNormalizer","range","getDenormalizer","minMax","squareEuclidean","getRandomValue","zero","one","load","loadModel","model","eval","som","nodes","includeDistance","weights","toString","now","Date","initNodes","setTraining","trainingSet","convertedSet","numIterations","timeConstant","trainOne","neighbourhoodRadius","trainingValue","trainingSetFactor","exp","_adjust","dist","influence","bmu","_findBestMatchingUnit","now2","radiusLimit","xMin","xMax","yMin","yMax","theX","theY","adjustWeights","train","getConvertedNodes","node","candidate","lowest","predict","computePosition","map","element","_predict","getPosition","getQuantizationError","fit","getFit","dataset","./node-hexagonal","./node-square",57,"hX","getDistance","otherNode","getDistanceTorus","distX","distY","distZ",58,"neighbors","target","getNeighbors","xy","getPos","bestNeighbor","direction","dist1","dist2","simA","simB","factor",59,"values","geometricMean","logGeometricMean","lnsum","grandMean","means","samples","truncatedMean","percent","inPlace","contraHarmonicMean","order","r1","r2","standardDeviation","unbiased","variance","standardError","median","alreadySorted","half","quartiles","quart","ceil","q3","theMean","theVariance","pooledStandardDeviation","pooledVariance","vari","mode","itemCount","itemArray","indexOf","maxValue","covariance","mean1","mean2","cov","skewness","s3","dev","m2","m3","kurtosis","s4","m4","entropy","weightedMean","weightedStandardDeviation","weightedVariance","center","standardize","standardDev",60,"l1","l2","N","sum1","sum2","medians","modes","skew","kurt","standardDeviations","standardErrors","sqrtN","scatter","undefined","divisor","correlation","scores","zScores","cor","resultRow","sourceRow","isNaN","weightSum","weightedCovariance","s1","weightedScatter"],"mappings":"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","file":"ml.min.js","sourcesContent":["// ml@v0.2.2, MIT licensed. https://github.com/mljs/ml\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var r;\"undefined\"!=typeof window?r=window:\"undefined\"!=typeof global?r=global:\"undefined\"!=typeof self&&(r=self),r.ML=t()}}(function(){var define,module,exports;return function t(r,n,o){function e(s,a){if(!n[s]){if(!r[s]){var h=\"function\"==typeof require&&require;if(!a&&h)return h(s,!0);if(i)return i(s,!0);var f=new Error(\"Cannot find module '\"+s+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var u=n[s]={exports:{}};r[s][0].call(u.exports,function(t){var n=r[s][1][t];return e(n?n:t)},u,u.exports,t,r,n,o)}return n[s].exports}for(var i=\"function\"==typeof require&&require,s=0;sn;n++)e+=(t[n]-r[n])*(t[n]-r[n])*(t[n]+r[n])/(t[n]*r[n]);return 2*e}},{}],3:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)i=Math.abs(t[s]-r[s]),e+=i,i>o&&(o=i);return(o+e)/2}},{}],4:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return-Math.log(o)}},{}],5:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e])/(t[e]+r[e]);return o}},{}],6:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)e=Math.abs(t[i]-r[i]),e>o&&(o=e);return o}},{}],7:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.sqrt((t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n])));return 2*e}},{}],8:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(Math.sqrt(e)*Math.sqrt(i))}},{}],9:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-2*o/e}},{}],10:[function(t,r){var n=t(\"./czekanowski\");r.exports=function(t,r){return 1-n(t,r)}},{\"./czekanowski\":9}],11:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*t[s],e+=r[s]*r[s],i+=(t[s]-r[s])*(t[s]-r[s]);return i/(o+e)}},{}],12:[function(t,r){var n=t(\"./dice\");r.exports=function(t,r){return 1-n(t,r)}},{\"./dice\":11}],13:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n]));return 2*e}},{}],14:[function(t,r){var n=t(\"./squared-euclidean\");r.exports=function(t,r){return Math.sqrt(n(t,r))}},{\"./squared-euclidean\":44}],15:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return o}},{}],16:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e]);return o/n}},{}],17:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e]/(t[e]+r[e]);return 2*o}},{}],18:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return 2*Math.sqrt(1-o)}},{}],19:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e];return o}},{}],20:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.min(t[e],r[e]);return 1-o}},{}],21:[function(t,r){var n=t(\"./intersection\");r.exports=function(t,r){return 1-n(t,r)}},{\"./intersection\":20}],22:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0,a=0;n>a;a++)o+=t[a]*r[a],e+=t[a]*t[a],i+=r[a]*r[a],s+=(t[a]-r[a])*(t[a]-r[a]);return s/(e+i-o)}},{}],23:[function(t,r){var n=t(\"./jaccard\");r.exports=function(t,r){return 1-n(t,r)}},{\"./jaccard\":22}],24:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]-r[e])*Math.log(t[e]/r[e]);return o}},{}],25:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]*Math.log(t[e])+r[e]*Math.log(r[e]))/2-(t[e]+r[e])/2*Math.log((t[e]+r[e])/2);return o}},{}],26:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=t[i]*Math.log(2*t[i]/(t[i]+r[i])),e+=r[i]*Math.log(2*r[i]/(t[i]+r[i]));return(o+e)/2}},{}],27:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]));return o}},{}],28:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.min(t[i],r[i]);return o/e}},{}],29:[function(t,r){var n=t(\"./kulczynski\");r.exports=function(t,r){return 1/n(t,r)}},{\"./kulczynski\":28}],30:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(t[e]/r[e]);return o}},{}],31:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(e+i-o)}},{}],32:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.pow(t[e]*t[e]-r[e]*r[e],2)/(2*Math.pow(t[e]*r[e],1.5));return o}},{}],33:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.log(Math.abs(t[e]-r[e])+1);return o}},{}],34:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.abs(t[n]-r[n]);return e}},{}],35:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return Math.sqrt(2-2*o)}},{}],36:[function(t,r){r.exports=function(t,r,n){for(var o=0,e=t.length,i=0;e>o;o++)i+=Math.pow(Math.abs(t[o]-r[o]),n);return Math.pow(i,1/n)}},{}],37:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-o/e}},{}],38:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/t[n];return e}},{}],39:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/r[n];return e}},{}],40:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return 2*e}},{}],41:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],42:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],43:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=t[i]+r[i];return o/e}},{}],44:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n]);return e}},{}],45:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return e}},{}],46:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(Math.sqrt(t[e])-Math.sqrt(r[e]))*(Math.sqrt(t[e])-Math.sqrt(r[e]));return o}},{}],47:[function(t,r){var n=t(\"./squaredChord\");r.exports=function(t,r){return 1-n(t,r)}},{\"./squaredChord\":46}],48:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]+r[e])/2*Math.log((t[e]+r[e])/(2*Math.sqrt(t[e]*r[e])));return o}},{}],49:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s],e+=r[s],i+=Math.min(t[s],r[s]);return(o+e-2*i)/(o+e-i)}},{}],50:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]))+r[e]*Math.log(2*r[e]/(t[e]+r[e]));return o}},{}],51:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=1-Math.min(t[e],r[e])/Math.max(t[e],r[e]);return o}},{}],52:[function(t,r,n){n.euclidean=t(\"./dist/euclidean\"),n.squaredEuclidean=t(\"./dist/squared-euclidean\"),n.manhattan=t(\"./dist/manhattan\"),n.minkowski=t(\"./dist/minkowski\"),n.chebyshev=t(\"./dist/chebyshev\"),n.sorensen=t(\"./dist/sorensen\"),n.gower=t(\"./dist/gower\"),n.soergel=t(\"./dist/soergel\"),n.kulczynski=t(\"./dist/kulczynski\"),n.kulczynskiS=t(\"./dist/kulczynskiS\"),n.canberra=t(\"./dist/canberra\"),n.lorentzian=t(\"./dist/lorentzian\"),n.intersection=t(\"./dist/intersection\"),n.intersectionS=t(\"./dist/intersectionS\"),n.waveHedges=t(\"./dist/waveHedges\"),n.czekanowski=t(\"./dist/czekanowski\"),n.czekanowskiS=t(\"./dist/czekanowskiS\"),n.motyka=t(\"./dist/motyka\"),n.kulczynskiS=t(\"./dist/kulczynskiS\"),n.ruzicka=t(\"./dist/ruzicka\"),n.tanimoto=t(\"./dist/tanimoto\"),n.innerProduct=t(\"./dist/innerProduct\"),n.harmonicMean=t(\"./dist/harmonicMean\"),n.cosine=t(\"./dist/cosine\"),n.kumarHassebrook=t(\"./dist/kumarHassebrook\"),n.jaccard=t(\"./dist/jaccard\"),n.jaccardS=t(\"./dist/jaccardS\"),n.dice=t(\"./dist/dice\"),n.diceS=t(\"./dist/diceS\"),n.fidelity=t(\"./dist/fidelity\"),n.bhattacharyya=t(\"./dist/bhattacharyya\"),n.hellinger=t(\"./dist/hellinger\"),n.matusita=t(\"./dist/matusita\"),n.squaredChord=t(\"./dist/squaredChord\"),n.squaredChordS=t(\"./dist/squaredChordS\"),n.pearson=t(\"./dist/pearson\"),n.neyman=t(\"./dist/neyman\"),n.squared=t(\"./dist/squared\"),n.probabilisticSymmetric=t(\"./dist/probabilisticSymmetric\"),n.divergence=t(\"./dist/divergence\"),n.clark=t(\"./dist/clark\"),n.additiveSymmetric=t(\"./dist/additiveSymmetric\"),n.kullbackLeibler=t(\"./dist/kullbackLeibler\"),n.jeffreys=t(\"./dist/jeffreys\"),n.kdivergence=t(\"./dist/kdivergence\"),n.topsoe=t(\"./dist/topsoe\"),n.jensenShannon=t(\"./dist/jensenShannon\"),n.jensenDifference=t(\"./dist/jensenDifference\"),n.taneja=t(\"./dist/taneja\"),n.kumarJohnson=t(\"./dist/kumarJohnson\"),n.avg=t(\"./dist/avg\")},{\"./dist/additiveSymmetric\":2,\"./dist/avg\":3,\"./dist/bhattacharyya\":4,\"./dist/canberra\":5,\"./dist/chebyshev\":6,\"./dist/clark\":7,\"./dist/cosine\":8,\"./dist/czekanowski\":9,\"./dist/czekanowskiS\":10,\"./dist/dice\":11,\"./dist/diceS\":12,\"./dist/divergence\":13,\"./dist/euclidean\":14,\"./dist/fidelity\":15,\"./dist/gower\":16,\"./dist/harmonicMean\":17,\"./dist/hellinger\":18,\"./dist/innerProduct\":19,\"./dist/intersection\":20,\"./dist/intersectionS\":21,\"./dist/jaccard\":22,\"./dist/jaccardS\":23,\"./dist/jeffreys\":24,\"./dist/jensenDifference\":25,\"./dist/jensenShannon\":26,\"./dist/kdivergence\":27,\"./dist/kulczynski\":28,\"./dist/kulczynskiS\":29,\"./dist/kullbackLeibler\":30,\"./dist/kumarHassebrook\":31,\"./dist/kumarJohnson\":32,\"./dist/lorentzian\":33,\"./dist/manhattan\":34,\"./dist/matusita\":35,\"./dist/minkowski\":36,\"./dist/motyka\":37,\"./dist/neyman\":38,\"./dist/pearson\":39,\"./dist/probabilisticSymmetric\":40,\"./dist/ruzicka\":41,\"./dist/soergel\":42,\"./dist/sorensen\":43,\"./dist/squared\":45,\"./dist/squared-euclidean\":44,\"./dist/squaredChord\":46,\"./dist/squaredChordS\":47,\"./dist/taneja\":48,\"./dist/tanimoto\":49,\"./dist/topsoe\":50,\"./dist/waveHedges\":51}],53:[function(t,r){\"use strict\";function n(t){if(t=M.checkMatrix(t),!t.isSquare())throw new Error(\"Matrix is not a square matrix\");var r,n,a=t.columns,f=M.zeros(a,a),u=new Array(a),c=new Array(a),l=t;if(t.isSymmetric()){for(r=0;a>r;r++)for(n=0;a>n;n++)f[r][n]=l[r][n];o(a,c,u,f),e(a,c,u,f)}else{var d=M.zeros(a,a),m=new Array(a);for(n=0;a>n;n++)for(r=0;a>r;r++)d[r][n]=l[r][n];i(a,d,m,f),s(a,c,u,f,d)}return new h(a,c,u,f)}function o(t,r,n,o){var e,i,s,a,h,f,u,c;for(h=0;t>h;h++)n[h]=o[t-1][h];for(a=t-1;a>0;a--){for(c=0,s=0,f=0;a>f;f++)c+=Math.abs(n[f]);if(0===c)for(r[a]=n[a-1],h=0;a>h;h++)n[h]=o[a-1][h],o[a][h]=0,o[h][a]=0;else{for(f=0;a>f;f++)n[f]/=c,s+=n[f]*n[f];for(e=n[a-1],i=Math.sqrt(s),e>0&&(i=-i),r[a]=c*i,s-=e*i,n[a-1]=e-i,h=0;a>h;h++)r[h]=0;for(h=0;a>h;h++){for(e=n[h],o[h][a]=e,i=r[h]+o[h][h]*e,f=h+1;a-1>=f;f++)i+=o[f][h]*n[f],r[f]+=o[f][h]*e;r[h]=i}for(e=0,h=0;a>h;h++)r[h]/=s,e+=r[h]*n[h];for(u=e/(s+s),h=0;a>h;h++)r[h]-=u*n[h];for(h=0;a>h;h++){for(e=n[h],i=r[h],f=h;a-1>=f;f++)o[f][h]-=e*r[f]+i*n[f];n[h]=o[a-1][h],o[a][h]=0}}n[a]=s}for(a=0;t-1>a;a++){if(o[t-1][a]=o[a][a],o[a][a]=1,s=n[a+1],0!==s){for(f=0;a>=f;f++)n[f]=o[f][a+1]/s;for(h=0;a>=h;h++){for(i=0,f=0;a>=f;f++)i+=o[f][a+1]*o[f][h];for(f=0;a>=f;f++)o[f][h]-=i*n[f]}}for(f=0;a>=f;f++)o[f][a+1]=0}for(h=0;t>h;h++)n[h]=o[t-1][h],o[t-1][h]=0;o[t-1][t-1]=1,r[0]=0}function e(t,r,n,o){var e,i,s,a,h,f,u,c,l,d,m,p,v,g,y,M,x;for(s=1;t>s;s++)r[s-1]=r[s];r[t-1]=0;var b=0,k=0,A=Math.pow(2,-52);for(f=0;t>f;f++){for(k=Math.max(k,Math.abs(n[f])+Math.abs(r[f])),u=f;t>u&&!(Math.abs(r[u])<=A*k);)u++;if(u>f){x=0;do{for(x+=1,e=n[f],c=(n[f+1]-e)/(2*r[f]),l=w(c,1),0>c&&(l=-l),n[f]=r[f]/(c+l),n[f+1]=r[f]*(c+l),d=n[f+1],i=e-n[f],s=f+2;t>s;s++)n[s]-=i;for(b+=i,c=n[u],m=1,p=m,v=m,g=r[f+1],y=0,M=0,s=u-1;s>=f;s--)for(v=p,p=m,M=y,e=m*r[s],i=m*c,l=w(c,r[s]),r[s+1]=y*l,y=r[s]/l,m=c/l,c=m*n[s]-y*e,n[s+1]=i+y*(m*e+y*n[s]),h=0;t>h;h++)i=o[h][s+1],o[h][s+1]=y*o[h][s]+m*i,o[h][s]=m*o[h][s]-y*i;c=-y*M*v*g*r[f]/d,r[f]=y*c,n[f]=m*c}while(Math.abs(r[f])>A*k)}n[f]=n[f]+b,r[f]=0}for(s=0;t-1>s;s++){for(h=s,c=n[s],a=s+1;t>a;a++)n[a]a;a++)c=o[a][s],o[a][s]=o[a][h],o[a][h]=c}}function i(t,r,n,o){var e,i,s,a,h,f,u,c=0,l=t-1;for(f=c+1;l-1>=f;f++){for(u=0,a=f;l>=a;a++)u+=Math.abs(r[a][f-1]);if(0!==u){for(s=0,a=l;a>=f;a--)n[a]=r[a][f-1]/u,s+=n[a]*n[a];for(i=Math.sqrt(s),n[f]>0&&(i=-i),s-=n[f]*i,n[f]=n[f]-i,h=f;t>h;h++){for(e=0,a=l;a>=f;a--)e+=n[a]*r[a][h];for(e/=s,a=f;l>=a;a++)r[a][h]-=e*n[a]}for(a=0;l>=a;a++){for(e=0,h=l;h>=f;h--)e+=n[h]*r[a][h];for(e/=s,h=f;l>=h;h++)r[a][h]-=e*n[h]}n[f]=u*n[f],r[f][f-1]=u*i}}for(a=0;t>a;a++)for(h=0;t>h;h++)o[a][h]=a===h?1:0;for(f=l-1;f>=c+1;f--)if(0!==r[f][f-1]){for(a=f+1;l>=a;a++)n[a]=r[a][f-1];for(h=f;l>=h;h++){for(i=0,a=f;l>=a;a++)i+=n[a]*o[a][h];for(i=i/n[f]/r[f][f-1],a=f;l>=a;a++)o[a][h]+=i*n[a]}}}function s(t,r,n,o,e){var i,s,h,f,u,c,l,d,m,p,v,w,g,y,M,x=t-1,b=0,k=t-1,A=Math.pow(2,-52),S=0,q=0,j=0,R=0,D=0,z=0,C=0,O=0;for(i=0;t>i;i++)for((b>i||i>k)&&(n[i]=e[i][i],r[i]=0),s=Math.max(i-1,0);t>s;s++)q+=Math.abs(e[i][s]);for(;x>=b;){for(f=x;f>b&&(z=Math.abs(e[f-1][f-1])+Math.abs(e[f][f]),0===z&&(z=q),!(Math.abs(e[f][f-1])=0){for(C=j>=0?j+C:j-C,n[x-1]=d+C,n[x]=n[x-1],0!==C&&(n[x]=d-l/C),r[x-1]=0,r[x]=0,d=e[x][x-1],z=Math.abs(d)+Math.abs(C),j=d/z,R=C/z,D=Math.sqrt(j*j+R*R),j/=D,R/=D,s=x-1;t>s;s++)C=e[x-1][s],e[x-1][s]=R*C+j*e[x][s],e[x][s]=R*e[x][s]-j*C;for(i=0;x>=i;i++)C=e[i][x-1],e[i][x-1]=R*C+j*e[i][x],e[i][x]=R*e[i][x]-j*C;for(i=b;k>=i;i++)C=o[i][x-1],o[i][x-1]=R*C+j*o[i][x],o[i][x]=R*o[i][x]-j*C}else n[x-1]=d+j,n[x]=d+j,r[x-1]=C,r[x]=-C;x-=2,O=0}else{if(d=e[x][x],m=0,l=0,x>f&&(m=e[x-1][x-1],l=e[x][x-1]*e[x-1][x]),10===O){for(S+=d,i=b;x>=i;i++)e[i][i]-=d;z=Math.abs(e[x][x-1])+Math.abs(e[x-1][x-2]),d=m=.75*z,l=-.4375*z*z}if(30===O&&(z=(m-d)/2,z=z*z+l,z>0)){for(z=Math.sqrt(z),d>m&&(z=-z),z=d-l/((m-d)/2+z),i=b;x>=i;i++)e[i][i]-=z;S+=z,d=m=l=.964}for(O+=1,u=x-2;u>=f&&(C=e[u][u],D=d-C,z=m-C,j=(D*z-l)/e[u+1][u]+e[u][u+1],R=e[u+1][u+1]-C-D-z,D=e[u+2][u+1],z=Math.abs(j)+Math.abs(R)+Math.abs(D),j/=z,R/=z,D/=z,u!==f)&&!(Math.abs(e[u][u-1])*(Math.abs(R)+Math.abs(D))=i;i++)e[i][i-2]=0,i>u+2&&(e[i][i-3]=0);for(h=u;x-1>=h&&(y=h!==x-1,h!==u&&(j=e[h][h-1],R=e[h+1][h-1],D=y?e[h+2][h-1]:0,d=Math.abs(j)+Math.abs(R)+Math.abs(D),0!==d&&(j/=d,R/=d,D/=d)),0!==d);h++)if(z=Math.sqrt(j*j+R*R+D*D),0>j&&(z=-z),0!==z){for(h!==u?e[h][h-1]=-z*d:f!==u&&(e[h][h-1]=-e[h][h-1]),j+=z,d=j/z,m=R/z,C=D/z,R/=j,D/=j,s=h;t>s;s++)j=e[h][s]+R*e[h+1][s],y&&(j+=D*e[h+2][s],e[h+2][s]=e[h+2][s]-j*C),e[h][s]=e[h][s]-j*d,e[h+1][s]=e[h+1][s]-j*m;for(i=0;i<=Math.min(x,h+3);i++)j=d*e[i][h]+m*e[i][h+1],y&&(j+=C*e[i][h+2],e[i][h+2]=e[i][h+2]-j*D),e[i][h]=e[i][h]-j,e[i][h+1]=e[i][h+1]-j*R;for(i=b;k>=i;i++)j=d*o[i][h]+m*o[i][h+1],y&&(j+=C*o[i][h+2],o[i][h+2]=o[i][h+2]-j*D),o[i][h]=o[i][h]-j,o[i][h+1]=o[i][h+1]-j*R}}}if(0!==q){for(x=t-1;x>=0;x--)if(j=n[x],R=r[x],0===R)for(f=x,e[x][x]=1,i=x-1;i>=0;i--){for(l=e[i][i]-j,D=0,s=f;x>=s;s++)D+=e[i][s]*e[s][x];if(r[i]<0)C=l,z=D;else if(f=i,0===r[i]?e[i][x]=0!==l?-D/l:-D/(A*q):(d=e[i][i+1],m=e[i+1][i],R=(n[i]-j)*(n[i]-j)+r[i]*r[i],c=(d*z-C*D)/R,e[i][x]=c,e[i+1][x]=Math.abs(d)>Math.abs(C)?(-D-l*c)/d:(-z-m*c)/C),c=Math.abs(e[i][x]),A*c*c>1)for(s=i;x>=s;s++)e[s][x]=e[s][x]/c}else if(0>R)for(f=x-1,Math.abs(e[x][x-1])>Math.abs(e[x-1][x])?(e[x-1][x-1]=R/e[x][x-1],e[x-1][x]=-(e[x][x]-j)/e[x][x-1]):(M=a(0,-e[x-1][x],e[x-1][x-1]-j,R),e[x-1][x-1]=M[0],e[x-1][x]=M[1]),e[x][x-1]=0,e[x][x]=1,i=x-2;i>=0;i--){for(p=0,v=0,s=f;x>=s;s++)p+=e[i][s]*e[s][x-1],v+=e[i][s]*e[s][x];if(l=e[i][i]-j,r[i]<0)C=l,D=p,z=v;else if(f=i,0===r[i]?(M=a(-p,-v,l,R),e[i][x-1]=M[0],e[i][x]=M[1]):(d=e[i][i+1],m=e[i+1][i],w=(n[i]-j)*(n[i]-j)+r[i]*r[i]-R*R,g=2*(n[i]-j)*R,0===w&&0===g&&(w=A*q*(Math.abs(l)+Math.abs(R)+Math.abs(d)+Math.abs(m)+Math.abs(C))),M=a(d*D-C*p+R*v,d*z-C*v-R*p,w,g),e[i][x-1]=M[0],e[i][x]=M[1],Math.abs(d)>Math.abs(C)+Math.abs(R)?(e[i+1][x-1]=(-p-l*e[i][x-1]+R*e[i][x])/d,e[i+1][x]=(-v-l*e[i][x]-R*e[i][x-1])/d):(M=a(-D-m*e[i][x-1],-z-m*e[i][x],C,R),e[i+1][x-1]=M[0],e[i+1][x]=M[1])),c=Math.max(Math.abs(e[i][x-1]),Math.abs(e[i][x])),A*c*c>1)for(s=i;x>=s;s++)e[s][x-1]=e[s][x-1]/c,e[s][x]=e[s][x]/c}for(i=0;t>i;i++)if(b>i||i>k)for(s=i;t>s;s++)o[i][s]=e[i][s];for(s=t-1;s>=b;s--)for(i=b;k>=i;i++){for(C=0,h=b;h<=Math.min(s,k);h++)C+=o[i][h]*e[h][s];o[i][s]=C}}}function a(t,r,n,o){var e,i;return Math.abs(n)>Math.abs(o)?(e=o/n,i=n+e*o,[(t+e*r)/i,(r-e*t)/i]):(e=n/o,i=o+e*n,[(e*t+r)/i,(e*r-t)/i])}function h(t,r,n,o){this.n=t,this.e=r,this.d=n,this.V=o}function f(t){t=M.checkMatrix(t);var r,n,o,e,i,s,a,h,f,c,l=t.clone(),d=l.rows,m=l.columns,p=new Array(d),v=1;for(r=0;d>r;r++)p[r]=r;for(f=new Array(d),n=0;m>n;n++){for(r=0;d>r;r++)f[r]=l[r][n];for(r=0;d>r;r++){for(h=l[r],c=Math.min(r,n),i=0,o=0;c>o;o++)i+=h[o]*f[o];h[n]=f[r]-=i}for(e=n,r=n+1;d>r;r++)Math.abs(f[r])>Math.abs(f[e])&&(e=r);if(e!==n){for(o=0;m>o;o++)s=l[e][o],l[e][o]=l[n][o],l[n][o]=s;a=p[e],p[e]=p[n],p[n]=a,v=-v}if(d>n&&0!==l[n][n])for(r=n+1;d>r;r++)l[r][n]/=l[n][n]}return new u(l,p,v)}function u(t,r,n){this.LU=t,this.pivotVector=r,this.pivotSign=n}function c(t){t=M.checkMatrix(t);var r,n,o,e,i=t.clone(),s=t.rows,a=t.columns,h=new Array(a);for(o=0;a>o;o++){var f=0;for(r=o;s>r;r++)f=w(f,i[r][o]);if(0!==f){for(i[o][o]<0&&(f=-f),r=o;s>r;r++)i[r][o]/=f;for(i[o][o]+=1,n=o+1;a>n;n++){for(e=0,r=o;s>r;r++)e+=i[r][o]*i[r][n];for(e=-e/i[o][o],r=o;s>r;r++)i[r][n]+=e*i[r][o]}}h[o]=-f}return new l(i,h)}function l(t,r){this.QR=t,this.Rdiag=r}function d(t,r){t=M.checkMatrix(t),r=r||{};var n=t.clone(),o=t.rows,e=t.columns,i=Math.min(o,e),s=!0,a=!0;r.computeLeftSingularVectors===!1&&(s=!1),r.computeRightSingularVectors===!1&&(a=!1);var h=r.autoTranspose===!0,f=!1;if(e>o)if(h){n=n.transpose(),o=n.rows,e=n.columns,f=!0;var u=s;s=a,a=u}else console.warn(\"WARNING: Computing SVD on a matrix with more columns than rows.\");var c,l,d,p,v,g,y,x,b,k,A,S,q,j,R,D,z,C,O,I,V,E=new Array(Math.min(o+1,e)),U=M.zeros(o,i),L=M.zeros(e,e),N=new Array(e),_=new Array(o),T=Math.min(o-1,e),P=Math.max(0,Math.min(e-2,o));for(d=0,k=Math.max(T,P);k>d;d++){if(T>d){for(E[d]=0,c=d;o>c;c++)E[d]=w(E[d],n[c][d]);if(0!==E[d]){for(n[d][d]<0&&(E[d]=-E[d]),c=d;o>c;c++)n[c][d]/=E[d];n[d][d]+=1}E[d]=-E[d]}for(l=d+1;e>l;l++){if(T>d&&0!==E[d]){for(v=0,c=d;o>c;c++)v+=n[c][d]*n[c][l];for(v=-v/n[d][d],c=d;o>c;c++)n[c][l]+=v*n[c][d]}N[l]=n[d][l]}if(s&&T>d)for(c=d;o>c;c++)U[c][d]=n[c][d];if(P>d){for(N[d]=0,c=d+1;e>c;c++)N[d]=w(N[d],N[c]);if(0!==N[d]){for(N[d+1]<0&&(N[d]=-N[d]),c=d+1;e>c;c++)N[c]/=N[d];N[d+1]+=1}if(N[d]=-N[d],o>d+1&&0!==N[d]){for(c=d+1;o>c;c++)_[c]=0;for(l=d+1;e>l;l++)for(c=d+1;o>c;c++)_[c]+=N[l]*n[c][l];for(l=d+1;e>l;l++)for(v=-N[l]/N[d+1],c=d+1;o>c;c++)n[c][l]+=v*_[c]}if(a)for(c=d+1;e>c;c++)L[c][d]=N[c]}}if(p=Math.min(e,o+1),e>T&&(E[T]=n[T][T]),p>o&&(E[p-1]=0),p>P+1&&(N[P]=n[P][p-1]),N[p-1]=0,s){for(l=T;i>l;l++){for(c=0;o>c;c++)U[c][l]=0;U[l][l]=1}for(d=T-1;d>=0;d--)if(0!==E[d]){for(l=d+1;i>l;l++){for(v=0,c=d;o>c;c++)v+=U[c][d]*U[c][l];for(v=-v/U[d][d],c=d;o>c;c++)U[c][l]+=v*U[c][d]}for(c=d;o>c;c++)U[c][d]=-U[c][d];for(U[d][d]=1+U[d][d],c=0;d-1>c;c++)U[c][d]=0}else{for(c=0;o>c;c++)U[c][d]=0;U[d][d]=1}}if(a)for(d=e-1;d>=0;d--){if(P>d&&0!==N[d])for(l=d+1;e>l;l++){for(v=0,c=d+1;e>c;c++)v+=L[c][d]*L[c][l];for(v=-v/L[d+1][d],c=d+1;e>c;c++)L[c][l]+=v*L[c][d]}for(c=0;e>c;c++)L[c][d]=0;L[d][d]=1}for(var H=p-1,Q=0,W=Math.pow(2,-52);p>0;){for(d=p-2;d>=-1&&-1!==d;d--)if(Math.abs(N[d])<=W*(Math.abs(E[d])+Math.abs(E[d+1]))){N[d]=0;break}if(d===p-2)A=4;else{for(g=p-1;g>=d&&g!==d;g--)if(v=(g!==p?Math.abs(N[g]):0)+(g!==d+1?Math.abs(N[g-1]):0),Math.abs(E[g])<=W*v){E[g]=0;break}g===d?A=3:g===p-1?A=1:(A=2,d=g)}switch(d++,A){case 1:for(y=N[p-2],N[p-2]=0,l=p-2;l>=d;l--)if(v=w(E[l],y),x=E[l]/v,b=y/v,E[l]=v,l!==d&&(y=-b*N[l-1],N[l-1]=x*N[l-1]),a)for(c=0;e>c;c++)v=x*L[c][l]+b*L[c][p-1],L[c][p-1]=-b*L[c][l]+x*L[c][p-1],L[c][l]=v;break;case 2:for(y=N[d-1],N[d-1]=0,l=d;p>l;l++)if(v=w(E[l],y),x=E[l]/v,b=y/v,E[l]=v,y=-b*N[l],N[l]=x*N[l],s)for(c=0;o>c;c++)v=x*U[c][l]+b*U[c][d-1],U[c][d-1]=-b*U[c][l]+x*U[c][d-1],U[c][l]=v;break;case 3:for(S=Math.max(Math.max(Math.max(Math.max(Math.abs(E[p-1]),Math.abs(E[p-2])),Math.abs(N[p-2])),Math.abs(E[d])),Math.abs(N[d])),q=E[p-1]/S,j=E[p-2]/S,R=N[p-2]/S,D=E[d]/S,z=N[d]/S,C=((j+q)*(j-q)+R*R)/2,O=q*R*q*R,I=0,(0!==C||0!==O)&&(I=Math.sqrt(C*C+O),0>C&&(I=-I),I=O/(C+I)),y=(D+q)*(D-q)+I,V=D*z,l=d;p-1>l;l++){if(v=w(y,V),x=y/v,b=V/v,l!==d&&(N[l-1]=v),y=x*E[l]+b*N[l],N[l]=x*N[l]-b*E[l],V=b*E[l+1],E[l+1]=x*E[l+1],a)for(c=0;e>c;c++)v=x*L[c][l]+b*L[c][l+1],L[c][l+1]=-b*L[c][l]+x*L[c][l+1],L[c][l]=v;if(v=w(y,V),x=y/v,b=V/v,E[l]=v,y=x*N[l]+b*E[l+1],E[l+1]=-b*N[l]+x*E[l+1],V=b*N[l+1],N[l+1]=x*N[l+1],s&&o-1>l)for(c=0;o>c;c++)v=x*U[c][l]+b*U[c][l+1],U[c][l+1]=-b*U[c][l]+x*U[c][l+1],U[c][l]=v}N[p-2]=y,Q+=1;break;case 4:if(E[d]<=0&&(E[d]=E[d]<0?-E[d]:0,a))for(c=0;H>=c;c++)L[c][d]=-L[c][d];for(;H>d&&!(E[d]>=E[d+1]);){if(v=E[d],E[d]=E[d+1],E[d+1]=v,a&&e-1>d)for(c=0;e>c;c++)v=L[c][d+1],L[c][d+1]=L[c][d],L[c][d]=v;if(s&&o-1>d)for(c=0;o>c;c++)v=U[c][d+1],U[c][d+1]=U[c][d],U[c][d]=v;d++}Q=0,p--}}if(f){var B=L;L=U,U=B}return new m(o,e,E,U,L)}function m(t,r,n,o,e){this.m=t,this.n=r,this.s=n,this.U=o,this.V=e}function p(t){if(t=M.checkMatrix(t),!t.isSymmetric())throw new Error(\"Matrix is not symmetric\");var r,n,o,e=t,i=e.rows,s=new M(i,i),a=!0;for(n=0;i>n;n++){var h=s[n],f=0;for(o=0;n>o;o++){var u=s[o],c=0;for(r=0;o>r;r++)c+=u[r]*h[r];h[o]=c=(e[n][o]-c)/s[o][o],f+=c*c}for(f=e[n][n]-f,a&=f>0,s[n][n]=Math.sqrt(Math.max(f,0)),o=n+1;i>o;o++)s[n][o]=0}if(!a)throw new Error(\"Matrix is not positive definite\");return new v(s)}function v(t){this.L=t}function w(t,r){var n;return Math.abs(t)>Math.abs(r)?(n=r/t,Math.abs(t)*Math.sqrt(1+n*n)):0!==r?(n=t/r,Math.abs(r)*Math.sqrt(1+n*n)):0}function g(t){return y(t,M.eye(t.rows))}function y(t,r){return t.isSquare()?new f(t).solve(r):new c(t).solve(r)}var M=t(\"./matrix\");h.prototype={get realEigenvalues(){return this.d},get imaginaryEigenvalues(){return this.e},get eigenvectorMatrix(){return this.V},get diagonalMatrix(){var t,r,n=this.n,o=this.e,e=this.d,i=new M(n,n);for(t=0;n>t;t++){for(r=0;n>r;r++)i[t][r]=0;i[t][t]=e[t],o[t]>0?i[t][t+1]=o[t]:o[t]<0&&(i[t][t-1]=o[t])}return i}},u.prototype={isSingular:function(){for(var t=this.LU,r=t.columns,n=0;r>n;n++)if(0===t[n][n])return!0;return!1},get determinant(){var t=this.LU;if(!t.isSquare())throw new Error(\"Matrix must be square\");for(var r=this.pivotSign,n=t.columns,o=0;n>o;o++)r*=t[o][o];return r},get lowerTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,o=new M(r,n),e=0;r>e;e++)for(var i=0;n>i;i++)o[e][i]=e>i?t[e][i]:e===i?1:0;return o},get upperTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,o=new M(r,n),e=0;r>e;e++)for(var i=0;n>i;i++)o[e][i]=i>=e?t[e][i]:0;return o},get pivotPermutationVector(){return this.pivotVector.slice()},solve:function(t){t=M.checkMatrix(t);var r=this.LU,n=r.rows;if(n!==t.rows)throw new Error(\"Invalid matrix dimensions\");if(this.isSingular())throw new Error(\"LU matrix is singular\");var o,e,i,s=t.columns,a=t.subMatrixRow(this.pivotVector,0,s-1),h=r.columns;for(i=0;h>i;i++)for(o=i+1;h>o;o++)for(e=0;s>e;e++)a[o][e]-=a[i][e]*r[o][i];for(i=h-1;i>=0;i--){for(e=0;s>e;e++)a[i][e]/=r[i][i];for(o=0;i>o;o++)for(e=0;s>e;e++)a[o][e]-=a[i][e]*r[o][i]}return a}},l.prototype={solve:function(t){t=M.checkMatrix(t);var r=this.QR,n=r.rows;if(t.rows!==n)throw new Error(\"Matrix row dimensions must agree\");if(!this.isFullRank())throw new Error(\"Matrix is rank deficient\");var o,e,i,s,a=t.columns,h=t.clone(),f=r.columns;for(i=0;f>i;i++)for(e=0;a>e;e++){for(s=0,o=i;n>o;o++)s+=r[o][i]*h[o][e];for(s=-s/r[i][i],o=i;n>o;o++)h[o][e]+=s*r[o][i]}for(i=f-1;i>=0;i--){for(e=0;a>e;e++)h[i][e]/=this.Rdiag[i];for(o=0;i>o;o++)for(e=0;a>e;e++)h[o][e]-=h[i][e]*r[o][i]}return h.subMatrix(0,f-1,0,a-1)},isFullRank:function(){for(var t=this.QR.columns,r=0;t>r;r++)if(0===this.Rdiag[r])return!1;return!0},get upperTriangularFactor(){var t,r,n=this.QR,o=n.columns,e=new M(o,o);for(t=0;o>t;t++)for(r=0;o>r;r++)e[t][r]=r>t?n[t][r]:t===r?this.Rdiag[t]:0;return e},get orthogonalFactor(){var t,r,n,o,e=this.QR,i=e.rows,s=e.columns,a=new M(i,s);for(n=s-1;n>=0;n--){for(t=0;i>t;t++)a[t][n]=0;for(a[n][n]=1,r=n;s>r;r++)if(0!==e[n][n]){for(o=0,t=n;i>t;t++)o+=e[t][n]*a[t][r];for(o=-o/e[n][n],t=n;i>t;t++)a[t][r]+=o*e[t][n]}}return a}},m.prototype={get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]},get norm2(){return this.s[0]},get rank(){for(var t=Math.pow(2,-52),r=Math.max(this.m,this.n)*this.s[0]*t,n=0,o=this.s,e=0,i=o.length;i>e;e++)o[e]>r&&n++;return n},get diagonal(){return this.s},get threshold(){return Math.pow(2,-52)/2*Math.max(this.m,this.n)*this.s[0]},get leftSingularVectors(){return this.U},get rightSingularVectors(){return this.V},get diagonalMatrix(){return M.diag(this.s)},solve:function(t){var r,n=t,o=this.threshold,e=this.s.length,i=M.zeros(e,e);for(r=0;e>r;r++)i[r][r]=Math.abs(this.s[r])<=o?0:1/this.s[r];var s,a,h,f=this.V.mmul(i),u=this.V.rows,c=this.U.rows,l=M.zeros(u,c);for(r=0;u>r;r++)for(s=0;c>s;s++){for(h=0,a=0;e>a;a++)h+=f[r][a]*this.U[s][a];l[r][s]=h}return l.mmul(n)},solveForDiagonal:function(t){return this.solve(M.diag(t))},inverse:function(){var t,r,n=this.threshold,o=this.V.rows,e=this.V.columns,i=new M(o,this.s.length);for(t=0;o>t;t++)for(r=0;e>r;r++)Math.abs(this.s[r])>n&&(i[t][r]=this.V[t][r]/this.s[r]);var s,a,h=this.U.rows,f=this.U.columns,u=new M(o,h);for(t=0;o>t;t++)for(r=0;h>r;r++){for(a=0,s=0;f>s;s++)a+=i[t][s]*this.U[r][s];u[t][r]=a}return u}},v.prototype={get leftTriangularFactor(){return this.L},solve:function(t){t=M.checkMatrix(t);var r=this.L,n=r.rows;if(t.rows!==n)throw new Error(\"Matrix dimensions do not match\");var o,e,i,s=t.columns,a=t.clone();for(i=0;n>i;i++)for(e=0;s>e;e++){for(o=0;i>o;o++)a[i][e]-=a[o][e]*r[i][o];a[i][e]/=r[i][i]}for(i=n-1;i>=0;i--)for(e=0;s>e;e++){for(o=i+1;n>o;o++)a[i][e]-=a[o][e]*r[o][i];a[i][e]/=r[i][i]}return a}},M.prototype.inverse=function(){return g(this)},M.prototype.solve=function(t){return y(this,t)},r.exports={LuDecomposition:f,LU:f,QrDecomposition:c,QR:c,SingularValueDecomposition:d,SVD:d,EigenvalueDecomposition:n,EVD:n,CholeskyDecomposition:p,CHO:p,inverse:g,solve:y}},{\"./matrix\":55}],54:[function(t,r){\"use strict\";r.exports=t(\"./matrix\"),r.exports.Decompositions=r.exports.DC=t(\"./decompositions\")},{\"./decompositions\":53,\"./matrix\":55}],55:[function(t,r){\"use strict\";function n(t){for(var r=0,n=t.length,o=new Array(n);n>r;r++)o[r]=t[r];return o}function o(t){this.message=t||\"Unknown matrix error\"}function e(t,r){var i,s,a=0;if(t instanceof Array){if(s=r,i=s?n(t):t,t=i.length,r=i[0].length,\"undefined\"==typeof r)throw new o(\"Data must be a 2D array\");if(!(t>0&&r>0))throw new o(\"Invalid dimensions: \"+t+\"x\"+r);for(;t>a;a++){if(i[a].length!==r)throw new o(\"Inconsistent array dimensions\");s&&(i[a]=n(i[a]))}}else{if(\"number\"!=typeof t)throw new o(\"Invalid arguments\");if(!(t>0&&r>0))throw new o(\"Invalid dimensions: \"+t+\"x\"+r);for(i=new Array(t);t>a;a++)i[a]=new Array(r)}return Object.defineProperty(i,\"rows\",{writable:!0,value:t}),Object.defineProperty(i,\"columns\",{writable:!0,value:r}),i.__proto__=e.prototype,i}var i=Array.prototype.splice,s=Array.prototype.concat;o.prototype=Object.create(Error.prototype),o.prototype.name=\"MatrixError\",o.prototype.constructor=o,e.from1DArray=function(t,r,n){var i,s,a=0;if(i=t*r,i!==n.length)throw new o(\"Data length does not match given dimensions\");for(s=new Array(t);t>a;a++)s[a]=n.slice(a*r,(a+1)*r);return new e(s)},e.rowVector=function(t){return new e([t])},e.columnVector=function(t){for(var r=t.length,n=new Array(r),o=0;r>o;o++)n[o]=[t[o]];return new e(n)},e.empty=function(t,r){return new e(t,r)},e.zeros=function(t,r){return e.empty(t,r).fill(0)},e.ones=function(t,r){return e.empty(t,r).fill(1)},e.rand=function(t,r){for(var n=e.empty(t,r),o=0,i=n.rows;i>o;o++)for(var s=0,a=n.columns;a>s;s++)n[o][s]=Math.random();return n},e.eye=function(t){for(var r=e.zeros(t,t),n=r.rows,o=0;n>o;o++)r[o][o]=1;return r},e.diag=function(t){for(var r=t.length,n=e.zeros(r,r),o=0;r>o;o++)n[o][o]=t[o];return n},e.indices=function(t,r){for(var n=new Array(r-t),o=0;os&&(s=arguments[r].columns);var a=e.zeros(i,s),h=0;for(r=0;rt||t>this.rows-1)throw new o(\"Row index out of range.\")},e.prototype.checkColumnIndex=function(t){if(0>t||t>this.columns-1)throw new o(\"Column index out of range.\")},e.prototype.checkDimensions=function(t){if(this.rows!==t.rows||this.columns!==t.columns)throw new o(\"Matrices dimensions must be equal.\")},e.prototype.apply=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t.call(this,o,e);return this},e.prototype.clone=function(){return new e(this.to2DArray())},e.prototype.to1DArray=function(){return s.apply([],this)},e.prototype.to2DArray=function(){for(var t=this.rows,r=new Array(t),o=0;t>o;o++)r[o]=n(this[o]);return r},e.prototype.isRowVector=function(){return 1===this.rows},e.prototype.isColumnVector=function(){return 1===this.columns},e.prototype.isVector=function(){return 1===this.rows||1===this.columns},e.prototype.isSquare=function(){return this.rows===this.columns},e.prototype.isSymmetric=function(){if(this.isSquare()){for(var t=this.rows,r=0;t>r;r++)for(var n=0;r>=n;n++)if(this[r][n]!==this[n][r])return!1;return!0}return!1},e.prototype.set=function(t,r,n){return this[t][r]=n,this},e.prototype.get=function(t,r){return this[t][r]},e.prototype.fill=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]=t;return this},e.prototype.neg=function(){return this.mulS(-1)},e.prototype.add=function(t){return\"number\"==typeof t?this.addS(t):(t=e.checkMatrix(t),this.addM(t))},e.prototype.addS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t;return this},e.prototype.addM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o][e];return this},e.prototype.sub=function(t){return\"number\"==typeof t?this.subS(t):(t=e.checkMatrix(t),this.subM(t))},e.prototype.subS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t;\nreturn this},e.prototype.subM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o][e];return this},e.prototype.mul=function(t){return\"number\"==typeof t?this.mulS(t):(t=e.checkMatrix(t),this.mulM(t))},e.prototype.mulS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t;return this},e.prototype.mulM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o][e];return this},e.prototype.div=function(t){return\"number\"==typeof t?this.divS(t):(t=e.checkMatrix(t),this.divM(t))},e.prototype.divS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t;return this},e.prototype.divM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o][e];return this},e.prototype.getRow=function(t){return this.checkRowIndex(t),n(this[t])},e.prototype.setRow=function(t,r){if(this.checkRowIndex(t),e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o(\"Invalid row size\");return this[t]=n(r),this},e.prototype.removeRow=function(t){if(this.checkRowIndex(t),1===this.rows)throw new o(\"A matrix cannot have less than one row\");return i.call(this,t,1),this.rows-=1,this},e.prototype.addRow=function(t,r){if(\"undefined\"==typeof r&&(r=t,t=this.rows),0>t||t>this.rows)throw new o(\"Row index out of range.\");if(e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o(\"Invalid row size\");return i.call(this,t,0,n(r)),this.rows+=1,this},e.prototype.swapRows=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);var n=this[t];return this[t]=this[r],this[r]=n,this},e.prototype.getColumn=function(t){this.checkColumnIndex(t);for(var r=this.rows,n=new Array(r),o=0;r>o;o++)n[o]=this[o][t];return n},e.prototype.setColumn=function(t,r){this.checkColumnIndex(t),e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o(\"Invalid column size\");for(var i=0;n>i;i++)this[i][t]=r[i];return this},e.prototype.removeColumn=function(t){if(this.checkColumnIndex(t),1===this.columns)throw new o(\"A matrix cannot have less than one column\");for(var r=0,n=this.rows;n>r;r++)this[r].splice(t,1);return this.columns-=1,this},e.prototype.addColumn=function(t,r){if(\"undefined\"==typeof r&&(r=t,t=this.columns),0>t||t>this.columns)throw new o(\"Column index out of range.\");e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o(\"Invalid column size\");for(var i=0;n>i;i++)this[i].splice(t,0,r[i]);return this.columns+=1,this},e.prototype.swapColumns=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);for(var n,o,e=this.rows,i=0;e>i;i++)o=this[i],n=o[t],o[t]=o[r],o[r]=n;return this},e.prototype.checkRowVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.columns)throw new o(\"vector size must be the same as the number of columns\");return t},e.prototype.checkColumnVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.rows)throw new o(\"vector size must be the same as the number of rows\");return t},e.prototype.addRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[e];return this},e.prototype.subRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[e];return this},e.prototype.mulRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[e];return this},e.prototype.divRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[e];return this},e.prototype.addColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o];return this},e.prototype.subColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o];return this},e.prototype.mulColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o];return this},e.prototype.divColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o];return this},e.prototype.mulRow=function(t,r){this.checkRowIndex(t);for(var n=0,o=this.columns;o>n;n++)this[t][n]*=r;return this},e.prototype.mulColumn=function(t,r){this.checkColumnIndex(t);for(var n=0,o=this.rows;o>n;n++)this[n][t]*=r},e.prototype.max=function(){for(var t=-1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]>t&&(t=this[o][e]);return t},e.prototype.maxIndex=function(){for(var t=-1/0,r={},n=this.rows,o=this.columns,e=0;n>e;e++)for(var i=0;o>i;i++)this[e][i]>t&&(t=this[e][i],r.row=e,r.column=i);return r},e.prototype.min=function(){for(var t=1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]e;e++)for(var i=0;o>i;i++)this[e][i]n;n++)this[t][n]>r&&(r=this[t][n]);return r},e.prototype.maxRowIndex=function(t){this.checkRowIndex(t);for(var r=-1/0,n={row:t},o=0,e=this.columns;e>o;o++)this[t][o]>r&&(r=this[t][o],n.column=o);return n},e.prototype.minRow=function(t){this.checkRowIndex(t);for(var r=1/0,n=0,o=this.columns;o>n;n++)this[t][n]o;o++)this[t][o]n;n++)this[n][t]>r&&(r=this[n][t]);return r},e.prototype.maxColumnIndex=function(t){this.checkColumnIndex(t);for(var r=-1/0,n={row:0,column:t},o=0,e=this.rows;e>o;o++)this[o][t]>r&&(r=this[o][t],n.row=o);return n},e.prototype.minColumn=function(t){this.checkColumnIndex(t);for(var r=1/0,n=0,o=this.rows;o>n;n++)this[n][t]o;o++)this[o][t]t;t++)a[t]=this[t][t];return a},e.prototype.sum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e];return t},e.prototype.mean=function(){return this.sum()/this.size},e.prototype.prod=function h(){for(var h=1,t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)h*=this[n][o];return h},e.prototype.cumulativeSum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e],this[o][e]=t;return this},e.prototype.dot=function f(t){if(this.size!==t.size)throw new o(\"vectors do not have the same size\");for(var r=this.to1DArray(),n=t.to1DArray(),f=0,e=r.length,i=0;e>i;i++)f+=r[i]*n[i];return f},e.prototype.mmul=function(t){this.columns!==t.rows&&console.warn(\"Number of columns of left matrix are not equal to number of rows of right matrix.\");var r,n,o,i=this.rows,s=this.columns,a=t.columns,h=new e(i,a),f=new Array(s);for(n=0;a>n;n++){for(o=0;s>o;o++)f[o]=t[o][n];for(r=0;i>r;r++){var u=this[r],c=0;for(o=0;s>o;o++)c+=u[o]*f[o];h[r][n]=c}}return h},e.prototype.sortRows=function(t){for(var r=0,n=this.rows;n>r;r++)this[r].sort(t);return this},e.prototype.sortColumns=function(t){for(var r=0,n=this.columns;n>r;r++)this.setColumn(r,this.getColumn(r).sort(t));return this},e.prototype.transpose=function(){for(var t=new e(this.columns,this.rows),r=this.rows,n=this.columns,o=0;r>o;o++)for(var i=0;n>i;i++)t[i][o]=this[o][i];return t},e.prototype.subMatrix=function(t,r,n,i){if(t>r||n>i||0>t||t>=this.rows||0>r||r>=this.rows||0>n||n>=this.columns||0>i||i>=this.columns)throw new o(\"Argument out of range\");for(var s=new e(r-t+1,i-n+1),a=t;r>=a;a++)for(var h=n;i>=h;h++)s[a-t][h-n]=this[a][h];return s},e.prototype.subMatrixRow=function(t,r,n){if(\"undefined\"==typeof r?(r=0,n=this.columns-1):\"undefined\"==typeof n&&(n=this.columns-1),r>n||0>r||r>=this.columns||0>n||n>=this.columns)throw new o(\"Argument out of range.\");for(var i=t.length,s=this.rows,a=new e(i,n-r+1),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o(\"Argument out of range.\");a[h][f-r]=this[t[h]][f]}return a},e.prototype.subMatrixColumn=function(t,r,n){if(\"undefined\"==typeof r?(r=0,n=this.rows-1):\"undefined\"==typeof n&&(n=this.rows-1),r>n||0>r||r>=this.rows||0>n||n>=this.rows)throw new o(\"Argument out of range.\");for(var i=t.length,s=this.columns,a=new e(n-r+1,i),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o(\"Argument out of range.\");a[f-r][h]=this[f][t[h]]}return a},e.prototype.trace=function u(){if(!this.isSquare())throw new o(\"The matrix is not square\");for(var u=0,t=0,r=this.rows;r>t;t++)u+=this[t][t];return u},e.prototype.abs=function(){for(var t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)this[n][o]=Math.abs(this[n][o])},e.MatrixError=o,r.exports=e},{}],56:[function(require,module,exports){\"use strict\";function SOM(t,r,n,o){this.x=t,this.y=r,n=n||{},this.options={};for(var e in defaultOptions)this.options[e]=n.hasOwnProperty(e)?n[e]:defaultOptions[e];if(\"number\"==typeof this.options.fields)this.numWeights=this.options.fields;else{if(!Array.isArray(this.options.fields))throw new Error(\"Invalid fields definition\");this.numWeights=this.options.fields.length;var i=getConverters(this.options.fields);this.extractor=i.extractor,this.creator=i.creator}if(\"rect\"===this.options.gridType)this.nodeType=NodeSquare,this.gridDim={x:t,y:r};else{this.nodeType=NodeHexagonal;var s=this.x-Math.floor(this.y/2);this.gridDim={x:s,y:this.y,z:-(0-s-this.y)}}if(this.torus=this.options.torus,this.distanceMethod=this.torus?\"getDistanceTorus\":\"getDistance\",this.distance=this.options.distance,this.maxDistance=getMaxDistance(this.distance,this.numWeights),o===!0)return void(this.done=!0);if(!(t>0&&r>0))throw new Error(\"x and y must be positive\");this.times={findBMU:0,adjust:0},this.randomizer=this.options.randomizer,this.iterationCount=0,this.iterations=this.options.iterations,this.startLearningRate=this.learningRate=this.options.learningRate,this.mapRadius=Math.floor(Math.max(t,r)/2),this.algorithmMethod=this.options.method,this._initNodes(),this.done=!1}function getConverters(t){for(var r=t.length,n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=getNormalizer(t[e].range),o[e]=getDenormalizer(t[e].range);return{extractor:function(o){for(var e=new Array(r),i=0;r>i;i++)e[i]=n[i](o[t[i].name]);return e},creator:function(n){for(var e={},i=0;r>i;i++)e[t[i].name]=o[i](n[i]);return e}}}function getNormalizer(t){return function(r){return(r-t[0])/(t[1]-t[0])}}function getDenormalizer(t){return function(r){return t[0]+r*(t[1]-t[0])}}function squareEuclidean(t,r){for(var n=0,o=0,e=t.length;e>o;o++)n+=(t[o]-r[o])*(t[o]-r[o]);return n}function getRandomValue(t,r){return t[Math.floor(r()*t.length)]}function getMaxDistance(t,r){for(var n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=0,o[e]=1;return t(n,o)}var NodeSquare=require(\"./node-square\"),NodeHexagonal=require(\"./node-hexagonal\"),defaultOptions={fields:3,randomizer:Math.random,distance:squareEuclidean,iterations:10,learningRate:.1,gridType:\"rect\",torus:!0,method:\"random\"};SOM.load=function loadModel(model,distance){if(\"SOM\"===model.name){var x=model.data.length,y=model.data[0].length;distance?model.options.distance=distance:model.options.distance&&(model.options.distance=eval(\"(\"+model.options.distance+\")\"));var som=new SOM(x,y,model.options,!0);som.nodes=new Array(x);for(var i=0;x>i;i++){som.nodes[i]=new Array(y);for(var j=0;y>j;j++)som.nodes[i][j]=new som.nodeType(i,j,model.data[i][j],som)}return som}throw new Error(\"expecting a SOM model\")},SOM.prototype[\"export\"]=function(t){if(!this.done)throw new Error(\"model is not ready yet\");var r={name:\"SOM\"};r.options={fields:this.options.fields,gridType:this.options.gridType,torus:this.options.torus},r.data=new Array(this.x);for(var n=0;nr;r++)o[r]=this.extractor(t[r]);this.numIterations=this.iterations*e,this.timeConstant=\"random\"===this.algorithmMethod?this.numIterations/Math.log(this.mapRadius):e/Math.log(this.mapRadius),this.trainingSet=o,this.times.setTraining=Date.now()-n},SOM.prototype.trainOne=function(){if(this.done)return!1;if(this.numIterations-->0){var t,r,n;return\"random\"===this.algorithmMethod?(t=this.mapRadius*Math.exp(-this.iterationCount/this.timeConstant),r=getRandomValue(this.trainingSet,this.randomizer),this._adjust(r,t),this.learningRate=this.startLearningRate*Math.exp(-this.iterationCount/this.numIterations)):(n=-Math.floor(this.iterationCount/this.trainingSet.length),t=this.mapRadius*Math.exp(n/this.timeConstant),r=this.trainingSet[this.iterationCount%this.trainingSet.length],this._adjust(r,t),(this.iterationCount+1)%this.trainingSet.length===0&&(this.learningRate=this.startLearningRate*Math.exp(n/Math.floor(this.numIterations/this.trainingSet.length)))),this.iterationCount++,!0}return this.done=!0,!1},SOM.prototype._adjust=function(t,r){var n,o,e,i,s=Date.now(),a=this._findBestMatchingUnit(t),h=Date.now();this.times.findBMU+=h-s;var f=Math.floor(r),u=a.x-f,c=a.x+f,l=a.y-f,d=a.y+f;for(n=u;c>=n;n++){var m=n;for(0>n?m+=this.x:n>=this.x&&(m-=this.x),o=l;d>=o;o++){var p=o;0>o?p+=this.y:o>=this.y&&(p-=this.y),e=a[this.distanceMethod](this.nodes[m][p]),r>e&&(i=Math.exp(-e/(2*r)),this.nodes[m][p].adjustWeights(t,this.learningRate,i))}}this.times.adjust+=Date.now()-h},SOM.prototype.train=function(t){if(!this.done)for(this.setTraining(t);this.trainOne(););},SOM.prototype.getConvertedNodes=function(){for(var t=new Array(this.x),r=0;rn&&(o=n,r=this.nodes[e][i]);return r},SOM.prototype.predict=function(t,r){if(\"boolean\"==typeof t&&(r=t,t=null),t||(t=this.trainingSet),Array.isArray(t)&&(Array.isArray(t[0])||\"object\"==typeof t[0])){var n=this;return t.map(function(t){return n._predict(t,r)})}return this._predict(t,r)},SOM.prototype._predict=function(t,r){Array.isArray(t)||(t=this.extractor(t));var n=this._findBestMatchingUnit(t),o=[n.x,n.y];return r&&(o[2]=n.getPosition(t)),o},SOM.prototype.getQuantizationError=function(){for(var t=this.getFit(),r=t.length,n=0,o=0;r>o;o++)n+=t[o];return n/r},SOM.prototype.getFit=function(t){t||(t=this.trainingSet);for(var r,n=t.length,o=new Array(n),e=0;n>e;e++)r=this._findBestMatchingUnit(t[e]),o[e]=Math.sqrt(this.distance(t[e],r.weights));return o},module.exports=SOM},{\"./node-hexagonal\":57,\"./node-square\":58}],57:[function(t,r){function n(t,r,n,e){o.call(this,t,r,n,e),this.hX=t-Math.floor(r/2),this.z=0-this.hX-r}var o=t(\"./node-square\");n.prototype=new o,n.prototype.constructor=n,n.prototype.getDistance=function(t){return Math.max(Math.abs(this.hX-t.hX),Math.abs(this.y-t.y),Math.abs(this.z-t.z))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.hX-t.hX),n=Math.abs(this.y-t.y),o=Math.abs(this.z-t.z);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n),Math.min(o,this.som.gridDim.z-o))},n.prototype.getPosition=function(){throw new Error(\"Unimplemented : cannot get position of the points for hexagonal grid\")},r.exports=n},{\"./node-square\":58}],58:[function(t,r){function n(t,r,n,o){this.x=t,this.y=r,this.weights=n,this.som=o,this.neighbors={}}n.prototype.adjustWeights=function(t,r,n){for(var o=0,e=this.weights.length;e>o;o++)this.weights[o]+=r*n*(t[o]-this.weights[o])},n.prototype.getDistance=function(t){return Math.max(Math.abs(this.x-t.x),Math.abs(this.y-t.y))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.x-t.x),n=Math.abs(this.y-t.y);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n))},n.prototype.getNeighbors=function(t){if(!this.neighbors[t]){this.neighbors[t]=new Array(2);var r;if(this[t]>0?r=this[t]-1:this.som.torus&&(r=this.som.gridDim[t]-1),\"undefined\"!=typeof r){var n,o;\"x\"===t?(n=r,o=this.y):(n=this.x,o=r),this.neighbors[t][0]=this.som.nodes[n][o]}var e;this[t]s?(n=e[0],o=-1):(n=e[1],o=1)}else n=e[0],o=-1;else n=e[1],o=1;var h=1-i(r,this.weights),f=1-i(r,n.weights),u=(h-f)/(2-h-f);return.5+.5*u*o},n.prototype.getPosition=function(t){return[this.getPos(\"x\",t),this.getPos(\"y\",t)]},r.exports=n},{}],59:[function(t,r){\"use strict\";function n(t){for(var r=-1/0,n=t.length,o=0;n>o;o++)t[o]>r&&(r=t[o]);return r}function o(t){for(var r=1/0,n=t.length,o=0;n>o;o++)t[o]e;e++)t[e]n&&(n=t[e]);return{min:r,max:n}}function i(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r/n}function s(t){for(var r=0,n=t.length,o=0;n>o;o++)r*=t[o];return Math.pow(r,1/n)}function a(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=Math.log(t[o]);return r/n}function h(t,r){for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=r[i]*t[i],o+=r[i];return n/o}function f(t,r,n){\"undefined\"==typeof n&&(n=!1),t=n?t:t.slice(),t.sort();for(var o=t.length,e=Math.floor(o*r),i=0,s=e;o-e>s;s++)i+=t[s];return i/(o-2*e)}function u(t,r){\"undefined\"==typeof r&&(r=1);for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=Math.pow(t[i],r+1),o+=Math.pow(t[i],r);return n/o}function c(t,r){return Math.sqrt(p(t,r))}function l(t){return c(t)/Math.sqrt(t.length)}function d(t,r){\"undefined\"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length,o=Math.floor(n/2);return n%2===0?.5*(t[o-1]+t[o]):t[o]}function m(t,r){\"undefined\"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length/4,o=t[Math.ceil(n)-1],e=d(t,!0),i=t[Math.ceil(3*n)-1];return{q1:o,q2:e,q3:i}}function p(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=i(t),o=0,e=t.length,s=0;e>s;s++){var a=t[s]-n;o+=a*a}return r?o/(e-1):o/e}function v(t,r){return Math.sqrt(w(t,r))}function w(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=0,o=0,e=t.length,i=0;e>i;i++){var s=t[i],a=p(s);n+=(s.length-1)*a,o+=r?s.length-1:s.length}return n/o}function g(t){var r,n=t.length,o=new Array(n);for(r=0;n>r;r++)o[r]=0;var e=new Array(n),i=0;for(r=0;n>r;r++){var s=e.indexOf(t[r]);s>=0?o[s]++:(e[i]=t[r],o[i]=1,i++)}var a=0,h=0;for(r=0;i>r;r++)o[r]>a&&(a=o[r],h=r);return e[h]}function y(t,r,n){\"undefined\"==typeof n&&(n=!0);var o=i(t),e=i(r);if(t.length!==r.length)throw\"Vectors do not have the same dimensions\";for(var s=0,a=t.length,h=0;a>h;h++){var f=t[h]-o,u=r[h]-e;s+=f*u}return n?s/(a-1):s/a}function M(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=i(t),o=0,e=0,s=t.length,a=0;s>a;a++){var h=t[a]-n;o+=h*h,e+=h*h*h}var f=o/s,u=e/s,c=u/Math.pow(f,1.5);if(r){var l=Math.sqrt(s*(s-1)),d=s-2;return l/d*c}return c}function x(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=i(t),o=t.length,e=0,s=0,a=0;o>a;a++){var h=t[a]-n;e+=h*h,s+=h*h*h*h}var f=e/o,u=s/o;if(r){var c=e/(o-1),l=o*(o+1)/((o-1)*(o-2)*(o-3)),d=s/(c*c),m=(o-1)*(o-1)/((o-2)*(o-3));return l*d-3*m}return u/(f*f)-3}function b(t,r){\"undefined\"==typeof r&&(r=0);for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*Math.log(t[e]+r);return-n}function k(t,r){for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*r[e];return n}function A(t,r){return Math.sqrt(S(t,r))}function S(t,r){for(var n=k(t,r),o=0,e=t.length,i=0,s=0,a=0;e>a;a++){var h=t[a]-n,f=r[a];o+=f*h*h,s+=f,i+=f*f}return o*(s/(s*s-i))}function q(t,r){\"undefined\"==typeof r&&(r=!1);var n=t;r||(n=t.slice());for(var o=i(n),e=n.length,s=0;e>s;s++)n[s]-=o}function j(t,r,n){\"undefined\"==typeof r&&(r=c(t)),\"undefined\"==typeof n&&(n=!1);for(var o=t.length,e=n?t:new Array(o),i=0;o>i;i++)e[i]=t[i]/r;return e}function R(t){var r=t.length,n=new Array(r);n[0]=t[0];for(var o=1;r>o;o++)n[o]=n[o-1]+t[o];return n}r.exports={min:o,max:n,minMax:e,mean:i,geometricMean:s,logGeometricMean:a,grandMean:h,truncatedMean:f,contraHarmonicMean:u,standardDeviation:c,standardError:l,median:d,quartiles:m,variance:p,pooledStandardDeviation:v,pooledVariance:w,mode:g,covariance:y,skewness:M,kurtosis:x,entropy:b,weightedMean:k,weightedStandardDeviation:A,weightedVariance:S,center:q,standardize:j,cumulativeSum:R}},{}],60:[function(t,r){\"use strict\";function n(t,r){\"undefined\"==typeof r&&(r=0);for(var n=0,o=t.length,e=t[0].length,i=0;o>i;i++)for(var s=0;e>s;s++)n+=t[i][s]*Math.log(t[i][s]+r);return-n}function o(t,r){\"undefined\"==typeof r&&(r=0);var n,o,e,i,s=t.length,a=t[0].length;if(-1===r){for(n=[0],o=s*a,e=0;s>e;e++)for(i=0;a>i;i++)n[0]+=t[e][i];n[0]/=o}else if(0===r)for(n=new Array(a),o=s,i=0;a>i;i++){for(n[i]=0,e=0;s>e;e++)n[i]+=t[e][i];n[i]/=o}else{if(1!==r)throw new Error(\"Invalid dimension\");for(n=new Array(s),o=a,i=0;s>i;i++){for(n[i]=0,e=0;a>e;e++)n[i]+=t[i][e];n[i]/=o}}return n}function e(t,r,n){for(var o=i(t,r,n),e=o.length,s=0;e>s;s++)o[s]=Math.sqrt(o[s]);return o}function i(t,r,n){\"undefined\"==typeof n&&(n=!0),r=r||o(t);var e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++)u=t[c][a]-r[a],h+=u,f+=u*u;s[a]=n?(f-h*h/e)/(e-1):(f-h*h/e)/e}return s}function s(t){for(var r=t.length,n=t[0].length,o=new Array(n),e=0;n>e;e++){for(var i=new Array(r),s=0;r>s;s++)i[s]=t[s][e];i.sort();var a=i.length;o[e]=a%2===0?.5*(i[a/2]+i[a/2-1]):i[Math.floor(a/2)]}return o}function a(t){var r,n,o=t.length,e=t[0].length,i=new Array(e);for(r=0;e>r;r++){for(var s=new Array(o),a=0;o>a;a++)s[a]=0;var h=new Array(o),f=0;for(n=0;o>n;n++){var u=h.indexOf(t[n][r]);u>=0?s[u]++:(h[f]=t[n][r],s[f]=1,f++)}var c=0,l=0;for(n=0;f>n;n++)s[n]>c&&(c=s[n],l=n);i[r]=h[l]}return i}function h(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=n.length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c}var l=h/e,d=f/e,m=d/Math.pow(l,1.5);if(r){var p=Math.sqrt(e*(e-1)),v=e-2;s[a]=p/v*m}else s[a]=m}return s}function f(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c*c}var l=h/e,d=f/e;if(r){var m=h/(e-1),p=e*(e+1)/((e-1)*(e-2)*(e-3)),v=f/(m*m),w=(e-1)*(e-1)/((e-2)*(e-3));s[a]=p*v-3*w}else s[a]=d/(l*l)-3}return s}function u(t){for(var r=t.length,n=e(t),o=n.length,i=new Array(o),s=Math.sqrt(r),a=0;o>a;a++)i[a]=n[a]/s;return i}function c(t,r){return l(t,void 0,r)}function l(t,r,n){\"undefined\"==typeof n&&(n=0),\"undefined\"==typeof r&&(0===n?r=t.length-1:1===n&&(r=t[0].length-1));var e=o(t,n),i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===n){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(f=0,u=0;i>u;u++)f+=(t[u][h]-e[h])*(t[u][a]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}else{if(1!==n)throw new Error(\"Invalid dimension\");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(f=0,u=0;c>u;u++)f+=(t[h][u]-e[h])*(t[a][u]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}return s}function d(t){var r,n,i=o(t),s=e(t,!0,i),a=m(t,i,s),h=t.length,f=t[0].length,u=new Array(f);for(r=0;f>r;r++)u[r]=new Array(f);for(r=0;f>r;r++)for(n=r;f>n;n++){for(var c=0,l=0,d=a.length;d>l;l++)c+=a[l][n]*a[l][r];c/=h-1,u[r][n]=c,u[n][r]=c}return u}function m(t,r,n){return r=r||o(t),\"undefined\"==typeof n&&(n=e(t,!0,r)),v(p(t,r,!1),n,!0)}function p(t,r,n){r=r||o(t);var e,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),e=0;h>e;e++)a[e]=new Array(t[e].length);for(e=0;h>e;e++){var f=a[e];for(i=0,s=f.length;s>i;i++)f[i]=t[e][i]-r[i]}return a}function v(t,r,n){\"undefined\"==typeof r&&(r=e(t));var o,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),o=0;h>o;o++)a[o]=new Array(t[o].length);for(o=0;h>o;o++){var f=a[o],u=t[o];for(i=0,s=f.length;s>i;i++)0===r[i]||isNaN(r[i])||(f[i]=u[i]/r[i])}return a}function w(t,r){var n=o(t),e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++){var l=t[c][a]-n[a],d=r[c];h+=d*l*l,u+=d,f+=d*d}s[a]=h*(u/(u*u-f))}return s}function g(t,r,n){\"undefined\"==typeof n&&(n=0);var o=t.length;if(0===o)return[];var e,i,s,a,h,f,u=t[0].length;if(0===n){for(e=new Array(u),i=0;u>i;i++)e[i]=0;for(i=0;o>i;i++)for(f=t[i],h=r[i],a=0;u>a;a++)e[a]+=f[a]*h}else{if(1!==n)throw new Error(\"Invalid dimension\");for(e=new Array(o),i=0;o>i;i++)e[i]=0;for(a=0;o>a;a++)for(f=t[a],h=r[a],i=0;u>i;i++)e[a]+=f[i]*h}var c=x(r);if(0!==c)for(i=0,s=e.length;s>i;i++)e[i]/=c;return e}function y(t,r,n,o){o=o||0,n=n||g(t,r,o);for(var e=0,i=0,s=0,a=r.length;a>s;s++)e+=r[s],i+=r[s]*r[s];var h=e/(e*e-i);return M(t,r,n,h,o)}function M(t,r,n,o,e){e=e||0,n=n||g(t,r,e),\"undefined\"==typeof o&&(o=1);var i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===e){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(u=0,f=0;i>f;f++)u+=r[f]*(t[f][h]-n[h])*(t[f][a]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}else{if(1!==e)throw new Error(\"Invalid dimension\");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(u=0,f=0;c>f;f++)u+=r[f]*(t[h][f]-n[h])*(t[a][f]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}return s}function x(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r}r.exports={entropy:n,mean:o,standardDeviation:e,variance:i,median:s,mode:a,skewness:h,kurtosis:f,standardError:u,covariance:c,scatter:l,correlation:d,zScores:m,center:p,standardize:v,weightedVariance:w,weightedMean:g,weightedCovariance:y,weightedScatter:M}},{}]},{},[1])(1)});\n//# sourceMappingURL=ml.min.js.map"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["ml.min.js"],"names":["e","exports","module","define","amd","f","window","global","self","ML","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"Math","Matrix","Distance","Stat","array","matrix","NN","nn","SOM","ml-distance","ml-matrix","ml-som","ml-stat/array","ml-stat/matrix",2,"b","ii","d",3,"max","ans","aux","abs",4,"sqrt","log",5,6,7,8,"p","p2","q2",9,"up","down","min",10,"czekanowski","./czekanowski",11,"q1",12,"dice","./dice",13,14,"squaredEuclidean","./squared-euclidean",15,16,17,18,19,20,21,"intersection","./intersection",22,"p1",23,"jaccard","./jaccard",24,25,26,"q",27,28,29,"kulczynski","./kulczynski",30,31,32,"pow",33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,"squaredChord","./squaredChord",48,49,"m",50,51,52,"euclidean","manhattan","minkowski","chebyshev","sorensen","gower","soergel","kulczynskiS","canberra","lorentzian","intersectionS","waveHedges","czekanowskiS","motyka","ruzicka","tanimoto","innerProduct","harmonicMean","cosine","kumarHassebrook","jaccardS","diceS","fidelity","bhattacharyya","hellinger","matusita","squaredChordS","pearson","neyman","squared","probabilisticSymmetric","divergence","clark","additiveSymmetric","kullbackLeibler","jeffreys","kdivergence","topsoe","jensenShannon","jensenDifference","taneja","kumarJohnson","avg","./dist/additiveSymmetric","./dist/avg","./dist/bhattacharyya","./dist/canberra","./dist/chebyshev","./dist/clark","./dist/cosine","./dist/czekanowski","./dist/czekanowskiS","./dist/dice","./dist/diceS","./dist/divergence","./dist/euclidean","./dist/fidelity","./dist/gower","./dist/harmonicMean","./dist/hellinger","./dist/innerProduct","./dist/intersection","./dist/intersectionS","./dist/jaccard","./dist/jaccardS","./dist/jeffreys","./dist/jensenDifference","./dist/jensenShannon","./dist/kdivergence","./dist/kulczynski","./dist/kulczynskiS","./dist/kullbackLeibler","./dist/kumarHassebrook","./dist/kumarJohnson","./dist/lorentzian","./dist/manhattan","./dist/matusita","./dist/minkowski","./dist/motyka","./dist/neyman","./dist/pearson","./dist/probabilisticSymmetric","./dist/ruzicka","./dist/soergel","./dist/sorensen","./dist/squared","./dist/squared-euclidean","./dist/squaredChord","./dist/squaredChordS","./dist/taneja","./dist/tanimoto","./dist/topsoe","./dist/waveHedges",53,"CholeskyDecomposition","value","this","checkMatrix","isSymmetric","j","k","dimension","rows","positiveDefinite","Lrowj","Lrowk","L","prototype",{"end":{"file":"?","comments_before":[],"nlb":false,"endpos":19467,"pos":19447,"col":8,"line":666,"value":"leftTriangularFactor","type":"name"},"start":{"file":"?","comments_before":[],"nlb":false,"endpos":19467,"pos":19447,"col":8,"line":666,"value":"leftTriangularFactor","type":"name"},"name":"leftTriangularFactor"},"leftTriangularFactor","solve","count","columns","B","clone","../matrix",54,"EigenvalueDecomposition","isSquare","V","zeros","Array","tred2","tql2","H","ort","orthes","hqr2","g","h","hh","scale","dl1","c","c2","c3","el1","s2","iter","tst1","eps","hypotenuse","low","high","w","x","y","ra","sa","vr","vi","notlast","cdivres","exshift","norm","z","cdiv","xr","xi","yr","yi","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","diagonalMatrix","X","./util",55,"LuDecomposition","v","LUrowi","LUcolj","kmax","lu","pivotVector","pivotSign","LU","isSingular","data","col","determinant","lowerTriangularFactor","upperTriangularFactor","pivotPermutationVector","slice","subMatrixRow",56,"QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","subMatrix","orthogonalFactor",57,"SingularValueDecomposition","options","nu","wantu","wantv","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","swapped","transpose","console","warn","ks","cs","sn","kase","sp","spm1","epm1","sk","ek","shift","U","work","nct","nrt","pp","tmp","condition","norm2","rank","tol","diagonal","threshold","leftSingularVectors","rightSingularVectors","diag","Y","scols","Ls","sum","VL","mmul","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols",58,59,"eye","leftHandSide","rightHandSide","other","SVD","EVD","CHO","./dc/cholesky","./dc/evd","./dc/lu","./dc/qr","./dc/svd","./matrix",60,"Decompositions","DC","./decompositions",61,"arr","result","MatrixError","message","nRows","nColumns","newInstance","isArray","Object","defineProperty","writable","__proto__","Asplice","splice","Aconcat","concat","create","name","constructor","from1DArray","newRows","newColumns","newData","rowVector","columnVector","vector","empty","fill","ones","rand","jj","random","indices","from","to","stack","arg1","isMatrix","cols","arguments","current","setRow","expand","base","expansion","push","klass","get","checkRowIndex","index","checkColumnIndex","checkDimensions","otherMatrix","apply","callback","to2DArray","to1DArray","copy","isRowVector","isColumnVector","isVector","set","rowIndex","columnIndex","neg","mulS","add","addS","addM","sub","subS","subM","mul","mulM","div","divS","divM","getRow","removeRow","addRow","swapRows","row1","row2","temp","getColumn","column","setColumn","removeColumn","addColumn","swapColumns","column1","column2","row","checkRowVector","checkColumnVector","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","Infinity","maxIndex","idx","minIndex","maxRow","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","mean","size","prod","cumulativeSum","dot","vector1","vector2","Bcolj","Arowi","sortRows","compareFunction","sort","sortColumns","startRow","endRow","startColumn","endColumn","newMatrix","subMatrixColumn","trace",62,"reload","defaultOptions","hasOwnProperty","fields","numWeights","converters","getConverters","extractor","creator","gridType","nodeType","NodeSquare","gridDim","NodeHexagonal","hx","floor","torus","distanceMethod","distance","maxDistance","getMaxDistance","done","times","findBMU","adjust","randomizer","iterationCount","iterations","startLearningRate","learningRate","mapRadius","algorithmMethod","method","_initNodes","normalizers","denormalizers","getNormalizer","range","getDenormalizer","minMax","squareEuclidean","getRandomValue","zero","one","load","loadModel","model","eval","som","nodes","includeDistance","weights","toString","now","Date","initNodes","setTraining","trainingSet","convertedSet","numIterations","timeConstant","trainOne","neighbourhoodRadius","trainingValue","trainingSetFactor","exp","_adjust","dist","influence","bmu","_findBestMatchingUnit","now2","radiusLimit","xMin","xMax","yMin","yMax","theX","theY","adjustWeights","train","getConvertedNodes","node","candidate","lowest","predict","computePosition","map","element","_predict","getPosition","getQuantizationError","fit","getFit","dataset","./node-hexagonal","./node-square",63,"hX","getDistance","otherNode","getDistanceTorus","distX","distY","distZ",64,"neighbors","target","getNeighbors","xy","getPos","bestNeighbor","direction","dist1","dist2","simA","simB","factor",65,"values","geometricMean","logGeometricMean","lnsum","grandMean","means","samples","truncatedMean","percent","inPlace","contraHarmonicMean","order","r1","r2","standardDeviation","unbiased","variance","standardError","median","alreadySorted","half","quartiles","quart","ceil","q3","theMean","theVariance","pooledStandardDeviation","pooledVariance","vari","mode","itemCount","itemArray","indexOf","maxValue","covariance","mean1","mean2","cov","skewness","s3","dev","m2","m3","kurtosis","s4","m4","entropy","weightedMean","weightedStandardDeviation","weightedVariance","center","standardize","standardDev",66,"l1","l2","N","sum1","sum2","medians","modes","skew","kurt","standardDeviations","standardErrors","sqrtN","scatter","undefined","divisor","correlation","scores","zScores","cor","resultRow","sourceRow","isNaN","weightSum","weightedCovariance","s1","weightedScatter"],"mappings":"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","file":"ml.min.js","sourcesContent":["// ml@v0.2.3, MIT licensed. https://github.com/mljs/ml\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var r;\"undefined\"!=typeof window?r=window:\"undefined\"!=typeof global?r=global:\"undefined\"!=typeof self&&(r=self),r.ML=t()}}(function(){var define,module,exports;return function t(r,n,o){function e(s,a){if(!n[s]){if(!r[s]){var h=\"function\"==typeof require&&require;if(!a&&h)return h(s,!0);if(i)return i(s,!0);var f=new Error(\"Cannot find module '\"+s+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var u=n[s]={exports:{}};r[s][0].call(u.exports,function(t){var n=r[s][1][t];return e(n?n:t)},u,u.exports,t,r,n,o)}return n[s].exports}for(var i=\"function\"==typeof require&&require,s=0;sn;n++)e+=(t[n]-r[n])*(t[n]-r[n])*(t[n]+r[n])/(t[n]*r[n]);return 2*e}},{}],3:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)i=Math.abs(t[s]-r[s]),e+=i,i>o&&(o=i);return(o+e)/2}},{}],4:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return-Math.log(o)}},{}],5:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e])/(t[e]+r[e]);return o}},{}],6:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)e=Math.abs(t[i]-r[i]),e>o&&(o=e);return o}},{}],7:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.sqrt((t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n])));return 2*e}},{}],8:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(Math.sqrt(e)*Math.sqrt(i))}},{}],9:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-2*o/e}},{}],10:[function(t,r){var n=t(\"./czekanowski\");r.exports=function(t,r){return 1-n(t,r)}},{\"./czekanowski\":9}],11:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*t[s],e+=r[s]*r[s],i+=(t[s]-r[s])*(t[s]-r[s]);return i/(o+e)}},{}],12:[function(t,r){var n=t(\"./dice\");r.exports=function(t,r){return 1-n(t,r)}},{\"./dice\":11}],13:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/((t[n]+r[n])*(t[n]+r[n]));return 2*e}},{}],14:[function(t,r){var n=t(\"./squared-euclidean\");r.exports=function(t,r){return Math.sqrt(n(t,r))}},{\"./squared-euclidean\":44}],15:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return o}},{}],16:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.abs(t[e]-r[e]);return o/n}},{}],17:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e]/(t[e]+r[e]);return 2*o}},{}],18:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return 2*Math.sqrt(1-o)}},{}],19:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*r[e];return o}},{}],20:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.min(t[e],r[e]);return 1-o}},{}],21:[function(t,r){var n=t(\"./intersection\");r.exports=function(t,r){return 1-n(t,r)}},{\"./intersection\":20}],22:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0,a=0;n>a;a++)o+=t[a]*r[a],e+=t[a]*t[a],i+=r[a]*r[a],s+=(t[a]-r[a])*(t[a]-r[a]);return s/(e+i-o)}},{}],23:[function(t,r){var n=t(\"./jaccard\");r.exports=function(t,r){return 1-n(t,r)}},{\"./jaccard\":22}],24:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]-r[e])*Math.log(t[e]/r[e]);return o}},{}],25:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]*Math.log(t[e])+r[e]*Math.log(r[e]))/2-(t[e]+r[e])/2*Math.log((t[e]+r[e])/2);return o}},{}],26:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=t[i]*Math.log(2*t[i]/(t[i]+r[i])),e+=r[i]*Math.log(2*r[i]/(t[i]+r[i]));return(o+e)/2}},{}],27:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]));return o}},{}],28:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.min(t[i],r[i]);return o/e}},{}],29:[function(t,r){var n=t(\"./kulczynski\");r.exports=function(t,r){return 1/n(t,r)}},{\"./kulczynski\":28}],30:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(t[e]/r[e]);return o}},{}],31:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s]*r[s],e+=t[s]*t[s],i+=r[s]*r[s];return o/(e+i-o)}},{}],32:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.pow(t[e]*t[e]-r[e]*r[e],2)/(2*Math.pow(t[e]*r[e],1.5));return o}},{}],33:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.log(Math.abs(t[e]-r[e])+1);return o}},{}],34:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=Math.abs(t[n]-r[n]);return e}},{}],35:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=Math.sqrt(t[e]*r[e]);return Math.sqrt(2-2*o)}},{}],36:[function(t,r){r.exports=function(t,r,n){for(var o=0,e=t.length,i=0;e>o;o++)i+=Math.pow(Math.abs(t[o]-r[o]),n);return Math.pow(i,1/n)}},{}],37:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=t[i]+r[i];return 1-o/e}},{}],38:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/t[n];return e}},{}],39:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/r[n];return e}},{}],40:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return 2*e}},{}],41:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.min(t[i],r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],42:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=Math.max(t[i],r[i]);return o/e}},{}],43:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0;n>i;i++)o+=Math.abs(t[i]-r[i]),e+=t[i]+r[i];return o/e}},{}],44:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n]);return e}},{}],45:[function(t,r){r.exports=function(t,r){for(var n=0,o=t.length,e=0;o>n;n++)e+=(t[n]-r[n])*(t[n]-r[n])/(t[n]+r[n]);return e}},{}],46:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(Math.sqrt(t[e])-Math.sqrt(r[e]))*(Math.sqrt(t[e])-Math.sqrt(r[e]));return o}},{}],47:[function(t,r){var n=t(\"./squaredChord\");r.exports=function(t,r){return 1-n(t,r)}},{\"./squaredChord\":46}],48:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=(t[e]+r[e])/2*Math.log((t[e]+r[e])/(2*Math.sqrt(t[e]*r[e])));return o}},{}],49:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0,i=0,s=0;n>s;s++)o+=t[s],e+=r[s],i+=Math.min(t[s],r[s]);return(o+e-2*i)/(o+e-i)}},{}],50:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=t[e]*Math.log(2*t[e]/(t[e]+r[e]))+r[e]*Math.log(2*r[e]/(t[e]+r[e]));return o}},{}],51:[function(t,r){r.exports=function(t,r){for(var n=t.length,o=0,e=0;n>e;e++)o+=1-Math.min(t[e],r[e])/Math.max(t[e],r[e]);return o}},{}],52:[function(t,r,n){n.euclidean=t(\"./dist/euclidean\"),n.squaredEuclidean=t(\"./dist/squared-euclidean\"),n.manhattan=t(\"./dist/manhattan\"),n.minkowski=t(\"./dist/minkowski\"),n.chebyshev=t(\"./dist/chebyshev\"),n.sorensen=t(\"./dist/sorensen\"),n.gower=t(\"./dist/gower\"),n.soergel=t(\"./dist/soergel\"),n.kulczynski=t(\"./dist/kulczynski\"),n.kulczynskiS=t(\"./dist/kulczynskiS\"),n.canberra=t(\"./dist/canberra\"),n.lorentzian=t(\"./dist/lorentzian\"),n.intersection=t(\"./dist/intersection\"),n.intersectionS=t(\"./dist/intersectionS\"),n.waveHedges=t(\"./dist/waveHedges\"),n.czekanowski=t(\"./dist/czekanowski\"),n.czekanowskiS=t(\"./dist/czekanowskiS\"),n.motyka=t(\"./dist/motyka\"),n.kulczynskiS=t(\"./dist/kulczynskiS\"),n.ruzicka=t(\"./dist/ruzicka\"),n.tanimoto=t(\"./dist/tanimoto\"),n.innerProduct=t(\"./dist/innerProduct\"),n.harmonicMean=t(\"./dist/harmonicMean\"),n.cosine=t(\"./dist/cosine\"),n.kumarHassebrook=t(\"./dist/kumarHassebrook\"),n.jaccard=t(\"./dist/jaccard\"),n.jaccardS=t(\"./dist/jaccardS\"),n.dice=t(\"./dist/dice\"),n.diceS=t(\"./dist/diceS\"),n.fidelity=t(\"./dist/fidelity\"),n.bhattacharyya=t(\"./dist/bhattacharyya\"),n.hellinger=t(\"./dist/hellinger\"),n.matusita=t(\"./dist/matusita\"),n.squaredChord=t(\"./dist/squaredChord\"),n.squaredChordS=t(\"./dist/squaredChordS\"),n.pearson=t(\"./dist/pearson\"),n.neyman=t(\"./dist/neyman\"),n.squared=t(\"./dist/squared\"),n.probabilisticSymmetric=t(\"./dist/probabilisticSymmetric\"),n.divergence=t(\"./dist/divergence\"),n.clark=t(\"./dist/clark\"),n.additiveSymmetric=t(\"./dist/additiveSymmetric\"),n.kullbackLeibler=t(\"./dist/kullbackLeibler\"),n.jeffreys=t(\"./dist/jeffreys\"),n.kdivergence=t(\"./dist/kdivergence\"),n.topsoe=t(\"./dist/topsoe\"),n.jensenShannon=t(\"./dist/jensenShannon\"),n.jensenDifference=t(\"./dist/jensenDifference\"),n.taneja=t(\"./dist/taneja\"),n.kumarJohnson=t(\"./dist/kumarJohnson\"),n.avg=t(\"./dist/avg\")},{\"./dist/additiveSymmetric\":2,\"./dist/avg\":3,\"./dist/bhattacharyya\":4,\"./dist/canberra\":5,\"./dist/chebyshev\":6,\"./dist/clark\":7,\"./dist/cosine\":8,\"./dist/czekanowski\":9,\"./dist/czekanowskiS\":10,\"./dist/dice\":11,\"./dist/diceS\":12,\"./dist/divergence\":13,\"./dist/euclidean\":14,\"./dist/fidelity\":15,\"./dist/gower\":16,\"./dist/harmonicMean\":17,\"./dist/hellinger\":18,\"./dist/innerProduct\":19,\"./dist/intersection\":20,\"./dist/intersectionS\":21,\"./dist/jaccard\":22,\"./dist/jaccardS\":23,\"./dist/jeffreys\":24,\"./dist/jensenDifference\":25,\"./dist/jensenShannon\":26,\"./dist/kdivergence\":27,\"./dist/kulczynski\":28,\"./dist/kulczynskiS\":29,\"./dist/kullbackLeibler\":30,\"./dist/kumarHassebrook\":31,\"./dist/kumarJohnson\":32,\"./dist/lorentzian\":33,\"./dist/manhattan\":34,\"./dist/matusita\":35,\"./dist/minkowski\":36,\"./dist/motyka\":37,\"./dist/neyman\":38,\"./dist/pearson\":39,\"./dist/probabilisticSymmetric\":40,\"./dist/ruzicka\":41,\"./dist/soergel\":42,\"./dist/sorensen\":43,\"./dist/squared\":45,\"./dist/squared-euclidean\":44,\"./dist/squaredChord\":46,\"./dist/squaredChordS\":47,\"./dist/taneja\":48,\"./dist/tanimoto\":49,\"./dist/topsoe\":50,\"./dist/waveHedges\":51}],53:[function(t,r){\"use strict\";function n(t){if(t=M.checkMatrix(t),!t.isSquare())throw new Error(\"Matrix is not a square matrix\");var r,n,a=t.columns,f=M.zeros(a,a),u=new Array(a),c=new Array(a),l=t;if(t.isSymmetric()){for(r=0;a>r;r++)for(n=0;a>n;n++)f[r][n]=l[r][n];o(a,c,u,f),e(a,c,u,f)}else{var d=M.zeros(a,a),m=new Array(a);for(n=0;a>n;n++)for(r=0;a>r;r++)d[r][n]=l[r][n];i(a,d,m,f),s(a,c,u,f,d)}return new h(a,c,u,f)}function o(t,r,n,o){var e,i,s,a,h,f,u,c;for(h=0;t>h;h++)n[h]=o[t-1][h];for(a=t-1;a>0;a--){for(c=0,s=0,f=0;a>f;f++)c+=Math.abs(n[f]);if(0===c)for(r[a]=n[a-1],h=0;a>h;h++)n[h]=o[a-1][h],o[a][h]=0,o[h][a]=0;else{for(f=0;a>f;f++)n[f]/=c,s+=n[f]*n[f];for(e=n[a-1],i=Math.sqrt(s),e>0&&(i=-i),r[a]=c*i,s-=e*i,n[a-1]=e-i,h=0;a>h;h++)r[h]=0;for(h=0;a>h;h++){for(e=n[h],o[h][a]=e,i=r[h]+o[h][h]*e,f=h+1;a-1>=f;f++)i+=o[f][h]*n[f],r[f]+=o[f][h]*e;r[h]=i}for(e=0,h=0;a>h;h++)r[h]/=s,e+=r[h]*n[h];for(u=e/(s+s),h=0;a>h;h++)r[h]-=u*n[h];for(h=0;a>h;h++){for(e=n[h],i=r[h],f=h;a-1>=f;f++)o[f][h]-=e*r[f]+i*n[f];n[h]=o[a-1][h],o[a][h]=0}}n[a]=s}for(a=0;t-1>a;a++){if(o[t-1][a]=o[a][a],o[a][a]=1,s=n[a+1],0!==s){for(f=0;a>=f;f++)n[f]=o[f][a+1]/s;for(h=0;a>=h;h++){for(i=0,f=0;a>=f;f++)i+=o[f][a+1]*o[f][h];for(f=0;a>=f;f++)o[f][h]-=i*n[f]}}for(f=0;a>=f;f++)o[f][a+1]=0}for(h=0;t>h;h++)n[h]=o[t-1][h],o[t-1][h]=0;o[t-1][t-1]=1,r[0]=0}function e(t,r,n,o){var e,i,s,a,h,f,u,c,l,d,m,p,v,g,y,M,x;for(s=1;t>s;s++)r[s-1]=r[s];r[t-1]=0;var b=0,k=0,A=Math.pow(2,-52);for(f=0;t>f;f++){for(k=Math.max(k,Math.abs(n[f])+Math.abs(r[f])),u=f;t>u&&!(Math.abs(r[u])<=A*k);)u++;if(u>f){x=0;do{for(x+=1,e=n[f],c=(n[f+1]-e)/(2*r[f]),l=w(c,1),0>c&&(l=-l),n[f]=r[f]/(c+l),n[f+1]=r[f]*(c+l),d=n[f+1],i=e-n[f],s=f+2;t>s;s++)n[s]-=i;for(b+=i,c=n[u],m=1,p=m,v=m,g=r[f+1],y=0,M=0,s=u-1;s>=f;s--)for(v=p,p=m,M=y,e=m*r[s],i=m*c,l=w(c,r[s]),r[s+1]=y*l,y=r[s]/l,m=c/l,c=m*n[s]-y*e,n[s+1]=i+y*(m*e+y*n[s]),h=0;t>h;h++)i=o[h][s+1],o[h][s+1]=y*o[h][s]+m*i,o[h][s]=m*o[h][s]-y*i;c=-y*M*v*g*r[f]/d,r[f]=y*c,n[f]=m*c}while(Math.abs(r[f])>A*k)}n[f]=n[f]+b,r[f]=0}for(s=0;t-1>s;s++){for(h=s,c=n[s],a=s+1;t>a;a++)n[a]a;a++)c=o[a][s],o[a][s]=o[a][h],o[a][h]=c}}function i(t,r,n,o){var e,i,s,a,h,f,u,c=0,l=t-1;for(f=c+1;l-1>=f;f++){for(u=0,a=f;l>=a;a++)u+=Math.abs(r[a][f-1]);if(0!==u){for(s=0,a=l;a>=f;a--)n[a]=r[a][f-1]/u,s+=n[a]*n[a];for(i=Math.sqrt(s),n[f]>0&&(i=-i),s-=n[f]*i,n[f]=n[f]-i,h=f;t>h;h++){for(e=0,a=l;a>=f;a--)e+=n[a]*r[a][h];for(e/=s,a=f;l>=a;a++)r[a][h]-=e*n[a]}for(a=0;l>=a;a++){for(e=0,h=l;h>=f;h--)e+=n[h]*r[a][h];for(e/=s,h=f;l>=h;h++)r[a][h]-=e*n[h]}n[f]=u*n[f],r[f][f-1]=u*i}}for(a=0;t>a;a++)for(h=0;t>h;h++)o[a][h]=a===h?1:0;for(f=l-1;f>=c+1;f--)if(0!==r[f][f-1]){for(a=f+1;l>=a;a++)n[a]=r[a][f-1];for(h=f;l>=h;h++){for(i=0,a=f;l>=a;a++)i+=n[a]*o[a][h];for(i=i/n[f]/r[f][f-1],a=f;l>=a;a++)o[a][h]+=i*n[a]}}}function s(t,r,n,o,e){var i,s,h,f,u,c,l,d,m,p,v,w,g,y,M,x=t-1,b=0,k=t-1,A=Math.pow(2,-52),S=0,q=0,j=0,R=0,D=0,z=0,C=0,O=0;for(i=0;t>i;i++)for((b>i||i>k)&&(n[i]=e[i][i],r[i]=0),s=Math.max(i-1,0);t>s;s++)q+=Math.abs(e[i][s]);for(;x>=b;){for(f=x;f>b&&(z=Math.abs(e[f-1][f-1])+Math.abs(e[f][f]),0===z&&(z=q),!(Math.abs(e[f][f-1])=0){for(C=j>=0?j+C:j-C,n[x-1]=d+C,n[x]=n[x-1],0!==C&&(n[x]=d-l/C),r[x-1]=0,r[x]=0,d=e[x][x-1],z=Math.abs(d)+Math.abs(C),j=d/z,R=C/z,D=Math.sqrt(j*j+R*R),j/=D,R/=D,s=x-1;t>s;s++)C=e[x-1][s],e[x-1][s]=R*C+j*e[x][s],e[x][s]=R*e[x][s]-j*C;for(i=0;x>=i;i++)C=e[i][x-1],e[i][x-1]=R*C+j*e[i][x],e[i][x]=R*e[i][x]-j*C;for(i=b;k>=i;i++)C=o[i][x-1],o[i][x-1]=R*C+j*o[i][x],o[i][x]=R*o[i][x]-j*C}else n[x-1]=d+j,n[x]=d+j,r[x-1]=C,r[x]=-C;x-=2,O=0}else{if(d=e[x][x],m=0,l=0,x>f&&(m=e[x-1][x-1],l=e[x][x-1]*e[x-1][x]),10===O){for(S+=d,i=b;x>=i;i++)e[i][i]-=d;z=Math.abs(e[x][x-1])+Math.abs(e[x-1][x-2]),d=m=.75*z,l=-.4375*z*z}if(30===O&&(z=(m-d)/2,z=z*z+l,z>0)){for(z=Math.sqrt(z),d>m&&(z=-z),z=d-l/((m-d)/2+z),i=b;x>=i;i++)e[i][i]-=z;S+=z,d=m=l=.964}for(O+=1,u=x-2;u>=f&&(C=e[u][u],D=d-C,z=m-C,j=(D*z-l)/e[u+1][u]+e[u][u+1],R=e[u+1][u+1]-C-D-z,D=e[u+2][u+1],z=Math.abs(j)+Math.abs(R)+Math.abs(D),j/=z,R/=z,D/=z,u!==f)&&!(Math.abs(e[u][u-1])*(Math.abs(R)+Math.abs(D))=i;i++)e[i][i-2]=0,i>u+2&&(e[i][i-3]=0);for(h=u;x-1>=h&&(y=h!==x-1,h!==u&&(j=e[h][h-1],R=e[h+1][h-1],D=y?e[h+2][h-1]:0,d=Math.abs(j)+Math.abs(R)+Math.abs(D),0!==d&&(j/=d,R/=d,D/=d)),0!==d);h++)if(z=Math.sqrt(j*j+R*R+D*D),0>j&&(z=-z),0!==z){for(h!==u?e[h][h-1]=-z*d:f!==u&&(e[h][h-1]=-e[h][h-1]),j+=z,d=j/z,m=R/z,C=D/z,R/=j,D/=j,s=h;t>s;s++)j=e[h][s]+R*e[h+1][s],y&&(j+=D*e[h+2][s],e[h+2][s]=e[h+2][s]-j*C),e[h][s]=e[h][s]-j*d,e[h+1][s]=e[h+1][s]-j*m;for(i=0;i<=Math.min(x,h+3);i++)j=d*e[i][h]+m*e[i][h+1],y&&(j+=C*e[i][h+2],e[i][h+2]=e[i][h+2]-j*D),e[i][h]=e[i][h]-j,e[i][h+1]=e[i][h+1]-j*R;for(i=b;k>=i;i++)j=d*o[i][h]+m*o[i][h+1],y&&(j+=C*o[i][h+2],o[i][h+2]=o[i][h+2]-j*D),o[i][h]=o[i][h]-j,o[i][h+1]=o[i][h+1]-j*R}}}if(0!==q){for(x=t-1;x>=0;x--)if(j=n[x],R=r[x],0===R)for(f=x,e[x][x]=1,i=x-1;i>=0;i--){for(l=e[i][i]-j,D=0,s=f;x>=s;s++)D+=e[i][s]*e[s][x];if(r[i]<0)C=l,z=D;else if(f=i,0===r[i]?e[i][x]=0!==l?-D/l:-D/(A*q):(d=e[i][i+1],m=e[i+1][i],R=(n[i]-j)*(n[i]-j)+r[i]*r[i],c=(d*z-C*D)/R,e[i][x]=c,e[i+1][x]=Math.abs(d)>Math.abs(C)?(-D-l*c)/d:(-z-m*c)/C),c=Math.abs(e[i][x]),A*c*c>1)for(s=i;x>=s;s++)e[s][x]=e[s][x]/c}else if(0>R)for(f=x-1,Math.abs(e[x][x-1])>Math.abs(e[x-1][x])?(e[x-1][x-1]=R/e[x][x-1],e[x-1][x]=-(e[x][x]-j)/e[x][x-1]):(M=a(0,-e[x-1][x],e[x-1][x-1]-j,R),e[x-1][x-1]=M[0],e[x-1][x]=M[1]),e[x][x-1]=0,e[x][x]=1,i=x-2;i>=0;i--){for(p=0,v=0,s=f;x>=s;s++)p+=e[i][s]*e[s][x-1],v+=e[i][s]*e[s][x];if(l=e[i][i]-j,r[i]<0)C=l,D=p,z=v;else if(f=i,0===r[i]?(M=a(-p,-v,l,R),e[i][x-1]=M[0],e[i][x]=M[1]):(d=e[i][i+1],m=e[i+1][i],w=(n[i]-j)*(n[i]-j)+r[i]*r[i]-R*R,g=2*(n[i]-j)*R,0===w&&0===g&&(w=A*q*(Math.abs(l)+Math.abs(R)+Math.abs(d)+Math.abs(m)+Math.abs(C))),M=a(d*D-C*p+R*v,d*z-C*v-R*p,w,g),e[i][x-1]=M[0],e[i][x]=M[1],Math.abs(d)>Math.abs(C)+Math.abs(R)?(e[i+1][x-1]=(-p-l*e[i][x-1]+R*e[i][x])/d,e[i+1][x]=(-v-l*e[i][x]-R*e[i][x-1])/d):(M=a(-D-m*e[i][x-1],-z-m*e[i][x],C,R),e[i+1][x-1]=M[0],e[i+1][x]=M[1])),c=Math.max(Math.abs(e[i][x-1]),Math.abs(e[i][x])),A*c*c>1)for(s=i;x>=s;s++)e[s][x-1]=e[s][x-1]/c,e[s][x]=e[s][x]/c}for(i=0;t>i;i++)if(b>i||i>k)for(s=i;t>s;s++)o[i][s]=e[i][s];for(s=t-1;s>=b;s--)for(i=b;k>=i;i++){for(C=0,h=b;h<=Math.min(s,k);h++)C+=o[i][h]*e[h][s];o[i][s]=C}}}function a(t,r,n,o){var e,i;return Math.abs(n)>Math.abs(o)?(e=o/n,i=n+e*o,[(t+e*r)/i,(r-e*t)/i]):(e=n/o,i=o+e*n,[(e*t+r)/i,(e*r-t)/i])}function h(t,r,n,o){this.n=t,this.e=r,this.d=n,this.V=o}function f(t){t=M.checkMatrix(t);var r,n,o,e,i,s,a,h,f,c,l=t.clone(),d=l.rows,m=l.columns,p=new Array(d),v=1;for(r=0;d>r;r++)p[r]=r;for(f=new Array(d),n=0;m>n;n++){for(r=0;d>r;r++)f[r]=l[r][n];for(r=0;d>r;r++){for(h=l[r],c=Math.min(r,n),i=0,o=0;c>o;o++)i+=h[o]*f[o];h[n]=f[r]-=i}for(e=n,r=n+1;d>r;r++)Math.abs(f[r])>Math.abs(f[e])&&(e=r);if(e!==n){for(o=0;m>o;o++)s=l[e][o],l[e][o]=l[n][o],l[n][o]=s;a=p[e],p[e]=p[n],p[n]=a,v=-v}if(d>n&&0!==l[n][n])for(r=n+1;d>r;r++)l[r][n]/=l[n][n]}return new u(l,p,v)}function u(t,r,n){this.LU=t,this.pivotVector=r,this.pivotSign=n}function c(t){t=M.checkMatrix(t);var r,n,o,e,i=t.clone(),s=t.rows,a=t.columns,h=new Array(a);for(o=0;a>o;o++){var f=0;for(r=o;s>r;r++)f=w(f,i[r][o]);if(0!==f){for(i[o][o]<0&&(f=-f),r=o;s>r;r++)i[r][o]/=f;for(i[o][o]+=1,n=o+1;a>n;n++){for(e=0,r=o;s>r;r++)e+=i[r][o]*i[r][n];for(e=-e/i[o][o],r=o;s>r;r++)i[r][n]+=e*i[r][o]}}h[o]=-f}return new l(i,h)}function l(t,r){this.QR=t,this.Rdiag=r}function d(t,r){t=M.checkMatrix(t),r=r||{};var n=t.clone(),o=t.rows,e=t.columns,i=Math.min(o,e),s=!0,a=!0;r.computeLeftSingularVectors===!1&&(s=!1),r.computeRightSingularVectors===!1&&(a=!1);var h=r.autoTranspose===!0,f=!1;if(e>o)if(h){n=n.transpose(),o=n.rows,e=n.columns,f=!0;var u=s;s=a,a=u}else console.warn(\"WARNING: Computing SVD on a matrix with more columns than rows.\");var c,l,d,p,v,g,y,x,b,k,A,S,q,j,R,D,z,C,O,I,V,E=new Array(Math.min(o+1,e)),U=M.zeros(o,i),L=M.zeros(e,e),N=new Array(e),_=new Array(o),T=Math.min(o-1,e),P=Math.max(0,Math.min(e-2,o));for(d=0,k=Math.max(T,P);k>d;d++){if(T>d){for(E[d]=0,c=d;o>c;c++)E[d]=w(E[d],n[c][d]);if(0!==E[d]){for(n[d][d]<0&&(E[d]=-E[d]),c=d;o>c;c++)n[c][d]/=E[d];n[d][d]+=1}E[d]=-E[d]}for(l=d+1;e>l;l++){if(T>d&&0!==E[d]){for(v=0,c=d;o>c;c++)v+=n[c][d]*n[c][l];for(v=-v/n[d][d],c=d;o>c;c++)n[c][l]+=v*n[c][d]}N[l]=n[d][l]}if(s&&T>d)for(c=d;o>c;c++)U[c][d]=n[c][d];if(P>d){for(N[d]=0,c=d+1;e>c;c++)N[d]=w(N[d],N[c]);if(0!==N[d]){for(N[d+1]<0&&(N[d]=-N[d]),c=d+1;e>c;c++)N[c]/=N[d];N[d+1]+=1}if(N[d]=-N[d],o>d+1&&0!==N[d]){for(c=d+1;o>c;c++)_[c]=0;for(l=d+1;e>l;l++)for(c=d+1;o>c;c++)_[c]+=N[l]*n[c][l];for(l=d+1;e>l;l++)for(v=-N[l]/N[d+1],c=d+1;o>c;c++)n[c][l]+=v*_[c]}if(a)for(c=d+1;e>c;c++)L[c][d]=N[c]}}if(p=Math.min(e,o+1),e>T&&(E[T]=n[T][T]),p>o&&(E[p-1]=0),p>P+1&&(N[P]=n[P][p-1]),N[p-1]=0,s){for(l=T;i>l;l++){for(c=0;o>c;c++)U[c][l]=0;U[l][l]=1}for(d=T-1;d>=0;d--)if(0!==E[d]){for(l=d+1;i>l;l++){for(v=0,c=d;o>c;c++)v+=U[c][d]*U[c][l];for(v=-v/U[d][d],c=d;o>c;c++)U[c][l]+=v*U[c][d]}for(c=d;o>c;c++)U[c][d]=-U[c][d];for(U[d][d]=1+U[d][d],c=0;d-1>c;c++)U[c][d]=0}else{for(c=0;o>c;c++)U[c][d]=0;U[d][d]=1}}if(a)for(d=e-1;d>=0;d--){if(P>d&&0!==N[d])for(l=d+1;e>l;l++){for(v=0,c=d+1;e>c;c++)v+=L[c][d]*L[c][l];for(v=-v/L[d+1][d],c=d+1;e>c;c++)L[c][l]+=v*L[c][d]}for(c=0;e>c;c++)L[c][d]=0;L[d][d]=1}for(var H=p-1,Q=0,W=Math.pow(2,-52);p>0;){for(d=p-2;d>=-1&&-1!==d;d--)if(Math.abs(N[d])<=W*(Math.abs(E[d])+Math.abs(E[d+1]))){N[d]=0;break}if(d===p-2)A=4;else{for(g=p-1;g>=d&&g!==d;g--)if(v=(g!==p?Math.abs(N[g]):0)+(g!==d+1?Math.abs(N[g-1]):0),Math.abs(E[g])<=W*v){E[g]=0;break}g===d?A=3:g===p-1?A=1:(A=2,d=g)}switch(d++,A){case 1:for(y=N[p-2],N[p-2]=0,l=p-2;l>=d;l--)if(v=w(E[l],y),x=E[l]/v,b=y/v,E[l]=v,l!==d&&(y=-b*N[l-1],N[l-1]=x*N[l-1]),a)for(c=0;e>c;c++)v=x*L[c][l]+b*L[c][p-1],L[c][p-1]=-b*L[c][l]+x*L[c][p-1],L[c][l]=v;break;case 2:for(y=N[d-1],N[d-1]=0,l=d;p>l;l++)if(v=w(E[l],y),x=E[l]/v,b=y/v,E[l]=v,y=-b*N[l],N[l]=x*N[l],s)for(c=0;o>c;c++)v=x*U[c][l]+b*U[c][d-1],U[c][d-1]=-b*U[c][l]+x*U[c][d-1],U[c][l]=v;break;case 3:for(S=Math.max(Math.max(Math.max(Math.max(Math.abs(E[p-1]),Math.abs(E[p-2])),Math.abs(N[p-2])),Math.abs(E[d])),Math.abs(N[d])),q=E[p-1]/S,j=E[p-2]/S,R=N[p-2]/S,D=E[d]/S,z=N[d]/S,C=((j+q)*(j-q)+R*R)/2,O=q*R*q*R,I=0,(0!==C||0!==O)&&(I=Math.sqrt(C*C+O),0>C&&(I=-I),I=O/(C+I)),y=(D+q)*(D-q)+I,V=D*z,l=d;p-1>l;l++){if(v=w(y,V),x=y/v,b=V/v,l!==d&&(N[l-1]=v),y=x*E[l]+b*N[l],N[l]=x*N[l]-b*E[l],V=b*E[l+1],E[l+1]=x*E[l+1],a)for(c=0;e>c;c++)v=x*L[c][l]+b*L[c][l+1],L[c][l+1]=-b*L[c][l]+x*L[c][l+1],L[c][l]=v;if(v=w(y,V),x=y/v,b=V/v,E[l]=v,y=x*N[l]+b*E[l+1],E[l+1]=-b*N[l]+x*E[l+1],V=b*N[l+1],N[l+1]=x*N[l+1],s&&o-1>l)for(c=0;o>c;c++)v=x*U[c][l]+b*U[c][l+1],U[c][l+1]=-b*U[c][l]+x*U[c][l+1],U[c][l]=v}N[p-2]=y,Q+=1;break;case 4:if(E[d]<=0&&(E[d]=E[d]<0?-E[d]:0,a))for(c=0;H>=c;c++)L[c][d]=-L[c][d];for(;H>d&&!(E[d]>=E[d+1]);){if(v=E[d],E[d]=E[d+1],E[d+1]=v,a&&e-1>d)for(c=0;e>c;c++)v=L[c][d+1],L[c][d+1]=L[c][d],L[c][d]=v;if(s&&o-1>d)for(c=0;o>c;c++)v=U[c][d+1],U[c][d+1]=U[c][d],U[c][d]=v;d++}Q=0,p--}}if(f){var B=L;L=U,U=B}return new m(o,e,E,U,L)}function m(t,r,n,o,e){this.m=t,this.n=r,this.s=n,this.U=o,this.V=e}function p(t){if(t=M.checkMatrix(t),!t.isSymmetric())throw new Error(\"Matrix is not symmetric\");var r,n,o,e=t,i=e.rows,s=new M(i,i),a=!0;for(n=0;i>n;n++){var h=s[n],f=0;for(o=0;n>o;o++){var u=s[o],c=0;for(r=0;o>r;r++)c+=u[r]*h[r];h[o]=c=(e[n][o]-c)/s[o][o],f+=c*c}for(f=e[n][n]-f,a&=f>0,s[n][n]=Math.sqrt(Math.max(f,0)),o=n+1;i>o;o++)s[n][o]=0}if(!a)throw new Error(\"Matrix is not positive definite\");return new v(s)}function v(t){this.L=t}function w(t,r){var n;return Math.abs(t)>Math.abs(r)?(n=r/t,Math.abs(t)*Math.sqrt(1+n*n)):0!==r?(n=t/r,Math.abs(r)*Math.sqrt(1+n*n)):0}function g(t){return y(t,M.eye(t.rows))}function y(t,r){return t.isSquare()?new f(t).solve(r):new c(t).solve(r)}var M=t(\"./matrix\");h.prototype={get realEigenvalues(){return this.d},get imaginaryEigenvalues(){return this.e},get eigenvectorMatrix(){return this.V},get diagonalMatrix(){var t,r,n=this.n,o=this.e,e=this.d,i=new M(n,n);for(t=0;n>t;t++){for(r=0;n>r;r++)i[t][r]=0;i[t][t]=e[t],o[t]>0?i[t][t+1]=o[t]:o[t]<0&&(i[t][t-1]=o[t])}return i}},u.prototype={isSingular:function(){for(var t=this.LU,r=t.columns,n=0;r>n;n++)if(0===t[n][n])return!0;return!1},get determinant(){var t=this.LU;if(!t.isSquare())throw new Error(\"Matrix must be square\");for(var r=this.pivotSign,n=t.columns,o=0;n>o;o++)r*=t[o][o];return r},get lowerTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,o=new M(r,n),e=0;r>e;e++)for(var i=0;n>i;i++)o[e][i]=e>i?t[e][i]:e===i?1:0;return o},get upperTriangularFactor(){for(var t=this.LU,r=t.rows,n=t.columns,o=new M(r,n),e=0;r>e;e++)for(var i=0;n>i;i++)o[e][i]=i>=e?t[e][i]:0;return o},get pivotPermutationVector(){return this.pivotVector.slice()},solve:function(t){t=M.checkMatrix(t);var r=this.LU,n=r.rows;if(n!==t.rows)throw new Error(\"Invalid matrix dimensions\");if(this.isSingular())throw new Error(\"LU matrix is singular\");var o,e,i,s=t.columns,a=t.subMatrixRow(this.pivotVector,0,s-1),h=r.columns;for(i=0;h>i;i++)for(o=i+1;h>o;o++)for(e=0;s>e;e++)a[o][e]-=a[i][e]*r[o][i];for(i=h-1;i>=0;i--){for(e=0;s>e;e++)a[i][e]/=r[i][i];for(o=0;i>o;o++)for(e=0;s>e;e++)a[o][e]-=a[i][e]*r[o][i]}return a}},l.prototype={solve:function(t){t=M.checkMatrix(t);var r=this.QR,n=r.rows;if(t.rows!==n)throw new Error(\"Matrix row dimensions must agree\");if(!this.isFullRank())throw new Error(\"Matrix is rank deficient\");var o,e,i,s,a=t.columns,h=t.clone(),f=r.columns;for(i=0;f>i;i++)for(e=0;a>e;e++){for(s=0,o=i;n>o;o++)s+=r[o][i]*h[o][e];for(s=-s/r[i][i],o=i;n>o;o++)h[o][e]+=s*r[o][i]}for(i=f-1;i>=0;i--){for(e=0;a>e;e++)h[i][e]/=this.Rdiag[i];for(o=0;i>o;o++)for(e=0;a>e;e++)h[o][e]-=h[i][e]*r[o][i]}return h.subMatrix(0,f-1,0,a-1)},isFullRank:function(){for(var t=this.QR.columns,r=0;t>r;r++)if(0===this.Rdiag[r])return!1;return!0},get upperTriangularFactor(){var t,r,n=this.QR,o=n.columns,e=new M(o,o);for(t=0;o>t;t++)for(r=0;o>r;r++)e[t][r]=r>t?n[t][r]:t===r?this.Rdiag[t]:0;return e},get orthogonalFactor(){var t,r,n,o,e=this.QR,i=e.rows,s=e.columns,a=new M(i,s);for(n=s-1;n>=0;n--){for(t=0;i>t;t++)a[t][n]=0;for(a[n][n]=1,r=n;s>r;r++)if(0!==e[n][n]){for(o=0,t=n;i>t;t++)o+=e[t][n]*a[t][r];for(o=-o/e[n][n],t=n;i>t;t++)a[t][r]+=o*e[t][n]}}return a}},m.prototype={get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]},get norm2(){return this.s[0]},get rank(){for(var t=Math.pow(2,-52),r=Math.max(this.m,this.n)*this.s[0]*t,n=0,o=this.s,e=0,i=o.length;i>e;e++)o[e]>r&&n++;return n},get diagonal(){return this.s},get threshold(){return Math.pow(2,-52)/2*Math.max(this.m,this.n)*this.s[0]},get leftSingularVectors(){return this.U},get rightSingularVectors(){return this.V},get diagonalMatrix(){return M.diag(this.s)},solve:function(t){var r,n=t,o=this.threshold,e=this.s.length,i=M.zeros(e,e);for(r=0;e>r;r++)i[r][r]=Math.abs(this.s[r])<=o?0:1/this.s[r];var s,a,h,f=this.V.mmul(i),u=this.V.rows,c=this.U.rows,l=M.zeros(u,c);for(r=0;u>r;r++)for(s=0;c>s;s++){for(h=0,a=0;e>a;a++)h+=f[r][a]*this.U[s][a];l[r][s]=h}return l.mmul(n)},solveForDiagonal:function(t){return this.solve(M.diag(t))},inverse:function(){var t,r,n=this.threshold,o=this.V.rows,e=this.V.columns,i=new M(o,this.s.length);for(t=0;o>t;t++)for(r=0;e>r;r++)Math.abs(this.s[r])>n&&(i[t][r]=this.V[t][r]/this.s[r]);var s,a,h=this.U.rows,f=this.U.columns,u=new M(o,h);for(t=0;o>t;t++)for(r=0;h>r;r++){for(a=0,s=0;f>s;s++)a+=i[t][s]*this.U[r][s];u[t][r]=a}return u}},v.prototype={get leftTriangularFactor(){return this.L},solve:function(t){t=M.checkMatrix(t);var r=this.L,n=r.rows;if(t.rows!==n)throw new Error(\"Matrix dimensions do not match\");var o,e,i,s=t.columns,a=t.clone();for(i=0;n>i;i++)for(e=0;s>e;e++){for(o=0;i>o;o++)a[i][e]-=a[o][e]*r[i][o];a[i][e]/=r[i][i]}for(i=n-1;i>=0;i--)for(e=0;s>e;e++){for(o=i+1;n>o;o++)a[i][e]-=a[o][e]*r[o][i];a[i][e]/=r[i][i]}return a}},M.prototype.inverse=function(){return g(this)},M.prototype.solve=function(t){return y(this,t)},r.exports={LuDecomposition:f,LU:f,QrDecomposition:c,QR:c,SingularValueDecomposition:d,SVD:d,EigenvalueDecomposition:n,EVD:n,CholeskyDecomposition:p,CHO:p,inverse:g,solve:y}},{\"./matrix\":55}],54:[function(t,r){\"use strict\";r.exports=t(\"./matrix\"),r.exports.Decompositions=r.exports.DC=t(\"./decompositions\")},{\"./decompositions\":53,\"./matrix\":55}],55:[function(t,r){\"use strict\";function n(t){for(var r=0,n=t.length,o=new Array(n);n>r;r++)o[r]=t[r];return o}function o(t){this.message=t||\"Unknown matrix error\"}function e(t,r){var i,s,a=0;if(Array.isArray(t)){if(s=r,i=s?n(t):t,t=i.length,r=i[0].length,\"undefined\"==typeof r)throw new o(\"Data must be a 2D array\");if(!(t>0&&r>0))throw new o(\"Invalid dimensions: \"+t+\"x\"+r);for(;t>a;a++){if(i[a].length!==r)throw new o(\"Inconsistent array dimensions\");s&&(i[a]=n(i[a]))}}else{if(\"number\"!=typeof t)throw new o(\"Invalid arguments\");if(!(t>0&&r>0))throw new o(\"Invalid dimensions: \"+t+\"x\"+r);for(i=new Array(t);t>a;a++)i[a]=new Array(r)}return Object.defineProperty(i,\"rows\",{writable:!0,value:t}),Object.defineProperty(i,\"columns\",{writable:!0,value:r}),i.__proto__=e.prototype,i}var i=Array.prototype.splice,s=Array.prototype.concat;o.prototype=Object.create(Error.prototype),o.prototype.name=\"MatrixError\",o.prototype.constructor=o,e.from1DArray=function(t,r,n){var i,s,a=0;if(i=t*r,i!==n.length)throw new o(\"Data length does not match given dimensions\");for(s=new Array(t);t>a;a++)s[a]=n.slice(a*r,(a+1)*r);return new e(s)},e.rowVector=function(t){return new e([t])},e.columnVector=function(t){for(var r=t.length,n=new Array(r),o=0;r>o;o++)n[o]=[t[o]];return new e(n)},e.empty=function(t,r){return new e(t,r)},e.zeros=function(t,r){return e.empty(t,r).fill(0)},e.ones=function(t,r){return e.empty(t,r).fill(1)},e.rand=function(t,r){for(var n=e.empty(t,r),o=0,i=n.rows;i>o;o++)for(var s=0,a=n.columns;a>s;s++)n[o][s]=Math.random();return n},e.eye=function(t){for(var r=e.zeros(t,t),n=r.rows,o=0;n>o;o++)r[o][o]=1;return r},e.diag=function(t){for(var r=t.length,n=e.zeros(r,r),o=0;r>o;o++)n[o][o]=t[o];return n},e.indices=function(t,r){for(var n=new Array(r-t),o=0;os&&(s=arguments[r].columns);var a=e.zeros(i,s),h=0;for(r=0;rt||t>this.rows-1)throw new o(\"Row index out of range.\")},e.prototype.checkColumnIndex=function(t){if(0>t||t>this.columns-1)throw new o(\"Column index out of range.\")},e.prototype.checkDimensions=function(t){if(this.rows!==t.rows||this.columns!==t.columns)throw new o(\"Matrices dimensions must be equal.\")},e.prototype.apply=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t.call(this,o,e);return this},e.prototype.clone=function(){return new e(this.to2DArray())},e.prototype.to1DArray=function(){return s.apply([],this)},e.prototype.to2DArray=function(){for(var t=this.rows,r=new Array(t),o=0;t>o;o++)r[o]=n(this[o]);return r},e.prototype.isRowVector=function(){return 1===this.rows},e.prototype.isColumnVector=function(){return 1===this.columns},e.prototype.isVector=function(){return 1===this.rows||1===this.columns},e.prototype.isSquare=function(){return this.rows===this.columns},e.prototype.isSymmetric=function(){if(this.isSquare()){for(var t=this.rows,r=0;t>r;r++)for(var n=0;r>=n;n++)if(this[r][n]!==this[n][r])return!1;return!0}return!1},e.prototype.set=function(t,r,n){return this[t][r]=n,this},e.prototype.get=function(t,r){return this[t][r]},e.prototype.fill=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]=t;return this},e.prototype.neg=function(){return this.mulS(-1)},e.prototype.add=function(t){return\"number\"==typeof t?this.addS(t):(t=e.checkMatrix(t),this.addM(t))},e.prototype.addS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t;return this},e.prototype.addM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o][e];return this},e.prototype.sub=function(t){return\"number\"==typeof t?this.subS(t):(t=e.checkMatrix(t),this.subM(t))},e.prototype.subS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t;\nreturn this},e.prototype.subM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o][e];return this},e.prototype.mul=function(t){return\"number\"==typeof t?this.mulS(t):(t=e.checkMatrix(t),this.mulM(t))},e.prototype.mulS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t;return this},e.prototype.mulM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o][e];return this},e.prototype.div=function(t){return\"number\"==typeof t?this.divS(t):(t=e.checkMatrix(t),this.divM(t))},e.prototype.divS=function(t){for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t;return this},e.prototype.divM=function(t){this.checkDimensions(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o][e];return this},e.prototype.getRow=function(t){return this.checkRowIndex(t),n(this[t])},e.prototype.setRow=function(t,r){if(this.checkRowIndex(t),e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o(\"Invalid row size\");return this[t]=n(r),this},e.prototype.removeRow=function(t){if(this.checkRowIndex(t),1===this.rows)throw new o(\"A matrix cannot have less than one row\");return i.call(this,t,1),this.rows-=1,this},e.prototype.addRow=function(t,r){if(\"undefined\"==typeof r&&(r=t,t=this.rows),0>t||t>this.rows)throw new o(\"Row index out of range.\");if(e.isMatrix(r)&&(r=r.to1DArray()),r.length!==this.columns)throw new o(\"Invalid row size\");return i.call(this,t,0,n(r)),this.rows+=1,this},e.prototype.swapRows=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);var n=this[t];return this[t]=this[r],this[r]=n,this},e.prototype.getColumn=function(t){this.checkColumnIndex(t);for(var r=this.rows,n=new Array(r),o=0;r>o;o++)n[o]=this[o][t];return n},e.prototype.setColumn=function(t,r){this.checkColumnIndex(t),e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o(\"Invalid column size\");for(var i=0;n>i;i++)this[i][t]=r[i];return this},e.prototype.removeColumn=function(t){if(this.checkColumnIndex(t),1===this.columns)throw new o(\"A matrix cannot have less than one column\");for(var r=0,n=this.rows;n>r;r++)this[r].splice(t,1);return this.columns-=1,this},e.prototype.addColumn=function(t,r){if(\"undefined\"==typeof r&&(r=t,t=this.columns),0>t||t>this.columns)throw new o(\"Column index out of range.\");e.isMatrix(r)&&(r=r.to1DArray());var n=this.rows;if(r.length!==n)throw new o(\"Invalid column size\");for(var i=0;n>i;i++)this[i].splice(t,0,r[i]);return this.columns+=1,this},e.prototype.swapColumns=function(t,r){this.checkRowIndex(t),this.checkRowIndex(r);for(var n,o,e=this.rows,i=0;e>i;i++)o=this[i],n=o[t],o[t]=o[r],o[r]=n;return this},e.prototype.checkRowVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.columns)throw new o(\"vector size must be the same as the number of columns\");return t},e.prototype.checkColumnVector=function(t){if(e.isMatrix(t)&&(t=t.to1DArray()),t.length!==this.rows)throw new o(\"vector size must be the same as the number of rows\");return t},e.prototype.addRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[e];return this},e.prototype.subRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[e];return this},e.prototype.mulRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[e];return this},e.prototype.divRowVector=function(t){t=this.checkRowVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[e];return this},e.prototype.addColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]+=t[o];return this},e.prototype.subColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]-=t[o];return this},e.prototype.mulColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]*=t[o];return this},e.prototype.divColumnVector=function(t){t=this.checkColumnVector(t);for(var r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]/=t[o];return this},e.prototype.mulRow=function(t,r){this.checkRowIndex(t);for(var n=0,o=this.columns;o>n;n++)this[t][n]*=r;return this},e.prototype.mulColumn=function(t,r){this.checkColumnIndex(t);for(var n=0,o=this.rows;o>n;n++)this[n][t]*=r},e.prototype.max=function(){for(var t=-1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]>t&&(t=this[o][e]);return t},e.prototype.maxIndex=function(){for(var t=-1/0,r={},n=this.rows,o=this.columns,e=0;n>e;e++)for(var i=0;o>i;i++)this[e][i]>t&&(t=this[e][i],r.row=e,r.column=i);return r},e.prototype.min=function(){for(var t=1/0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)this[o][e]e;e++)for(var i=0;o>i;i++)this[e][i]n;n++)this[t][n]>r&&(r=this[t][n]);return r},e.prototype.maxRowIndex=function(t){this.checkRowIndex(t);for(var r=-1/0,n={row:t},o=0,e=this.columns;e>o;o++)this[t][o]>r&&(r=this[t][o],n.column=o);return n},e.prototype.minRow=function(t){this.checkRowIndex(t);for(var r=1/0,n=0,o=this.columns;o>n;n++)this[t][n]o;o++)this[t][o]n;n++)this[n][t]>r&&(r=this[n][t]);return r},e.prototype.maxColumnIndex=function(t){this.checkColumnIndex(t);for(var r=-1/0,n={row:0,column:t},o=0,e=this.rows;e>o;o++)this[o][t]>r&&(r=this[o][t],n.row=o);return n},e.prototype.minColumn=function(t){this.checkColumnIndex(t);for(var r=1/0,n=0,o=this.rows;o>n;n++)this[n][t]o;o++)this[o][t]t;t++)a[t]=this[t][t];return a},e.prototype.sum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e];return t},e.prototype.mean=function(){return this.sum()/this.size},e.prototype.prod=function h(){for(var h=1,t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)h*=this[n][o];return h},e.prototype.cumulativeSum=function(){for(var t=0,r=this.rows,n=this.columns,o=0;r>o;o++)for(var e=0;n>e;e++)t+=this[o][e],this[o][e]=t;return this},e.prototype.dot=function f(t){if(this.size!==t.size)throw new o(\"vectors do not have the same size\");for(var r=this.to1DArray(),n=t.to1DArray(),f=0,e=r.length,i=0;e>i;i++)f+=r[i]*n[i];return f},e.prototype.mmul=function(t){this.columns!==t.rows&&console.warn(\"Number of columns of left matrix are not equal to number of rows of right matrix.\");var r,n,o,i=this.rows,s=this.columns,a=t.columns,h=new e(i,a),f=new Array(s);for(n=0;a>n;n++){for(o=0;s>o;o++)f[o]=t[o][n];for(r=0;i>r;r++){var u=this[r],c=0;for(o=0;s>o;o++)c+=u[o]*f[o];h[r][n]=c}}return h},e.prototype.sortRows=function(t){for(var r=0,n=this.rows;n>r;r++)this[r].sort(t);return this},e.prototype.sortColumns=function(t){for(var r=0,n=this.columns;n>r;r++)this.setColumn(r,this.getColumn(r).sort(t));return this},e.prototype.transpose=function(){for(var t=new e(this.columns,this.rows),r=this.rows,n=this.columns,o=0;r>o;o++)for(var i=0;n>i;i++)t[i][o]=this[o][i];return t},e.prototype.subMatrix=function(t,r,n,i){if(t>r||n>i||0>t||t>=this.rows||0>r||r>=this.rows||0>n||n>=this.columns||0>i||i>=this.columns)throw new o(\"Argument out of range\");for(var s=new e(r-t+1,i-n+1),a=t;r>=a;a++)for(var h=n;i>=h;h++)s[a-t][h-n]=this[a][h];return s},e.prototype.subMatrixRow=function(t,r,n){if(\"undefined\"==typeof r?(r=0,n=this.columns-1):\"undefined\"==typeof n&&(n=this.columns-1),r>n||0>r||r>=this.columns||0>n||n>=this.columns)throw new o(\"Argument out of range.\");for(var i=t.length,s=this.rows,a=new e(i,n-r+1),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o(\"Argument out of range.\");a[h][f-r]=this[t[h]][f]}return a},e.prototype.subMatrixColumn=function(t,r,n){if(\"undefined\"==typeof r?(r=0,n=this.rows-1):\"undefined\"==typeof n&&(n=this.rows-1),r>n||0>r||r>=this.rows||0>n||n>=this.rows)throw new o(\"Argument out of range.\");for(var i=t.length,s=this.columns,a=new e(n-r+1,i),h=0;i>h;h++)for(var f=r;n>=f;f++){if(t[h]<0||t[h]>=s)throw new o(\"Argument out of range.\");a[f-r][h]=this[f][t[h]]}return a},e.prototype.trace=function u(){if(!this.isSquare())throw new o(\"The matrix is not square\");for(var u=0,t=0,r=this.rows;r>t;t++)u+=this[t][t];return u},e.prototype.abs=function(){for(var t=this.rows,r=this.columns,n=0;t>n;n++)for(var o=0;r>o;o++)this[n][o]=Math.abs(this[n][o])},e.MatrixError=o,r.exports=e},{}],56:[function(require,module,exports){\"use strict\";function SOM(t,r,n,o){this.x=t,this.y=r,n=n||{},this.options={};for(var e in defaultOptions)this.options[e]=n.hasOwnProperty(e)?n[e]:defaultOptions[e];if(\"number\"==typeof this.options.fields)this.numWeights=this.options.fields;else{if(!Array.isArray(this.options.fields))throw new Error(\"Invalid fields definition\");this.numWeights=this.options.fields.length;var i=getConverters(this.options.fields);this.extractor=i.extractor,this.creator=i.creator}if(\"rect\"===this.options.gridType)this.nodeType=NodeSquare,this.gridDim={x:t,y:r};else{this.nodeType=NodeHexagonal;var s=this.x-Math.floor(this.y/2);this.gridDim={x:s,y:this.y,z:-(0-s-this.y)}}if(this.torus=this.options.torus,this.distanceMethod=this.torus?\"getDistanceTorus\":\"getDistance\",this.distance=this.options.distance,this.maxDistance=getMaxDistance(this.distance,this.numWeights),o===!0)return void(this.done=!0);if(!(t>0&&r>0))throw new Error(\"x and y must be positive\");this.times={findBMU:0,adjust:0},this.randomizer=this.options.randomizer,this.iterationCount=0,this.iterations=this.options.iterations,this.startLearningRate=this.learningRate=this.options.learningRate,this.mapRadius=Math.floor(Math.max(t,r)/2),this.algorithmMethod=this.options.method,this._initNodes(),this.done=!1}function getConverters(t){for(var r=t.length,n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=getNormalizer(t[e].range),o[e]=getDenormalizer(t[e].range);return{extractor:function(o){for(var e=new Array(r),i=0;r>i;i++)e[i]=n[i](o[t[i].name]);return e},creator:function(n){for(var e={},i=0;r>i;i++)e[t[i].name]=o[i](n[i]);return e}}}function getNormalizer(t){return function(r){return(r-t[0])/(t[1]-t[0])}}function getDenormalizer(t){return function(r){return t[0]+r*(t[1]-t[0])}}function squareEuclidean(t,r){for(var n=0,o=0,e=t.length;e>o;o++)n+=(t[o]-r[o])*(t[o]-r[o]);return n}function getRandomValue(t,r){return t[Math.floor(r()*t.length)]}function getMaxDistance(t,r){for(var n=new Array(r),o=new Array(r),e=0;r>e;e++)n[e]=0,o[e]=1;return t(n,o)}var NodeSquare=require(\"./node-square\"),NodeHexagonal=require(\"./node-hexagonal\"),defaultOptions={fields:3,randomizer:Math.random,distance:squareEuclidean,iterations:10,learningRate:.1,gridType:\"rect\",torus:!0,method:\"random\"};SOM.load=function loadModel(model,distance){if(\"SOM\"===model.name){var x=model.data.length,y=model.data[0].length;distance?model.options.distance=distance:model.options.distance&&(model.options.distance=eval(\"(\"+model.options.distance+\")\"));var som=new SOM(x,y,model.options,!0);som.nodes=new Array(x);for(var i=0;x>i;i++){som.nodes[i]=new Array(y);for(var j=0;y>j;j++)som.nodes[i][j]=new som.nodeType(i,j,model.data[i][j],som)}return som}throw new Error(\"expecting a SOM model\")},SOM.prototype[\"export\"]=function(t){if(!this.done)throw new Error(\"model is not ready yet\");var r={name:\"SOM\"};r.options={fields:this.options.fields,gridType:this.options.gridType,torus:this.options.torus},r.data=new Array(this.x);for(var n=0;nr;r++)o[r]=this.extractor(t[r]);this.numIterations=this.iterations*e,this.timeConstant=\"random\"===this.algorithmMethod?this.numIterations/Math.log(this.mapRadius):e/Math.log(this.mapRadius),this.trainingSet=o,this.times.setTraining=Date.now()-n},SOM.prototype.trainOne=function(){if(this.done)return!1;if(this.numIterations-->0){var t,r,n;return\"random\"===this.algorithmMethod?(t=this.mapRadius*Math.exp(-this.iterationCount/this.timeConstant),r=getRandomValue(this.trainingSet,this.randomizer),this._adjust(r,t),this.learningRate=this.startLearningRate*Math.exp(-this.iterationCount/this.numIterations)):(n=-Math.floor(this.iterationCount/this.trainingSet.length),t=this.mapRadius*Math.exp(n/this.timeConstant),r=this.trainingSet[this.iterationCount%this.trainingSet.length],this._adjust(r,t),(this.iterationCount+1)%this.trainingSet.length===0&&(this.learningRate=this.startLearningRate*Math.exp(n/Math.floor(this.numIterations/this.trainingSet.length)))),this.iterationCount++,!0}return this.done=!0,!1},SOM.prototype._adjust=function(t,r){var n,o,e,i,s=Date.now(),a=this._findBestMatchingUnit(t),h=Date.now();this.times.findBMU+=h-s;var f=Math.floor(r),u=a.x-f,c=a.x+f,l=a.y-f,d=a.y+f;for(n=u;c>=n;n++){var m=n;for(0>n?m+=this.x:n>=this.x&&(m-=this.x),o=l;d>=o;o++){var p=o;0>o?p+=this.y:o>=this.y&&(p-=this.y),e=a[this.distanceMethod](this.nodes[m][p]),r>e&&(i=Math.exp(-e/(2*r)),this.nodes[m][p].adjustWeights(t,this.learningRate,i))}}this.times.adjust+=Date.now()-h},SOM.prototype.train=function(t){if(!this.done)for(this.setTraining(t);this.trainOne(););},SOM.prototype.getConvertedNodes=function(){for(var t=new Array(this.x),r=0;rn&&(o=n,r=this.nodes[e][i]);return r},SOM.prototype.predict=function(t,r){if(\"boolean\"==typeof t&&(r=t,t=null),t||(t=this.trainingSet),Array.isArray(t)&&(Array.isArray(t[0])||\"object\"==typeof t[0])){var n=this;return t.map(function(t){return n._predict(t,r)})}return this._predict(t,r)},SOM.prototype._predict=function(t,r){Array.isArray(t)||(t=this.extractor(t));var n=this._findBestMatchingUnit(t),o=[n.x,n.y];return r&&(o[2]=n.getPosition(t)),o},SOM.prototype.getQuantizationError=function(){for(var t=this.getFit(),r=t.length,n=0,o=0;r>o;o++)n+=t[o];return n/r},SOM.prototype.getFit=function(t){t||(t=this.trainingSet);for(var r,n=t.length,o=new Array(n),e=0;n>e;e++)r=this._findBestMatchingUnit(t[e]),o[e]=Math.sqrt(this.distance(t[e],r.weights));return o},module.exports=SOM},{\"./node-hexagonal\":57,\"./node-square\":58}],57:[function(t,r){function n(t,r,n,e){o.call(this,t,r,n,e),this.hX=t-Math.floor(r/2),this.z=0-this.hX-r}var o=t(\"./node-square\");n.prototype=new o,n.prototype.constructor=n,n.prototype.getDistance=function(t){return Math.max(Math.abs(this.hX-t.hX),Math.abs(this.y-t.y),Math.abs(this.z-t.z))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.hX-t.hX),n=Math.abs(this.y-t.y),o=Math.abs(this.z-t.z);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n),Math.min(o,this.som.gridDim.z-o))},n.prototype.getPosition=function(){throw new Error(\"Unimplemented : cannot get position of the points for hexagonal grid\")},r.exports=n},{\"./node-square\":58}],58:[function(t,r){function n(t,r,n,o){this.x=t,this.y=r,this.weights=n,this.som=o,this.neighbors={}}n.prototype.adjustWeights=function(t,r,n){for(var o=0,e=this.weights.length;e>o;o++)this.weights[o]+=r*n*(t[o]-this.weights[o])},n.prototype.getDistance=function(t){return Math.max(Math.abs(this.x-t.x),Math.abs(this.y-t.y))},n.prototype.getDistanceTorus=function(t){var r=Math.abs(this.x-t.x),n=Math.abs(this.y-t.y);return Math.max(Math.min(r,this.som.gridDim.x-r),Math.min(n,this.som.gridDim.y-n))},n.prototype.getNeighbors=function(t){if(!this.neighbors[t]){this.neighbors[t]=new Array(2);var r;if(this[t]>0?r=this[t]-1:this.som.torus&&(r=this.som.gridDim[t]-1),\"undefined\"!=typeof r){var n,o;\"x\"===t?(n=r,o=this.y):(n=this.x,o=r),this.neighbors[t][0]=this.som.nodes[n][o]}var e;this[t]s?(n=e[0],o=-1):(n=e[1],o=1)}else n=e[0],o=-1;else n=e[1],o=1;var h=1-i(r,this.weights),f=1-i(r,n.weights),u=(h-f)/(2-h-f);return.5+.5*u*o},n.prototype.getPosition=function(t){return[this.getPos(\"x\",t),this.getPos(\"y\",t)]},r.exports=n},{}],59:[function(t,r){\"use strict\";function n(t){for(var r=-1/0,n=t.length,o=0;n>o;o++)t[o]>r&&(r=t[o]);return r}function o(t){for(var r=1/0,n=t.length,o=0;n>o;o++)t[o]e;e++)t[e]n&&(n=t[e]);return{min:r,max:n}}function i(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r/n}function s(t){for(var r=0,n=t.length,o=0;n>o;o++)r*=t[o];return Math.pow(r,1/n)}function a(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=Math.log(t[o]);return r/n}function h(t,r){for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=r[i]*t[i],o+=r[i];return n/o}function f(t,r,n){\"undefined\"==typeof n&&(n=!1),t=n?t:t.slice(),t.sort();for(var o=t.length,e=Math.floor(o*r),i=0,s=e;o-e>s;s++)i+=t[s];return i/(o-2*e)}function u(t,r){\"undefined\"==typeof r&&(r=1);for(var n=0,o=0,e=t.length,i=0;e>i;i++)n+=Math.pow(t[i],r+1),o+=Math.pow(t[i],r);return n/o}function c(t,r){return Math.sqrt(p(t,r))}function l(t){return c(t)/Math.sqrt(t.length)}function d(t,r){\"undefined\"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length,o=Math.floor(n/2);return n%2===0?.5*(t[o-1]+t[o]):t[o]}function m(t,r){\"undefined\"==typeof r&&(r=!1),r||(t=t.slice(),t.sort());var n=t.length/4,o=t[Math.ceil(n)-1],e=d(t,!0),i=t[Math.ceil(3*n)-1];return{q1:o,q2:e,q3:i}}function p(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=i(t),o=0,e=t.length,s=0;e>s;s++){var a=t[s]-n;o+=a*a}return r?o/(e-1):o/e}function v(t,r){return Math.sqrt(w(t,r))}function w(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=0,o=0,e=t.length,i=0;e>i;i++){var s=t[i],a=p(s);n+=(s.length-1)*a,o+=r?s.length-1:s.length}return n/o}function g(t){var r,n=t.length,o=new Array(n);for(r=0;n>r;r++)o[r]=0;var e=new Array(n),i=0;for(r=0;n>r;r++){var s=e.indexOf(t[r]);s>=0?o[s]++:(e[i]=t[r],o[i]=1,i++)}var a=0,h=0;for(r=0;i>r;r++)o[r]>a&&(a=o[r],h=r);return e[h]}function y(t,r,n){\"undefined\"==typeof n&&(n=!0);var o=i(t),e=i(r);if(t.length!==r.length)throw\"Vectors do not have the same dimensions\";for(var s=0,a=t.length,h=0;a>h;h++){var f=t[h]-o,u=r[h]-e;s+=f*u}return n?s/(a-1):s/a}function M(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=i(t),o=0,e=0,s=t.length,a=0;s>a;a++){var h=t[a]-n;o+=h*h,e+=h*h*h}var f=o/s,u=e/s,c=u/Math.pow(f,1.5);if(r){var l=Math.sqrt(s*(s-1)),d=s-2;return l/d*c}return c}function x(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=i(t),o=t.length,e=0,s=0,a=0;o>a;a++){var h=t[a]-n;e+=h*h,s+=h*h*h*h}var f=e/o,u=s/o;if(r){var c=e/(o-1),l=o*(o+1)/((o-1)*(o-2)*(o-3)),d=s/(c*c),m=(o-1)*(o-1)/((o-2)*(o-3));return l*d-3*m}return u/(f*f)-3}function b(t,r){\"undefined\"==typeof r&&(r=0);for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*Math.log(t[e]+r);return-n}function k(t,r){for(var n=0,o=t.length,e=0;o>e;e++)n+=t[e]*r[e];return n}function A(t,r){return Math.sqrt(S(t,r))}function S(t,r){for(var n=k(t,r),o=0,e=t.length,i=0,s=0,a=0;e>a;a++){var h=t[a]-n,f=r[a];o+=f*h*h,s+=f,i+=f*f}return o*(s/(s*s-i))}function q(t,r){\"undefined\"==typeof r&&(r=!1);var n=t;r||(n=t.slice());for(var o=i(n),e=n.length,s=0;e>s;s++)n[s]-=o}function j(t,r,n){\"undefined\"==typeof r&&(r=c(t)),\"undefined\"==typeof n&&(n=!1);for(var o=t.length,e=n?t:new Array(o),i=0;o>i;i++)e[i]=t[i]/r;return e}function R(t){var r=t.length,n=new Array(r);n[0]=t[0];for(var o=1;r>o;o++)n[o]=n[o-1]+t[o];return n}r.exports={min:o,max:n,minMax:e,mean:i,geometricMean:s,logGeometricMean:a,grandMean:h,truncatedMean:f,contraHarmonicMean:u,standardDeviation:c,standardError:l,median:d,quartiles:m,variance:p,pooledStandardDeviation:v,pooledVariance:w,mode:g,covariance:y,skewness:M,kurtosis:x,entropy:b,weightedMean:k,weightedStandardDeviation:A,weightedVariance:S,center:q,standardize:j,cumulativeSum:R}},{}],60:[function(t,r){\"use strict\";function n(t,r){\"undefined\"==typeof r&&(r=0);for(var n=0,o=t.length,e=t[0].length,i=0;o>i;i++)for(var s=0;e>s;s++)n+=t[i][s]*Math.log(t[i][s]+r);return-n}function o(t,r){\"undefined\"==typeof r&&(r=0);var n,o,e,i,s=t.length,a=t[0].length;if(-1===r){for(n=[0],o=s*a,e=0;s>e;e++)for(i=0;a>i;i++)n[0]+=t[e][i];n[0]/=o}else if(0===r)for(n=new Array(a),o=s,i=0;a>i;i++){for(n[i]=0,e=0;s>e;e++)n[i]+=t[e][i];n[i]/=o}else{if(1!==r)throw new Error(\"Invalid dimension\");for(n=new Array(s),o=a,i=0;s>i;i++){for(n[i]=0,e=0;a>e;e++)n[i]+=t[i][e];n[i]/=o}}return n}function e(t,r,n){for(var o=i(t,r,n),e=o.length,s=0;e>s;s++)o[s]=Math.sqrt(o[s]);return o}function i(t,r,n){\"undefined\"==typeof n&&(n=!0),r=r||o(t);var e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++)u=t[c][a]-r[a],h+=u,f+=u*u;s[a]=n?(f-h*h/e)/(e-1):(f-h*h/e)/e}return s}function s(t){for(var r=t.length,n=t[0].length,o=new Array(n),e=0;n>e;e++){for(var i=new Array(r),s=0;r>s;s++)i[s]=t[s][e];i.sort();var a=i.length;o[e]=a%2===0?.5*(i[a/2]+i[a/2-1]):i[Math.floor(a/2)]}return o}function a(t){var r,n,o=t.length,e=t[0].length,i=new Array(e);for(r=0;e>r;r++){for(var s=new Array(o),a=0;o>a;a++)s[a]=0;var h=new Array(o),f=0;for(n=0;o>n;n++){var u=h.indexOf(t[n][r]);u>=0?s[u]++:(h[f]=t[n][r],s[f]=1,f++)}var c=0,l=0;for(n=0;f>n;n++)s[n]>c&&(c=s[n],l=n);i[r]=h[l]}return i}function h(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=n.length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c}var l=h/e,d=f/e,m=d/Math.pow(l,1.5);if(r){var p=Math.sqrt(e*(e-1)),v=e-2;s[a]=p/v*m}else s[a]=m}return s}function f(t,r){\"undefined\"==typeof r&&(r=!0);for(var n=o(t),e=t.length,i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0;e>u;u++){var c=t[u][a]-n[a];h+=c*c,f+=c*c*c*c}var l=h/e,d=f/e;if(r){var m=h/(e-1),p=e*(e+1)/((e-1)*(e-2)*(e-3)),v=f/(m*m),w=(e-1)*(e-1)/((e-2)*(e-3));s[a]=p*v-3*w}else s[a]=d/(l*l)-3}return s}function u(t){for(var r=t.length,n=e(t),o=n.length,i=new Array(o),s=Math.sqrt(r),a=0;o>a;a++)i[a]=n[a]/s;return i}function c(t,r){return l(t,void 0,r)}function l(t,r,n){\"undefined\"==typeof n&&(n=0),\"undefined\"==typeof r&&(0===n?r=t.length-1:1===n&&(r=t[0].length-1));var e=o(t,n),i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===n){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(f=0,u=0;i>u;u++)f+=(t[u][h]-e[h])*(t[u][a]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}else{if(1!==n)throw new Error(\"Invalid dimension\");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(f=0,u=0;c>u;u++)f+=(t[h][u]-e[h])*(t[a][u]-e[a]);f/=r,s[a][h]=f,s[h][a]=f}}return s}function d(t){var r,n,i=o(t),s=e(t,!0,i),a=m(t,i,s),h=t.length,f=t[0].length,u=new Array(f);for(r=0;f>r;r++)u[r]=new Array(f);for(r=0;f>r;r++)for(n=r;f>n;n++){for(var c=0,l=0,d=a.length;d>l;l++)c+=a[l][n]*a[l][r];c/=h-1,u[r][n]=c,u[n][r]=c}return u}function m(t,r,n){return r=r||o(t),\"undefined\"==typeof n&&(n=e(t,!0,r)),v(p(t,r,!1),n,!0)}function p(t,r,n){r=r||o(t);var e,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),e=0;h>e;e++)a[e]=new Array(t[e].length);for(e=0;h>e;e++){var f=a[e];for(i=0,s=f.length;s>i;i++)f[i]=t[e][i]-r[i]}return a}function v(t,r,n){\"undefined\"==typeof r&&(r=e(t));var o,i,s,a=t,h=t.length;if(!n)for(a=new Array(h),o=0;h>o;o++)a[o]=new Array(t[o].length);for(o=0;h>o;o++){var f=a[o],u=t[o];for(i=0,s=f.length;s>i;i++)0===r[i]||isNaN(r[i])||(f[i]=u[i]/r[i])}return a}function w(t,r){var n=o(t),e=t.length;if(0===e)return[];for(var i=t[0].length,s=new Array(i),a=0;i>a;a++){for(var h=0,f=0,u=0,c=0;e>c;c++){var l=t[c][a]-n[a],d=r[c];h+=d*l*l,u+=d,f+=d*d}s[a]=h*(u/(u*u-f))}return s}function g(t,r,n){\"undefined\"==typeof n&&(n=0);var o=t.length;if(0===o)return[];var e,i,s,a,h,f,u=t[0].length;if(0===n){for(e=new Array(u),i=0;u>i;i++)e[i]=0;for(i=0;o>i;i++)for(f=t[i],h=r[i],a=0;u>a;a++)e[a]+=f[a]*h}else{if(1!==n)throw new Error(\"Invalid dimension\");for(e=new Array(o),i=0;o>i;i++)e[i]=0;for(a=0;o>a;a++)for(f=t[a],h=r[a],i=0;u>i;i++)e[a]+=f[i]*h}var c=x(r);if(0!==c)for(i=0,s=e.length;s>i;i++)e[i]/=c;return e}function y(t,r,n,o){o=o||0,n=n||g(t,r,o);for(var e=0,i=0,s=0,a=r.length;a>s;s++)e+=r[s],i+=r[s]*r[s];var h=e/(e*e-i);return M(t,r,n,h,o)}function M(t,r,n,o,e){e=e||0,n=n||g(t,r,e),\"undefined\"==typeof o&&(o=1);var i=t.length;if(0===i)return[[]];var s,a,h,f,u,c=t[0].length;if(0===e){for(s=new Array(c),a=0;c>a;a++)s[a]=new Array(c);for(a=0;c>a;a++)for(h=a;c>h;h++){for(u=0,f=0;i>f;f++)u+=r[f]*(t[f][h]-n[h])*(t[f][a]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}else{if(1!==e)throw new Error(\"Invalid dimension\");for(s=new Array(i),a=0;i>a;a++)s[a]=new Array(i);for(a=0;i>a;a++)for(h=a;i>h;h++){for(u=0,f=0;c>f;f++)u+=r[f]*(t[h][f]-n[h])*(t[a][f]-n[a]);s[a][h]=u*o,s[h][a]=u*o}}return s}function x(t){for(var r=0,n=t.length,o=0;n>o;o++)r+=t[o];return r}r.exports={entropy:n,mean:o,standardDeviation:e,variance:i,median:s,mode:a,skewness:h,kurtosis:f,standardError:u,covariance:c,scatter:l,correlation:d,zScores:m,center:p,standardize:v,weightedVariance:w,weightedMean:g,weightedCovariance:y,weightedScatter:M}},{}]},{},[1])(1)});\n//# sourceMappingURL=ml.min.js.map"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/package.json b/package.json index e810625..4bfad28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ml", - "version": "0.2.3", + "version": "0.3.0", "description": "Machine learning tools", "main": "src/index.js", "scripts": {