package no.uib.cipr.matrix; import no.uib.cipr.matrix.sparse.CompRowMatrix; import org.junit.Test; /** * @author Sam Halliday */ public class PermutationMatrixTest { Matrix m = new DenseMatrix(new double[][]{{2, -1, -2}, {-4, 6, 3}, {-4, -2, 8}}); DenseMatrix e = new DenseMatrix(new double[][]{{-4, 6, 3}, {-4, -2, 8}, {2, -1, -2}}); DenseMatrix eI = new DenseMatrix(new double[][]{{-4, -2, 8}, {2, -1, -2}, {-4, 6, 3}}); int[] piv = new int[]{2, 3, 3}; @Test public void testMultiply() { Matrix p = PermutationMatrix.fromPartialPivots(piv); Matrix c = p .mult(m, new CompRowMatrix(new DenseMatrix(m.numRows(), m .numColumns()))); MatrixTestAbstract.assertMatrixEquals(e, c); } @Test public void testMultiplyTrans() { Matrix p = PermutationMatrix.fromPartialPivots(piv); Matrix c = p .transAmult( m, new CompRowMatrix(new DenseMatrix(m.numRows(), m .numColumns()))); MatrixTestAbstract.assertMatrixEquals(eI, c); } @Test public void testMultiplyDense() { Matrix p = PermutationMatrix.fromPartialPivots(piv); Matrix c = p.mult(m, new DenseMatrix(m.numRows(), m.numColumns())); MatrixTestAbstract.assertMatrixEquals(e, c); } @Test public void testMultiplyTransDense() { Matrix p = PermutationMatrix.fromPartialPivots(piv); Matrix c = p .transAmult(m, new DenseMatrix(m.numRows(), m.numColumns())); MatrixTestAbstract.assertMatrixEquals(eI, c); } @Test public void testMultiplyCompRow() { Matrix p = PermutationMatrix.fromPartialPivots(piv); Matrix c = p.mult(new CompRowMatrix(m), new CompRowMatrix( new DenseMatrix(m.numRows(), m.numColumns()))); MatrixTestAbstract.assertMatrixEquals(e, c); } @Test public void testMultiplyTransCompRow() { Matrix p = PermutationMatrix.fromPartialPivots(piv); Matrix c = p.transAmult(new CompRowMatrix(m), new CompRowMatrix( new DenseMatrix(m.numRows(), m.numColumns()))); MatrixTestAbstract.assertMatrixEquals(eI, c); } }