@Override public Vector times(Vector that) { if (size != that.size()) { throw new CardinalityException(size, that.size()); } if (this.getNumNondefaultElements() <= that.getNumNondefaultElements()) { return createOptimizedCopy(this).assign(that, Functions.MULT); } else { return createOptimizedCopy(that).assign(this, Functions.MULT); } }
&& size > getNumNondefaultElements() && !map.isDensifying()) { return 0;
@Override public Vector times(Vector that) { if (size != that.size()) { throw new CardinalityException(size, that.size()); } if (this.getNumNondefaultElements() <= that.getNumNondefaultElements()) { return createOptimizedCopy(this).assign(that, Functions.MULT); } else { return createOptimizedCopy(that).assign(this, Functions.MULT); } }
@Override public Vector times(Vector x) { if (size != x.size()) { throw new CardinalityException(size, x.size()); } Vector to = this; Vector from = x; // Clone and edit to the sparse one; if both are sparse, edit the more sparse one (more zeroes) if (isDense() || (!x.isDense() && getNumNondefaultElements() > x.getNumNondefaultElements())) { to = x; from = this; } Vector result = to.like().assign(to); Iterator<Element> iter = result.iterateNonZero(); while (iter.hasNext()) { Element element = iter.next(); element.set(element.get() * from.getQuick(element.index())); } return result; }
int thisNumNonDefault = getNumNondefaultElements(); int thatNumNonDefault = x.getNumNondefaultElements();
@Override public Vector plus(Vector x) { if (size != x.size()) { throw new CardinalityException(size, x.size()); } // prefer to have this be the denser than x if (!isDense() && (x.isDense() || x.getNumNondefaultElements() > this.getNumNondefaultElements())) { return x.plus(this); } Vector result = like().assign(this); Iterator<Element> iter = x.iterateNonZero(); while (iter.hasNext()) { Element e = iter.next(); int index = e.index(); result.setQuick(index, this.getQuick(index) + e.get()); } return result; }
&& size > getNumNondefaultElements() && !map.isDensifying()) { return 0;