[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