{"_id":"matrixhub","_rev":"2-d480e4689e22383d22c6668d200b4904","name":"matrixhub","dist-tags":{"latest":"6.15.1"},"versions":{"6.15.0":{"name":"matrixhub","version":"6.15.0","keywords":["matrix","decomposition","SVD","singular","value","EVD","eigenvalue","LU","Qr","Cholesky","data","mining","datamining","machine","learning"],"author":{"name":"hunterhicks18","email":"hunterhicks18@proton.me"},"license":"MIT","_id":"matrixhub@6.15.0","maintainers":[{"name":"hunterhicks18","email":"hunterhicks18@proton.me"}],"homepage":"https://github.com/MatrixHub-Org/matrix-sdk","bugs":{"url":"https://github.com/MatrixHub-Org/matrix-sdk/issues"},"dist":{"shasum":"2458c3a4798d180f539f68c612b36370782cb82a","tarball":"https://registry.npmjs.org/matrixhub/-/matrixhub-6.15.0.tgz","fileCount":44,"integrity":"sha512-0rapG3XppCEpdcFFOnVHfwFdy/0GuXzOK7+8oeH8aIq6VoJuTcRaaJgW8KObKlGkigFReY05hS4JWJnbRP9w4w==","signatures":[{"sig":"MEYCIQDJNu9sHlOjxtDQ2wfgTER2TpBjmprXNY+GxJXGflZwEAIhAL6n6shae1MtHJGshV7FusCbi5GJRot2shMhfjgbQPD+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1136693},"main":"matrix.js","types":"matrix.d.ts","unpkg":"matrix.umd.js","module":"src/index.js","exports":{".":{"types":"./matrix.d.ts","default":"./matrix.mjs","require":"./matrix.js"}},"scripts":{"test":"npm run test-only && npm run eslint && npm run prettier","eslint":"eslint src testUtils.js","compile":"rollup -c","prettier":"prettier --check src","test-only":"vitest run --coverage","eslint-fix":"npm run eslint -- --fix","prettier-write":"prettier --write src","build-esm-facade":"node tools/build-esm-facade.mjs"},"_npmUser":{"name":"hunterhicks18","email":"hunterhicks18@proton.me"},"jsdelivr":"matrix.umd.js","repository":{"url":"git+https://github.com/MatrixHub-Org/matrix-sdk.git","type":"git"},"_npmVersion":"11.10.1","description":"Matrix manipulation and computation library","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.29.0","mathjs":"^14.5.2","rollup":"^4.44.0","vitest":"^3.2.4","numeric":"^1.2.6","ml-xsadd":"^3.0.1","prettier":"^3.5.3","benchmark":"^2.1.4","csv-parse":"^5.6.0","pretty-hrtime":"^1.0.3","ml-dataset-iris":"^1.2.1","ml-sparse-matrix":"^3.1.0","@vitest/coverage-v8":"^3.2.4","@rollup/plugin-terser":"^0.4.4","eslint-config-cheminfo":"^14.1.1","@rollup/plugin-commonjs":"^28.0.6","jest-matcher-deep-close-to":"^3.0.2","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-modules-commonjs":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/matrixhub_6.15.0_1787659194869_0.09778208789919707","host":"s3://npm-registry-packages-npm-production"}},"6.15.1":{"name":"matrixhub","version":"6.15.1","description":"Matrix manipulation and computation library","main":"matrix.js","module":"src/index.js","jsdelivr":"matrix.umd.js","unpkg":"matrix.umd.js","types":"matrix.d.ts","exports":{".":{"types":"./matrix.d.ts","require":"./matrix.js","default":"./matrix.mjs"}},"sideEffects":false,"scripts":{"build-esm-facade":"node tools/build-esm-facade.mjs","compile":"rollup -c","eslint":"eslint src testUtils.js","eslint-fix":"npm run eslint -- --fix","prettier":"prettier --check src","prettier-write":"prettier --write src","test":"npm run test-only && npm run eslint && npm run prettier","test-only":"vitest run --coverage"},"repository":{"type":"git","url":"git+https://github.com/MatrixHub-Org/matrix-sdk.git"},"keywords":["matrix","decomposition","SVD","singular","value","EVD","eigenvalue","LU","Qr","Cholesky","data","mining","datamining","machine","learning"],"author":{"name":"hunterhicks18","email":"hunterhicks18@proton.me"},"license":"MIT","bugs":{"url":"https://github.com/MatrixHub-Org/matrix-sdk/issues"},"homepage":"https://github.com/MatrixHub-Org/matrix-sdk","devDependencies":{"@babel/plugin-transform-modules-commonjs":"^7.27.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-terser":"^0.4.4","@vitest/coverage-v8":"^3.2.4","benchmark":"^2.1.4","csv-parse":"^5.6.0","eslint":"^9.29.0","eslint-config-cheminfo":"^14.1.1","jest-matcher-deep-close-to":"^3.0.2","mathjs":"^14.5.2","ml-dataset-iris":"^1.2.1","ml-sparse-matrix":"^3.1.0","ml-xsadd":"^3.0.1","numeric":"^1.2.6","prettier":"^3.5.3","pretty-hrtime":"^1.0.3","rollup":"^4.44.0","vitest":"^3.2.4"},"dependencies":{},"_id":"matrixhub@6.15.1","_nodeVersion":"24.15.0","_npmVersion":"11.10.1","dist":{"integrity":"sha512-OcYxy8RLNsy865kpHlAa6tyshqe1TDI49B4lZEusR36cLGcBK+0vSvY2J6l08s0oGLzW28xUVXjvHf9T17N9+g==","shasum":"6a90c1c30bc847e97ba588c452ca2ca8e6925873","tarball":"https://registry.npmjs.org/matrixhub/-/matrixhub-6.15.1.tgz","fileCount":44,"unpackedSize":1136712,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC0+CgXSNhurTJvUUpsyq1Fga448NPjX6916tkdVngUZwIhAJvSHIG1TYXlFoZ90iU4fDpBTHQyxROEEYXlpb0+gL7M"}]},"_npmUser":{"name":"hunterhicks18","email":"hunterhicks18@proton.me"},"directories":{},"maintainers":[{"name":"hunterhicks18","email":"hunterhicks18@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/matrixhub_6.15.1_1787662654453_0.9585641962803437"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T11:59:54.699Z","modified":"2026-08-25T12:57:34.819Z","6.15.0":"2026-08-25T11:59:55.034Z","6.15.1":"2026-08-25T12:57:34.607Z"},"bugs":{"url":"https://github.com/MatrixHub-Org/matrix-sdk/issues"},"author":{"name":"hunterhicks18","email":"hunterhicks18@proton.me"},"license":"MIT","homepage":"https://github.com/MatrixHub-Org/matrix-sdk","keywords":["matrix","decomposition","SVD","singular","value","EVD","eigenvalue","LU","Qr","Cholesky","data","mining","datamining","machine","learning"],"repository":{"type":"git","url":"git+https://github.com/MatrixHub-Org/matrix-sdk.git"},"description":"Matrix manipulation and computation library","maintainers":[{"name":"hunterhicks18","email":"hunterhicks18@proton.me"}],"readme":"# MatrixHub\r\n\r\nZero-dependency matrix library for JavaScript. Create, transform, and decompose dense matrices in Node.js and the browser.\r\n\r\n[![npm](https://img.shields.io/npm/v/matrixhub.svg?style=flat)](https://www.npmjs.com/package/matrixhub)\r\n[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install matrixhub\r\n```\r\n\r\n## Quick start\r\n\r\nESM:\r\n\r\n```js\r\nimport { Matrix } from 'matrixhub';\r\n\r\nconst matrix = Matrix.ones(5, 5);\r\n```\r\n\r\nCommonJS:\r\n\r\n```js\r\nconst { Matrix } = require('matrixhub');\r\n\r\nconst matrix = Matrix.ones(5, 5);\r\n```\r\n\r\n## Features\r\n\r\n- Dense matrices, symmetric matrices, and distance matrices\r\n- Element-wise math and in-place updates\r\n- Matrix multiplication, including Strassen\r\n- Statistics: mean, variance, covariance, correlation\r\n- Decompositions: SVD, EVD, LU, QR, Cholesky, NIPALS\r\n- Linear solve, inverse, pseudo-inverse, determinant\r\n- Zero production dependencies\r\n\r\n## Examples\r\n\r\n### Arithmetic\r\n\r\n```js\r\nconst { Matrix } = require('matrixhub');\r\n\r\nconst A = new Matrix([\r\n  [1, 1],\r\n  [2, 2],\r\n]);\r\n\r\nconst B = new Matrix([\r\n  [3, 3],\r\n  [1, 1],\r\n]);\r\n\r\nMatrix.add(A, B); // [[4, 4], [3, 3]]\r\nMatrix.sub(A, B); // [[-2, -2], [1, 1]]\r\nA.mmul(B);        // [[4, 4], [8, 8]]\r\nMatrix.mul(A, 10); // [[10, 10], [20, 20]]\r\nMatrix.div(A, 10); // [[0.1, 0.1], [0.2, 0.2]]\r\n```\r\n\r\nIn place:\r\n\r\n```js\r\nconst C = new Matrix([\r\n  [3, 3],\r\n  [1, 1],\r\n]);\r\n\r\nC.add(A);\r\nC.sub(A);\r\nC.mul(10);\r\nC.div(10);\r\n```\r\n\r\n### Math helpers\r\n\r\n```js\r\nconst A = new Matrix([\r\n  [1, 1],\r\n  [-1, -1],\r\n]);\r\n\r\nMatrix.exp(A);\r\nMatrix.cos(A);\r\nMatrix.abs(A); // or A.abs()\r\n```\r\n\r\n`abs`, `acos`, `acosh`, `asin`, `asinh`, `atan`, `atanh`, `cbrt`, `ceil`, `clz32`, `cos`, `cosh`, `exp`, `expm1`, `floor`, `fround`, `log`, `log1p`, `log10`, `log2`, `round`, `sign`, `sin`, `sinh`, `sqrt`, `tan`, `tanh`, `trunc`\r\n\r\n### Shape and values\r\n\r\n```js\r\nA.rows;\r\nA.columns;\r\nA.size;\r\nA.get(0, 0);\r\nA.set(1, 0, 10);\r\nA.isSquare();\r\nA.diag();\r\nA.mean();\r\nA.norm();\r\nA.transpose();\r\n```\r\n\r\n### Reduce along an axis\r\n\r\n```js\r\nconst M = new Matrix([\r\n  [1, 2, 3],\r\n  [4, 5, 6],\r\n]);\r\n\r\nconst sumOf = (vector) => vector.reduce((total, value) => total + value, 0);\r\n\r\nM.applyAlongAxis(sumOf, 'row');    // [6, 15]\r\nM.applyAlongAxis(sumOf, 'column'); // [5, 7, 9]\r\n```\r\n\r\n### Constructors\r\n\r\n```js\r\nMatrix.zeros(3, 2);\r\nMatrix.ones(2, 3);\r\nMatrix.eye(3, 4);\r\n```\r\n\r\n### Concat\r\n\r\n```js\r\nconst M = new Matrix([\r\n  [1, 2],\r\n  [3, 4],\r\n]);\r\n\r\nM.concat([[5, 6]]);\r\nM.concat(Matrix.columnVector([5, 6]), 'column');\r\n```\r\n\r\n### Inverse and solve\r\n\r\n```js\r\nconst {\r\n  Matrix,\r\n  inverse,\r\n  solve,\r\n  linearDependencies,\r\n  QrDecomposition,\r\n  LuDecomposition,\r\n  CholeskyDecomposition,\r\n  EigenvalueDecomposition,\r\n} = require('matrixhub');\r\n\r\nconst A = new Matrix([\r\n  [2, 3, 5],\r\n  [4, 1, 6],\r\n  [1, 3, 0],\r\n]);\r\n\r\nconst inverseA = inverse(A);\r\nA.mmul(inverseA); // identity (within rounding)\r\n\r\nconst x = solve(A, Matrix.columnVector([1, 2, 3]));\r\n```\r\n\r\nSingular or least-squares cases can use SVD:\r\n\r\n```js\r\ninverse(A, true);\r\nsolve(A, B, true);\r\nA.pseudoInverse();\r\n```\r\n\r\n### Decompositions\r\n\r\n```js\r\nconst QR = new QrDecomposition(A);\r\nQR.orthogonalMatrix;\r\nQR.upperTriangularMatrix;\r\n\r\nconst LU = new LuDecomposition(A);\r\nLU.lowerTriangularMatrix;\r\nLU.upperTriangularMatrix;\r\nLU.pivotPermutationVector;\r\n\r\nconst cholesky = new CholeskyDecomposition(A);\r\ncholesky.lowerTriangularMatrix;\r\n\r\nconst e = new EigenvalueDecomposition(A);\r\ne.realEigenvalues;\r\ne.imaginaryEigenvalues;\r\ne.eigenvectorMatrix;\r\n```\r\n\r\n## License\r\n\r\n[MIT](./LICENSE)\r\n","readmeFilename":"README.md"}