# HG changeset patch # User Rik # Date 1630297112 25200 # Node ID 97378503ee0ac5bbda2a8e6230eb4907ebd72a13 # Parent fc509c3c445a732a1529e316995654450efa0915 maint: use "m_" prefix for member variables in class qr. * qr.cc, qr.h: use "m_" prefix for member variables in class qr. diff -r fc509c3c445a -r 97378503ee0a liboctave/numeric/qr.cc --- a/liboctave/numeric/qr.cc Sun Aug 29 20:16:10 2021 -0700 +++ b/liboctave/numeric/qr.cc Sun Aug 29 21:18:32 2021 -0700 @@ -56,13 +56,13 @@ { template qr::qr (const T& q_arg, const T& r_arg) - : q (q_arg), r (r_arg) + : m_q (q_arg), m_r (r_arg) { - octave_idx_type q_nr = q.rows (); - octave_idx_type q_nc = q.cols (); + octave_idx_type q_nr = m_q.rows (); + octave_idx_type q_nc = m_q.cols (); - octave_idx_type r_nr = r.rows (); - octave_idx_type r_nc = r.cols (); + octave_idx_type r_nr = m_r.rows (); + octave_idx_type r_nc = m_r.cols (); if (! (q_nc == r_nr && (q_nr == q_nc || (q_nr > q_nc && r_nr == r_nc)))) (*current_liboctave_error_handler) ("QR dimensions mismatch"); @@ -74,9 +74,9 @@ { type retval; - if (! q.isempty () && q.issquare ()) + if (! m_q.isempty () && m_q.issquare ()) retval = qr::std; - else if (q.rows () > q.cols () && r.issquare ()) + else if (m_q.rows () > m_q.cols () && m_r.issquare ()) retval = qr::economy; else retval = qr::raw; @@ -90,11 +90,11 @@ { bool retval = true; - octave_idx_type k = std::min (r.rows (), r.cols ()); + octave_idx_type k = std::min (m_r.rows (), m_r.cols ()); for (octave_idx_type i = 0; i < k; i++) { - if (r(i, i) == ELT_T ()) + if (m_r(i, i) == ELT_T ()) { retval = false; break; @@ -132,13 +132,13 @@ { warn_qrupdate_once (); - octave_idx_type m = q.rows (); - octave_idx_type n = r.cols (); + octave_idx_type m = m_q.rows (); + octave_idx_type n = m_r.cols (); if (u.numel () != m || v.numel () != n) (*current_liboctave_error_handler) ("qrupdate: dimensions mismatch"); - init (q*r + T (u) * T (v).hermitian (), get_type ()); + init (m_q*m_r + T (u) * T (v).hermitian (), get_type ()); } template @@ -147,13 +147,13 @@ { warn_qrupdate_once (); - octave_idx_type m = q.rows (); - octave_idx_type n = r.cols (); + octave_idx_type m = m_q.rows (); + octave_idx_type n = m_r.cols (); if (u.rows () != m || v.rows () != n || u.cols () != v.cols ()) (*current_liboctave_error_handler) ("qrupdate: dimensions mismatch"); - init (q*r + u * v.hermitian (), get_type ()); + init (m_q*m_r + u * v.hermitian (), get_type ()); } template @@ -232,8 +232,8 @@ { warn_qrupdate_once (); - octave_idx_type m = q.rows (); - octave_idx_type n = r.cols (); + octave_idx_type m = m_q.rows (); + octave_idx_type n = m_r.cols (); if (u.numel () != m) (*current_liboctave_error_handler) ("qrinsert: dimensions mismatch"); @@ -241,7 +241,7 @@ if (j < 0 || j > n) (*current_liboctave_error_handler) ("qrinsert: index out of range"); - init (math::insert_col (q*r, j, u), get_type ()); + init (math::insert_col (m_q*m_r, j, u), get_type ()); } template @@ -250,8 +250,8 @@ { warn_qrupdate_once (); - octave_idx_type m = q.rows (); - octave_idx_type n = r.cols (); + octave_idx_type m = m_q.rows (); + octave_idx_type n = m_r.cols (); Array jsi; Array js = j.sort (jsi, 0, ASCENDING); @@ -271,7 +271,7 @@ if (nj > 0) { - T a = q*r; + T a = m_q*m_r; for (octave_idx_type i = 0; i < nj; i++) a = math::insert_col (a, js(i), u.column (i)); @@ -285,12 +285,12 @@ { warn_qrupdate_once (); - octave_idx_type n = r.cols (); + octave_idx_type n = m_r.cols (); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - init (math::delete_col (q*r, j), get_type ()); + init (math::delete_col (m_q*m_r, j), get_type ()); } template @@ -299,7 +299,7 @@ { warn_qrupdate_once (); - octave_idx_type n = r.cols (); + octave_idx_type n = m_r.cols (); Array jsi; Array js = j.sort (jsi, 0, DESCENDING); @@ -316,7 +316,7 @@ if (nj > 0) { - T a = q*r; + T a = m_q*m_r; for (octave_idx_type i = 0; i < nj; i++) a = math::delete_col (a, js(i)); @@ -330,16 +330,16 @@ { warn_qrupdate_once (); - octave_idx_type m = r.rows (); - octave_idx_type n = r.cols (); + octave_idx_type m = m_r.rows (); + octave_idx_type n = m_r.cols (); - if (! q.issquare () || u.numel () != n) + if (! m_q.issquare () || u.numel () != n) (*current_liboctave_error_handler) ("qrinsert: dimensions mismatch"); if (j < 0 || j > m) (*current_liboctave_error_handler) ("qrinsert: index out of range"); - init (math::insert_row (q*r, j, u), get_type ()); + init (math::insert_row (m_q*m_r, j, u), get_type ()); } template @@ -348,15 +348,15 @@ { warn_qrupdate_once (); - octave_idx_type m = r.rows (); + octave_idx_type m = m_r.rows (); - if (! q.issquare ()) + if (! m_q.issquare ()) (*current_liboctave_error_handler) ("qrdelete: dimensions mismatch"); if (j < 0 || j > m-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - init (math::delete_row (q*r, j), get_type ()); + init (math::delete_row (m_q*m_r, j), get_type ()); } template @@ -365,12 +365,12 @@ { warn_qrupdate_once (); - octave_idx_type n = r.cols (); + octave_idx_type n = m_r.cols (); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrshift: index out of range"); - init (math::shift_cols (q*r, i, j), get_type ()); + init (math::shift_cols (m_q*m_r, i, j), get_type ()); } #endif @@ -396,53 +396,53 @@ afact.elem (i, j) *= tau[j]; } - r = afact; + m_r = afact; } else { // Attempt to minimize copying. if (m >= n) { - // afact will become q. - q = afact; + // afact will become m_q. + m_q = afact; F77_INT k = (qr_type == qr::economy ? n : m); - r = Matrix (k, n); + m_r = Matrix (k, n); for (F77_INT j = 0; j < n; j++) { F77_INT i = 0; for (; i <= j; i++) - r.xelem (i, j) = afact.xelem (i, j); + m_r.xelem (i, j) = afact.xelem (i, j); for (; i < k; i++) - r.xelem (i, j) = 0; + m_r.xelem (i, j) = 0; } afact = Matrix (); // optimize memory } else { - // afact will become r. - q = Matrix (m, m); + // afact will become m_r. + m_q = Matrix (m, m); for (F77_INT j = 0; j < m; j++) for (F77_INT i = j + 1; i < m; i++) { - q.xelem (i, j) = afact.xelem (i, j); + m_q.xelem (i, j) = afact.xelem (i, j); afact.xelem (i, j) = 0; } - r = afact; + m_r = afact; } if (m > 0) { - F77_INT k = to_f77_int (q.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); // workspace query. double rlwork; - F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, q.fortran_vec (), m, + F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, m_q.fortran_vec (), m, tau, &rlwork, -1, info)); // allocate buffer and do the job. F77_INT lwork = static_cast (rlwork); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (double, work, lwork); - F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, q.fortran_vec (), m, + F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, m_q.fortran_vec (), m, tau, work, lwork, info)); } } @@ -488,9 +488,9 @@ OCTAVE_API void qr::update (const ColumnVector& u, const ColumnVector& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); F77_INT v_nel = to_f77_int (v.numel ()); @@ -501,8 +501,8 @@ ColumnVector utmp = u; ColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (double, w, 2*k); - F77_XFCN (dqr1up, DQR1UP, (m, n, k, q.fortran_vec (), m, - r.fortran_vec (), k, utmp.fortran_vec (), + F77_XFCN (dqr1up, DQR1UP, (m, n, k, m_q.fortran_vec (), m, + m_r.fortran_vec (), k, utmp.fortran_vec (), vtmp.fortran_vec (), w)); } @@ -510,9 +510,9 @@ OCTAVE_API void qr::update (const Matrix& u, const Matrix& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_rows = to_f77_int (u.rows ()); F77_INT u_cols = to_f77_int (u.cols ()); @@ -528,8 +528,8 @@ { ColumnVector utmp = u.column (i); ColumnVector vtmp = v.column (i); - F77_XFCN (dqr1up, DQR1UP, (m, n, k, q.fortran_vec (), m, - r.fortran_vec (), k, utmp.fortran_vec (), + F77_XFCN (dqr1up, DQR1UP, (m, n, k, m_q.fortran_vec (), m, + m_r.fortran_vec (), k, utmp.fortran_vec (), vtmp.fortran_vec (), w)); } } @@ -540,9 +540,9 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); @@ -554,19 +554,19 @@ if (k < m) { - q.resize (m, k+1); - r.resize (k+1, n+1); + m_q.resize (m, k+1); + m_r.resize (k+1, n+1); } else - r.resize (k, n+1); + m_r.resize (k, n+1); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); ColumnVector utmp = u; OCTAVE_LOCAL_BUFFER (double, w, k); - F77_XFCN (dqrinc, DQRINC, (m, n, k, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, j + 1, + F77_XFCN (dqrinc, DQRINC, (m, n, k, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, utmp.data (), w)); } @@ -574,9 +574,9 @@ OCTAVE_API void qr::insert_col (const Matrix& u, const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, ASCENDING); @@ -605,14 +605,14 @@ F77_INT kmax = std::min (k + nj, m); if (k < m) { - q.resize (m, kmax); - r.resize (kmax, n + nj); + m_q.resize (m, kmax); + m_r.resize (kmax, n + nj); } else - r.resize (k, n + nj); + m_r.resize (k, n + nj); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, w, kmax); for (volatile F77_INT i = 0; i < nj; i++) @@ -621,8 +621,8 @@ ColumnVector utmp = u.column (jsi(i)); F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (dqrinc, DQRINC, (m, n + ii, std::min (kmax, k + ii), - q.fortran_vec (), ldq, - r.fortran_vec (), ldr, js_elt + 1, + m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, js_elt + 1, utmp.data (), w)); } } @@ -634,36 +634,36 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, w, k); - F77_XFCN (dqrdec, DQRDEC, (m, n, k, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, j + 1, w)); + F77_XFCN (dqrdec, DQRDEC, (m, n, k, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, w)); if (k < m) { - q.resize (m, k-1); - r.resize (k-1, n-1); + m_q.resize (m, k-1); + m_r.resize (k-1, n-1); } else - r.resize (k, n-1); + m_r.resize (k, n-1); } template <> OCTAVE_API void qr::delete_col (const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, DESCENDING); @@ -683,8 +683,8 @@ if (nj > 0) { - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, w, k); for (volatile F77_INT i = 0; i < nj; i++) @@ -692,18 +692,18 @@ F77_INT ii = i; F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (dqrdec, DQRDEC, (m, n - ii, (k == m ? k : k - ii), - q.fortran_vec (), ldq, - r.fortran_vec (), ldr, + m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, js_elt + 1, w)); } if (k < m) { - q.resize (m, k - nj); - r.resize (k - nj, n - nj); + m_q.resize (m, k - nj); + m_r.resize (k - nj, n - nj); } else - r.resize (k, n - nj); + m_r.resize (k, n - nj); } } @@ -713,28 +713,28 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); F77_INT k = std::min (m, n); F77_INT u_nel = to_f77_int (u.numel ()); - if (! q.issquare () || u_nel != n) + if (! m_q.issquare () || u_nel != n) (*current_liboctave_error_handler) ("qrinsert: dimensions mismatch"); if (j < 0 || j > m) (*current_liboctave_error_handler) ("qrinsert: index out of range"); - q.resize (m + 1, m + 1); - r.resize (m + 1, n); + m_q.resize (m + 1, m + 1); + m_r.resize (m + 1, n); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); RowVector utmp = u; OCTAVE_LOCAL_BUFFER (double, w, k); - F77_XFCN (dqrinr, DQRINR, (m, n, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, + F77_XFCN (dqrinr, DQRINR, (m, n, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, utmp.fortran_vec (), w)); } @@ -745,24 +745,24 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); - if (! q.issquare ()) + if (! m_q.issquare ()) (*current_liboctave_error_handler) ("qrdelete: dimensions mismatch"); if (j < 0 || j > m-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, w, 2*m); - F77_XFCN (dqrder, DQRDER, (m, n, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, j + 1, w)); + F77_XFCN (dqrder, DQRDER, (m, n, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, w)); - q.resize (m - 1, m - 1); - r.resize (m - 1, n); + m_q.resize (m - 1, m - 1); + m_r.resize (m - 1, n); } template <> @@ -772,20 +772,20 @@ F77_INT i = to_f77_int (i_arg); F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrshift: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, w, 2*k); F77_XFCN (dqrshc, DQRSHC, (m, n, k, - q.fortran_vec (), ldq, - r.fortran_vec (), ldr, + m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, i + 1, j + 1, w)); } @@ -810,53 +810,53 @@ afact.elem (i, j) *= tau[j]; } - r = afact; + m_r = afact; } else { // Attempt to minimize copying. if (m >= n) { - // afact will become q. - q = afact; + // afact will become m_q. + m_q = afact; F77_INT k = (qr_type == qr::economy ? n : m); - r = FloatMatrix (k, n); + m_r = FloatMatrix (k, n); for (F77_INT j = 0; j < n; j++) { F77_INT i = 0; for (; i <= j; i++) - r.xelem (i, j) = afact.xelem (i, j); + m_r.xelem (i, j) = afact.xelem (i, j); for (; i < k; i++) - r.xelem (i, j) = 0; + m_r.xelem (i, j) = 0; } afact = FloatMatrix (); // optimize memory } else { - // afact will become r. - q = FloatMatrix (m, m); + // afact will become m_r. + m_q = FloatMatrix (m, m); for (F77_INT j = 0; j < m; j++) for (F77_INT i = j + 1; i < m; i++) { - q.xelem (i, j) = afact.xelem (i, j); + m_q.xelem (i, j) = afact.xelem (i, j); afact.xelem (i, j) = 0; } - r = afact; + m_r = afact; } if (m > 0) { - F77_INT k = to_f77_int (q.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); // workspace query. float rlwork; - F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, q.fortran_vec (), m, + F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, m_q.fortran_vec (), m, tau, &rlwork, -1, info)); // allocate buffer and do the job. F77_INT lwork = static_cast (rlwork); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (float, work, lwork); - F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, q.fortran_vec (), m, + F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, m_q.fortran_vec (), m, tau, work, lwork, info)); } } @@ -902,9 +902,9 @@ OCTAVE_API void qr::update (const FloatColumnVector& u, const FloatColumnVector& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); F77_INT v_nel = to_f77_int (v.numel ()); @@ -915,8 +915,8 @@ FloatColumnVector utmp = u; FloatColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (float, w, 2*k); - F77_XFCN (sqr1up, SQR1UP, (m, n, k, q.fortran_vec (), m, - r.fortran_vec (), k, utmp.fortran_vec (), + F77_XFCN (sqr1up, SQR1UP, (m, n, k, m_q.fortran_vec (), m, + m_r.fortran_vec (), k, utmp.fortran_vec (), vtmp.fortran_vec (), w)); } @@ -924,9 +924,9 @@ OCTAVE_API void qr::update (const FloatMatrix& u, const FloatMatrix& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_rows = to_f77_int (u.rows ()); F77_INT u_cols = to_f77_int (u.cols ()); @@ -942,8 +942,8 @@ { FloatColumnVector utmp = u.column (i); FloatColumnVector vtmp = v.column (i); - F77_XFCN (sqr1up, SQR1UP, (m, n, k, q.fortran_vec (), m, - r.fortran_vec (), k, utmp.fortran_vec (), + F77_XFCN (sqr1up, SQR1UP, (m, n, k, m_q.fortran_vec (), m, + m_r.fortran_vec (), k, utmp.fortran_vec (), vtmp.fortran_vec (), w)); } } @@ -955,9 +955,9 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); @@ -969,19 +969,19 @@ if (k < m) { - q.resize (m, k+1); - r.resize (k+1, n+1); + m_q.resize (m, k+1); + m_r.resize (k+1, n+1); } else - r.resize (k, n+1); + m_r.resize (k, n+1); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); FloatColumnVector utmp = u; OCTAVE_LOCAL_BUFFER (float, w, k); - F77_XFCN (sqrinc, SQRINC, (m, n, k, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, j + 1, + F77_XFCN (sqrinc, SQRINC, (m, n, k, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, utmp.data (), w)); } @@ -990,9 +990,9 @@ qr::insert_col (const FloatMatrix& u, const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, ASCENDING); @@ -1021,14 +1021,14 @@ F77_INT kmax = std::min (k + nj, m); if (k < m) { - q.resize (m, kmax); - r.resize (kmax, n + nj); + m_q.resize (m, kmax); + m_r.resize (kmax, n + nj); } else - r.resize (k, n + nj); + m_r.resize (k, n + nj); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, w, kmax); for (volatile F77_INT i = 0; i < nj; i++) @@ -1037,8 +1037,8 @@ FloatColumnVector utmp = u.column (jsi(i)); F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (sqrinc, SQRINC, (m, n + ii, std::min (kmax, k + ii), - q.fortran_vec (), ldq, - r.fortran_vec (), ldr, js_elt + 1, + m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, js_elt + 1, utmp.data (), w)); } } @@ -1050,36 +1050,36 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, w, k); - F77_XFCN (sqrdec, SQRDEC, (m, n, k, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, j + 1, w)); + F77_XFCN (sqrdec, SQRDEC, (m, n, k, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, w)); if (k < m) { - q.resize (m, k-1); - r.resize (k-1, n-1); + m_q.resize (m, k-1); + m_r.resize (k-1, n-1); } else - r.resize (k, n-1); + m_r.resize (k, n-1); } template <> OCTAVE_API void qr::delete_col (const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, DESCENDING); @@ -1099,8 +1099,8 @@ if (nj > 0) { - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, w, k); for (volatile F77_INT i = 0; i < nj; i++) @@ -1108,18 +1108,18 @@ F77_INT ii = i; F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (sqrdec, SQRDEC, (m, n - ii, (k == m ? k : k - ii), - q.fortran_vec (), ldq, - r.fortran_vec (), ldr, + m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, js_elt + 1, w)); } if (k < m) { - q.resize (m, k - nj); - r.resize (k - nj, n - nj); + m_q.resize (m, k - nj); + m_r.resize (k - nj, n - nj); } else - r.resize (k, n - nj); + m_r.resize (k, n - nj); } } @@ -1130,28 +1130,28 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); F77_INT k = std::min (m, n); F77_INT u_nel = to_f77_int (u.numel ()); - if (! q.issquare () || u_nel != n) + if (! m_q.issquare () || u_nel != n) (*current_liboctave_error_handler) ("qrinsert: dimensions mismatch"); if (j < 0 || j > m) (*current_liboctave_error_handler) ("qrinsert: index out of range"); - q.resize (m + 1, m + 1); - r.resize (m + 1, n); + m_q.resize (m + 1, m + 1); + m_r.resize (m + 1, n); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); FloatRowVector utmp = u; OCTAVE_LOCAL_BUFFER (float, w, k); - F77_XFCN (sqrinr, SQRINR, (m, n, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, + F77_XFCN (sqrinr, SQRINR, (m, n, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, utmp.fortran_vec (), w)); } @@ -1162,25 +1162,25 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); - if (! q.issquare ()) + if (! m_q.issquare ()) (*current_liboctave_error_handler) ("qrdelete: dimensions mismatch"); if (j < 0 || j > m-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, w, 2*m); - F77_XFCN (sqrder, SQRDER, (m, n, q.fortran_vec (), ldq, - r.fortran_vec (), ldr, j + 1, + F77_XFCN (sqrder, SQRDER, (m, n, m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, j + 1, w)); - q.resize (m - 1, m - 1); - r.resize (m - 1, n); + m_q.resize (m - 1, m - 1); + m_r.resize (m - 1, n); } template <> @@ -1190,20 +1190,20 @@ F77_INT i = to_f77_int (i_arg); F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrshift: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, w, 2*k); F77_XFCN (sqrshc, SQRSHC, (m, n, k, - q.fortran_vec (), ldq, - r.fortran_vec (), ldr, + m_q.fortran_vec (), ldq, + m_r.fortran_vec (), ldr, i + 1, j + 1, w)); } @@ -1228,47 +1228,47 @@ afact.elem (i, j) *= tau[j]; } - r = afact; + m_r = afact; } else { // Attempt to minimize copying. if (m >= n) { - // afact will become q. - q = afact; + // afact will become m_q. + m_q = afact; F77_INT k = (qr_type == qr::economy ? n : m); - r = ComplexMatrix (k, n); + m_r = ComplexMatrix (k, n); for (F77_INT j = 0; j < n; j++) { F77_INT i = 0; for (; i <= j; i++) - r.xelem (i, j) = afact.xelem (i, j); + m_r.xelem (i, j) = afact.xelem (i, j); for (; i < k; i++) - r.xelem (i, j) = 0; + m_r.xelem (i, j) = 0; } afact = ComplexMatrix (); // optimize memory } else { - // afact will become r. - q = ComplexMatrix (m, m); + // afact will become m_r. + m_q = ComplexMatrix (m, m); for (F77_INT j = 0; j < m; j++) for (F77_INT i = j + 1; i < m; i++) { - q.xelem (i, j) = afact.xelem (i, j); + m_q.xelem (i, j) = afact.xelem (i, j); afact.xelem (i, j) = 0; } - r = afact; + m_r = afact; } if (m > 0) { - F77_INT k = to_f77_int (q.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); // workspace query. Complex clwork; F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn, - F77_DBLE_CMPLX_ARG (q.fortran_vec ()), + F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (tau), F77_DBLE_CMPLX_ARG (&clwork), -1, info)); @@ -1278,7 +1278,7 @@ lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (Complex, work, lwork); F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn, - F77_DBLE_CMPLX_ARG (q.fortran_vec ()), + F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (tau), F77_DBLE_CMPLX_ARG (work), lwork, info)); @@ -1331,9 +1331,9 @@ qr::update (const ComplexColumnVector& u, const ComplexColumnVector& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); F77_INT v_nel = to_f77_int (v.numel ()); @@ -1345,8 +1345,8 @@ ComplexColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (Complex, w, k); OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqr1up, ZQR1UP, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), - m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, + F77_XFCN (zqr1up, ZQR1UP, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), k, F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (w), rw)); @@ -1356,9 +1356,9 @@ OCTAVE_API void qr::update (const ComplexMatrix& u, const ComplexMatrix& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_rows = to_f77_int (u.rows ()); F77_INT u_cols = to_f77_int (u.cols ()); @@ -1376,8 +1376,8 @@ ComplexColumnVector utmp = u.column (i); ComplexColumnVector vtmp = v.column (i); F77_XFCN (zqr1up, ZQR1UP, (m, n, k, - F77_DBLE_CMPLX_ARG (q.fortran_vec ()), - m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, + F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), k, F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (w), rw)); @@ -1391,9 +1391,9 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); @@ -1405,19 +1405,19 @@ if (k < m) { - q.resize (m, k+1); - r.resize (k+1, n+1); + m_q.resize (m, k+1); + m_r.resize (k+1, n+1); } else - r.resize (k, n+1); + m_r.resize (k, n+1); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); ComplexColumnVector utmp = u; OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqrinc, ZQRINC, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), - ldq, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), + F77_XFCN (zqrinc, ZQRINC, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), + ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), rw)); } @@ -1427,9 +1427,9 @@ qr::insert_col (const ComplexMatrix& u, const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, ASCENDING); @@ -1458,14 +1458,14 @@ F77_INT kmax = std::min (k + nj, m); if (k < m) { - q.resize (m, kmax); - r.resize (kmax, n + nj); + m_q.resize (m, kmax); + m_r.resize (kmax, n + nj); } else - r.resize (k, n + nj); + m_r.resize (k, n + nj); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, rw, kmax); for (volatile F77_INT i = 0; i < nj; i++) @@ -1474,9 +1474,9 @@ ComplexColumnVector utmp = u.column (jsi(i)); F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (zqrinc, ZQRINC, (m, n + ii, std::min (kmax, k + ii), - F77_DBLE_CMPLX_ARG (q.fortran_vec ()), + F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), ldq, - F77_DBLE_CMPLX_ARG (r.fortran_vec ()), + F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, js_elt + 1, F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), rw)); @@ -1490,37 +1490,37 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqrdec, ZQRDEC, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), - ldq, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), + F77_XFCN (zqrdec, ZQRDEC, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), + ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, rw)); if (k < m) { - q.resize (m, k-1); - r.resize (k-1, n-1); + m_q.resize (m, k-1); + m_r.resize (k-1, n-1); } else - r.resize (k, n-1); + m_r.resize (k, n-1); } template <> OCTAVE_API void qr::delete_col (const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, DESCENDING); @@ -1540,8 +1540,8 @@ if (nj > 0) { - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (double, rw, k); for (volatile F77_INT i = 0; i < nj; i++) @@ -1549,19 +1549,19 @@ F77_INT ii = i; F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (zqrdec, ZQRDEC, (m, n - ii, (k == m ? k : k - ii), - F77_DBLE_CMPLX_ARG (q.fortran_vec ()), + F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), ldq, - F77_DBLE_CMPLX_ARG (r.fortran_vec ()), + F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, js_elt + 1, rw)); } if (k < m) { - q.resize (m, k - nj); - r.resize (k - nj, n - nj); + m_q.resize (m, k - nj); + m_r.resize (k - nj, n - nj); } else - r.resize (k, n - nj); + m_r.resize (k, n - nj); } } @@ -1572,28 +1572,28 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); F77_INT k = std::min (m, n); F77_INT u_nel = to_f77_int (u.numel ()); - if (! q.issquare () || u_nel != n) + if (! m_q.issquare () || u_nel != n) (*current_liboctave_error_handler) ("qrinsert: dimensions mismatch"); if (j < 0 || j > m) (*current_liboctave_error_handler) ("qrinsert: index out of range"); - q.resize (m + 1, m + 1); - r.resize (m + 1, n); + m_q.resize (m + 1, m + 1); + m_r.resize (m + 1, n); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); ComplexRowVector utmp = u; OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqrinr, ZQRINR, (m, n, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), - ldq, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), + F77_XFCN (zqrinr, ZQRINR, (m, n, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), + ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw)); @@ -1605,26 +1605,26 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); - if (! q.issquare ()) + if (! m_q.issquare ()) (*current_liboctave_error_handler) ("qrdelete: dimensions mismatch"); if (j < 0 || j > m-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (Complex, w, m); OCTAVE_LOCAL_BUFFER (double, rw, m); - F77_XFCN (zqrder, ZQRDER, (m, n, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), - ldq, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), + F77_XFCN (zqrder, ZQRDER, (m, n, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), + ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, F77_DBLE_CMPLX_ARG (w), rw)); - q.resize (m - 1, m - 1); - r.resize (m - 1, n); + m_q.resize (m - 1, m - 1); + m_r.resize (m - 1, n); } template <> @@ -1635,21 +1635,21 @@ F77_INT i = to_f77_int (i_arg); F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrshift: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (Complex, w, k); OCTAVE_LOCAL_BUFFER (double, rw, k); F77_XFCN (zqrshc, ZQRSHC, (m, n, k, - F77_DBLE_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_DBLE_CMPLX_ARG (r.fortran_vec ()), ldr, + F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr, i + 1, j + 1, F77_DBLE_CMPLX_ARG (w), rw)); } @@ -1674,47 +1674,47 @@ afact.elem (i, j) *= tau[j]; } - r = afact; + m_r = afact; } else { // Attempt to minimize copying. if (m >= n) { - // afact will become q. - q = afact; + // afact will become m_q. + m_q = afact; F77_INT k = (qr_type == qr::economy ? n : m); - r = FloatComplexMatrix (k, n); + m_r = FloatComplexMatrix (k, n); for (F77_INT j = 0; j < n; j++) { F77_INT i = 0; for (; i <= j; i++) - r.xelem (i, j) = afact.xelem (i, j); + m_r.xelem (i, j) = afact.xelem (i, j); for (; i < k; i++) - r.xelem (i, j) = 0; + m_r.xelem (i, j) = 0; } afact = FloatComplexMatrix (); // optimize memory } else { - // afact will become r. - q = FloatComplexMatrix (m, m); + // afact will become m_r. + m_q = FloatComplexMatrix (m, m); for (F77_INT j = 0; j < m; j++) for (F77_INT i = j + 1; i < m; i++) { - q.xelem (i, j) = afact.xelem (i, j); + m_q.xelem (i, j) = afact.xelem (i, j); afact.xelem (i, j) = 0; } - r = afact; + m_r = afact; } if (m > 0) { - F77_INT k = to_f77_int (q.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); // workspace query. FloatComplex clwork; F77_XFCN (cungqr, CUNGQR, (m, k, min_mn, - F77_CMPLX_ARG (q.fortran_vec ()), m, + F77_CMPLX_ARG (m_q.fortran_vec ()), m, F77_CMPLX_ARG (tau), F77_CMPLX_ARG (&clwork), -1, info)); @@ -1723,7 +1723,7 @@ lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork); F77_XFCN (cungqr, CUNGQR, (m, k, min_mn, - F77_CMPLX_ARG (q.fortran_vec ()), m, + F77_CMPLX_ARG (m_q.fortran_vec ()), m, F77_CMPLX_ARG (tau), F77_CMPLX_ARG (work), lwork, info)); } @@ -1773,9 +1773,9 @@ qr::update (const FloatComplexColumnVector& u, const FloatComplexColumnVector& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); F77_INT v_nel = to_f77_int (v.numel ()); @@ -1787,8 +1787,8 @@ FloatComplexColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (FloatComplex, w, k); OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), - m, F77_CMPLX_ARG (r.fortran_vec ()), k, + F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()), + m, F77_CMPLX_ARG (m_r.fortran_vec ()), k, F77_CMPLX_ARG (utmp.fortran_vec ()), F77_CMPLX_ARG (vtmp.fortran_vec ()), F77_CMPLX_ARG (w), rw)); @@ -1799,9 +1799,9 @@ qr::update (const FloatComplexMatrix& u, const FloatComplexMatrix& v) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_rows = to_f77_int (u.rows ()); F77_INT u_cols = to_f77_int (u.cols ()); @@ -1818,8 +1818,8 @@ { FloatComplexColumnVector utmp = u.column (i); FloatComplexColumnVector vtmp = v.column (i); - F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), - m, F77_CMPLX_ARG (r.fortran_vec ()), k, + F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()), + m, F77_CMPLX_ARG (m_r.fortran_vec ()), k, F77_CMPLX_ARG (utmp.fortran_vec ()), F77_CMPLX_ARG (vtmp.fortran_vec ()), F77_CMPLX_ARG (w), rw)); @@ -1833,9 +1833,9 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); F77_INT u_nel = to_f77_int (u.numel ()); @@ -1847,19 +1847,19 @@ if (k < m) { - q.resize (m, k+1); - r.resize (k+1, n+1); + m_q.resize (m, k+1); + m_r.resize (k+1, n+1); } else - r.resize (k, n+1); + m_r.resize (k, n+1); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); FloatComplexColumnVector utmp = u; OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqrinc, CQRINC, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, j + 1, + F77_XFCN (cqrinc, CQRINC, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, F77_CONST_CMPLX_ARG (utmp.data ()), rw)); } @@ -1868,9 +1868,9 @@ qr::insert_col (const FloatComplexMatrix& u, const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, ASCENDING); @@ -1899,14 +1899,14 @@ F77_INT kmax = std::min (k + nj, m); if (k < m) { - q.resize (m, kmax); - r.resize (kmax, n + nj); + m_q.resize (m, kmax); + m_r.resize (kmax, n + nj); } else - r.resize (k, n + nj); + m_r.resize (k, n + nj); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, rw, kmax); for (volatile F77_INT i = 0; i < nj; i++) @@ -1914,8 +1914,8 @@ F77_INT ii = i; F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (cqrinc, CQRINC, (m, n + ii, std::min (kmax, k + ii), - F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, + F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, js_elt + 1, F77_CONST_CMPLX_ARG (u.column (jsi(i)).data ()), rw)); @@ -1929,37 +1929,37 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqrdec, CQRDEC, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, j + 1, + F77_XFCN (cqrdec, CQRDEC, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, rw)); if (k < m) { - q.resize (m, k-1); - r.resize (k-1, n-1); + m_q.resize (m, k-1); + m_r.resize (k-1, n-1); } else - r.resize (k, n-1); + m_r.resize (k, n-1); } template <> OCTAVE_API void qr::delete_col (const Array& j) { - F77_INT m = to_f77_int (q.rows ()); - F77_INT n = to_f77_int (r.cols ()); - F77_INT k = to_f77_int (q.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); + F77_INT k = to_f77_int (m_q.cols ()); Array jsi; Array js = j.sort (jsi, 0, DESCENDING); @@ -1979,8 +1979,8 @@ if (nj > 0) { - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (float, rw, k); for (volatile F77_INT i = 0; i < nj; i++) @@ -1988,18 +1988,18 @@ F77_INT ii = i; F77_INT js_elt = to_f77_int (js(ii)); F77_XFCN (cqrdec, CQRDEC, (m, n - ii, (k == m ? k : k - ii), - F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, + F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, js_elt + 1, rw)); } if (k < m) { - q.resize (m, k - nj); - r.resize (k - nj, n - nj); + m_q.resize (m, k - nj); + m_r.resize (k - nj, n - nj); } else - r.resize (k, n - nj); + m_r.resize (k, n - nj); } } @@ -2010,28 +2010,28 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); F77_INT k = std::min (m, n); F77_INT u_nel = to_f77_int (u.numel ()); - if (! q.issquare () || u_nel != n) + if (! m_q.issquare () || u_nel != n) (*current_liboctave_error_handler) ("qrinsert: dimensions mismatch"); if (j < 0 || j > m) (*current_liboctave_error_handler) ("qrinsert: index out of range"); - q.resize (m + 1, m + 1); - r.resize (m + 1, n); + m_q.resize (m + 1, m + 1); + m_r.resize (m + 1, n); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); FloatComplexRowVector utmp = u; OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqrinr, CQRINR, (m, n, F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, + F77_XFCN (cqrinr, CQRINR, (m, n, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, F77_CMPLX_ARG (utmp.fortran_vec ()), rw)); @@ -2043,26 +2043,26 @@ { F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); - if (! q.issquare ()) + if (! m_q.issquare ()) (*current_liboctave_error_handler) ("qrdelete: dimensions mismatch"); if (j < 0 || j > m-1) (*current_liboctave_error_handler) ("qrdelete: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (FloatComplex, w, m); OCTAVE_LOCAL_BUFFER (float, rw, m); - F77_XFCN (cqrder, CQRDER, (m, n, F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, j + 1, + F77_XFCN (cqrder, CQRDER, (m, n, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1, F77_CMPLX_ARG (w), rw)); - q.resize (m - 1, m - 1); - r.resize (m - 1, n); + m_q.resize (m - 1, m - 1); + m_r.resize (m - 1, n); } template <> @@ -2073,21 +2073,21 @@ F77_INT i = to_f77_int (i_arg); F77_INT j = to_f77_int (j_arg); - F77_INT m = to_f77_int (q.rows ()); - F77_INT k = to_f77_int (r.rows ()); - F77_INT n = to_f77_int (r.cols ()); + F77_INT m = to_f77_int (m_q.rows ()); + F77_INT k = to_f77_int (m_r.rows ()); + F77_INT n = to_f77_int (m_r.cols ()); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("qrshift: index out of range"); - F77_INT ldq = to_f77_int (q.rows ()); - F77_INT ldr = to_f77_int (r.rows ()); + F77_INT ldq = to_f77_int (m_q.rows ()); + F77_INT ldr = to_f77_int (m_r.rows ()); OCTAVE_LOCAL_BUFFER (FloatComplex, w, k); OCTAVE_LOCAL_BUFFER (float, rw, k); F77_XFCN (cqrshc, CQRSHC, (m, n, k, - F77_CMPLX_ARG (q.fortran_vec ()), ldq, - F77_CMPLX_ARG (r.fortran_vec ()), ldr, + F77_CMPLX_ARG (m_q.fortran_vec ()), ldq, + F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, i + 1, j + 1, F77_CMPLX_ARG (w), rw)); } diff -r fc509c3c445a -r 97378503ee0a liboctave/numeric/qr.h --- a/liboctave/numeric/qr.h Sun Aug 29 20:16:10 2021 -0700 +++ b/liboctave/numeric/qr.h Sun Aug 29 21:18:32 2021 -0700 @@ -51,24 +51,24 @@ economy }; - qr (void) : q (), r () { } + qr (void) : m_q (), m_r () { } qr (const T& a, type qr_type = qr::std) - : q (), r () + : m_q (), m_r () { init (a, qr_type); } - OCTAVE_API qr (const T& q, const T& r); + OCTAVE_API qr (const T& m_q, const T& m_r); - qr (const qr& a) : q (a.q), r (a.r) { } + qr (const qr& a) : m_q (a.m_q), m_r (a.m_r) { } qr& operator = (const qr& a) { if (this != &a) { - q = a.q; - r = a.r; + m_q = a.m_q; + m_r = a.m_r; } return *this; @@ -76,9 +76,9 @@ virtual ~qr (void) = default; - T Q (void) const { return q; } + T Q (void) const { return m_q; } - T R (void) const { return r; } + T R (void) const { return m_r; } OCTAVE_API type get_type (void) const; @@ -106,8 +106,8 @@ protected: - T q; - T r; + T m_q; + T m_r; OCTAVE_API void form (octave_idx_type n, T& afact, ELT_T *tau, type qr_type);