package mikera.matrixx.algo; import static org.junit.Assert.*; import mikera.matrixx.Matrix; import mikera.matrixx.Matrixx; import mikera.matrixx.algo.Multiplications; import org.junit.Test; public class TestDenseMultiply { @Test public void testBigMul() { Matrix m=(Matrix)Matrixx.createRandomMatrix(50, 50); Matrix ip=m.innerProduct(m); assertEquals(ip,Multiplications.multiply(m, m)); assertEquals(ip,Multiplications.blockedMultiply(m, m)); assertEquals(ip,Multiplications.doubleBlockedMultiply(m, m)); assertEquals(ip,Multiplications.naiveMultiply(m, m)); } @Test public void testSmallMul() { Matrix m=(Matrix)Matrixx.createRandomMatrix(5, 5); Matrix ip=m.innerProduct(m); assertEquals(ip,Multiplications.multiply(m, m)); assertEquals(ip,Multiplications.blockedMultiply(m, m)); assertEquals(ip,Multiplications.naiveMultiply(m, m)); } @Test public void testRectangularMul() { Matrix m=(Matrix)Matrixx.createRandomMatrix(4, 7); Matrix mt=m.toMatrixTranspose(); Matrix ip=m.innerProduct(mt); assertEquals(ip,Multiplications.multiply(m, mt)); assertEquals(ip,Multiplications.blockedMultiply(m, mt)); assertEquals(ip,Multiplications.naiveMultiply(m, mt)); assertEquals(ip,Multiplications.directMultiply(m, mt)); } @Test public void testTransposeMul() { Matrix m=(Matrix)Matrixx.createRandomMatrix(6, 3); Matrix mt=m.toMatrixTranspose(); Matrix ip=m.transposeInnerProduct(m); assertEquals(ip,Multiplications.multiply(mt, m)); assertEquals(ip,Multiplications.blockedMultiply(mt, m)); assertEquals(ip,Multiplications.naiveMultiply(mt, m)); } }