From dutangc at gmail.com  Wed May 10 08:08:24 2017
From: dutangc at gmail.com (Christophe Dutang)
Date: Wed, 10 May 2017 08:08:24 +0200
Subject: [Rd] registering Fortran routines in R packages
In-Reply-To: <93D3A75D-290F-49B3-9E37-FD88F78E2BEF@xs4all.nl>
References: <1CDAFD25-E227-42EA-A689-87B3036434AB@gmail.com>
 <93D3A75D-290F-49B3-9E37-FD88F78E2BEF@xs4all.nl>
Message-ID: <1072BC5F-750D-4DF8-8B7B-7D8E665EDE00@gmail.com>

Thanks for your email.

I try to change the name in lowercase but it conflicts with a C implementation also named halton. So I rename the C function halton2() and sobol2() while the Fortran function are HALTON() and SOBOL() (I also try lower case in the Fortran code). Unfortunately, it does not help since I get

init.c:97:25: error: use of undeclared identifier 'halton_'; did you mean 'halton2'?
  {"halton", (DL_FUNC) &F77_SUB(halton),  7},

My current solution is to comment FortEntries array and use R_useDynamicSymbols(dll, TRUE) for a dynamic search of Fortran routines.

Regards, Christophe
---------------------------------------
Christophe Dutang
LMM, UdM, Le Mans, France
web: http://dutangc.free.fr <http://dutangc.free.fr/>
> Le 9 mai 2017 ? 14:32, Berend Hasselman <bhh at xs4all.nl> a ?crit :
> 
> 
>> On 9 May 2017, at 13:44, Christophe Dutang <dutangc at gmail.com> wrote:
>> 
>> Dear list,
>> 
>> I?m trying to register Fortran routines in randtoolbox (in srt/init.c file), see https://r-forge.r-project.org/scm/viewvc.php/pkg/randtoolbox/src/init.c?view=markup&root=rmetrics. 
>> 
>> Reading https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Registering-native-routines and looking at what is done in stats package, I first thought that the following code will do the job:
>> 
>> static const R_FortranMethodDef FortEntries[] = {
>> {"halton", (DL_FUNC) &F77_NAME(HALTON),  7},
>> {"sobol", (DL_FUNC) &F77_NAME(SOBOL),  11},
>> {NULL, NULL, 0}
>> };
>> 
>> But I got error messages when building : use of undeclared identifier ?SOBOL_?. I also tried in lower case sobol and halton.
>> 
>> Looking at expm package https://r-forge.r-project.org/scm/viewvc.php/pkg/src/init.c?view=markup&revision=94&root=expm, I try  
>> 
>> static const R_FortranMethodDef FortEntries[] = {
>> {"halton", (DL_FUNC) &F77_SUB(HALTON),  7},
>> {"sobol", (DL_FUNC) &F77_SUB(SOBOL),  11},
>> {NULL, NULL, 0}
>> };
>> 
>> But the problem remains the same.
>> 
>> Is there a way to have header file for Fortran codes? how to declare routines defined in my Fortran file src/LowDiscrepancy.f?
>> 
> 
> lowercase routine names? manual does mention that.
> 
> Berend Hasselman
> 
> 
>> Any help appreciated
>> 
>> Regards, Christophe
>> ---------------------------------------
>> Christophe Dutang
>> LMM, UdM, Le Mans, France
>> web: http://dutangc.free.fr
>> 
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 


	[[alternative HTML version deleted]]



[Rd] registering Fortran routines in R packages
Christophe Dutang