progress in debug: fix LLF/llh mismatch, and length + add adapter test in test/
[valse.git] / pkg / src / adapters / a.EMGLLF.c
index f24cd2a..9b004c2 100644 (file)
@@ -14,7 +14,7 @@ SEXP EMGLLF(
        SEXP lambda_,
        SEXP X_,
        SEXP Y_,
-       SEXP tau_
+       SEXP eps_
 ) {
        // Get matrices dimensions
        int n = INTEGER(getAttrib(X_, R_DimSymbol))[0];
@@ -32,7 +32,7 @@ SEXP EMGLLF(
        int maxi = INTEGER_VALUE(maxi_);
        double gamma = NUMERIC_VALUE(gamma_);
        double lambda = NUMERIC_VALUE(lambda_);
-       double tau = NUMERIC_VALUE(tau_);
+       double eps = NUMERIC_VALUE(eps_);
 
        // Get pointers from SEXP arrays ; WARNING: by columns !
        double* phiInit = REAL(phiInit_);
@@ -46,7 +46,7 @@ SEXP EMGLLF(
        // OUTPUTS //
        /////////////
 
-       SEXP phi, rho, pi, LLF, S, affec, dimPhiS, dimRho;
+       SEXP phi, rho, pi, llh, S, affec, dimPhiS, dimRho;
        PROTECT(dimPhiS = allocVector(INTSXP, 3));
        int* pDimPhiS = INTEGER(dimPhiS);
        pDimPhiS[0] = p; pDimPhiS[1] = m; pDimPhiS[2] = k;
@@ -56,25 +56,25 @@ SEXP EMGLLF(
        PROTECT(phi = allocArray(REALSXP, dimPhiS));
        PROTECT(rho = allocArray(REALSXP, dimRho));
        PROTECT(pi = allocVector(REALSXP, k));
-       PROTECT(LLF = allocVector(REALSXP, maxi-mini+1));
+       PROTECT(llh = allocVector(REALSXP, 1));
        PROTECT(S = allocArray(REALSXP, dimPhiS));
        PROTECT(affec = allocVector(INTSXP, n));
-       double *pPhi=REAL(phi), *pRho=REAL(rho), *pPi=REAL(pi), *pLLF=REAL(LLF), *pS=REAL(S);
+       double *pPhi=REAL(phi), *pRho=REAL(rho), *pPi=REAL(pi), *pLlh=REAL(llh), *pS=REAL(S);
        int *pAffec=INTEGER(affec);
 
        ////////////////////
        // Call to EMGLLF //
        ////////////////////
 
-       EMGLLF_core(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,tau,
-               pPhi,pRho,pPi,pLLF,pS,pAffec,
+       EMGLLF_core(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,eps,
+               pPhi,pRho,pPi,pLlh,pS,pAffec,
                n,p,m,k);
 
        // Build list from OUT params and return it
        SEXP listParams, listNames;
        int nouts = 6;
        PROTECT(listParams = allocVector(VECSXP, nouts));
-       char* lnames[6] = {"phi", "rho", "pi", "LLF", "S", "affec"}; //lists labels
+       char* lnames[6] = {"phi", "rho", "pi", "llh", "S", "affec"}; //lists labels
        PROTECT(listNames = allocVector(STRSXP,nouts));
        for (int i=0; i<nouts; i++)
                SET_STRING_ELT(listNames,i,mkChar(lnames[i]));
@@ -82,7 +82,7 @@ SEXP EMGLLF(
        SET_VECTOR_ELT(listParams, 0, phi);
        SET_VECTOR_ELT(listParams, 1, rho);
        SET_VECTOR_ELT(listParams, 2, pi);
-       SET_VECTOR_ELT(listParams, 3, LLF);
+       SET_VECTOR_ELT(listParams, 3, llh);
        SET_VECTOR_ELT(listParams, 4, S);
        SET_VECTOR_ELT(listParams, 5, affec);