assertEquals(90, M.innerProduct(N).elementSum(), 0.01);
}
@Test public void testConversionAndEquals() {
int SSIZE = 100, DSIZE = 20;
SparseColumnMatrix M=SparseColumnMatrix.create(SSIZE,SSIZE);
for (int i=0; i<SSIZE; i++) {
double[] data=new double[DSIZE];
for (int j=0; j<DSIZE; j++) {
data[j]=Rand.nextDouble();
}
Index indy=Indexz.createRandomChoice(DSIZE, SSIZE);
M.replaceColumn(i,SparseIndexedVector.create(SSIZE, indy, data));
}
Matrix D = Matrix.create(M);
assertTrue(M.equals(D));
assertTrue(D.epsilonEquals(M, 0.1));
M.set(SSIZE-1, SSIZE-1, M.get(SSIZE-1, SSIZE-1) + 3.14159);
assertFalse(M.equals(D));
D.set(SSIZE-1, SSIZE-1, D.get(SSIZE-1, SSIZE-1) + 3.14159);
assertTrue(M.equals(D));
D = M.dense();
assertTrue(M.equals(D));
assertTrue(D.epsilonEquals(M, 0.1));
M.set(SSIZE-1, SSIZE-1, M.get(SSIZE-1, SSIZE-1) + 3.14159);
assertFalse(M.equals(D));
D.addAt(SSIZE-1, SSIZE-1, 3.14159); // also test addAt
assertTrue(M.equals(D));
D = M.toMatrix();
assertTrue(M.equals(D));
assertTrue(D.epsilonEquals(M, 0.1));
M.set(SSIZE-1, SSIZE-1, M.get(SSIZE-1, SSIZE-1) + 3.14159);
assertFalse(M.equals(D));
D.set(SSIZE-1, SSIZE-1, D.get(SSIZE-1, SSIZE-1) + 3.14159);
assertTrue(M.equals(D));
AMatrix N = M.getTranspose();
AMatrix Dt = D.getTranspose();
assertTrue(N.equals(Dt));
N.set(SSIZE-1, SSIZE-1, N.get(SSIZE-1, SSIZE-1) + 3.14159);
assertFalse(N.equals(Dt));
Dt.addAt(SSIZE-1, SSIZE-1, 3.14159); // also test addAt