Thanks a lot for the help Thomas and William, that solved it. I am used to programming Java and didn't think of checking my print function.
Regards Lars 2011/8/11 Thomas Lumley <tlum...@uw.edu>: > On Fri, Aug 12, 2011 at 1:06 AM, Lars Wißler <jah...@googlemail.com> wrote: >> Dear R users, >> >> I want to call C code via the .C or .Call interface. This works fine >> with integer values but using doubles the array received in C will be >> set to zeros. >> >> I have tried the convolve examples (Writing R extensions, chapter 5.2) >> and still the resulting array consists of zeros. >> >> My code (shortened for my purposes. Original did not work either): >> ------------------------------------------------------------ >> convolve.r >> >> a=array(1, c(4)) >> b=array(3, c(4)) >> >> print(a) >> print(b) >> >> .C("convolve", >> as.double(a), >> as.double(b)) >> >> ---------------------------------------------------------------- >> convolve.c >> >> void convolve(double* a, double* b){ >> int i; >> >> for(i=0;i<4;i++) Rprintf("a: %d", a[i]); >> for(i=0;i<4;i++) Rprintf("b: %d", b[i]); >> } > > > The C code here is wrong for two reasons. Firstly, there's no > declaration for Rprintf(), because you don't include the header file. > > Secondly, you're using %d to print, which means you are telling the > compiler you're passing ints to Rprintf(), but you are actually > passing doubles. > > When I fix these problems the code works for me. > > -thomas > > Thomas Lumley > Professor of Biostatistics > University of Auckland > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel