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 LOG_RATIONAL_APPROXIMATION_CGM_H_ 00011 #define LOG_RATIONAL_APPROXIMATION_CGM_H_ 00012 00013 #include <shogun/lib/config.h> 00014 #include <shogun/mathematics/linalg/ratapprox/opfunc/RationalApproximation.h> 00015 00016 #ifdef HAVE_EIGEN3 00017 00018 namespace shogun 00019 { 00020 00021 template<class T> class SGVector; 00022 template<class T> class CLinearOperator; 00023 class CCGMShiftedFamilySolver; 00024 class CJobResultAggregator; 00025 class CIndependentComputationEngine; 00026 00033 class CLogRationalApproximationCGM : public CRationalApproximation 00034 { 00035 public: 00037 CLogRationalApproximationCGM(); 00038 00051 CLogRationalApproximationCGM( 00052 CLinearOperator<float64_t>* linear_operator, 00053 CIndependentComputationEngine* computation_engine, 00054 CEigenSolver* eigen_solver, 00055 CCGMShiftedFamilySolver* linear_solver, 00056 float64_t desired_accuracy); 00057 00059 virtual ~CLogRationalApproximationCGM(); 00060 00069 virtual CJobResultAggregator* submit_jobs(SGVector<float64_t> sample); 00070 00072 virtual const char* get_name() const 00073 { 00074 return "LogRationalApproximationCGM"; 00075 } 00076 00077 private: 00079 CCGMShiftedFamilySolver* m_linear_solver; 00080 00082 SGVector<complex128_t> m_negated_shifts; 00083 00085 void init(); 00086 }; 00087 00088 } 00089 00090 #endif // HAVE_EIGEN3 00091 #endif // LOG_RATIONAL_APPROXIMATION_CGM_H_