111 Real am = std::pow(a,m+1), bm = std::pow(b,m+1);
113 Real val_cos = 0., val_sin = 0.;
114 for (
size_t k = 0; k < (m-1)/2; k++) {
115 val_cos += ((k%2==0) ? 1. : -1.)*
factorial(m)/(
factorial(m-2*k-1)*std::pow(omega,2+2*k))
116 *(std::pow(b,m-2*k-1)*std::cos(omega*b+phi)-std::pow(a,m-2*k-1)*std::cos(omega*a+phi));
118 for (
size_t k = 0; k < m/2; k++) {
119 val_sin += ((k%2==0) ? 1. : -1.)*
factorial(m)/(
factorial(m-2*k)*std::pow(omega,1+2*k))
120 *(std::pow(b,m-2*k)*std::sin(omega*b+phi)-std::pow(a,m-2*k)*std::sin(omega*a+phi));
122 return 0.5*((bm-am)/((Real)m+1) + val_cos + val_sin)/
var_;
133 void test(std::ostream &outStream = std::cout )
const {
135 std::vector<Real> X(size,0.);
136 std::vector<int> T(size,0);
137 X[0] =
mean_-
var_-4.*(Real)rand()/(Real)RAND_MAX;
145 X[4] =
mean_+
var_+4.*(Real)rand()/(Real)RAND_MAX;