@Override public double getInnerProduct(Matrix m1, Matrix m2) { ArgChecker.notNull(m1, "m1"); ArgChecker.notNull(m2, "m2"); if (m1 instanceof DoubleArray && m2 instanceof DoubleArray) { RealVector t1 = CommonsMathWrapper.wrap((DoubleArray) m1); RealVector t2 = CommonsMathWrapper.wrap((DoubleArray) m2); return t1.dotProduct(t2); } throw new IllegalArgumentException("Can only find inner product of DoubleArray; have " + m1.getClass() + " and " + m2.getClass()); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNull1DMatrix() { CommonsMathWrapper.wrap((DoubleArray) null); }
@Override public double getCondition(Matrix m) { ArgChecker.notNull(m, "m"); if (m instanceof DoubleMatrix) { RealMatrix temp = CommonsMathWrapper.wrap((DoubleMatrix) m); SingularValueDecomposition svd = new SingularValueDecomposition(temp); return svd.getConditionNumber(); } throw new IllegalArgumentException("Can only find condition number of DoubleMatrix; have " + m.getClass()); }
@Override public double getNorm2(Matrix m) { ArgChecker.notNull(m, "m"); if (m instanceof DoubleArray) { RealVector temp = CommonsMathWrapper.wrap((DoubleArray) m); return temp.getNorm(); } else if (m instanceof DoubleMatrix) { RealMatrix temp = CommonsMathWrapper.wrap((DoubleMatrix) m); SingularValueDecomposition svd = new SingularValueDecomposition(temp); return svd.getNorm(); } throw new IllegalArgumentException("Can only find norm2 of DoubleMatrix; have " + m.getClass()); }
@Override public DoubleMatrix getTranspose(Matrix m) { ArgChecker.notNull(m, "m"); if (m instanceof DoubleMatrix) { RealMatrix temp = CommonsMathWrapper.wrap((DoubleMatrix) m); return CommonsMathWrapper.unwrap(temp.transpose()); } throw new IllegalArgumentException("Can only find transpose of DoubleMatrix; have " + m.getClass()); }
@Override public DoubleMatrix getPower(Matrix m, int p) { ArgChecker.notNull(m, "m"); RealMatrix temp; if (m instanceof DoubleMatrix) { temp = CommonsMathWrapper.wrap((DoubleMatrix) m); } else { throw new IllegalArgumentException("Can only find powers of DoubleMatrix; have " + m.getClass()); } return CommonsMathWrapper.unwrap(temp.power(p)); }
@Override public double getDeterminant(Matrix m) { ArgChecker.notNull(m, "m"); if (m instanceof DoubleMatrix) { RealMatrix temp = CommonsMathWrapper.wrap((DoubleMatrix) m); LUDecomposition lud = new LUDecomposition(temp); return lud.getDeterminant(); } throw new IllegalArgumentException("Can only find determinant of DoubleMatrix; have " + m.getClass()); }
/** * {@inheritDoc} */ @Override public DoubleArray solve(DoubleArray b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
@Override public QRDecompositionResult apply(DoubleMatrix x) { ArgChecker.notNull(x, "x"); RealMatrix temp = CommonsMathWrapper.wrap(x); QRDecomposition qr = new QRDecomposition(temp); return new QRDecompositionCommonsResult(qr); }
/** * {@inheritDoc} */ @Override public DoubleMatrix solve(DoubleMatrix b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
/** * {@inheritDoc} */ @Override public DoubleArray solve(DoubleArray b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
/** * {@inheritDoc} */ @Override public DoubleArray solve(DoubleArray b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
@Override public LUDecompositionResult apply(DoubleMatrix x) { ArgChecker.notNull(x, "x"); RealMatrix temp = CommonsMathWrapper.wrap(x); LUDecomposition lu = new LUDecomposition(temp); return new LUDecompositionCommonsResult(lu); }
/** * {@inheritDoc} */ @Override public DoubleMatrix solve(DoubleMatrix b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); } }
/** * {@inheritDoc} */ @Override public DoubleMatrix solve(DoubleMatrix b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
/** * {@inheritDoc} */ @Override public DoubleArray solve(DoubleArray b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
/** * {@inheritDoc} */ @Override public DoubleMatrix solve(DoubleMatrix b) { ArgChecker.notNull(b, "b"); return CommonsMathWrapper.unwrap(_solver.solve(CommonsMathWrapper.wrap(b))); }
@Override public SVDecompositionResult apply(DoubleMatrix x) { ArgChecker.notNull(x, "x"); MatrixValidate.notNaNOrInfinite(x); RealMatrix commonsMatrix = CommonsMathWrapper.wrap(x); SingularValueDecomposition svd = new SingularValueDecomposition(commonsMatrix); return new SVDecompositionCommonsResult(svd); }
@Test public void testVector() { RealVector commons = CommonsMathWrapper.wrap(OG_VECTOR); assertEquals(CommonsMathWrapper.unwrap(commons), OG_VECTOR); }
@Test public void testMatrix() { RealMatrix commons = CommonsMathWrapper.wrap(OG_MATRIX); double[][] unwrapped = CommonsMathWrapper.unwrap(commons).toArray(); double[][] ogData = OG_MATRIX.toArray(); int n = unwrapped.length; assertEquals(n, ogData.length); for (int i = 0; i < n; i++) { assertArrayEquals(unwrapped[i], ogData[i], 1e-15); } }