@Override public double apply(double var) { return function.apply(c, var); } };
@Test public void testIsAssociative() { if (!function.isAssociative()) { return; } for (int i = 0; i < NUM_POINTS; ++i) { double x = random.nextDouble(); double y = random.nextDouble(); double z = random.nextDouble(); assertEquals(functionName, function.apply(x, function.apply(y, z)), function.apply(function.apply(x, y), z), Constants.EPSILON); } }
@Test public void testIsCommutative() { if (!function.isCommutative()) { return; } for (int i = 0; i < NUM_POINTS; ++i) { double x = random.nextDouble(); double y = random.nextDouble(); assertEquals(functionName, function.apply(x, y), function.apply(y, x), Constants.EPSILON); } }
/** * @return true iff f(x, y) = f(y, x) for any x, y AND f(x, f(y, z)) = f(f(x, y), z) for any x, y, z */ public boolean isAssociativeAndCommutative() { return isAssociative() && isCommutative(); }
/** * @return true iff f(x, 0) = f(0, y) = 0 for any x, y */ public boolean isLikeMult() { return isLikeLeftMult() && isLikeRightMult(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return fa.isLikeRightPlus() && (fa.isAssociativeAndCommutative() || x.isSequentialAccess()) && fc.isLikeLeftMult(); }
if (aggregator.isAssociativeAndCommutative() && aggregator.isLikeLeftMult() && size > getNumNondefaultElements() && !map.isDensifying()) { return 0; if (isSequentialAccess() || aggregator.isAssociativeAndCommutative()) { Iterator<Element> iterator; if (!map.isDensifying() && aggregator.isLikeRightPlus()) { iterator = iterateNonZero(); if (!iterator.hasNext()) { while (iterator.hasNext()) { element = iterator.next(); result = aggregator.apply(result, map.apply(element.get())); result = aggregator.apply(result, map.apply(getQuick(i)));
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return fa.isLikeRightPlus() && (fa.isAssociativeAndCommutative() || y.isSequentialAccess()) && fc.isLikeRightMult(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return fa.isLikeRightPlus() && !fc.isDensifying() && (fa.isAssociativeAndCommutative() || (x.isSequentialAccess() && y.isSequentialAccess())); }
@Test public void testIsLikeLeftMult() { if (!function.isLikeLeftMult()) { return; } for (int i = 0; i < NUM_POINTS; ++i) { double y = random.nextDouble(); assertEquals(functionName, 0, function.apply(0, y), 0); } }
@Test public void testIsDensifying() { if (!function.isDensifying()) { assertEquals(functionName, 0, function.apply(0, 0), 0); } } }
@Test public void testIsLikeRightPlus() { if (!function.isLikeRightPlus()) { return; } for (int i = 0; i < NUM_POINTS; ++i) { double x = random.nextDouble(); assertEquals(functionName, x, function.apply(x, 0), 0); } }
@Test public void testIsLikeRightMult() { if (!function.isLikeRightMult()) { return; } for (int i = 0; i < NUM_POINTS; ++i) { double x = random.nextDouble(); assertEquals(functionName, 0, function.apply(x, 0), 0); } }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return fa.isLikeRightPlus() && !fc.isDensifying() && x.isSequentialAccess() && y.isSequentialAccess(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return !f.isDensifying() && x.isAddConstantTime(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return f.isLikeLeftMult() && f.isLikeRightPlus() && x.isSequentialAccess() && y.isSequentialAccess(); }
Iterator<Vector.Element> sparseRowIterator = ((SequentialAccessSparseVector) this.rowVectors[row]) .iterateNonZero(); if (function.isLikeMult()) { // TODO: is this a sufficient test? Vector.Element element = sparseRowIterator.next(); int col = element.index(); setQuick(row, col, function.apply(element.get(), other.getQuick(row, col))); setQuick(row, col, function.apply(getQuick(row, col), other.getQuick(row, col))); "implementation."); for (int col = 0; col < columns; col++) { setQuick(row, col, function.apply(getQuick(row, col), other.getQuick(row, col)));
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return f.isLikeLeftMult(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return fa.isLikeRightPlus() && fc.isLikeMult() && x.isSequentialAccess() && y.isSequentialAccess(); }
/** * fc(x, 0) = f(g(x), h(0)) = f(g(x), 0) = 0 if h(0) = 0 and f isLikeRightMult * @return true iff f(x, 0) = 0 for any x */ @Override public boolean isLikeRightMult() { return h.apply(0) == 0 && f.isLikeRightMult(); }