public void setup(FMatrixRMaj A) { implicitQR.setup(A); implicitQR.setQ(null); splits = new int[A.numRows]; numSplits = 0; }
public bool process(WatchedDoubleStepQREigen_FDRM imp, FMatrixRMaj A, FMatrixRMaj Q_h) { this._implicit = imp; if (N != A.numRows) { N = A.numRows; Q = new FMatrixRMaj(N, N); splits = new int[N]; origEigenvalues = new Complex_F32[N]; eigenvectors = new FMatrixRMaj[N]; eigenvectorTemp = new FMatrixRMaj(N, 1); solver = LinearSolverFactory_FDRM.linear(0); } else { // UtilEjml.setnull(eigenvectors); eigenvectors = new FMatrixRMaj[N]; } Array.Copy(_implicit.eigenvalues, 0, origEigenvalues, 0, N); _implicit.setup(A); _implicit.setQ(Q); numSplits = 0; onscript = true; // Console.WriteLine("Orig A"); // A.print("%12.10ff"); if (!findQandR()) { return(false); } return(extractVectors(Q_h)); }