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	Sun Oct 11 15:27:51 2009 -0700
+++ b/liboctave/CmplxQR.h	Mon Oct 12 10:42:49 2009 +0200
@@ -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