On Tue, 2014-09-23 at 07:43 +0200, Berend Hasselman wrote: > On 23-09-2014, at 00:33, Wang, Zhu <zw...@connecticutchildrens.org> wrote: > > > Hello, > > > > I submitted a package which used Fortran functions isnan and lgamma. > > However, I was told that: > > > > isnan and lgamma are not Fortran 95 functions. > > > > I was asked to write 'cross-platform portable code' and so should not be > > writing GNU extensions to Fortran. > > > > See http://cran.r-project.org/web/checks/check_results_mpath.html, which > > will shortly show installation failures under Solaris. > > > > I will appreciate advice on how to replace these two functions to avoid > > failure on some platforms. > > > > I don’t know about lgamma. > > Instead of isnan you could use Lapack’s logical function disnan to test for > NaN (it’s in lapack 3.4.2; I don’t know about earlier versions). > > Another way would be to write a C function using functions provided by R to > test for NaN. > That function should be declared with F77_NAME so that it can be called from > a Fortran routine. > > I haven’t tried this so I don’t know if this would be foolproof or is the > best way to do it.. > > Berend >
As described by Berend (See also section 6.6 of Writing R Extensions) you can define Fortran-callable wrappers around ISNAN and lgammafn, both of which are provided with the C interface to R (lgammafn is declared in Rmath.h). Then declare these wrappers as external subroutines in your Fortran code and call them in place of isnan and lgamma. Martyn ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel