#include #include double pos (double x); struct asian_option : public std::unary_function, double> { asian_option(double r, double T, double S0, double V, double K, bool call=true) : r(r), T(T), S0(S0), V(V), K(K), call(call) {}; double operator()(const std::vector &X) const { int d = X.size(); std::vector S(d); S[0]= S0*exp((r-V*V/2)*(T/d)+V*sqrt(T/d)*X[0]); for(int i=1;i