move selectiontotale to appropriate folder (untranslated)
[valse.git] / src / sources / selectiontotale.c
index d3e2dc4..8c1b768 100644 (file)
@@ -1,28 +1,29 @@
 #include <stdlib.h>
 #include <omp.h>
+#include <math.h>
 #include "EMGLLF.h"
 #include "utils.h"
 
 // Main job on raw inputs (after transformation from mxArray)
 void selectiontotale_core(
        // IN parameters
-       const double* phiInit, // parametre initial de moyenne renormalisé
-       const double* rhoInit, // parametre initial de variance renormalisé
-       const double* piInit,// parametre initial des proportions
-       const double* gamInit, // paramètre initial des probabilités a posteriori de chaque échantillon
+       const Real* phiInit, // parametre initial de moyenne renormalisé
+       const Real* rhoInit, // parametre initial de variance renormalisé
+       const Real* piInit,// parametre initial des proportions
+       const Real* gamInit, // paramètre initial des probabilités a posteriori de chaque échantillon
        int mini, // nombre minimal d'itérations dans lambdaIndex'algorithme EM
        int maxi, // nombre maximal d'itérations dans lambdaIndex'algorithme EM
-       double gamma, // valeur de gamma : puissance des proportions dans la pénalisation pour un Lasso adaptatif
-       const double* glambda, // valeur des paramètres de régularisation du Lasso
-       const double* X,// régresseurs
-       const double* Y,// réponse
-       double seuil, // seuil pour prendre en compte une variable
-       double tau, // seuil pour accepter la convergence
+       Real gamma, // valeur de gamma : puissance des proportions dans la pénalisation pour un Lasso adaptatif
+       const Real* glambda, // valeur des paramètres de régularisation du Lasso
+       const Real* X,// régresseurs
+       const Real* Y,// réponse
+       Real seuil, // seuil pour prendre en compte une variable
+       Real tau, // seuil pour accepter la convergence
        // OUT parameters (all pointers, to be modified)
        int* A1, // matrice des coefficients des parametres selectionnes
        int* A2, // matrice des coefficients des parametres non selectionnes
-       double* Rho,// estimateur ainsi calculé par le Lasso
-       double* Pi,// estimateur ainsi calculé par le Lasso
+       Real* Rho,// estimateur ainsi calculé par le Lasso
+       Real* Pi,// estimateur ainsi calculé par le Lasso
        // additional size parameters
        int n,// taille de lambdaIndex'echantillon
        int p,// nombre de covariables
@@ -50,12 +51,12 @@ void selectiontotale_core(
        for (lambdaIndex=0; lambdaIndex<L; lambdaIndex++)
        {
                //allocate output variables
-               double* phi = (double*)malloc(p*m*k*sizeof(double));
-               double* rho = (double*)malloc(m*m*k*sizeof(double));
-               double* pi = (double*)malloc(k*sizeof(double));
-               double* LLF = (double*)malloc(maxi*sizeof(double));
-               double* S = (double*)malloc(p*m*k*sizeof(double));
-               EMGLLF(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda[lambdaIndex],X,Y,tau,
+               Real* phi = (Real*)malloc(p*m*k*sizeof(Real));
+               Real* rho = (Real*)malloc(m*m*k*sizeof(Real));
+               Real* pi = (Real*)malloc(k*sizeof(Real));
+               Real* LLF = (Real*)malloc(maxi*sizeof(Real));
+               Real* S = (Real*)malloc(p*m*k*sizeof(Real));
+               EMGLLF_core(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda[lambdaIndex],X,Y,tau,
                        phi,rho,pi,LLF,S,
                        n,p,m,k);
                free(LLF);
@@ -71,7 +72,7 @@ void selectiontotale_core(
                        int cpt2 = 0;
                        for (int jj=0; jj<m; jj++)
                        {
-                               double maxPhi = 0.0;
+                               Real maxPhi = 0.0;
                                for (int r=0; r<k; r++)
                                {
                                        if (fabs(phi[ai(j,jj,r,p,m,k)]) > maxPhi)