@Override public final void minusEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] -= vals[i]; } }
@Override public final void plusEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] += vals[i]; } }
@Override public final void minusEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] -= vals[i]; } }
@Override public final void plusEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] += vals[i]; } }
@Override public final void minusEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] -= vals[i]; } }
@Override public final void plusEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] += vals[i]; } }
@Override public void scaledPlusEquals( final SparseVector other, final double scaleFactor) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] += vals[i] * scaleFactor; } }
@Override public void scaledPlusEquals( final SparseVector other, final double scaleFactor) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] += vals[i] * scaleFactor; } }
@Override public void scaledPlusEquals( final SparseVector other, final double scaleFactor) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < locs.length; ++i) { values[locs[i]] += vals[i] * scaleFactor; } }
@Override public final void dotTimesEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); int idx = 0; for (int i = 0; i < values.length; ++i) { if ((idx < locs.length) && (locs[idx] == i)) { values[i] *= vals[idx]; ++idx; } else { values[i] = 0; } } }
@Override public final void dotTimesEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); int idx = 0; for (int i = 0; i < values.length; ++i) { if ((idx < locs.length) && (locs[idx] == i)) { values[i] *= vals[idx]; ++idx; } else { values[i] = 0; } } }
@Override public final void dotTimesEquals( final SparseVector other) { this.assertSameDimensionality(other); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); int idx = 0; for (int i = 0; i < values.length; ++i) { if ((idx < locs.length) && (locs[idx] == i)) { values[i] *= vals[idx]; ++idx; } else { values[i] = 0; } } }
@Override public final Vector times( final SparseVector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); SparseVector result = new SparseVector(diagonal.length); vector.compress(); int[] locs = vector.getIndices(); for (int i = 0; i < locs.length; ++i) { result.setElement(locs[i], vector.getValues()[i] * diagonal[locs[i]]); } return result; }
@Override public final Vector times( final SparseVector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); SparseVector result = new SparseVector(diagonal.length); vector.compress(); int[] locs = vector.getIndices(); for (int i = 0; i < locs.length; ++i) { result.setElement(locs[i], vector.getValues()[i] * diagonal[locs[i]]); } return result; }
@Override public final Vector times( final SparseVector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); SparseVector result = new SparseVector(diagonal.length); vector.compress(); int[] locs = vector.getIndices(); for (int i = 0; i < locs.length; ++i) { result.setElement(locs[i], vector.getValues()[i] * diagonal[locs[i]]); } return result; }
@Override public final Matrix outerProduct( final SparseVector other) { int numRows = getDimensionality(); int numCols = other.getDimensionality(); SparseMatrix result = new SparseMatrix(numRows, numCols, true); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < numRows; ++i) { SparseVector row = new SparseVector(numCols); for (int j = 0; j < locs.length; ++j) { row.setElement(locs[j], values[i] * vals[j]); } result.setRowInternal(i, row); } return result; }
@Override public final Matrix outerProduct( final SparseVector other) { int numRows = getDimensionality(); int numCols = other.getDimensionality(); SparseMatrix result = new SparseMatrix(numRows, numCols, true); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < numRows; ++i) { SparseVector row = new SparseVector(numCols); for (int j = 0; j < locs.length; ++j) { row.setElement(locs[j], values[i] * vals[j]); } result.setRowInternal(i, row); } return result; }
@Override public final Matrix outerProduct( final SparseVector other) { int numRows = getDimensionality(); int numCols = other.getDimensionality(); SparseMatrix result = new SparseMatrix(numRows, numCols, true); other.compress(); int[] locs = other.getIndices(); double[] vals = other.getValues(); for (int i = 0; i < numRows; ++i) { SparseVector row = new SparseVector(numCols); for (int j = 0; j < locs.length; ++j) { row.setElement(locs[j], values[i] * vals[j]); } result.setRowInternal(i, row); } return result; }
@Override public final Vector preTimes( final SparseVector vector) { vector.assertDimensionalityEquals(this.getNumRows()); DenseVector result = new DenseVector(getNumColumns()); vector.compress(); int[] locs = vector.getIndices(); double[] vals = vector.getValues(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numColumns; ++i) { double entry = 0; for (int j = 0; j < locs.length; ++j) { entry += vals[j] * rows[locs[j]].get(i); } result.setElement(i, entry); } return result; }
@Override public final Vector preTimes( final SparseVector vector) { vector.assertDimensionalityEquals(this.getNumRows()); DenseVector result = new DenseVector(getNumColumns()); vector.compress(); int[] locs = vector.getIndices(); double[] vals = vector.getValues(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numColumns; ++i) { double entry = 0; for (int j = 0; j < locs.length; ++j) { entry += vals[j] * rows[locs[j]].get(i); } result.setElement(i, entry); } return result; }