/** * Constructs a QR decomposition for the specified matrix A. * @param a the m-by-n matrix A with m>=n. */ public DMatrixQrd(DMatrix a) { Check.argument(a.getM()>=a.getN(),"m >= n"); _m = a.getM(); _n = a.getN(); _k = min(_m,_n); // same as n, but might not be if we allow m<n _qr = a.getPackedColumns(); _tau = new double[_k]; _work = new double[1]; LapackInfo li = new LapackInfo(); _lapack.dgeqrf(_m,_n,_qr,_m,_tau,_work,-1,li); li.check("dgeqrf"); _lwork = (int)_work[0]; _work = new double[_lwork]; _lapack.dgeqrf(_m,_n,_qr,_m,_tau,_work,_lwork,li); li.check("dgeqrf"); }