Я пытаюсь численно интегрировать особенно неприятный класс функций, для которых изначально я использовал GSL, но ошибки округления слишком велики для моего желаемого допуска. После быстрого Google для библиотек квадратур произвольной точности я нашел quadpack++, который, кажется, делает то, что я хочу, но я не могу заставить его работать, в частности, я не могу передать функцию этой формы:
mpf MyClass::foo( mpf t, const mpf_array& fourier ){
// do stuf
}
в качестве ввода, который он хочет в этой форме:
template<typename Real, class param_t>
class Function : public FtnBase<Real> {
public:
typedef Real defn_t(Real, param_t*);
defn_t& function_;
param_t* params_;
virtual Real operator() (Real x) {return function_(x, params_); }
Function(defn_t& function) : function_(function), params_(0) {}
Function(defn_t& function, param_t* params) : function_(function), params_(params) {}
~Function() {}
};
Я новичок в С++, поэтому, вероятно, это что-то простое, но я пробовал все комбинации указателей и std::bind, которые я могу придумать, на основе Q1 и Q2 безрезультатно. Мы будем очень признательны за любую помощь в этом или предложения по лучше протестированным и задокументированным библиотекам квадратур произвольной точности.