package org.la4j.operation; import org.la4j.matrix.DenseMatrix; import org.la4j.matrix.ColumnMajorSparseMatrix; import org.la4j.matrix.RowMajorSparseMatrix; import org.la4j.matrix.SparseMatrix; public abstract class SymmetricMatrixMatrixOperation<R> extends MatrixMatrixOperation<R> { @Override public R apply(DenseMatrix a, RowMajorSparseMatrix b) { return applySymmetric(a, b); } @Override public R apply(DenseMatrix a, ColumnMajorSparseMatrix b) { return applySymmetric(a, b); } @Override public R apply(RowMajorSparseMatrix a, DenseMatrix b) { return applySymmetric(b, a); } @Override public R apply(RowMajorSparseMatrix a, ColumnMajorSparseMatrix b) { return applySymmetric(a, b); } @Override public R apply(ColumnMajorSparseMatrix a, DenseMatrix b) { return applySymmetric(b, a); } @Override public R apply(RowMajorSparseMatrix a, RowMajorSparseMatrix b) { return applySymmetric(a, b); } @Override public R apply(ColumnMajorSparseMatrix a, ColumnMajorSparseMatrix b) { return applySymmetric(a, b); } @Override public R apply(ColumnMajorSparseMatrix a, RowMajorSparseMatrix b) { return applySymmetric(b, a); } public abstract R applySymmetric(final DenseMatrix a, final SparseMatrix b); public abstract R applySymmetric(final SparseMatrix a, final SparseMatrix b); public abstract R applySymmetric(final RowMajorSparseMatrix a, final ColumnMajorSparseMatrix b); }