#include <R.h>
#include <Rdefines.h>
-#include "sources/EMGLLF.h"
+#include "EMGrank.h"
-SEXP EMGLLF(
+SEXP EMGrank(
SEXP Pi_,
SEXP Rho_,
SEXP mini_,
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];
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);
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);