Use of .Fortran
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.scott at auckland.ac.nz, Fax: +64 9 373 7018 Director of Consulting, Department of Statistics ______________________________________________ R-help at 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, ripley at 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