2006/12/2, Wee-Jin Goh <wjgoh at brookes.ac.uk>:> Hello,
>
> I'm having more trouble with interfacing with C code. I have a
> function in C that will return the result of its computation as 3
> arrays. The signature of the function is as follows:
>
> void lorenz_run(double x0, double y0, double z0, double h, int steps,
> double *res_x, double *res_y,
double *res_z)
>
> The function works, as I've tested it from within C itself and the
> results it gives are accurate. In order to integrate it with R, I've
> written the following C wrapper function:
>
> void lorenz_run_R_wrapper(double *x0, double *y0, double *z0, double
> *h, double *steps,
here 'steps' is double, was integer in 'lorenz_run'.
> double *res_x, double *res_y, double *res_z) {
> lorenz_run(*x0, *y0, *z0, *h, *steps, res_x, res_y, res_z);
> }
>
> The corresponding R wrapper function is:
>
> lorenz_run <- function(x0,y0,z0,h,steps) {
> returned_data = .C("lorenz_run_R_wrapper",
> x0=as.double(x0),
> y0=as.double(y0),
> z0=as.double(z0),
> h=as.double(h),
> steps=as.integer(steps),
> res_x=double(steps),
> res_y=double(steps),
> res_z=double(steps))
> # Return the value of the result parameter
> return( rbind(returned_data$res_x, returned_data$res_y,
> returned_data$res_z))
>
> }
>
> My problem is, that the first elements of res_x, res_y, and res_z are
> correctly set. But the rest of the cells in those 3 arrays remain 0.
> This leads me to think that I am passing these arrays to the C code
> wrongly. Can anyone help me out?
>
> Thanks in advance,
> Wee-Jin
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>
--
Antonio, Fabio Di Narzo
Ph.D. student at
Department of Statistical Sciences
University of Bologna, Italy