add test folder
[valse.git] / src / test / test.EMGLLF.c
1 #include "EMGLLF.h"
2 #include "ioutils.h"
3
4 int main(int argc, char** argv)
5 {
6 ////////////
7 // INPUTS //
8 ////////////
9
10 Int* dimensions = readArray_int("dimensions");
11 mwSize n = dimensions[0];
12 mwSize p = dimensions[1];
13 mwSize m = dimensions[2];
14 mwSize k = dimensions[3];
15 free(dimensions);
16
17 Real* phiInit = readArray_real("phiInit");
18 Real* rhoInit = readArray_real("rhoInit");
19 Real* piInit = readArray_real("piInit");
20 Real* gamInit = readArray_real("gamInit");
21 Int mini = read_int("mini");
22 Int maxi = read_int("maxi");
23 Real gamma = read_real("gamma");
24 Real lambda = read_real("lambda");
25 Real* X = readArray_real("X");
26 Real* Y = readArray_real("Y");
27 Real tau = read_real("tau");
28
29 /////////////
30 // OUTPUTS //
31 /////////////
32
33 Real* phi = (Real*)malloc(p*m*k*sizeof(Real));
34 Real* rho = (Real*)malloc(m*m*k*sizeof(Real));
35 Real* pi = (Real*)malloc(k*sizeof(Real));
36 Real* LLF = (Real*)malloc(maxi*sizeof(Real));
37 Real* S = (Real*)malloc(p*m*k*sizeof(Real));
38
39 ////////////////////
40 // Call to EMGLLF //
41 ////////////////////
42
43 EMGLLF_core(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,tau,
44 phi,rho,pi,LLF,S,
45 n,p,m,k);
46
47 free(phiInit);
48 free(rhoInit);
49 free(piInit);
50 free(gamInit);
51 free(X);
52 free(Y);
53
54 // Compare to reference outputs
55 Real* ref_phi = readArray_real("phi");
56 compareArray_real("phi", phi, ref_phi, p*m*k);
57 free(phi);
58 free(ref_phi);
59
60 Real* ref_rho = readArray_real("rho");
61 compareArray_real("rho", rho, ref_rho, m*m*k);
62 free(rho);
63 free(ref_rho);
64
65 Real* ref_pi = readArray_real("pi");
66 compareArray_real("pi", pi, ref_pi, k);
67 free(pi);
68 free(ref_pi);
69
70 Real* ref_LLF = readArray_real("LLF", maxi);
71 compareArray_real("LLF", LLF, ref_LLF);
72 free(LLF);
73 free(ref_LLF);
74
75 Real* ref_S = readArray_real("S");
76 compareArray_real("S", S, ref_S, p*m*k);
77 free(S);
78 free(ref_S);
79
80 return 0;
81 }