diff options
| author | Guillaume Horel <guillaume.horel@serenitascapital.com> | 2016-04-21 17:37:40 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@serenitascapital.com> | 2016-04-21 17:37:40 -0400 |
| commit | e3694fb5e5b6b2b307dd31399b242e01977ed19f (patch) | |
| tree | 96c9831c14ce89c03e2b2191daeb7397a5db8c6e /src | |
| parent | 8c9f217887de0802d6b8dfa1f872ec3cf8797d45 (diff) | |
| download | projet_C++-lambda_fun.tar.gz | |
use lambda functionslambda_fun
Diffstat (limited to 'src')
| -rw-r--r-- | src/opti.cpp | 7 | ||||
| -rw-r--r-- | src/projet.cpp | 14 |
2 files changed, 6 insertions, 15 deletions
diff --git a/src/opti.cpp b/src/opti.cpp index 2824a69..71577c1 100644 --- a/src/opti.cpp +++ b/src/opti.cpp @@ -1,5 +1,6 @@ #include "opti.hpp" #include "option.hpp" +#include <algorithm> typedef struct option_params { double r; @@ -11,12 +12,8 @@ typedef struct option_params { } option_params; double f (const std::vector<double> &X, std::vector<double> &grad, void *params) { - int d = X.size(); option_params *p = (option_params *)params; - double norm = 0; - for(int i=0; i<d; i++){ - norm+=X[i]*X[i]; - } + double norm = std::accumulate(X.begin(), X.end(), 0., [](double x, double y){ return x + y*y;}); asian_option A(p->r, p->T, p->S0, p->V, p->K, p->call); return log(A(X)+1e-10) - 0.5*norm;//on rajoute 1e-10 pour être sur que le log soit défini }; diff --git a/src/projet.cpp b/src/projet.cpp index d2cae1a..efab703 100644 --- a/src/projet.cpp +++ b/src/projet.cpp @@ -63,15 +63,10 @@ vector< vector<double> > exemple1_rqmc(){ std::vector<double> normalize (std::vector<double> mu) { - int d = mu.size(); - double norm_mu = 0; - std::vector<double> u(d); - for(int i=0; i<d; i++) { - norm_mu += mu[i]*mu[i]; - } - for(int i=0; i<d; i++) { - u[i] = mu[i]/sqrt(norm_mu); - } + double norm_mu = accumulate(mu.begin(), mu.end(), 0., + [](double x, double y){ return x + y*y;}); + vector<double> u(mu); + transform(u.begin(), u.end(), u.begin(), [norm_mu](double x){ return x/sqrt(norm_mu); }); return u; } @@ -176,7 +171,6 @@ int main() make_table2(data1, data2, data3, data4, "table2.tex"); vector< vector<double> > data5 = exemple2_stratified(16, false); vector< vector<double> > data6 = exemple2_rqmc(16, false); - cout<<"test"<<endl; vector< vector<double> > data7 = exemple2_stratified(64, false); vector< vector<double> > data8 = exemple2_rqmc(64,false); make_table2(data5, data6, data7, data8, "table3.tex"); |
