Lapack++
|
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_DOUBLE_H 00030 #define _LA_GEN_QRFACT_DOUBLE_H 00031 00032 #include "lafnames.h" 00033 #include LA_VECTOR_DOUBLE_H 00034 #include LA_GEN_MAT_DOUBLE_H 00035 00036 #include "lapack.h" 00037 00051 class DLLIMPORT LaGenQRFactDouble 00052 { 00053 LaGenMatDouble _matA; 00054 LaVectorDouble _tau; 00055 00056 mutable LaVectorDouble _work; 00057 00058 // This assumes that the QR-decomposition is already copied into 00059 // A. 00060 void generateQ_internal(LaGenMatDouble &A) const; 00061 00062 public: 00063 00066 LaGenQRFactDouble(); 00067 00071 LaGenQRFactDouble(LaGenMatDouble &A); 00072 00074 LaGenQRFactDouble(LaGenQRFactDouble &QR); 00075 00077 ~LaGenQRFactDouble(); 00078 00088 void decomposeQR_IP(LaGenMatDouble& A); 00089 00096 LaGenMatDouble& generateQ_IP(); 00097 00103 void generateQ(LaGenMatDouble &A) const; 00104 00130 void Mat_Mult(LaGenMatDouble& C, bool hermitian, 00131 bool from_left) const; 00132 }; 00133 00134 00135 #endif