From 74fa05ce92c4d23d14cc6672ffefe3379a804bcd Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Tue, 10 Mar 2015 18:25:03 -0400 Subject: add an function for computing truncated expected loss --- src/lossdistrib.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/lossdistrib.c') diff --git a/src/lossdistrib.c b/src/lossdistrib.c index d28b1b2..51e273b 100644 --- a/src/lossdistrib.c +++ b/src/lossdistrib.c @@ -200,6 +200,23 @@ void lossdistrib_truncated(double *p, int *np, double *w, double *S, int *N, free(qtemp); } +void exp_trunc(double *p, int *np, double *w, double *S, int *N, double *K, + double *r) { + double lu; + double *qtemp; + double lambda; + lu = 1./(*N+1); + int T = (int) floor((*K) * (*N))+1; + int zero = 0; + qtemp = calloc( T, sizeof(double)); + int i; + lossdistrib_truncated(p, np, w, S, N, &T, &zero, qtemp); + for(i = 0; i < T; i++){ + *r += (*K - lu*i) * qtemp[i]; + } + free(qtemp); +} + void lossdistrib_joint(double *p, int *np, double *w, double *S, int *N, int *defaultflag, double *q) { /* recursive algorithm with first order correction computes jointly the loss and recovery distribution @@ -711,7 +728,7 @@ void lossdistrib_joint_Z(double *dp, int *ndp, double *w, double beta = 0; int one = 1; -#pragma omp parallel for private(j) + #pragma omp parallel for private(j) for(i = 0; i < *nZ; i++){ for(j = 0; j < *ndp; j++){ dpshocked[j + (*ndp) * i] = shockprob(dp[j], rho[j], Z[i], 0); -- cgit v1.2.3-70-g09d2