[Rd] Calling C from Fortran

Gilles GUILLOT gilles.guillot at inapg.inra.fr
Tue Jun 14 19:05:24 CEST 2005


I would like to call C routines from Fortran under linux as suggested in 
section 5.6 of 
the "Writing R extensions" documentation.

I'm familiar with Fortran but not with C.
I understand the example provided in Fortran:

subroutine testit()
double precision normrnd, x
call rndstart()
x = normrnd()
call dblepr("X was", 5, x, 1)
call rndend()
end


but I don't understand the purpose of this C wrapper:
#include <R.h>  
 void F77_SUB(rndstart)(void) { GetRNGstate(); }
 void F77_SUB(rndend)(void) { PutRNGstate(); }
 double F77_SUB(normrnd)(void) { return norm_rand(); }

neither how I should compile it.

Could anyone explain how I should compile and link 
the C and Fortran files above, and call the Fortran subroutine from R.

Thanks,

Gilles



More information about the R-devel mailing list