@Override public double getQuick(int index) { if (index == this.index) { return diagonal.get(index); } else { return 0; } }
@Test public void testAssignBinaryFunction() { test.assign(test, Functions.PLUS); for (int i = 0; i < values.length; i++) { if (i % 2 == 0) { assertEquals("get [" + i + ']', 0.0, test.get(i), EPSILON); } else { assertEquals("value[" + i + ']', 2 * values[i - 1], test.getQuick(i), EPSILON); } } }
private void statusDump(Vector x, double normA, double condA, double test1, double test2) { log.debug("{} {}", residualNorm, normalEquationResidual); log.debug("{} {}", iteration, x.get(0)); log.debug("{} {}", test1, test2); log.debug("{} {}", normA, condA); }
@Test public void testViewColumn() { Vector column = test.viewColumn(1); assertEquals("row size", 3, column.getNumNondefaultElements()); int i = 0; for (double x : new double[]{3.3, 5.5, 7.7}) { assertEquals(x, column.get(i++), 0); } }
@Test public void testAssignBinaryFunction2() { test.assign(Functions.plus(4)); for (int i = 0; i < values.length; i++) { if (i % 2 == 0) { assertEquals("get [" + i + ']', 4.0, test.get(i), EPSILON); } else { assertEquals("value[" + i + ']', values[i - 1] + 4, test.getQuick(i), EPSILON); } } }
@Test public void testViewPart() throws Exception { Vector part = test.viewPart(1, 2); assertEquals("part size", 2, part.getNumNondefaultElements()); for (int i = 0; i < part.size(); i++) { assertEquals("part[" + i + ']', values[OFFSET + i + 1], part.get(i), EPSILON); } }
@Test public void testPlusDouble() { Vector val = test.plus(1); assertEquals("size", test.size(), val.size()); for (int i = 0; i < test.size(); i++) { if (i % 2 == 0) { assertEquals("get [" + i + ']', 1.0, val.get(i), EPSILON); } else { assertEquals("get [" + i + ']', values[i/2] + 1.0, val.get(i), EPSILON); } } }
@Test public void testSet() throws Exception { test.set(2, 4.5); for (int i = 0; i < test.size(); i++) { assertEquals("set [" + i + ']', i == 2 ? 4.5 : values[OFFSET + i], test.get(i), EPSILON); } }
@Test public void testTimesVector() { Vector val = test.times(test); assertEquals("size", test.size(), val.size()); for (int i = 0; i < test.size(); i++) { if (i % 2 == 0) { assertEquals("get [" + i + ']', 0.0, val.get(i), EPSILON); } else { assertEquals("get [" + i + ']', values[i/2] * values[i/2], val.get(i), EPSILON); } } }
@Test public void testDivideDouble() { Vector val = test.divide(3); assertEquals("size", test.size(), val.size()); for (int i = 0; i < test.size(); i++) { if (i % 2 == 0) { assertEquals("get [" + i + ']', 0.0, val.get(i), EPSILON); } else { assertEquals("get [" + i + ']', values[i/2] / 3.0, val.get(i), EPSILON); } } }
@Test public void testMinus() throws Exception { Vector val = test.minus(test); assertEquals("size", 3, val.size()); for (int i = 0; i < test.size(); i++) { assertEquals("get [" + i + ']', 0.0, val.get(i), EPSILON); } }
@Test public void testPlusDouble() throws Exception { Vector val = test.plus(1); assertEquals("size", 3, val.size()); for (int i = 0; i < test.size(); i++) { assertEquals("get [" + i + ']', values[OFFSET + i] + 1, val.get(i), EPSILON); } }
@Test public void testAggregateCols() { Vector v = test.aggregateColumns(new VectorFunction() { @Override public double apply(Vector v) { return v.zSum(); } }); for (int i = 0; i < test.numCols(); i++) { assertEquals(test.viewColumn(i).zSum(), v.get(i), EPSILON); } }
@Test public void testTimesVector() throws Exception { Vector val = test.times(test); assertEquals("size", 3, val.size()); for (int i = 0; i < test.size(); i++) { assertEquals("get [" + i + ']', values[OFFSET + i] * values[OFFSET + i], val.get(i), EPSILON); } }
@Test public void testDivideDouble() throws Exception { Vector val = test.divide(3); assertEquals("size", 3, val.size()); for (int i = 0; i < test.size(); i++) { assertEquals("get [" + i + ']', values[OFFSET + i] / 3, val.get(i), EPSILON); } }
private static void assertVectorEquals(Vector expected, Vector actual, double epsilon) { assertEquals(expected.size(), actual.size()); for (Element x : expected.all()) { assertEquals(x.get(), actual.get(x.index()), epsilon); } }