public final class UnpackedRowMajorMatrix extends Matrix { private double[][] elems ; public UnpackedRowMajorMatrix(int rows, int cols) { super(rows, cols) ; elems = new double[rows][cols] ; } public void set(int i, int j, double d) { elems[i][j] = d ; } public double get(int i, int j) { return elems[i][j] ; } public void multiplyLeft(double[] v, double[] out) { assert v.length == rows ; assert cols == out.length ; for (int j = 0 ; j < cols ; ++j) { double a = 0.0 ; for (int i = 0 ; i < rows ; ++i) { a = a + (v[i] * get(i, j)) ; } out[j] = a ; } } public void multiplyRight(double[] v, double[] out) { assert cols == v.length ; assert rows == out.length ; for (int i = 0 ; i < rows ; ++i) { double a = 0.0 ; for (int j = 0 ; j < cols ; ++j) { a = a + (get(i, j) * v[j]) ; } out[i] = a ; } } }