package hep.physics.matrix; import java.util.Random; import junit.framework.TestCase; /** * * @author tonyj */ public class SymmetricMatrixTest extends TestCase { private double[] data = { 0, 1, 2, 3, 2, 3, 4, 4, 5, 6 }; public SymmetricMatrixTest(String testName) { super(testName); } /** * Test of getPackedArray method, of class hep.physics.matrix.SymmetricMatrix. */ public void testGetPackedArray() { SymmetricMatrix sm1 = new SymmetricMatrix(4,data,false); double[] d = sm1.asPackedArray(true); SymmetricMatrix sm2 = new SymmetricMatrix(4,d,true); for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { assertEquals(sm1.e(i,j),sm2.e(i,j),1e-16); } } } /** * Test of getNRows method, of class hep.physics.matrix.SymmetricMatrix. */ public void testGetNRows() { SymmetricMatrix sm = new SymmetricMatrix(4,data,false); assertEquals(4,sm.getNRows()); } /** * Test of getNColumns method, of class hep.physics.matrix.SymmetricMatrix. */ public void testGetNColumns() { SymmetricMatrix sm = new SymmetricMatrix(4,data,false); assertEquals(4,sm.getNColumns()); } /** * Test of diagonal method, of class hep.physics.matrix.SymmetricMatrix. */ public void testDiagonal() { SymmetricMatrix sm = new SymmetricMatrix(4,data,false); assertEquals(0 ,sm.diagonal(0),1e-16); assertEquals(2,sm.diagonal(1),1e-16); assertEquals(4,sm.diagonal(2),1e-16); assertEquals(6,sm.diagonal(3),1e-16); } /** * Test of e method, of class hep.physics.matrix.SymmetricMatrix. */ public void testE() { SymmetricMatrix sm = new SymmetricMatrix(4,data,false); for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { assertEquals(i+j,sm.e(i,j),1e-16); } } } public void testInvert() { Random r = new Random(1234567); double[] d = new double[10]; for (int i=0; i<10; i++) d[i] = r.nextDouble(); SymmetricMatrix sm = new SymmetricMatrix(4,d,false); MutableMatrix mm = new BasicMatrix(4,4); MatrixOp.inverse(sm,mm); Matrix m3 = MatrixOp.mult(sm,mm); double det = MatrixOp.det(m3); assertEquals(1, det, 1e-14); } }