@Override public final void plusEquals( final DiagonalMatrix other) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] += other.get(i, i); } }
@Override public final Vector times( final DenseVector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); DenseVector result = new DenseVector(diagonal.length); for (int i = 0; i < diagonal.length; ++i) { result.setElement(i, vector.get(i) * diagonal[i]); } return result; }
@Override public final void dotTimesEquals( final SparseMatrix other) { this.assertSameDimensions(other); for (int i = 0; i < diagonal.length; ++i) { diagonal[i] *= other.get(i, i); } }
@Override public final Matrix times( final DenseMatrix other) { this.assertMultiplicationDimensions(other); final DenseVector[] rows = new DenseVector[diagonal.length]; for (int i = 0; i < diagonal.length; ++i) { DenseVector v = other.row(i); rows[i] = (DenseVector) v.scale(diagonal[i]); } return new DenseMatrix(rows); }
@Override final public Vector convertToVector() { final int numColumns = this.getNumColumns(); SparseVector result = new SparseVector(numColumns * numColumns); for (int i = 0; i < diagonal.length; ++i) { result.setElement(i * numColumns + i, diagonal[i]); } return result; }
@Override public final void dotTimesEquals( final DenseMatrix other) { this.assertSameDimensions(other); for (int i = 0; i < diagonal.length; ++i) { diagonal[i] *= other.row(i).values[i]; } }
@Override public VectorEntry next() { this.assertNoModification(); final VectorEntry result = new Entry(this.offset); this.offset++; return result; }
@Override final public Iterator<VectorEntry> iterator() { this.compress(); return new EntryIterator(); }
@Override public void scaledPlusEquals( final DiagonalMatrix other, final double scaleFactor) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] += other.get(i, i) * scaleFactor; } }
@Override public final Matrix times( final DenseMatrix other) { this.assertMultiplicationDimensions(other); final DenseVector[] rows = new DenseVector[diagonal.length]; for (int i = 0; i < diagonal.length; ++i) { DenseVector v = other.row(i); rows[i] = (DenseVector) v.scale(diagonal[i]); } return new DenseMatrix(rows); }
@Override final public Vector convertToVector() { final int numColumns = this.getNumColumns(); SparseVector result = new SparseVector(numColumns * numColumns); for (int i = 0; i < diagonal.length; ++i) { result.setElement(i * numColumns + i, diagonal[i]); } return result; }
@Override public final void dotTimesEquals( final SparseMatrix other) { this.assertSameDimensions(other); for (int i = 0; i < diagonal.length; ++i) { diagonal[i] *= other.get(i, i); } }
@Override public final void dotTimesEquals( final DenseMatrix other) { this.assertSameDimensions(other); for (int i = 0; i < diagonal.length; ++i) { diagonal[i] *= other.row(i).values[i]; } }
@Override public VectorEntry next() { this.assertNoModification(); final VectorEntry result = new Entry(this.offset); this.offset++; return result; }
@Override final public Iterator<VectorEntry> iterator() { this.compress(); return new EntryIterator(); }
@Override public void scaledPlusEquals( final DiagonalMatrix other, final double scaleFactor) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] += other.get(i, i) * scaleFactor; } }
@Override public final void plusEquals( final DiagonalMatrix other) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] += other.get(i, i); } }
@Override public final void minusEquals( final DiagonalMatrix other) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] -= other.get(i, i); } }
@Override public final void minusEquals( final DiagonalMatrix other) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] -= other.get(i, i); } }
@Override public final void plusEquals( final DiagonalMatrix other) { this.assertSameDimensions(other); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { this.rows[i].values[i] += other.get(i, i); } }