package math.matrix;
import exception.IllegalDimensionException;
import math.Sequence;
/**
* Symmetric matrix object dij=dji∈ℝ
* with n rows and n columns
* @author Daniel Weschke
*/
public class Symmetric extends Matrix {
/**
* UID
*/
private static final long serialVersionUID = -3506578822884073555L;
public Symmetric(int n){
this.m = n;
this.n = n;
data = new double[Sequence.triangularNumber(n)];
}
public Symmetric(double... d){
this((int)Math.ceil(Sequence.triangularRoot(d.length)));
int i;
for(i=0; ij?Sequence.triangularNumber(i)+j:i+Sequence.triangularNumber(j);
}
/**
* Adds two matrices of the same dimension (entrywise addition).
* The addition of two n-by-n matrices A and B,
* is again an n-by-n matrix computed by adding corresponding elements.
* @param B matrix
* @return C = A + B, entrywise summarized matrix
* @throws IllegalDimensionException
*/
public Matrix plus(Matrix B) throws IllegalDimensionException{
checkDimensions(B);
int i,j;
Matrix c = createAddition(B);
c.newOperation();
if(B instanceof Diagonal)
for(i=0; i