From 5b24ea4f1f5308be24d905563947cd96d9c27efa Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Mon, 7 Mar 2016 15:38:03 -0500 Subject: add some tests --- src/lossdistrib.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/lossdistrib.c b/src/lossdistrib.c index f6ff411..7bcfe66 100644 --- a/src/lossdistrib.c +++ b/src/lossdistrib.c @@ -4,6 +4,10 @@ #include #include "lossdistrib.h" +#ifdef BUILD_TESTS +#include +#endif + #define MIN(x, y) (((x) < (y)) ? (x) : (y)) #define USE_BLAS @@ -590,12 +594,67 @@ void BCloss_recov_trunc(const double *defaultprob, const int *dim1, const int *d free(gshockedbar); } } - dgemv_("t", &T, n, &alpha, Lw, &T, valL, &one, &beta, EL, &one); - ELt[t] = ddot_(n, EL, &one, w, &one); - ERt[t] = ddot_(n, ER, &one, w, &one); + cblas_dgemv(CblasColMajor, CblasTrans, T, *n, alpha, Lw, T, valL, 1, beta, EL, 1); + ELt[t] = cblas_ddot(*n, EL, 1, w, 1); + ERt[t] = cblas_ddot(*n, ER, 1, w, 1); } free(Lw); free(EL); free(ER); free(valL); } + +#ifdef BUILD_TESTS +int main() { + const int nZ = 500; + double* Z = malloc(nZ * sizeof(double)); + double* w = malloc(nZ * sizeof(double)); + + GHquad(&nZ, Z, w); + + const int n = 1000; + double* p = malloc(n * sizeof(double)); + double* weights = malloc(n * sizeof(double)); + double* rho = malloc(n * sizeof(double)); + gsl_rng* gen = gsl_rng_alloc(gsl_rng_mt19937); + for(int i = 0; i