X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=src%2Fadapters%2Fa.EMGrank.c;h=469349c344756a4221444c027ead3b40aef382c6;hb=09ab3c164abb566764e86a175b5973241e708fd6;hp=f7fc1923d475c326632ce7aeaee3b303393abb12;hpb=552b00e200e8a990c1247989d29e98d4ae8679f3;p=valse.git diff --git a/src/adapters/a.EMGrank.c b/src/adapters/a.EMGrank.c index f7fc192..469349c 100644 --- a/src/adapters/a.EMGrank.c +++ b/src/adapters/a.EMGrank.c @@ -1,8 +1,8 @@ #include #include -#include "sources/EMGLLF.h" +#include "EMGrank.h" -SEXP EMGLLF( +SEXP EMGrank( SEXP Pi_, SEXP Rho_, SEXP mini_, @@ -16,7 +16,7 @@ SEXP EMGLLF( SEXP dimX = getAttrib(X_, R_DimSymbol); int n = INTEGER(dimX)[0]; int p = INTEGER(dimX)[1]; - SEXP dimRho = getAttrib(Rho_, R_DimSymbol) + SEXP dimRho = getAttrib(Rho_, R_DimSymbol); int m = INTEGER(dimRho)[0]; int k = INTEGER(dimRho)[2]; @@ -34,25 +34,25 @@ SEXP EMGLLF( double* Rho = REAL(Rho_); double* X = REAL(X_); double* Y = REAL(Y_); - double* rank = REAL(rank_); + int* rank = INTEGER(rank_); ///////////// // OUTPUTS // ///////////// - SEXP phi, LLF; + SEXP phi, LLF, dimPhi; PROTECT(dimPhi = allocVector(INTSXP, 3)); int* pDimPhi = INTEGER(dimPhi); pDimPhi[0] = p; pDimPhi[1] = m; pDimPhi[2] = k; PROTECT(phi = allocArray(REALSXP, dimPhi)); PROTECT(LLF = allocVector(REALSXP, 1)); - double* pPhi=REAL(phi), pLLF=REAL(LLF); + double *pPhi=REAL(phi), *pLLF=REAL(LLF); ///////////////////// // Call to EMGrank // ///////////////////// - EMGrank(Pi, Rho, mini, maxi, X, Y, tau, rank, + EMGrank_core(Pi, Rho, mini, maxi, X, Y, tau, rank, pPhi,pLLF, n,p,m,k); @@ -64,7 +64,7 @@ SEXP EMGLLF( for (int i=0; i<2; i++) SET_STRING_ELT(listNames,i,mkChar(lnames[i])); setAttrib(listParams, R_NamesSymbol, listNames); - SET_ARRAY_ELT(listParams, 0, phi); + SET_VECTOR_ELT(listParams, 0, phi); SET_VECTOR_ELT(listParams, 1, LLF); UNPROTECT(5);