最初は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() {}
};
私はC ++にかなり慣れていないので、おそらく単純なものですが、Q1とQ2に基づいて考えることができるポインターとstd::bindのすべての組み合わせを試しましたが、役に立ちませんでした。これに関するヘルプ、またはより良いテストと文書化された任意精度の直交ライブラリの提案は大歓迎です。