SHOGUN
v3.2.0
|
00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of the GNU General Public License as published by 00004 * the Free Software Foundation; either version 3 of the License, or 00005 * (at your option) any later version. 00006 * 00007 * Written (W) 2013 Soumyajit De 00008 */ 00009 00010 #ifndef CONJUGATE_ORTHOGONAL_CG_SOLVER_H_ 00011 #define CONJUGATE_ORTHOGONAL_CG_SOLVER_H_ 00012 00013 #include <shogun/lib/config.h> 00014 00015 #ifdef HAVE_EIGEN3 00016 #include <shogun/mathematics/linalg/linsolver/IterativeLinearSolver.h> 00017 00018 namespace shogun 00019 { 00020 template<class T> class CLinearOperator; 00021 template<class T> class SGVector; 00022 00033 class CConjugateOrthogonalCGSolver 00034 : public CIterativeLinearSolver<complex128_t, float64_t> 00035 { 00036 00037 public: 00039 CConjugateOrthogonalCGSolver(); 00040 00042 CConjugateOrthogonalCGSolver(bool store_residuals); 00043 00045 virtual ~CConjugateOrthogonalCGSolver(); 00046 00054 virtual SGVector<complex128_t> solve(CLinearOperator<complex128_t>* A, 00055 SGVector<float64_t> b); 00056 00058 virtual const char* get_name() const 00059 { 00060 return "ConjugateOrthogonalCGSolver"; 00061 } 00062 00063 }; 00064 00065 } 00066 00067 #endif // HAVE_EIGEN3 00068 #endif // CONJUGATE_ORTHOGONAL_CG_SOLVER_H_