/** * @return true iff this implementation should be considered dense -- that it explicitly * represents every value */ @Override public boolean isDense() { return vector.isDense(); }
@Override public boolean isDense() { return delegate.isDense(); }
@Override public boolean isDense() { return vector.isDense(); }
@Override public boolean isDense() { return delegate.isDense(); }
public static byte flags(Vector vector, boolean laxPrecision) { boolean dense = vector.isDense(); boolean sequential = vector.isSequentialAccess(); boolean named = vector instanceof NamedVector; return (byte) ((dense ? FLAG_DENSE : 0) | (sequential ? FLAG_SEQUENTIAL : 0) | (named ? FLAG_NAMED : 0) | (laxPrecision ? FLAG_LAX_PRECISION : 0)); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return x.isAddConstantTime() && !x.isDense(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return !x.isAddConstantTime() && !y.isDense(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return !x.isAddConstantTime() && !x.isDense(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction f) { return x.isAddConstantTime() && !y.isDense(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return (fa.isAssociativeAndCommutative() || x.isSequentialAccess()) && !x.isDense(); }
@Override public boolean isValid(Vector x, Vector y, DoubleDoubleFunction fa, DoubleDoubleFunction fc) { return (fa.isAssociativeAndCommutative() || y.isSequentialAccess()) && !y.isDense(); }
/** * Subclasses must override to return an appropriately sparse or dense result * * @param rows the row cardinality * @param columns the column cardinality * @return a Matrix */ @Override protected Matrix matrixLike(int rows, int columns) { if (vector.isDense()) { return new DenseMatrix(rows, columns); } else { return new SparseRowMatrix(rows, columns); } }
private static Vector createOptimizedCopy(Vector vector) { Vector result; if (vector.isDense()) { result = vector.like().assign(vector, Functions.SECOND_LEFT_ZERO); } else { result = vector.clone(); } return result; }
@Override public double dot(Vector x) { if (!x.isDense()) { return super.dot(x); } else { int size = x.size(); if (values.length != size) { throw new CardinalityException(values.length, size); } double sum = 0; for (int n = 0; n < size; n++) { sum += values[n] * x.getQuick(n); } return sum; } }
@Test public void testViewDenseSparseReporting() { Matrix m = new SparseMatrix(1000, 1000); m.set(1, 1, 33.0); Matrix mt = Matrices.transposedView(m); assertTrue(mt.viewColumn(0).isDense() == m.viewRow(0).isDense()); assertTrue(mt.viewRow(0).isDense() == m.viewColumn(0).isDense()); m = new DenseMatrix(10,10); m.set(1, 1, 33.0); mt = Matrices.transposedView(m); assertTrue(mt.viewColumn(0).isDense()); assertTrue(mt.viewRow(0).isDense()); }
private static void createStubs(Vector v, Vector realV) { expect(v.getLookupCost()) .andStubReturn(realV instanceof SequentialAccessSparseVector ? Math.round(Math.log(1000)) : realV.getLookupCost()); expect(v.getIteratorAdvanceCost()) .andStubReturn(realV.getIteratorAdvanceCost()); expect(v.isAddConstantTime()) .andStubReturn(realV.isAddConstantTime()); expect(v.isSequentialAccess()) .andStubReturn(realV.isSequentialAccess()); expect(v.isDense()) .andStubReturn(realV.isDense()); expect(v.getNumNondefaultElements()) .andStubReturn(realV.isDense() ? realV.size() : 1000); expect(v.size()) .andStubReturn(realV.size()); }
private static void createStubs(Vector v, Vector realV) { expect(v.getLookupCost()) .andStubReturn(realV instanceof SequentialAccessSparseVector ? Math.round(Math.log(1000)) : realV.getLookupCost()); expect(v.getIteratorAdvanceCost()) .andStubReturn(realV.getIteratorAdvanceCost()); expect(v.isAddConstantTime()) .andStubReturn(realV.isAddConstantTime()); expect(v.isSequentialAccess()) .andStubReturn(realV.isSequentialAccess()); expect(v.isDense()) .andStubReturn(realV.isDense()); expect(v.getNumNondefaultElements()) .andStubReturn(realV.isDense() ? realV.size() : 1000); expect(v.size()) .andStubReturn(realV.size()); }