c6edbc2ff9a78ba4dc2f36be3ae1d812f79139f0
4 int main(int argc
, char** argv
)
8 int* dimensions
= readArray_int("dimensions",&nbDims
,1);
10 int p
= dimensions
[1];
11 int m
= dimensions
[2];
12 int k
= dimensions
[3];
21 const int dimRho
[] = {m
, m
, k
};
22 float* Rho
= readArray_real("Rho",dimRho
,3);
25 float* Pi
= readArray_real("Pi",&k
,1);
27 // min number of iterations
28 int* pmini
= readArray_int("mini",&lengthOne
,1);
32 // max number of iterations
33 int* pmaxi
= readArray_int("maxi",&lengthOne
,1);
38 const int dimX
[] = {n
, p
};
39 float* X
= readArray_real("X",dimX
, 2);
42 const int dimY
[] = {n
, m
};
43 float* Y
= readArray_real("Y",dimY
, 2);
46 float* ptau
= readArray_real("tau",&lengthOne
,1);
51 int* rank
= readArray_int("rank",&k
,1);
58 const int dimPhi
[] = {p
, m
, k
};
59 float* phi
= (float*)malloc(dimPhi
[0]*dimPhi
[1]*dimPhi
[2]*sizeof(float));
62 float* LLF
= (float*)malloc(1*sizeof(float));
64 //////////////////////////
65 // Main call to EMGrank //
66 //////////////////////////
68 EMGrank(Pi
,Rho
,mini
,maxi
,X
,Y
,tau
,rank
,
72 // free input pointers
79 // Compare to reference outputs
80 float* ref_phi
= readArray_real("phi",dimPhi
, 3);
81 compareArray_real("phi", phi
, ref_phi
, dimPhi
[0]*dimPhi
[1]*dimPhi
[2]);
86 float* ref_LLF
= readArray_real("LLF",&lengthOne
,1);
87 compareArray_real("LLF", LLF
, ref_LLF
, 1);