package hep.physics.matrix;
import java.io.Serializable;
/**
* A very simple matrix implementation
* @author tonyj
*/
public class BasicMatrix implements MutableMatrix, Serializable
{
static final long serialVersionUID = -3491275185124557222L;
private double[][] data;
public BasicMatrix(int nRows, int nCols)
{
data = new double[nRows][nCols];
}
/** Creates a new instance of BasicMatrix */
public BasicMatrix(double[][] data)
{
if (data.length <= 0) throw new IllegalArgumentException("Invalid data");
int nCols = data[0].length;
for (int i=0; i<data.length; i++)
{
if (data[i].length <= 0 || data[i].length != nCols) throw new IllegalArgumentException("Invalid data");
}
this.data = data;
}
public BasicMatrix(Matrix mIn)
{
int nRows = mIn.getNRows();
int nCols = mIn.getNColumns();
data = new double[nRows][nCols];
for (int i=0; i<nRows; i++)
{
for (int j=0; j<nCols; j++)
{
data[i][j] = mIn.e(i,j);
}
}
}
public int getNRows()
{
return data.length;
}
public int getNColumns()
{
return data[0].length;
}
public double e(int row, int column)
{
return data[row][column];
}
public double det()
{
return MatrixOp.det(this);
}
public String toString()
{
return MatrixOp.toString(this);
}
public void setElement(int row, int column, double value)
{
data[row][column] = value;
}
public void invert() throws MatrixOp.IndeterminateMatrixException
{
MatrixOp.inverse(this,this);
}
public void transpose()
{
MatrixOp.transposed(this,this);
}
}