00001 /* Interfaces to LAPACK solver for dense matrices 00002 */ 00003 00004 #pragma once 00005 00006 #include "basics/typedefs.hh" 00007 #include "operator/compositions.hh" 00008 00009 namespace concepts { 00010 00011 template<class F> 00012 class DenseMatrix; 00013 00014 // ************************************************************ LapackChol ** 00015 00023 class LapackChol : public VecOperator<Real> { 00024 public: 00025 // Flag, if the upper or the lower triangular part is stored. 00026 enum UpLo {U = 0, L = 1}; 00027 00028 LapackChol(const ElementMatrix<Real> A, enum UpLo uplo = U); 00029 protected: 00030 virtual std::ostream& info(std::ostream& os) const; 00034 virtual void apply_(const Vector<Real>& fncY, Vector<Real>& fncX); 00035 private: 00037 mutable ElementMatrix<Real> A_; 00041 char uplo_; 00043 mutable bool factorized_; 00044 }; 00045 } // namespace concepts