package Jampack; /** Zmat implements general complex matrix stored in a rectangular array class Z. @version Pre-alpha @author G. W. Stewart */ public class Zmat{ /** The number of rows */ protected int nrow; /** The number of columns */ protected int ncol; /** The base index */ protected int basex; /** The real part of the matrix */ protected double re[][]; /** The imaginary part of the matrix */ protected double im[][]; /** True if the matrix has been altered */ protected boolean dirty; /** Points to an LU decompoistion of the matrix provided one exists */ protected Zludpp LU; /** Points to a Householder QR decompoistion of the matrix provided one exists */ protected Zhqrd HQR; /** Points to a Cholesky decompoistion of the matrix provided one exists */ protected Zchol CHOL; /** The base index */ public int bx; /** The upper row index */ public int rx; /** The number of rows */ public int nr; /** The upper column index */ public int cx; /** The number of columns */ public int nc; /** Creates a Zmat and initializes its real and imaginary parts to a pair of arrays. @param re Contains the real part. @param im Contains the imaginary part. @exception JampackException if the dimensions of re and im do not match */ public Zmat(double re[][], double im[][]) throws JampackException{ Parameters.BaseIndexNotChangeable = true; basex = Parameters.BaseIndex; nrow = re.length; ncol = re[0].length; if (nrow != im.length || ncol != im[0].length) throw new JampackException ("Inconsistent array dimensions"); getProperties(); this.re = new double[nr][nc]; this.im = new double[nr][nc]; for (int i=0; i