00001 /* 00002 00003 Copyright (C) 1994-2012 John W. Eaton 00004 00005 This file is part of Octave. 00006 00007 Octave is free software; you can redistribute it and/or modify it 00008 under the terms of the GNU General Public License as published by the 00009 Free Software Foundation; either version 3 of the License, or (at your 00010 option) any later version. 00011 00012 Octave is distributed in the hope that it will be useful, but WITHOUT 00013 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00015 for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with Octave; see the file COPYING. If not, see 00019 <http://www.gnu.org/licenses/>. 00020 00021 */ 00022 00023 #if !defined (octave_ComplexQRP_h) 00024 #define octave_ComplexQRP_h 1 00025 00026 #include <iosfwd> 00027 00028 #include "CmplxQR.h" 00029 #include "PermMatrix.h" 00030 #include "dColVector.h" 00031 00032 class 00033 OCTAVE_API 00034 ComplexQRP : public ComplexQR 00035 { 00036 public: 00037 00038 ComplexQRP (void) : ComplexQR (), p () { } 00039 00040 ComplexQRP (const ComplexMatrix&, qr_type_t = qr_type_std); 00041 00042 ComplexQRP (const ComplexQRP& a) : ComplexQR (a), p (a.p) { } 00043 00044 ComplexQRP& operator = (const ComplexQRP& a) 00045 { 00046 if (this != &a) 00047 { 00048 ComplexQR::operator = (a); 00049 p = a.p; 00050 } 00051 return *this; 00052 } 00053 00054 ~ComplexQRP (void) { } 00055 00056 void init (const ComplexMatrix&, qr_type_t = qr_type_std); 00057 00058 PermMatrix P (void) const { return p; } 00059 00060 RowVector Pvec (void) const; 00061 00062 friend std::ostream& operator << (std::ostream&, const ComplexQRP&); 00063 00064 private: 00065 00066 PermMatrix p; 00067 }; 00068 00069 #endif