Class xlifepp::FilonIMT#

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

Inheritence diagram for xlifepp::FilonIMT:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="xlifepp::FilonIMT< complex_t >" tooltip="xlifepp::FilonIMT< complex_t >"] "1" [label="xlifepp::FilonIMT< T >" tooltip="xlifepp::FilonIMT< T >" fillcolor="#BFBFBF"] "3" [label="xlifepp::IntegrationMethod" tooltip="xlifepp::IntegrationMethod"] "2" [label="xlifepp::SingleIM" tooltip="xlifepp::SingleIM"] "4" -> "1" [dir=forward tooltip="template-instance"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "2" -> "3" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::FilonIMT:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"] "6" [label="std::vector< T >" tooltip="std::vector< T >"] "8" [label="std::vector< K >" tooltip="std::vector< K >"] "5" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "1" [label="xlifepp::FilonIMT< T >" tooltip="xlifepp::FilonIMT< T >" fillcolor="#BFBFBF"] "3" [label="xlifepp::IntegrationMethod" tooltip="xlifepp::IntegrationMethod"] "2" [label="xlifepp::SingleIM" tooltip="xlifepp::SingleIM"] "7" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"] "4" -> "5" [dir=forward tooltip="public-inheritance"] "4" -> "7" [dir=forward tooltip="template-instance"] "8" -> "6" [dir=forward tooltip="template-instance"] "5" -> "6" [dir=forward tooltip="template-instance"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "1" -> "4" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "7" -> "8" [dir=forward tooltip="public-inheritance"] }

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