#include "constructionModelesLassoRank.h"
-#include "ioutils.h"
+#include "test_utils.h"
+#include <stdlib.h>
int main(int argc, char** argv)
{
- // read dimensions
- const Int nbDims = 5;
- Int* dimensions = readArray_int("dimensions",&nbDims,1);
- mwSize n = dimensions[0];
- mwSize p = dimensions[1];
- mwSize m = dimensions[2];
- mwSize k = dimensions[3];
- mwSize L = dimensions[4];
+ int* dimensions = readArray_int("dimensions");
+ int n = dimensions[0];
+ int p = dimensions[1];
+ int m = dimensions[2];
+ int k = dimensions[3];
+ int L = dimensions[4];
free(dimensions);
- mwSize lengthOne = 1;
////////////
// INPUTS //
+ Real* Pi = readArray_real("Pi");
+ Real* Rho = readArray_real("Rho");
+ int mini = read_int("mini");
+ int maxi = read_int("maxi");
+ Real* X = readArray_real("X");
+ Real* Y = readArray_real("Y");
+ Real tau = read_real("tau");
+ int* A1 = readArray_int("A1");
+ int rangmin = read_int("rangmin");
+ int rangmax = read_int("rangmax");
////////////
- // piInit
- const mwSize dimPi[] = {k, L};
- Real* Pi = readArray_real("Pi",dimPi,2);
-
- // rhoInit
- const mwSize dimRho[] = {m, m, k, L};
- Real* Rho = readArray_real("Rho",dimRho,4);
-
- // min number of iterations
- Int* pmini = readArray_int("mini",&lengthOne,1);
- Int mini = *pmini;
- free(pmini);
-
- // max number of iterations
- Int* pmaxi = readArray_int("maxi",&lengthOne,1);
- Int maxi = *pmaxi;
- free(pmaxi);
-
- // X
- const mwSize dimX[] = {n, p};
- Real* X = readArray_real("X",dimX,2);
-
- // Y
- const mwSize dimY[] = {n, m};
- Real* Y = readArray_real("Y",dimY,2);
-
- // tau
- Real* ptau = readArray_real("tau",&lengthOne,1);
- Real tau = *ptau;
- free(ptau);
-
- // A1
- const mwSize dimA[] = {p, L};
- Int* A1 = readArray_int("A1",dimA,2);
-
- // rangmin
- Int* prangmin = readArray_int("rangmin",&lengthOne,1);
- Int rangmin = *prangmin;
- free(prangmin);
-
- // rangmax
- Int* prangmax = readArray_int("rangmax",&lengthOne,1);
- Int rangmax = *prangmax;
- free(prangmax);
-
/////////////
// OUTPUTS //
+ int Size = (int)pow(rangmax-rangmin+1, k);
+ Real* phi = (Real*)malloc(p*m*k*L*Size*sizeof(Real));
+ Real* llh = (Real*)malloc(L*Size*2*sizeof(Real));
/////////////
- // phi
- mwSize Size = (mwSize)pow(rangmax-rangmin+1, k);
- const mwSize dimPhi[] = {p, m, k, L*Size};
- Real* phi = (Real*)malloc(dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]*sizeof(Real));
-
- // lvraisemblance
- const mwSize dimLvraisemblance[] = {L*Size, 2};
- Real* lvraisemblance = (Real*)malloc(dimLvraisemblance[0]*dimLvraisemblance[1]*sizeof(Real));
-
- //////////////////////////////////////////////
- // Main call to constructionModelesLassoMLE //
- //////////////////////////////////////////////
-
- constructionModelesLassoRank(
+ /////////////////////////////////////////
+ // Call to constructionModelesLassoMLE //
+ constructionModelesLassoRank_core(
Pi,Rho,mini,maxi,X,Y,tau,A1,rangmin,rangmax,
- phi,lvraisemblance,
+ phi,llh,
n,p,m,k,L);
-
+ /////////////////////////////////////////
+
free(Rho);
free(Pi);
free(X);
free(Y);
free(A1);
-
+
// Compare to reference outputs
- Real* ref_phi = readArray_real("phi",dimPhi, 4);
- compareArray_real("phi", phi, ref_phi, dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]);
+ Real* ref_phi = readArray_real("phi");
+ compareArray_real("phi", phi, ref_phi, p*m*k*L*Size);
free(phi);
free(ref_phi);
-
- // lvraisemblance
- Real* ref_lvraisemblance = readArray_real("lvraisemblance",dimLvraisemblance,2);
- compareArray_real("lvraisemblance", lvraisemblance, ref_lvraisemblance, dimLvraisemblance[0]*dimLvraisemblance[1]);
- free(lvraisemblance);
- free(ref_lvraisemblance);
-
+
+ Real* ref_llh = readArray_real("llh");
+ compareArray_real("llh", llh, ref_llh, L*Size*2);
+ free(llh);
+ free(ref_llh);
+
return 0;
}