package hep.physics.matrix; import java.util.Random; import junit.framework.TestCase; /** * * @author tonyj */ public class MatrixOpTest extends TestCase { private Random r = new Random(123456); public MatrixOpTest(String testName) { super(testName); } /** * Test of transposed method, of class MatrixOp. */ public void testTransposed() { MutableMatrix min = new BasicMatrix(6, 2); fillRandom(min); MutableMatrix mout = new BasicMatrix(2, 6); MatrixOp.transposed(min, mout); testTransposed(min, mout); } public void testTransposed2() { MutableMatrix min = new BasicMatrix(6, 2); Matrix mout = MatrixOp.transposed(min); testTransposed(min, mout); } public void testSquareTranspose() { MutableMatrix min = new BasicMatrix(3, 3); fillRandom(min); MutableMatrix mout = new BasicMatrix(min); MatrixOp.transposed(mout, mout); testTransposed(min, mout); } public void testInverse() { MutableMatrix min = new BasicMatrix(5, 5); fillRandom(min); Matrix mout = MatrixOp.inverse(min); double detIn = MatrixOp.det(min); double detOut = MatrixOp.det(mout); assertEquals(1.0, detIn * detOut, 1e-8); Matrix mult = MatrixOp.mult(min, mout); double det = MatrixOp.det(mult); assertEquals(1.0, det, 1e-8); } public void testInverse2() { MutableMatrix min = new BasicMatrix(5, 5); fillRandom(min); MutableMatrix mout = new BasicMatrix(min); MatrixOp.inverse(mout, mout); double detIn = MatrixOp.det(min); double detOut = MatrixOp.det(mout); assertEquals(1.0, detIn * detOut, 1e-8); Matrix mult = MatrixOp.mult(min, mout); double det = MatrixOp.det(mult); assertEquals(1.0, det, 1e-8); } private void fillRandom(MutableMatrix min) { for (int i = 0; i < min.getNRows(); i++) { for (int j = 0; j < min.getNColumns(); j++) { min.setElement(i, j, r.nextDouble()); } } } private void testTransposed(Matrix min, Matrix mout) { for (int i = 0; i < min.getNRows(); i++) { for (int j = 0; j < min.getNColumns(); j++) { assertEquals(min.e(i, j), mout.e(j, i)); } } } }