00001 // -*-C++-*- 00002 00003 // Copyright (C) 2004 00004 // Christian Stimming <stimming@tuhh.de> 00005 00006 // This library is free software; you can redistribute it and/or 00007 // modify it under the terms of the GNU Lesser General Public License 00008 // as published by the Free Software Foundation; either version 2, or 00009 // (at your option) any later version. 00010 00011 // This library is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU Lesser General Public License for more details. 00015 00016 // You should have received a copy of the GNU Lesser General Public License along 00017 // with this library; see the file COPYING. If not, write to the Free 00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00019 // USA. 00020 00025 // LAPACK++ (V. 1.1) 00026 // (C) 1992-1996 All Rights Reserved. 00027 00028 00029 #ifndef _LA_GEN_QRFACT_COMPLEX_H 00030 #define _LA_GEN_QRFACT_COMPLEX_H 00031 00032 #include "lafnames.h" 00033 #include LA_VECTOR_COMPLEX_H 00034 #include LA_GEN_MAT_COMPLEX_H 00035 00036 #include "lapack.h" 00037 00051 class DLLIMPORT LaGenQRFactComplex 00052 { 00053 LaGenMatComplex _matA; 00054 LaVectorComplex _tau; 00055 00056 mutable LaVectorComplex _work; 00057 00058 // This assumes that the QR-decomposition is already copied into 00059 // A. 00060 void generateQ_internal(LaGenMatComplex &A) const; 00061 00062 public: 00063 00066 LaGenQRFactComplex(); 00067 00071 LaGenQRFactComplex(LaGenMatComplex &A); 00072 00074 LaGenQRFactComplex(LaGenQRFactComplex &QR); 00075 00077 ~LaGenQRFactComplex(); 00078 00088 void decomposeQR_IP(LaGenMatComplex& A); 00089 00096 LaGenMatComplex& generateQ_IP(); 00097 00103 void generateQ(LaGenMatComplex &A) const; 00104 00130 void Mat_Mult(LaGenMatComplex& C, bool hermitian, 00131 bool from_left) const; 00132 }; 00133 00134 00135 #endif