package ch.akuhn.matrix; import java.util.Arrays; /** Dense matrix. * * @author Adrian Kuhn * */ public class DenseMatrix extends Matrix { protected double[][] values; public DenseMatrix(double[][] values) { this.values = values; this.assertInvariant(); } protected void assertInvariant() throws IllegalArgumentException { if (values.length == 0) return; int m = values[0].length; for (int n = 0; n < values.length; n++) { if (values[n].length != m) throw new IllegalArgumentException(); } } public DenseMatrix(int rows, int columns) { this.values = makeValues(rows,columns); this.assertInvariant(); } protected double[][] makeValues(int rows, int columns) { return new double[rows][columns]; } @Override public double add(int row, int column, double value) { return values[row][column] += value; } @Override public int columnCount() { return values[0].length; } @Override public double get(int row, int column) { return values[row][column]; } @Override public double put(int row, int column, double value) { return values[row][column] = value; } @Override public int rowCount() { return values.length; } @Override public int used() { // TODO Auto-generated method stub throw null; } @Override public void apply(Function f) { f.apply(values); } @Override public double[][] unwrap() { return values; } public void fill(double constant) { for (double[] row: values) Arrays.fill(row, constant); } public void applyMultiplication(double d) { Util.times(values, d); } }