Mercurial > hg > octave-nkf
diff liboctave/dbleQR.cc @ 7482:29980c6b8604
don't check f77_exception_encountered
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 14 Feb 2008 21:57:50 -0500 |
parents | a1dbe9d80eee |
children | 56be6f31dd4e |
line wrap: on
line diff
--- a/liboctave/dbleQR.cc +++ b/liboctave/dbleQR.cc @@ -76,56 +76,45 @@ F77_XFCN (dgeqrf, DGEQRF, (m, n, tmp_data, m, ptau, pwork, lwork, info)); - if (f77_exception_encountered) - (*current_liboctave_error_handler) ("unrecoverable error in dgeqrf"); + if (qr_type == QR::raw) + { + for (octave_idx_type j = 0; j < min_mn; j++) + { + octave_idx_type limit = j < min_mn - 1 ? j : min_mn - 1; + for (octave_idx_type i = limit + 1; i < m; i++) + A_fact.elem (i, j) *= tau.elem (j); + } + + r = A_fact; + + if (m > n) + r.resize (m, n); + } else { - if (qr_type == QR::raw) - { - for (octave_idx_type j = 0; j < min_mn; j++) - { - octave_idx_type limit = j < min_mn - 1 ? j : min_mn - 1; - for (octave_idx_type i = limit + 1; i < m; i++) - A_fact.elem (i, j) *= tau.elem (j); - } - - r = A_fact; + octave_idx_type n2 = (qr_type == QR::economy) ? min_mn : m; - if (m > n) - r.resize (m, n); - } + if (qr_type == QR::economy && m > n) + r.resize (n, n, 0.0); else - { - octave_idx_type n2 = (qr_type == QR::economy) ? min_mn : m; - - if (qr_type == QR::economy && m > n) - r.resize (n, n, 0.0); - else - r.resize (m, n, 0.0); + r.resize (m, n, 0.0); - for (octave_idx_type j = 0; j < n; j++) - { - octave_idx_type limit = j < min_mn-1 ? j : min_mn-1; - for (octave_idx_type i = 0; i <= limit; i++) - r.elem (i, j) = tmp_data[m*j+i]; - } - - lwork = 32 * n2; - work.resize (lwork); - double *pwork2 = work.fortran_vec (); + for (octave_idx_type j = 0; j < n; j++) + { + octave_idx_type limit = j < min_mn-1 ? j : min_mn-1; + for (octave_idx_type i = 0; i <= limit; i++) + r.elem (i, j) = tmp_data[m*j+i]; + } - F77_XFCN (dorgqr, DORGQR, (m, n2, min_mn, tmp_data, m, ptau, - pwork2, lwork, info)); + lwork = 32 * n2; + work.resize (lwork); + double *pwork2 = work.fortran_vec (); - if (f77_exception_encountered) - (*current_liboctave_error_handler) - ("unrecoverable error in dorgqr"); - else - { - q = A_fact; - q.resize (m, n2); - } - } + F77_XFCN (dorgqr, DORGQR, (m, n2, min_mn, tmp_data, m, ptau, + pwork2, lwork, info)); + + q = A_fact; + q.resize (m, n2); } }