@Test
public void testBasics() {
DiagonalMatrix a = new DiagonalMatrix(new double[]{1, 2, 3, 4});
assertEquals(0, a.viewDiagonal().minus(new DenseVector(new double[]{1, 2, 3, 4})).norm(1), 1.0e-10);
assertEquals(0, a.viewPart(0, 3, 0, 3).viewDiagonal().minus(
new DenseVector(new double[]{1, 2, 3})).norm(1), 1.0e-10);
assertEquals(4, a.get(3, 3), 1.0e-10);
Matrix m = new DenseMatrix(4, 4);
m.assign(a);
assertEquals(0, m.minus(a).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(0, m.transpose().times(m).minus(a.transpose().times(a)).aggregate(
Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(0, m.plus(m).minus(a.plus(a)).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
m = new DenseMatrix(new double[][]{{1, 2, 3, 4}, {5, 6, 7, 8}});
assertEquals(100, a.timesLeft(m).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(100, a.times(m.transpose()).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
}