X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=src%2Ftest%2Ftest.EMGLLF.c;fp=src%2Ftest%2Ftest.EMGLLF.c;h=60516bce4f56894bae702d405238836a5763296e;hp=0000000000000000000000000000000000000000;hb=7b2720733e9aebe177c211119a9ec160c7e7117b;hpb=4725af564bfdbeb40d0caf7f124ab94ac05a97eb diff --git a/src/test/test.EMGLLF.c b/src/test/test.EMGLLF.c new file mode 100644 index 0000000..60516bc --- /dev/null +++ b/src/test/test.EMGLLF.c @@ -0,0 +1,81 @@ +#include "EMGLLF.h" +#include "ioutils.h" + +int main(int argc, char** argv) +{ + //////////// + // INPUTS // + //////////// + + Int* dimensions = readArray_int("dimensions"); + mwSize n = dimensions[0]; + mwSize p = dimensions[1]; + mwSize m = dimensions[2]; + mwSize k = dimensions[3]; + free(dimensions); + + Real* phiInit = readArray_real("phiInit"); + Real* rhoInit = readArray_real("rhoInit"); + Real* piInit = readArray_real("piInit"); + Real* gamInit = readArray_real("gamInit"); + Int mini = read_int("mini"); + Int maxi = read_int("maxi"); + Real gamma = read_real("gamma"); + Real lambda = read_real("lambda"); + Real* X = readArray_real("X"); + Real* Y = readArray_real("Y"); + Real tau = read_real("tau"); + + ///////////// + // OUTPUTS // + ///////////// + + Real* phi = (Real*)malloc(p*m*k*sizeof(Real)); + Real* rho = (Real*)malloc(m*m*k*sizeof(Real)); + Real* pi = (Real*)malloc(k*sizeof(Real)); + Real* LLF = (Real*)malloc(maxi*sizeof(Real)); + Real* S = (Real*)malloc(p*m*k*sizeof(Real)); + + //////////////////// + // Call to EMGLLF // + //////////////////// + + EMGLLF_core(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,tau, + phi,rho,pi,LLF,S, + n,p,m,k); + + free(phiInit); + free(rhoInit); + free(piInit); + free(gamInit); + free(X); + free(Y); + + // Compare to reference outputs + Real* ref_phi = readArray_real("phi"); + compareArray_real("phi", phi, ref_phi, p*m*k); + free(phi); + free(ref_phi); + + Real* ref_rho = readArray_real("rho"); + compareArray_real("rho", rho, ref_rho, m*m*k); + free(rho); + free(ref_rho); + + Real* ref_pi = readArray_real("pi"); + compareArray_real("pi", pi, ref_pi, k); + free(pi); + free(ref_pi); + + Real* ref_LLF = readArray_real("LLF", maxi); + compareArray_real("LLF", LLF, ref_LLF); + free(LLF); + free(ref_LLF); + + Real* ref_S = readArray_real("S"); + compareArray_real("S", S, ref_S, p*m*k); + free(S); + free(ref_S); + + return 0; +}