tarf_monte_carlo 3.45 → 3.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
}
|