[Rd] simple C function segfaults

Bernd Kriegstein kriegstn at yahoo.de
Tue Feb 21 05:42:45 CET 2006


Hello,

I use the simplest of examples that somebody can think
of in order to generate a matrix of random numbers
from within C, calling appropriate R functions. The
concrete example is below:

--- file pico.c

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <R.h>
#include <Rmath.h>

#define COLM( i, j, m ) ( m*j + i)

void pico ( double *y, int n, int m ) {
        int i, j;
        GetRNGstate();
        for ( i=0; i<n; i++ ) {
                for ( j=0; j<m; j++ ) {
                        y[ COLM( i,j,m ) ] = rnorm( 0,
1 );
                }
        }
        PutRNGstate();
}
---------


--- file pico.R

dyn.load("pico.so");
if( is.loaded( symbol.C( "pico" ) ) )
n<-10; m<-5;
y<-matrix( 0, n, m );
a<- .C( "pico", as.double(y), as.integer(n),
as.integer(m) );

-----

The code, when executed within R, gives a segmentation
fault. I looked at the writing R extensions, but not
much can be inferred from there on the subject. In
fact, I would be indebted if I could have a pointer to
a beginnner's guide to the R API.

Thank you for any answers,

- b.

PS. if this is not the appropriate section of R
maillists that this post should be in, I apologise in advance.



More information about the R-devel mailing list