As I am wanting to generate a beta, then I created a function in C to generate a beta, but the problem appears when I go to compile
My function in C is #include <R.h> #include <Rmath.h> #include <math.h> void F77_SUB(myrbeta)(double* px) {    GetRNGstate();    *px = rbeta(1.00,3.00);    PutRNGstate(); } My function in Fortran is subroutine blah(a) double precision (a) call myrbeta(RND) end The error fmc...@fmcron-desktop:~/teste$ R CMD SHLIB mat.c blah.f gcc -std=gnu99 -I/usr/share/R/include     -fpic -g -O2 -c mat.c -o mat.o gfortran  -fpic -g -O2 -c blah.f -o blah.o blah.f:1.1: subroutine blah(a)                                                     1 Erro: Non-numeric character in statement label at (1) blah.f:1.1: subroutine blah(a)                                                     1 Erro: Unclassifiable statement at (1) blah.f:2.1: double precision (a)                                                   1 Erro: Non-numeric character in statement label at (1) blah.f:2.1: double precision (a)                                                   1 Erro: Unclassifiable statement at (1) blah.f:4.1: end                                                                    1 Erro: Non-numeric character in statement label at (1) blah.f:4.1: end                                                                    1 Erro: Unclassifiable statement at (1) make: ** [blah.o] Erro 1             Fábio Mathias Corrêa                      UFLA --- Em sex, 13/2/09, Kjell Konis <kjell.ko...@epfl.ch> escreveu: De: Kjell Konis <kjell.ko...@epfl.ch> Assunto: Re: [Rd] Generate random numbers in Fortran Para: "fabio.u...@yahoo.com.br" <fabio.u...@yahoo.com.br> Cc: "r-devel@r-project.org" <r-devel@r-project.org> Data: Sexta-feira, 13 de Fevereiro de 2009, 16:49 Take a look at section 6.6 in Writing R Extensions. It describes how to call C functions from FORTRAN. Basically it just boils down to this, in a C file define the functions void F77_SUB(fseedi)(void) { int x = 100; seed_in(&x); } void F77_SUB(fseedo)(void) { int x = 100; seed_out(&x); } void F77_SUB(myrunif)(double* px) { *px = unif_rand(); } Then you could write a FORTRAN subroutine like subroutine blah() implicit double precision (a-h,o-z) call fseedi() call myrunif(RND) call fseedo() end The fseed* subroutines only need to be called once, fseedi at the beginning of your FORTRAN code and fseedo at the end. HTH, Kjell On 13 févr. 09, at 17:32, Fabio Mathias wrote: > Hi!!! > It would like to know if it exists a form to use the functions to > generate variates in FORTRAN with the same easiness I use that them in > C? Or not? > If yes. They would have some example? I would like to use the functions rbeta, rlnorm and others! > > > Sorry my english..rsrsrs > > Thanks!!! > > > Fábio Mathias Corrêa University Federal of the Lavras - Brazil > > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > [[alternative HTML version deleted]] > > <ATT00001.txt> Veja quais são os assuntos do momento no Yahoo! +Buscados [[alternative HTML version deleted]]
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel