SCM

SCM Repository

[rmetrics] Diff of /pkg/randtoolbox/src/init.c
ViewVC logotype

Diff of /pkg/randtoolbox/src/init.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6028, Wed May 3 19:42:06 2017 UTC revision 6115, Tue Mar 20 14:26:58 2018 UTC
# Line 51  Line 51 
51   *   *
52   */   */
53    
54    #include <stdlib.h> //for NULL
55  #include <Rinternals.h>  #include <Rinternals.h>
56  #include <R_ext/Rdynload.h>  #include <R_ext/Rdynload.h>
57  #include "randtoolbox.h"  #include "randtoolbox.h"
58  #include "runifInterface.h"  #include "runifInterface.h"
59    #include "mt19937ar.h"
60  #include "testrng.h"  #include "testrng.h"
61    #include "version.h"
62    
63  //table of registration  //table of registration routines accessed with .C()
64  static const R_CallMethodDef callMethods[] =  static const R_CMethodDef CEntries[] = {
65      {"set_noop",                    (DL_FUNC) &set_noop, 0}, //runifInterface.h
66      {"current_generator",           (DL_FUNC) &current_generator, 1}, //runifInterface.h
67      {"put_user_unif_set_generator", (DL_FUNC) &put_user_unif_set_generator, 0}, //runifInterface.h
68      {"get_state_congru",            (DL_FUNC) &get_state_congru, 2}, //congruRand.h
69      {"put_state_congru",            (DL_FUNC) &put_state_congru, 3}, //congruRand.h
70      {"initMersenneTwister",         (DL_FUNC) &initMersenneTwister, 4}, //mt19937ar.h
71      {"putMersenneTwister",          (DL_FUNC) &putMersenneTwister, 3}, //mt19937ar.h
72      {"getMersenneTwister",          (DL_FUNC) &getMersenneTwister, 3}, //mt19937ar.h
73      {"get_primes",                  (DL_FUNC) &get_primes, 2}, //randtoolbox.h
74      {"version_randtoolbox",         (DL_FUNC) &version_randtoolbox, 1}, //version.h
75      {NULL, NULL, 0}
76    };
77    
78    
79    //table of registration routines accessed with .Call()
80    static const R_CallMethodDef CallEntries[] =
81  {  {
82          {"doTorus", (DL_FUNC) &doTorus, 7},    {"doCongruRand",        (DL_FUNC) &doCongruRand, 6}, //randtoolbox.h
83          {"doHalton", (DL_FUNC) &doHalton, 6},    {"doHalton",            (DL_FUNC) &doHalton, 6}, //randtoolbox.h
84          {"doSobol", (DL_FUNC) &doSobol, 6},    {"doKnuthTAOCP",        (DL_FUNC) &doKnuthTAOCP, 2}, //randtoolbox.h
85          {"doSetSeed", (DL_FUNC) &doSetSeed, 1},    {"doSetSeed",           (DL_FUNC) &doSetSeed, 1}, //randtoolbox.h
86          {"doCongruRand", (DL_FUNC) &doCongruRand, 6},    {"doSFMersenneTwister", (DL_FUNC) &doSFMersenneTwister, 4}, //randtoolbox.h
87          {"doSFMersenneTwister", (DL_FUNC) &doSFMersenneTwister, 4},    {"doSobol",             (DL_FUNC) &doSobol, 6}, //randtoolbox.h
88          {"doPokerTest", (DL_FUNC) &doPokerTest, 3},    {"doTorus",             (DL_FUNC) &doTorus, 7}, //randtoolbox.h
89          {"doCollisionTest", (DL_FUNC) &doCollisionTest, 3},    {"doWELL",              (DL_FUNC) &doWELL, 5}, //randtoolbox.h
90          {"doWELL", (DL_FUNC) &doWELL, 5},    {"doPokerTest",         (DL_FUNC) &doPokerTest, 3}, //testrng.h
91          {"doKnuthTAOCP", (DL_FUNC) &doKnuthTAOCP, 2},    {"doCollisionTest",     (DL_FUNC) &doCollisionTest, 3}, //testrng.h
92      {NULL, NULL, 0}
93    };
94    
95    
96    /* .Fortran calls defined LowDiscrepancy.f
97     * C version of these Fortran routines are halton_c() and sobol_c() in randtoolbox.c
98     */
99    /* DOES NOT WORK*/
100    extern void F77_NAME(halton_f)(void *, void *, void *, void *, void *, void *, void *);
101    extern void F77_NAME(sobol_f)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
102    
103    //table of registration routines accessed with .Fortran()
104    static const R_FortranMethodDef FortranEntries[] = {
105      {"halton_f", (DL_FUNC) &F77_NAME(halton_f),  7}, //LowDiscrepancy.f
106      {"sobol_f", (DL_FUNC) &F77_NAME(sobol_f),  11}, //LowDiscrepancy.f
107          {NULL, NULL, 0}          {NULL, NULL, 0}
108  };  };
109    
110    
111  //table of registered routines  //there is no routine accessed with .External()
112  void R_init_randtoolbox(DllInfo *info)  
113    //table of all registered routines
114    void R_init_randtoolbox(DllInfo *dll)
115  {  {
116          //register method accessed with .Call    //register method accessed with .C, .Call, .Fortran, .External respectively
117          R_registerRoutines(info, NULL, callMethods, NULL, NULL);    R_registerRoutines(dll, CEntries, CallEntries, FortranEntries, NULL);
118    
119      /*dynamic lookup only for
120      double *user_unif_rand(void);
121      void user_unif_init(unsigned int seed);
122      in src/runifInterface.h*/
123      R_useDynamicSymbols(dll, TRUE);
124    
125    
126          //make randtoolbox C functions available for other packages          //make randtoolbox C functions available for other packages
127          R_RegisterCCallable("randtoolbox", "torus", (DL_FUNC) torus);          R_RegisterCCallable("randtoolbox", "torus", (DL_FUNC) torus);
128          R_RegisterCCallable("randtoolbox", "halton", (DL_FUNC) halton);    R_RegisterCCallable("randtoolbox", "halton_c", (DL_FUNC) halton_c);
129          R_RegisterCCallable("randtoolbox", "sobol", (DL_FUNC) halton);    R_RegisterCCallable("randtoolbox", "sobol_c", (DL_FUNC) sobol_c);
130          R_RegisterCCallable("randtoolbox", "setSeed", (DL_FUNC) setSeed);          R_RegisterCCallable("randtoolbox", "setSeed", (DL_FUNC) setSeed);
131          R_RegisterCCallable("randtoolbox", "congruRand", (DL_FUNC) congruRand);          R_RegisterCCallable("randtoolbox", "congruRand", (DL_FUNC) congruRand);
132          R_RegisterCCallable("randtoolbox", "SFmersennetwister", (DL_FUNC) SFmersennetwister);          R_RegisterCCallable("randtoolbox", "SFmersennetwister", (DL_FUNC) SFmersennetwister);
# Line 91  Line 134 
134          R_RegisterCCallable("randtoolbox", "collisionTest", (DL_FUNC) collisionTest);          R_RegisterCCallable("randtoolbox", "collisionTest", (DL_FUNC) collisionTest);
135          R_RegisterCCallable("randtoolbox", "knuthTAOCP", (DL_FUNC) knuthTAOCP);          R_RegisterCCallable("randtoolbox", "knuthTAOCP", (DL_FUNC) knuthTAOCP);
136    
137                  //retrieve WELL rng entry point in the rngWELL pkg    //retrieve RNG function coming from rngWELL package, see files rngWELL.c(h) in that pkg
138                  WELLrng = (void (*) (double *, int, int, int, int, int)) R_GetCCallable("rngWELL", "WELLrng");                  WELLrng = (void (*) (double *, int, int, int, int, int)) R_GetCCallable("rngWELL", "WELLrng");
139                  WELL_get_set_entry_point =(void (*) (void (*)())) R_GetCCallable("rngWELL", "WELL_get_set_entry_point");                  WELL_get_set_entry_point =(void (*) (void (*)())) R_GetCCallable("rngWELL", "WELL_get_set_entry_point");
140                  /*getRngWELL = (void (*) (int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "getRngWELL");    /* // well RNG function coming from rngWELL package, see files runifInterface.c(h) in that pkg
141      getRngWELL = (void (*) (int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "getRngWELL");
142                  putRngWELL = (void (*) (int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "putRngWELL");                  putRngWELL = (void (*) (int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "putRngWELL");
143                  initMT2002 = (void (*) (unsigned int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "initMT2002");*/                  initMT2002 = (void (*) (unsigned int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "initMT2002");*/
144    
145    
146  }  }
147    

Legend:
Removed from v.6028  
changed lines
  Added in v.6115

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge