@Override final public double getElement( final int rowIndex, final int columnIndex) { return this.rows[rowIndex].get(columnIndex); }
@Override public double get( final int rowIndex, final int columnIndex) { return this.rows[rowIndex].get(columnIndex); }
@Override final public double getElement( final int rowIndex, final int columnIndex) { return this.rows[rowIndex].get(columnIndex); }
@Override public double get( final int rowIndex, final int columnIndex) { return this.rows[rowIndex].get(columnIndex); }
@Override public double get( final int rowIndex, final int columnIndex) { return this.rows[rowIndex].get(columnIndex); }
@Override final public double getElement( final int rowIndex, final int columnIndex) { return this.rows[rowIndex].get(columnIndex); }
/** * Simple method that computes the number of non-zero elements stored in * this. * * @return the number of elements in this that are non-zero. */ final public int getNonZeroCount() { int nnz = 0; final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numColumns; ++j) { nnz += (rows[i].get(j) == 0) ? 0 : 1; } } return nnz; }
/** * Simple method that computes the number of non-zero elements stored in * this. * * @return the number of elements in this that are non-zero. */ final public int getNonZeroCount() { int nnz = 0; final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numColumns; ++j) { nnz += (rows[i].get(j) == 0) ? 0 : 1; } } return nnz; }
@Override public final Vector preTimes( final DenseVector vector) { final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); vector.assertDimensionalityEquals(numRows); DenseVector result = new DenseVector(numColumns); for (int i = 0; i < numColumns; ++i) { double entry = 0; for (int j = 0; j < numRows; ++j) { entry += vector.get(j) * rows[j].get(i); } result.setElement(i, entry); } return result; }
@Override public final Vector preTimes( final DenseVector vector) { final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); vector.assertDimensionalityEquals(numRows); DenseVector result = new DenseVector(numColumns); for (int i = 0; i < numColumns; ++i) { double entry = 0; for (int j = 0; j < numRows; ++j) { entry += vector.get(j) * rows[j].get(i); } result.setElement(i, entry); } return result; }
@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 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 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 final public Vector getColumn( final int columnIndex) { if (columnIndex < 0 || columnIndex >= getNumColumns()) { throw new ArrayIndexOutOfBoundsException("Input column index (" + columnIndex + ") is not within this " + getNumRows() + "x" + getNumColumns() + " matrix"); } DenseVector result = new DenseVector(getNumRows()); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { result.values[i] = rows[i].get(columnIndex); } return result; }
@Override final public Vector getColumn( final int columnIndex) { if (columnIndex < 0 || columnIndex >= getNumColumns()) { throw new ArrayIndexOutOfBoundsException("Input column index (" + columnIndex + ") is not within this " + getNumRows() + "x" + getNumColumns() + " matrix"); } DenseVector result = new DenseVector(getNumRows()); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { result.values[i] = rows[i].get(columnIndex); } return result; }
@Override final public Vector getColumn( final int columnIndex) { if (columnIndex < 0 || columnIndex >= getNumColumns()) { throw new ArrayIndexOutOfBoundsException("Input column index (" + columnIndex + ") is not within this " + getNumRows() + "x" + getNumColumns() + " matrix"); } DenseVector result = new DenseVector(getNumRows()); final int numRows = this.getNumRows(); for (int i = 0; i < numRows; ++i) { result.values[i] = rows[i].get(columnIndex); } return result; }
/** * Converts this into a 1-d, dense, column-major vector (the layout required * by BLAS and LAPACK). * * @return a 1-d, dense, column-major vector representation of this */ final double[] toBlas() { double[] result = new double[getNumRows() * getNumColumns()]; for (int i = 0; i < getNumRows(); ++i) { for (int j = 0; j < getNumColumns(); ++j) { result[i + (j * getNumRows())] = this.rows[i].get(j); } } return result; }
/** * Converts this into a 1-d, dense, column-major vector (the layout required * by BLAS and LAPACK). * * @return a 1-d, dense, column-major vector representation of this */ final double[] toBlas() { double[] result = new double[getNumRows() * getNumColumns()]; for (int i = 0; i < getNumRows(); ++i) { for (int j = 0; j < getNumColumns(); ++j) { result[i + (j * getNumRows())] = this.rows[i].get(j); } } return result; }
/** * Converts this into a 1-d, dense, column-major vector (the layout required * by BLAS and LAPACK). * * @return a 1-d, dense, column-major vector representation of this */ final double[] toBlas() { double[] result = new double[getNumRows() * getNumColumns()]; for (int i = 0; i < getNumRows(); ++i) { for (int j = 0; j < getNumColumns(); ++j) { result[i + (j * getNumRows())] = this.rows[i].get(j); } } 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; }