const mult=(a, b)=>{ let res = new Array(a.length); for (let r = 0; r < a.length; ++r) { res[r] = new Array(b[0].length); for (let c = 0; c < b[0].length; ++c) { res[r][c] = 0; for (let i = 0; i < a[0].length; ++i) res[r][c] += a[r][i] * b[i][c]; } } return res; } const lu = (mat) => { let lower = [],upper = [],n=mat.length;; for(let i=0;i{ let n = m.length; let id = []; for(let i=0;i maxm) { maxm = m[j][i]; row = j; } if (i != row) { let tmp = id[i]; id[i] = id[row]; id[row] = tmp; } } return id; } const luDecomposition=(A)=>{ const P = pivot(A); A = mult(P,A); return [...lu(A),P]; }