public double det() { if (!isNonsingular()) return 0; // avoid rounding errors int pivsign = 1; for (int i = 0; i < n; i++) { if (N.Pinv[i] != i) { pivsign = -pivsign; } } if (U == null) { U = getU(); } double det = pivsign; for (int j = 0; j < n; j++) { det *= U.getQuick(j, j); } return det; }
public void solve(DoubleMatrix1D b) { if (b.size() != n) { throw new IllegalArgumentException("b.size() != A.rows()"); } if (!isNonsingular()) { throw new IllegalArgumentException("A is singular"); } DoubleProperty.DEFAULT.checkDense(b); double[] x; if (b.isView()) { x = (double[]) b.copy().elements(); } else { x = (double[]) b.elements(); } klu_solve(S, N, n, 1, x, 0, Common); if (b.isView()) { b.assign(x); } } }
public void solve(DoubleMatrix1D b) { if (b.size() != n) { throw new IllegalArgumentException("b.size() != A.rows()"); } if (!isNonsingular()) { throw new IllegalArgumentException("A is singular"); } DoubleProperty.DEFAULT.checkDense(b); double[] x; if (b.isView()) { x = (double[]) b.copy().elements(); } else { x = (double[]) b.elements(); } klu_solve(S, N, n, 1, x, 0, Common); if (b.isView()) { b.assign(x); } } }
public double det() { if (!isNonsingular()) return 0; // avoid rounding errors int pivsign = 1; for (int i = 0; i < n; i++) { if (N.Pinv[i] != i) { pivsign = -pivsign; } } if (U == null) { U = getU(); } double det = pivsign; for (int j = 0; j < n; j++) { det *= U.getQuick(j, j); } return det; }