Lapack++
gfqrd.h
Go to the documentation of this file.
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