package mikera.matrixx.decompose.impl.lu; import mikera.matrixx.AMatrix; import mikera.matrixx.decompose.ILUPResult; import mikera.matrixx.impl.PermutationMatrix; public class LUPResult implements ILUPResult { final AMatrix l; final AMatrix u; final PermutationMatrix p; public LUPResult(AMatrix l, AMatrix u, PermutationMatrix p) { this.l=l; this.u=u; this.p=p; } public LUPResult(AMatrix l, AMatrix u) { this (l,u,PermutationMatrix.createIdentity(l.rowCount())); } @Override public AMatrix getL() { return l; } @Override public AMatrix getU() { return u; } @Override public PermutationMatrix getP() { return p; } @Override public double computeDeterminant() { if (l.rowCount()!= u.columnCount()) { throw new IllegalArgumentException("Input must be a square matrix"); } return u.diagonalProduct()*p.determinant(); } }