This is not the appropriate list for C-level questions. Please study the posting guide and repost on the right list.

Also, you might want to also show how you actually call this from R. Are you by any chance using .External instead of .Call ?

Romain

Le 15/06/10 23:20, Fabian Zäpernick a écrit :

Hi

when I call the function below in R, i get the error: Object 'pairlist'
can't be converted to 'double'.

#include<R.h>
#include<Rdefines.h>
#include<Rmath.h>

SEXP CSimPoisson(SEXP lambda, SEXP tgrid, SEXP T2M, SEXP Ni, SEXP NT)
{
        double sign, EVar;
        double *xlambda, *xtgrid, *xT2M, *xNi, *xNT, *xtau;
        SEXP tau;
        int ltgrid =0;
        int i = 0;
        int j = 0;
        sign = 0;
        EVar = 0;
        
        ltgrid  = LENGTH(tgrid);
        PROTECT(lambda = AS_NUMERIC(lambda));
        PROTECT(tgrid = AS_NUMERIC(tgrid));
        PROTECT(T2M = AS_NUMERIC(T2M));
        PROTECT(Ni = AS_NUMERIC(Ni));
        PROTECT(NT = AS_NUMERIC(NT));
        PROTECT(tau = NEW_NUMERIC(1));
        xlambda = NUMERIC_POINTER(lambda);
        xtgrid = NUMERIC_POINTER(tgrid);
        xT2M = NUMERIC_POINTER(T2M);
        xNi = NUMERIC_POINTER(Ni);
        xNT = NUMERIC_POINTER(NT);
        xtau = NUMERIC_POINTER(tau);
        GetRNGstate();
        if(xlambda[0] != 0)
        {
                while(1)
                {
                        EVar = rexp(xlambda[0]);
                        sign = sign + EVar;
                        if (sign>  xT2M[0])
                        {
                                break;
                        }
                        xtau = Realloc(xtau, i+1, double);
                        xtau[i] = sign;
                        i = i+1;
                        for(j; j<  ltgrid;j++)
                        {
                                if (xtgrid[j]<  sign)
                                {
                                        xNi[j] = xNT[0];
                                }
                                {
                                        break;
                                }
                        }
                        xNT[0] = xNT[0] + 1;
                }
                for(j;j<  ltgrid;j++)
                {
                        xNi[j] = xNT[0];
                }
        }
        PutRNGstate();
        UNPROTECT(6);
        return tau;
}


--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/98Uf7u : Rcpp 0.8.1
|- http://bit.ly/c6YnCi : graph gallery collage
`- http://bit.ly/bZ7ltC : inline 0.3.5

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to