public Diag(Matrix m) { super(m); VerifyUtil.verify2D(m); VerifyUtil.verifyTrue(m.getColumnCount() == 1, "must be a vector"); }
public static final void verifySquare(Matrix matrix) { verify2D(matrix); verifyTrue(matrix.getRowCount() == matrix.getColumnCount(), "matrix must be square"); }
public static final void verifySingleValue(Matrix matrix) { verify2D(matrix); verifyTrue(matrix.getRowCount() == 1, "matrix must be 1x1"); verifyTrue(matrix.getColumnCount() == 1, "matrix must be 1x1"); }
public final void calc(final SparseMatrix source, final SparseMatrix target) { VerifyUtil.verify2D(source); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source.getRowCount(), target.getColumnCount(), "matrices have wrong size"); VerifyUtil.verifyEquals(source.getColumnCount(), target.getRowCount(), "matrices have wrong size"); for (long[] c : source.availableCoordinates()) { Object o = source.getAsObject(c); target.setAsObject(o, Coordinates.transpose(c)); } } };
public final void calc(final DenseMatrix source, final DenseMatrix target) { if (source instanceof DenseMatrix2D && target instanceof DenseMatrix2D) { Transpose.DENSEMATRIX2D.calc((DenseMatrix2D) source, (DenseMatrix2D) target); } else { VerifyUtil.verify2D(source); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source.getRowCount(), target.getColumnCount(), "matrices have wrong size"); VerifyUtil.verifyEquals(source.getColumnCount(), target.getRowCount(), "matrices have wrong size"); for (long[] c : source.allCoordinates()) { Object o = source.getAsObject(c); target.setAsObject(o, Coordinates.transpose(c)); } } } };
public final void calc(final DenseMatrix2D source, final DenseMatrix2D target) { if (source instanceof DenseDoubleMatrix2D && target instanceof DenseDoubleMatrix2D) { Transpose.DENSEDOUBLEMATRIX2D.calc((DenseDoubleMatrix2D) source, (DenseDoubleMatrix2D) target); } else { VerifyUtil.verify2D(source); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source.getRowCount(), target.getColumnCount(), "matrices have wrong size"); VerifyUtil.verifyEquals(source.getColumnCount(), target.getRowCount(), "matrices have wrong size"); for (int r = (int) source.getRowCount(); --r != -1;) { for (int c = (int) source.getColumnCount(); --c != -1;) { Object o = source.getAsObject(r, c); target.setAsObject(o, c, r); } } } } };
public final void calc(final Matrix source1, final SparseMatrix source2, final Matrix target) { VerifyUtil.verify2D(source1); VerifyUtil.verify2D(source2); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source1.getColumnCount(), source2.getRowCount(), "matrices have wrong sizes"); VerifyUtil.verifyEquals(target.getRowCount(), source1.getRowCount(), "matrices have wrong sizes"); VerifyUtil.verifyEquals(target.getColumnCount(), source2.getColumnCount(), "matrices have wrong sizes"); target.clear(); for (long[] c2 : source2.availableCoordinates()) { final double v2 = source2.getAsDouble(c2); if (v2 != 0.0d) { for (long row1 = source1.getRowCount(); --row1 != -1;) { final double v1 = source1.getAsDouble(row1, c2[0]); final double temp = v1 * v2; if (temp != 0.0d) { final double v3 = target.getAsDouble(row1, c2[1]); target.setAsDouble(v3 + temp, row1, c2[1]); } } } } } };
public final void calc(final SparseMatrix source1, final Matrix source2, final Matrix target) { VerifyUtil.verify2D(source1); VerifyUtil.verify2D(source2); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source1.getColumnCount(), source2.getRowCount(), "matrices have wrong sizes"); VerifyUtil.verifyEquals(target.getRowCount(), source1.getRowCount(), "matrices have wrong sizes"); VerifyUtil.verifyEquals(target.getColumnCount(), source2.getColumnCount(), "matrices have wrong sizes"); target.clear(); for (long[] c1 : source1.availableCoordinates()) { final double v1 = source1.getAsDouble(c1); if (v1 != 0.0d) { for (long col2 = source2.getColumnCount(); --col2 != -1;) { final double v2 = source2.getAsDouble(c1[1], col2); final double temp = v1 * v2; if (temp != 0.0d) { final double v3 = target.getAsDouble(c1[0], col2); target.setAsDouble(v3 + temp, c1[0], col2); } } } } } };
public final void calc(final SparseMatrix source1, final SparseMatrix source2, final Matrix target) { VerifyUtil.verify2D(source1); VerifyUtil.verify2D(source2); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source1.getColumnCount(), source2.getRowCount(), "matrices have wrong sizes"); VerifyUtil.verifyEquals(target.getRowCount(), source1.getRowCount(), "matrices have wrong sizes"); VerifyUtil.verifyEquals(target.getColumnCount(), source2.getColumnCount(), "matrices have wrong sizes"); target.clear(); for (long[] c1 : source1.availableCoordinates()) { final double v1 = source1.getAsDouble(c1); if (v1 != 0.0) { for (long[] c2 : source2.availableCoordinates()) { if (c2[0] == c1[1]) { final double v2 = source2.getAsDouble(c2); if (v1 != 0.0) { final double temp = v1 * v2; final double v3 = target.getAsDouble(c1[0], c2[1]); target.setAsDouble(v3 + temp, c1[0], c2[1]); } } } } } } };
public final void calc(final Matrix source, final Matrix target) { if (source == target) { throw new RuntimeException("cannot transpose into original matrix"); } if (source.isSparse() && source instanceof SparseMatrix && target.isSparse() && target instanceof SparseMatrix) { Transpose.SPARSEMATRIX.calc((SparseMatrix) source, (SparseMatrix) target); } else if (source instanceof DenseDoubleMatrix2D && target instanceof DenseDoubleMatrix2D) { Transpose.DENSEDOUBLEMATRIX2D.calc((DenseDoubleMatrix2D) source, (DenseDoubleMatrix2D) target); } else if (source instanceof DenseMatrix2D && target instanceof DenseMatrix2D) { Transpose.DENSEMATRIX2D.calc((DenseMatrix2D) source, (DenseMatrix2D) target); } else if (source instanceof DenseMatrix && target instanceof DenseMatrix) { Transpose.DENSEMATRIX.calc((DenseMatrix) source, (DenseMatrix) target); } else { VerifyUtil.verify2D(source); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source.getRowCount(), target.getColumnCount(), "matrices have wrong size"); VerifyUtil.verifyEquals(source.getColumnCount(), target.getRowCount(), "matrices have wrong size"); for (long[] c : source.allCoordinates()) { Object o = source.getAsObject(c); target.setAsObject(o, Coordinates.transpose(c)); } } } };
public final void calc(final DenseDoubleMatrix2D source, final DenseDoubleMatrix2D target) { if (source instanceof HasColumnMajorDoubleArray1D && target instanceof HasColumnMajorDoubleArray1D) { calc((int) source.getRowCount(), (int) source.getColumnCount(), ((HasColumnMajorDoubleArray1D) source).getColumnMajorDoubleArray1D(), ((HasColumnMajorDoubleArray1D) target).getColumnMajorDoubleArray1D()); } else if (source instanceof HasRowMajorDoubleArray2D && target instanceof HasRowMajorDoubleArray2D) { calc(((HasRowMajorDoubleArray2D) source).getRowMajorDoubleArray2D(), ((HasRowMajorDoubleArray2D) target).getRowMajorDoubleArray2D()); } else { VerifyUtil.verify2D(source); VerifyUtil.verify2D(target); VerifyUtil.verifyEquals(source.getRowCount(), target.getColumnCount(), "matrices have wrong size"); VerifyUtil.verifyEquals(source.getColumnCount(), target.getRowCount(), "matrices have wrong size"); for (int r = (int) source.getRowCount(); --r != -1;) { for (int c = (int) source.getColumnCount(); --c != -1;) { target.setDouble(source.getDouble(r, c), c, r); } } } }