aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/opti.cpp7
-rw-r--r--src/projet.cpp14
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");