tarf_monte_carlo 3.43 → 3.44
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 +21 -13
- 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: 3983fc474126c8a34f0fce99d3f127b0057f5bf92e35949278a7018bc4c6eba0
|
4
|
+
data.tar.gz: 3071b3646c65f592b9b2dfa75a8cfee0dac798b20a4b6d9d21db8758068c2191
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a457cd81fbd653af84c587af0de58495646567a9e9e0616f95226592db687e6122c109c62559867f4589bd81ae2a3bada9f79768f6ee9d1c418230868c5579bc
|
7
|
+
data.tar.gz: eada7cec1fa54069644d41817988789080d127fe003918e5a7fd9d40f24b9001bece1c9090dd0defd006a168716158c731f9e47fc00b2cedc31f92c26cf68522
|
@@ -196,7 +196,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
196
196
|
double **metrics;
|
197
197
|
if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
198
198
|
metrics = ( double** ) malloc( 3 * sizeof(double*) );
|
199
|
-
for( metric = 0; metric <
|
199
|
+
for( metric = 0; metric < 4; metric++ ) {
|
200
200
|
metrics[metric] = ( double* ) malloc( DATAPOINTS * sizeof(double) );
|
201
201
|
for(leg = 0; leg < DATAPOINTS; leg++) {
|
202
202
|
metrics[metric][leg] = 0.0;
|
@@ -422,6 +422,11 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
422
422
|
metrics[1][point_pos] = (knockedLeg >= 0) ? ( *( Xs_array + (knockedLeg) ) ) : 0;
|
423
423
|
metrics[0][point_pos+1] = sim_dash[NL-1];
|
424
424
|
metrics[1][point_pos+1] = (knockedLeg_dash >= 0) ? ( *( Xs_array + (knockedLeg_dash) ) ) : 0;
|
425
|
+
|
426
|
+
metrics[2][point_pos] = sim_pos[NL-1];
|
427
|
+
metrics[2][point_pos+1] = sim_dash_pos[NL-1];
|
428
|
+
metrics[3][point_pos] = knockedLeg;
|
429
|
+
metrics[3][point_pos+1] = knockedLeg_dash;
|
425
430
|
}
|
426
431
|
} else if(KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
427
432
|
if(knockedLeg >= 0){
|
@@ -572,17 +577,20 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
572
577
|
pvs_pos[sim_count + 1] = sim_dash_pos_sum;
|
573
578
|
pvs_neg[sim_count] = sim_neg_sum;
|
574
579
|
pvs_neg[sim_count + 1] = sim_dash_neg_sum;
|
575
|
-
if ((point_pos < DATAPOINTS) && (sim_count % INTERVAL) == 0){
|
576
|
-
metrics[2][point_pos] = sim_pos_sum;
|
577
|
-
metrics[2][point_pos+1] = sim_dash_pos_sum;
|
578
|
-
point_pos += 2;
|
579
|
-
}
|
580
580
|
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
581
|
+
|
582
|
+
if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
583
|
+
if ((point_pos < DATAPOINTS) && (sim_count % INTERVAL) == 0){
|
584
|
+
// metrics[2][point_pos] = sim_pos_sum;
|
585
|
+
// metrics[2][point_pos+1] = sim_dash_pos_sum;
|
586
|
+
point_pos += 2;
|
587
|
+
}
|
588
|
+
}
|
589
|
+
else{
|
590
|
+
//
|
591
|
+
// increment metric storing point by 4
|
592
|
+
// Note: no limit condition here
|
593
|
+
//
|
586
594
|
if( (sim_count + 2) % INTERVAL == 0 ) {
|
587
595
|
// rb_p(rb_str_new2("T:"));
|
588
596
|
// rb_p(INT2NUM(point_pos));
|
@@ -623,7 +631,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
623
631
|
VALUE final_metrics = rb_ary_new();
|
624
632
|
|
625
633
|
if (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE){
|
626
|
-
for(metric = 0; metric <
|
634
|
+
for(metric = 0; metric < 4; metric++) {
|
627
635
|
VALUE leg_metrics = rb_ary_new();
|
628
636
|
|
629
637
|
for(leg = 0; leg < DATAPOINTS; leg++) {
|
@@ -655,7 +663,7 @@ VALUE method_run_monte_carlo( VALUE self, VALUE args ) {
|
|
655
663
|
//
|
656
664
|
// free your arrays from memory once you're done using them
|
657
665
|
//
|
658
|
-
int dp = (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE) ?
|
666
|
+
int dp = (KType == FX_AMERICAN_BARRIER_KNOCKIN_DISCRETE || KType == FX_AMERICAN_BARRIER_KNOCKOUT_DISCRETE) ? 4 : DATAPOINTS;
|
659
667
|
for(metric = 0; metric < dp; metric++) {
|
660
668
|
free( metrics[metric] );
|
661
669
|
}
|