Mercurial > hg > octave-lyh
diff liboctave/CmplxQR.cc @ 3883:69b6bd271277
[project @ 2002-04-02 21:05:10 by jwe]
author | jwe |
---|---|
date | Tue, 02 Apr 2002 21:05:10 +0000 |
parents | db6d57d718f7 |
children | 7da18459c08b |
line wrap: on
line diff
--- a/liboctave/CmplxQR.cc +++ b/liboctave/CmplxQR.cc @@ -74,7 +74,7 @@ int info = 0; ComplexMatrix A_fact; - if (m > n) + if (m > n && qr_type != QR::economy) { A_fact.resize (m, m); A_fact.insert (a, 0, 0); @@ -106,18 +106,12 @@ } else { - volatile int n2; + int n2 = (qr_type == QR::economy) ? min_mn : m; if (qr_type == QR::economy && m > n) - { - n2 = n; - r.resize (n, n, 0.0); - } + r.resize (n, n, 0.0); else - { - n2 = m; - r.resize (m, n, 0.0); - } + r.resize (m, n, 0.0); for (int j = 0; j < n; j++) { @@ -126,11 +120,11 @@ r.elem (i, j) = A_fact.elem (i, j); } - lwork = 32*m; + lwork = 32 * n2; work.resize (lwork); Complex *pwork = work.fortran_vec (); - F77_XFCN (zungqr, ZUNGQR, (m, m, min_mn, tmp_data, m, ptau, + F77_XFCN (zungqr, ZUNGQR, (m, n2, min_mn, tmp_data, m, ptau, pwork, lwork, info)); if (f77_exception_encountered)