tarf_monte_carlo 3.45 → 3.46
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/tarf_monte_carlo/tarf_monte_carlo.c +9 -8
- data/lib/tarf_monte_carlo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 189ce30c759cdc40444b5ffc5443e8d93680adb392be409beb2f8d6445e1f667
|
4
|
+
data.tar.gz: 93b441a9d9481e0595b9b029e28792d2a4bf08299b0bd0ca3396a680bb85184c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61030c67b76c62f00b682f135f753d4d82d5fb91e3a5c822e57bf865138befd9b19d574ed9a8c70140fc7ea5aa7a14067a34a69d46ad663165d15849d587d17b
|
7
|
+
data.tar.gz: a2844c3dd6b4a9591cc6bed56edc3a896e8b83b162d7db9f5546573fe8d2e1fcf1bf2338e125a80145835aebfa2f6b7c55bb8f970f5db47e0317f682e242d3fc
|
@@ -45,6 +45,7 @@
|
|
45
45
|
#define FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE 14
|
46
46
|
|
47
47
|
#define DATAPOINTS 200 // data for plotting
|
48
|
+
#define BARRIER_DP 4 // data for plotting
|
48
49
|
#define INTERVAL 50
|
49
50
|
#define SIM_LIMIT 196 // 196 + 4 = 200 simulations nedded
|
50
51
|
|
@@ -195,8 +196,8 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
195
196
|
//
|
196
197
|
double **metrics;
|
197
198
|
if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
198
|
-
metrics = ( double** ) malloc(
|
199
|
-
for( metric = 0; metric <
|
199
|
+
metrics = ( double** ) malloc( BARRIER_DP * sizeof(double*) );
|
200
|
+
for( metric = 0; metric < BARRIER_DP; metric++ ) {
|
200
201
|
metrics[metric] = ( double* ) malloc( DATAPOINTS * sizeof(double) );
|
201
202
|
for(leg = 0; leg < DATAPOINTS; leg++) {
|
202
203
|
metrics[metric][leg] = 0.0;
|
@@ -631,7 +632,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
631
632
|
VALUE final_metrics = rb_ary_new();
|
632
633
|
|
633
634
|
if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
634
|
-
for(metric = 0; metric <
|
635
|
+
for(metric = 0; metric < BARRIER_DP; metric++) {
|
635
636
|
VALUE leg_metrics = rb_ary_new();
|
636
637
|
|
637
638
|
for(leg = 0; leg < DATAPOINTS; leg++) {
|
@@ -663,11 +664,11 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
663
664
|
//
|
664
665
|
// free your arrays from memory once you're done using them
|
665
666
|
//
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
667
|
+
int dp = (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE) ? BARRIER_DP : DATAPOINTS;
|
668
|
+
for(metric = 0; metric < dp; metric++) {
|
669
|
+
free( metrics[metric] );
|
670
|
+
}
|
671
|
+
free(metrics);
|
671
672
|
|
672
673
|
return final_pvs;
|
673
674
|
}
|