4 int main(int argc
, char** argv
)
8 Int
* dimensions
= readArray_int("dimensions",&nbDims
,1);
9 mwSize n
= dimensions
[0];
10 mwSize p
= dimensions
[1];
11 mwSize m
= dimensions
[2];
12 mwSize k
= dimensions
[3];
21 const mwSize dimRho
[] = {m
, m
, k
};
22 Real
* Rho
= readArray_real("Rho",dimRho
,3);
25 Real
* 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 mwSize dimX
[] = {n
, p
};
39 Real
* X
= readArray_real("X",dimX
, 2);
42 const mwSize dimY
[] = {n
, m
};
43 Real
* Y
= readArray_real("Y",dimY
, 2);
46 Real
* ptau
= readArray_real("tau",&lengthOne
,1);
51 Int
* rank
= readArray_int("rank",&k
,1);
58 const mwSize dimPhi
[] = {p
, m
, k
};
59 Real
* phi
= (Real
*)malloc(dimPhi
[0]*dimPhi
[1]*dimPhi
[2]*sizeof(Real
));
62 Real
* LLF
= (Real
*)malloc(1*sizeof(Real
));
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 Real
* ref_phi
= readArray_real("phi",dimPhi
, 3);
81 compareArray_real("phi", phi
, ref_phi
, dimPhi
[0]*dimPhi
[1]*dimPhi
[2]);
86 Real
* ref_LLF
= readArray_real("LLF",&lengthOne
,1);
87 compareArray_real("LLF", LLF
, ref_LLF
, 1);