[R] Conerned about Interfacing R with Fortran

Berwin A Turlach berwin at maths.uwa.edu.au
Fri Mar 27 04:18:58 CET 2009


G'day Maura,

On Thu, 26 Mar 2009 18:21:01 +0100
<mauede at alice.it> wrote:

> I am reading the manual sections illustrating how to call a Fortran
> subroutine from R. I feel uneasy at the explicit statement about
> ".Fortran" interface working with Fortran 77. I would like to call a
> Fortran-90 subroutine from my R script. Is that supported at all ?

Read the completely manual. :)  It is pretty easy to use
acroread, or other PDF readers, to search for "Fortran" in the PDF
file; the HTML version should also be searchable from your browser.

In chapter 1 (page 7 of the PDF 2.8.1 version) of the Writing R
Extensions manual, you will find:

  [...] providing support for C, C++, FORTRAN 77, Fortran
  9x at footnote{Note that Ratfor is not supported. If you have Ratfor
  source code, you need to convert it to FORTRAN.  Only FORTRAN-77
  (which we write in upper case) is supported on all platforms, but most
  also support Fortran-95 (for which we use title case).  If you want to
  ship Ratfor source files, please do so in a subdirectory of @file{src}
  and not in the main subdirectory.}, Objective C [...]

and later in chapter 1, there is a complete section (namely 1.2.3) on
F95 code:

  @subsection Using F95 code

  @R{} currently does not distinguish between FORTRAN 77 and Fortran
  90/95 code, and assumes all FORTRAN comes in source files with
  extension @file{.f}.  Commercial Unix systems typically use a F95
  compiler, but only since the release of @code{gcc 4.0.0} in April 2005
  have Linux and other non-commercial OSes had much support for F95.
  Only wih @R{} 2.6.0 did the Windows port adopt a Fortran 90 compiler.

  This means that portable packages need to be written in correct
  FORTRAN 77, which will also be valid Fortran 95.  See
  @uref{http://developer.r-project.org/Portability.html} for reference
  resources.  In particular, @emph{free source form} F95 code is not
  portable.

  On some systems an alternative F95 compiler is available: from the
  @code{gcc} family this might be @command{gfortran} or @command{g95}.
  Configuring @R{} will try to find a compiler which (from its name)
  appears to be a Fortran 90/95 compiler, and set it in macro @samp{FC}.
  Note that it does not check that such a compiler is fully (or even
  partially) compliant with Fortran 90/95.  Packages making use of
  Fortran 90/95 features should use file extension @file{.f90} or
  @file{.f95} for the source files: the variable @code{PKG_FCFLAGS}
  specifies any special flags to be used.  There is no guarantee that
  compiled Fortran 90/95 code can be mixed with any other type of code,
  nor that a build of @R{} will have support for such packages.

Section 5.5 (Creating shared objects) also mentions Fortran 9x:

  Shared objects for loading into @R{} can be created using @command{R
  CMD SHLIB}.  This accepts as arguments a list of files which must be
  object files (with extension @file{.o}) or sources for C, C++, FORTRAN
  77, Fortran 9x, Objective C or Objective C++ (with extensions
  @file{.c}, @file{.cc} or @file{.cpp} or @file{.C}, @file{.f},
  @file{.f90} or @file{.f95}, @file{.m}, and @file{.mm} or @file{.M},
  respectively), or commands to be passed to the linker.  See @kbd{R CMD
  SHLIB --help} (or the @R{} help for @code{SHLIB}) for usage
  information.

Thus, it seems that calling Fortran 90 code from R is possible on
some platforms and, presumably, on those where it is possible this is
done via the .Fortran interface; although the Writing R Extensions
manual does not seem to say so explicitly.

OTOH, the help file for .Fortran states:

     Use '.Fortran' with care for compiled Fortran 9x code: it may not
     work if the Fortran 9x compiler used differs from the Fortran
     compiler used when configuring R, especially if the subroutine
     name is not lower-case or includes an underscore.

HTH.

Cheers,

	Berwin

=========================== Full address =============================
Berwin A Turlach                            Tel.: +65 6516 4416 (secr)
Dept of Statistics and Applied Probability        +65 6516 6650 (self)
Faculty of Science                          FAX : +65 6872 3919       
National University of Singapore     
6 Science Drive 2, Blk S16, Level 7          e-mail: statba at nus.edu.sg
Singapore 117546                    http://www.stat.nus.edu.sg/~statba




More information about the R-help mailing list