Mercurial > hg > octave-nkf
diff liboctave/CmplxQR.h @ 9713:7918eb15040c
refactor the QR classes onto a templated base
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 12 Oct 2009 10:42:49 +0200 |
parents | d865363208d6 |
children | 4c0cdbe0acca |
line wrap: on
line diff
--- a/liboctave/CmplxQR.h +++ b/liboctave/CmplxQR.h @@ -30,42 +30,25 @@ #include "CMatrix.h" #include "CColVector.h" #include "CRowVector.h" -#include "dbleQR.h" +#include "base-qr.h" class OCTAVE_API -ComplexQR +ComplexQR : public base_qr<ComplexMatrix> { public: - ComplexQR (void) : q (), r () { } - - ComplexQR (const ComplexMatrix&, QR::type = QR::std); + ComplexQR (void) : base_qr<ComplexMatrix> () { } - ComplexQR (const ComplexMatrix& q, const ComplexMatrix& r); - - ComplexQR (const ComplexQR& a) : q (a.q), r (a.r) { } + ComplexQR (const ComplexMatrix&, qr_type_t = qr_type_std); - ComplexQR& operator = (const ComplexQR& a) - { - if (this != &a) - { - q = a.q; - r = a.r; - } - return *this; - } + ComplexQR (const ComplexMatrix& qx, const ComplexMatrix& rx) + : base_qr<ComplexMatrix> (qx, rx) { } - ~ComplexQR (void) { } - - void init (const ComplexMatrix&, QR::type = QR::std); + ComplexQR (const ComplexQR& a) : base_qr<ComplexMatrix> (a) { } - ComplexMatrix Q (void) const { return q; } - - ComplexMatrix R (void) const { return r; } - - QR::type get_type (void) const; + void init (const ComplexMatrix&, qr_type_t = qr_type_std); void update (const ComplexColumnVector& u, const ComplexColumnVector& v); @@ -85,15 +68,10 @@ void shift_cols (octave_idx_type i, octave_idx_type j); - friend std::ostream& operator << (std::ostream&, const ComplexQR&); - protected: void form (octave_idx_type n, ComplexMatrix& afact, - Complex *tau, QR::type qr_type); - - ComplexMatrix q; - ComplexMatrix r; + Complex *tau, qr_type_t qr_type); }; #endif