00001 // SmallES eigensolver using dgeev (Real) or zgeev (Cmplx) 00002 00003 #ifndef SmallES_hh 00004 #define SmallES_hh 00005 00006 #include <cfloat> 00007 #include "eigensolver/eigens.hh" 00008 00009 namespace eigensolver { 00010 00011 using concepts::Real; 00012 using concepts::Cmplx; 00013 00014 // ********************************************************* SmallES ** 00015 00024 template <typename F> 00025 class SmallES : public EigenSolver<F> { 00026 public: 00031 SmallES(concepts::Array<F>& A); 00034 virtual ~SmallES(); 00041 virtual const concepts::Array<F>& getEV(); 00044 virtual const concepts::Array<concepts::Vector<F>*>& getEF(); 00046 virtual uint iterations() const { return 0; } 00048 virtual uint converged() const { return 0; } 00049 protected: 00050 virtual std::ostream& info(std::ostream& os) const; 00051 private: 00053 concepts::Array<F>& A_; 00055 concepts::Array<F> eigenvalues_; 00057 concepts::Array<concepts::Vector<F>*> eigenvectors_; 00059 bool computed_; 00061 void compute_(); 00062 }; 00063 00064 } // namespace eigensolver 00065 00066 #endif // SmallES_hh