public double getElement( int rowIndex, int columnIndex) { return this.internalMatrix.get(rowIndex, columnIndex); }
@Override public double get( final int rowIndex, final int columnIndex) { return this.internalMatrix.get(rowIndex, columnIndex); }
@Override public double get(int row, int column) { return A.get(this.row[row], this.column[column]); }
@Override public synchronized double get(int row, int column) { return A.get(row, column); }
@Override public double get( final int rowIndex, final int columnIndex) { return this.internalMatrix.get(rowIndex, columnIndex); }
public double getElement( int rowIndex, int columnIndex) { return this.internalMatrix.get(rowIndex, columnIndex); }
public void setMatrix(Matrix A) { if (A.numRows() != invdiag.length) throw new IllegalArgumentException( "Matrix size differs from preconditioner size"); for (int i = 0; i < invdiag.length; ++i) { invdiag[i] = A.get(i, i); if (invdiag[i] == 0) // Avoid zero-division throw new RuntimeException("Zero diagonal on row " + (i + 1)); else invdiag[i] = 1 / invdiag[i]; } }
public void setMatrix(Matrix A) { if (A.numRows() != invdiag.length) throw new IllegalArgumentException( "Matrix size differs from preconditioner size"); for (int i = 0; i < invdiag.length; ++i) { invdiag[i] = A.get(i, i); if (invdiag[i] == 0) // Avoid zero-division throw new RuntimeException("Zero diagonal on row " + (i + 1)); else invdiag[i] = 1 / invdiag[i]; } }
public ArpackSym(Matrix matrix) { if (!matrix.isSquare()) throw new IllegalArgumentException("matrix must be square"); if (EXPENSIVE_CHECKS) for (MatrixEntry entry : matrix) { if (entry.get() != matrix.get(entry.column(), entry.row())) throw new IllegalArgumentException( "matrix must be symmetric"); } this.matrix = matrix; }
public ArpackSym(Matrix matrix) { if (!matrix.isSquare()) throw new IllegalArgumentException("matrix must be square"); if (EXPENSIVE_CHECKS) for (MatrixEntry entry : matrix) { if (entry.get() != matrix.get(entry.column(), entry.row())) throw new IllegalArgumentException( "matrix must be symmetric"); } this.matrix = matrix; }
public Matrix multAdd(double alpha, Matrix B, Matrix C) { checkMultAdd(B, C); if (alpha != 0) for (int i = 0; i < numRows; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numColumns; ++k) dot += get(i, k) * B.get(k, j); C.add(i, j, alpha * dot); } return C; }
public Matrix transAmultAdd(double alpha, Matrix B, Matrix C) { checkTransAmultAdd(B, C); if (alpha != 0) for (int i = 0; i < numColumns; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numRows; ++k) dot += get(k, i) * B.get(k, j); C.add(i, j, alpha * dot); } return C; }
public Matrix transABmultAdd(double alpha, Matrix B, Matrix C) { checkTransABmultAdd(B, C); if (alpha != 0) for (int i = 0; i < numColumns; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numRows; ++k) dot += get(k, i) * B.get(j, k); C.add(i, j, alpha * dot); } return C; }
public Matrix transABmultAdd(double alpha, Matrix B, Matrix C) { checkTransABmultAdd(B, C); if (alpha != 0) for (int i = 0; i < numColumns; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numRows; ++k) dot += get(k, i) * B.get(j, k); C.add(i, j, alpha * dot); } return C; }
public Matrix transBmultAdd(double alpha, Matrix B, Matrix C) { checkTransBmultAdd(B, C); if (alpha != 0) for (int i = 0; i < numRows; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numColumns; ++k) dot += get(i, k) * B.get(j, k); C.add(i, j, alpha * dot); } return C; }
public static DenseVector getColumn(Matrix m, int j) { DenseVector v = new DenseVector(m.numRows()); for (int i = 0; i < v.size(); i++) { v.set(i, m.get(i, j)); } return v; }
public Matrix multAdd(double alpha, Matrix B, Matrix C) { checkMultAdd(B, C); if (alpha != 0) for (int i = 0; i < numRows; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numColumns; ++k) dot += get(i, k) * B.get(k, j); C.add(i, j, alpha * dot); } return C; }
public Matrix transAmultAdd(double alpha, Matrix B, Matrix C) { checkTransAmultAdd(B, C); if (alpha != 0) for (int i = 0; i < numColumns; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numRows; ++k) dot += get(k, i) * B.get(k, j); C.add(i, j, alpha * dot); } return C; }
public Matrix transBmultAdd(double alpha, Matrix B, Matrix C) { checkTransBmultAdd(B, C); if (alpha != 0) for (int i = 0; i < numRows; ++i) for (int j = 0; j < C.numColumns(); ++j) { double dot = 0; for (int k = 0; k < numColumns; ++k) dot += get(i, k) * B.get(j, k); C.add(i, j, alpha * dot); } return C; }
public static DenseVector getColumn(Matrix m, int j) { DenseVector v = new DenseVector(m.numRows()); for (int i = 0; i < v.size(); i++) { v.set(i, m.get(i, j)); } return v; }