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 RATIONAL_APPROXIMATION_CGM_JOB_H_ 00011 #define RATIONAL_APPROXIMATION_CGM_JOB_H_ 00012 00013 #include <shogun/lib/config.h> 00014 00015 #ifdef HAVE_EIGEN3 00016 #include <shogun/lib/computation/job/IndependentJob.h> 00017 00018 namespace shogun 00019 { 00020 template<class T> class SGVector; 00021 template<class T> class CLinearOperator; 00022 template<class T> class CStoreScalarAggregator; 00023 class CCGMShiftedFamilySolver; 00024 00030 class CRationalApproximationCGMJob : public CIndependentJob 00031 { 00032 public: 00034 CRationalApproximationCGMJob(); 00035 00047 CRationalApproximationCGMJob(CStoreScalarAggregator<float64_t>* aggregator, 00048 CCGMShiftedFamilySolver* linear_solver, 00049 CLinearOperator<float64_t>* linear_operator, 00050 SGVector<float64_t> vector, SGVector<complex128_t> shifts, 00051 SGVector<complex128_t> weights, float64_t const_multiplier); 00052 00054 virtual ~CRationalApproximationCGMJob(); 00055 00057 virtual void compute(); 00058 00060 virtual const char* get_name() const 00061 { 00062 return "RationalApproximationCGMJob"; 00063 } 00064 00065 private: 00067 CLinearOperator<float64_t>* m_operator; 00068 00070 SGVector<float64_t> m_vector; 00071 00073 CCGMShiftedFamilySolver* m_linear_solver; 00074 00076 SGVector<complex128_t> m_shifts; 00077 00079 SGVector<complex128_t> m_weights; 00080 00082 float64_t m_const_multiplier; 00083 00085 void init(); 00086 }; 00087 00088 } 00089 00090 #endif // HAVE_EIGEN3 00091 #endif // RATIONAL_APPROXIMATION_CGM_JOB_H_