package ch.akuhn.hapax.linalg;
import static ch.akuhn.foreach.For.range;
import java.util.Arrays;
public class SymetricMatrix extends Matrix {
public double[][] values;
public SymetricMatrix(int size) {
values = new double[size][];
for (int n: range(values.length))
values[n] = new double[n + 1];
}
@Override
public int columnCount() {
return rowCount();
}
@Override
public double get(int row, int column) {
return row > column ? values[row][column] : values[column][row];
}
@Override
public double put(int row, int column, double value) {
return row > column ? (values[row][column] = value) : (values[column][row] = value);
}
@Override
public int rowCount() {
return values.length;
}
@Override
public int used() {
throw new UnsupportedOperationException();
}
public void fill(double constant) {
for (double[] row: values) Arrays.fill(row, constant);
}
}