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 CG_M_SHIFTED_FAMILY_SOLVER_H_ 00011 #define CG_M_SHIFTED_FAMILY_SOLVER_H_ 00012 00013 #include <shogun/lib/config.h> 00014 00015 #ifdef HAVE_EIGEN3 00016 #include <shogun/mathematics/linalg/linsolver/IterativeShiftedLinearFamilySolver.h> 00017 00018 namespace shogun 00019 { 00020 template<class T> class CLinearOperator; 00021 template<class T> class SGVector; 00022 00032 class CCGMShiftedFamilySolver 00033 : public CIterativeShiftedLinearFamilySolver<float64_t, complex128_t> 00034 { 00035 00036 public: 00038 CCGMShiftedFamilySolver(); 00039 00041 CCGMShiftedFamilySolver(bool store_residuals); 00042 00044 virtual ~CCGMShiftedFamilySolver(); 00045 00053 virtual SGVector<float64_t> solve(CLinearOperator<float64_t>* A, 00054 SGVector<float64_t> b); 00055 00067 virtual SGVector<complex128_t> solve_shifted_weighted( 00068 CLinearOperator<float64_t>* A, SGVector<float64_t> b, 00069 SGVector<complex128_t> shifts, SGVector<complex128_t> weights); 00070 00072 virtual const char* get_name() const 00073 { 00074 return "CGMShiftedFamilySolver"; 00075 } 00076 00077 }; 00078 00079 } 00080 00081 #endif // HAVE_EIGEN3 00082 #endif // CG_M_SHIFTED_FAMILY_SOLVER_H_