On Sat, 19 Jun 2010, David Scott wrote:

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

Surely you saw in the posting guide that R-help is not the place for questions about C, C++, Fortran code? Diverting to R-devel.

I want to use the following Fortran subroutine (not written by me) in the

Well, it is not Fortran 77 but Fortran 95, and so needs to be given a .f95 extension to be sure to work.

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
}

That does not match.  nrowA and ncolA are unused, so you need
SSFcoef <- function(nmax, nu){
  .Fortran("SSFcoef",
           as.integer(nmax),
           as.integer(nu),
           A = matrix(0, nmax+1, nmax+1),
           0L, 0L)$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.sc...@auckland.ac.nz,  Fax: +64 9 373 7018

Director of Consulting, Department of Statistics

______________________________________________
r-h...@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


--
Brian D. Ripley,                  rip...@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to