X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=src%2Ftest%2Ftest.selectiontotale.c;h=843a04db33711eaa52e248f492ea6537c984b4dc;hp=2553d05cf472ee0c20298a9f2328d6382816829e;hb=c3bc47052f3ccb659659c59a82e9a99ea842398d;hpb=e39bc178cf5de02489ea2dce3869ba6323e18492 diff --git a/src/test/test.selectiontotale.c b/src/test/test.selectiontotale.c index 2553d05..843a04d 100644 --- a/src/test/test.selectiontotale.c +++ b/src/test/test.selectiontotale.c @@ -1,103 +1,49 @@ #include "selectiontotale.h" #include "test_utils.h" +#include int main(int argc, char** argv) { - // read dimensions - const int nbDims = 5; - int* dimensions = readArray_int("dimensions",&nbDims,1); + 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); - int lengthOne = 1; - + //////////// // INPUTS // + 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* glambda = readArray_real("glambda"); + Real* X = readArray_real("X"); + Real* Y = readArray_real("Y"); + Real seuil = read_real("seuil"); + Real tau = read_real("tau"); //////////// - // phiInit - const int dimPhiInit[] = {p, m, k}; - float* phiInit = readArray_real("phiInit",dimPhiInit,3); - - // rhoInit - const int dimRhoInit[] = {m, m, k}; - float* rhoInit = readArray_real("rhoInit",dimRhoInit,3); - - // piInit - float* piInit = readArray_real("piInit",&k,1); - - // gamInit - const int dimGamInit[] = {n, k}; - float* gamInit = readArray_real("gamInit",dimGamInit, 2); - - // 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); - - // gamma - float* pgamma = readArray_real("gamma",&lengthOne,1); - float gamma = *pgamma; - free(pgamma); - - // lambda - float* glambda = readArray_real("glambda",&L,1); - - // X - const int dimX[] = {n, p}; - float* X = readArray_real("X",dimX,2); - - // Y - const int dimY[] = {n, m}; - float* Y = readArray_real("Y",dimY,2); - - // seuil - float* pseuil = readArray_real("seuil",&lengthOne,1); - float seuil = *pseuil; - free(pseuil); - - // tau - float* ptau = readArray_real("tau",&lengthOne,1); - float tau = *ptau; - free(ptau); - ///////////// // OUTPUTS // + int* A1 = (int*)malloc(p*(m+1)*L*sizeof(int)); + int* A2 = (int*)malloc(p*(m+1)*L*sizeof(int)); + Real* Rho = (Real*)malloc(m*m*k*L*sizeof(Real)); + Real* Pi = (Real*)malloc(k*L*sizeof(Real)); ///////////// - // A1 - const int dimA[] = {p, m+1, L}; - int* A1 = (int*)malloc(dimA[0]*dimA[1]*dimA[2]*sizeof(int)); - - // A2 - int* A2 = (int*)malloc(dimA[0]*dimA[1]*dimA[2]*sizeof(int)); - - // rho - const int dimRho[] = {m, m, k, L}; - float* Rho = (float*)malloc(dimRho[0]*dimRho[1]*dimRho[2]*dimRho[3]*sizeof(float)); - - // pi - const int dimPi[] = {k, L}; - float* Pi = (float*)malloc(dimPi[0]*dimPi[1]*sizeof(float)); - - ////////////////////////////////////////////// - // Main call to constructionModelesLassoMLE // - ////////////////////////////////////////////// - - selectiontotale( + ///////////////////////////////////////// + // Call to constructionModelesLassoMLE // + selectiontotale_core( phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau, A1,A2,Rho,Pi, n,p,m,k,L); - - // free input pointers + ///////////////////////////////////////// + free(phiInit); free(rhoInit); free(piInit); @@ -105,30 +51,27 @@ int main(int argc, char** argv) free(glambda); free(X); free(Y); - + // Compare to reference outputs - int* ref_A1 = readArray_int("A1",dimA, 3); - compareArray_int("A1", A1, ref_A1, dimA[0]*dimA[1]*dimA[2]); + int* ref_A1 = readArray_int("A1"); + compareArray_int("A1", A1, ref_A1, p*(m+1)*L); free(A1); free(ref_A1); - - // A2 - int* ref_A2 = readArray_int("A2",dimA, 3); - compareArray_int("A2", A2, ref_A2, dimA[0]*dimA[1]*dimA[2]); + + int* ref_A2 = readArray_int("A2"); + compareArray_int("A2", A2, ref_A2, p*(m+1)*L); free(A2); free(ref_A2); - - // Rho - float* ref_Rho = readArray_real("Rho",dimRho, 4); - compareArray_real("Rho", Rho, ref_Rho, dimRho[0]*dimRho[1]*dimRho[2]*dimRho[3]); + + Real* ref_Rho = readArray_real("Rho"); + compareArray_real("Rho", Rho, ref_Rho, m*m*k*L); free(Rho); free(ref_Rho); - - // Pi - float* ref_Pi = readArray_real("Pi",dimPi, 2); - compareArray_real("Pi", Pi, ref_Pi, dimPi[0]*dimPi[1]); + + Real* ref_Pi = readArray_real("Pi"); + compareArray_real("Pi", Pi, ref_Pi, k*L); free(Pi); free(ref_Pi); - + return 0; }