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?
Any help appreciated
Regards, Christophe
---------------------------------------
Christophe Dutang
LMM, UdM, Le Mans, France
web: http://dutangc.free.fr
> 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
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]]