[R] Use of .Fortran

David Scott d.scott at auckland.ac.nz
Fri Jun 18 15:59:39 CEST 2010


I have no experience with incorporating Fortran code and am probably 
doing something pretty stupid.

I want to use the following Fortran subroutine (not written by me) in 
the file SSFcoef.f

       subroutine SSFcoef(nmax,nu,A,nrowA,ncolA)
       implicit double precision(a-h,o-z)
       implicit integer (i-n)
       integer l,i,nmax
       double precision nu,A(0:nmax,0:nmax)
       A(0,0) = 1D0
       do l=1,nmax
       	do i=1,l-1
       		A(l,i) = (-nu+i+l-1D0)*A(l-1,i)+A(l-1,i-1)
       	end do
       	A(l,0) = (-nu+l-1D0)*A(l-1,0)
       	A(l,l) = 1D0
       end do
       return
       end


I created a dll (this is windows) using R CMD SHLIB SSFcoef.f

Then my R code is:

### Load the compiled shared library in.
dyn.load("SSFcoef.dll")

### Write a function that calls the Fortran subroutine
SSFcoef <- function(nmax, nu){
   .Fortran("SSFcoef",
            as.integer(nmax),
            as.integer(nu)
            )$A
}

SSFcoef(10,2)

which when run gives

 > SSFcoef(10,2)
NULL

I am pretty sure the problem is that I am not dealing with the matrix A 
properly. I also tried this on linux and got a segfault.

Can anyone supply the appropriate modification to my call (and possibly 
to the subroutine) to make this work?

David Scott


-- 
_________________________________________________________________
David Scott	Department of Statistics
		The University of Auckland, PB 92019
		Auckland 1142,    NEW ZEALAND
Phone: +64 9 923 5055, or +64 9 373 7599 ext 85055
Email:	d.scott at auckland.ac.nz,  Fax: +64 9 373 7018

Director of Consulting, Department of Statistics



More information about the R-help mailing list