Class xlifepp::FilonIMT#

template<typename T = complex_t>
class FilonIMT : public xlifepp::SingleIM#

compute I(x)=intg_0_T f(t)*exp(-ixt)dt using Filon method ~ dt sum_j=1,p Cj(x) sum_n=1,N f(t_n-1)exp(-ixt_n-1) with Cj(x)= intg_0,1 w_j(s) exp(-ixsdt)ds and wj polynomial basis functions order 0 : P0 Lagrange basis w1(s)=1 order 1 : P1 Lagrange basis w1(s)=1-s, w2(s)=s order 2 : P3 Hermite basis w1(s)=(2s+1)(s-1)^2, w2(s)=s(s-1)^2, w3(s)=(3-2s)s^2, w4(s)=(s-1)s^2

main functions are init() : computes f(t_n) and f’(t_n) if order 2 coef(x,j) : computes Cj(x) compute(x) : evaluates I(x) operator (): calls compute(x) print() : outputs some informations

Public Functions

inline FilonIMT()#

constructors

void clear()#

clear object

template<typename S>
complex_t coef(const S &x, number_t j) const#

Filon’s coefficients regarding order_.

template<typename S>
complex_t compute(const S &x) const#

compute I(x)

void init(number_t N, funT f, funT df)#

initialize f values

void init(number_t N, funTP f, funTP df, Parameters &pars)#

initialize f values

template<typename S>
inline complex_t operator()(const S &x) const#

< compute I(x)

inline virtual void print(PrintStream &os) const#

print FilonIMT on stream

virtual void print(std::ostream &os) const#

print IntegrationMethod on stream

inline number_t size() const#

grid size