[R] Calling C from Fortran

Shusong Jin shusong.jin at gmail.com
Wed Jun 15 03:19:28 CEST 2005


Dear Gilles,

You can try this.
Save the fortran file as 1.f
Save the C file as 2.c
Then
R CMD SHLIB 1.f 2.c
You should obtain a  file named 1.so.

Then start you R  program, then 
dyn.load('/where/is/your/1.so')
.Fortran("testit")

You should obtain a random number which is normally distributed.

Good luck.

Jin

On 6/15/05, Gilles GUILLOT <gilles.guillot at inapg.inra.fr> wrote:
> I would like to call C routines from Fortran 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
> 
> ______________________________________________
> 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
>




More information about the R-help mailing list