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 4474, Sun Oct 4 10:50:15 2009 UTC revision 6033, Wed May 10 08:47:02 2017 UTC
# Line 6  Line 6 
6   * @author Petr Savicky   * @author Petr Savicky
7   *   *
8   *   *
9   * Copyright (C) 2009, Christophe Dutang,   * Copyright (C) 2017, Christophe Dutang,
10   * Petr Savicky, Academy of Sciences of the Czech Republic.   * Petr Savicky, Academy of Sciences of the Czech Republic.
11   * All rights reserved.   * All rights reserved.
12   *   *
13   * The new BSD License is applied to this software.   * The new BSD License is applied to this software.
14   * Copyright (c) 2009 Christophe Dutang, Petr Savicky.   * Copyright (c) 2013 Christophe Dutang, Petr Savicky.
15   * All rights reserved.   * All rights reserved.
16   *   *
17   *      Redistribution and use in source and binary forms, with or without   *      Redistribution and use in source and binary forms, with or without
# 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, 6},    {"doCongruRand",        (DL_FUNC) &doCongruRand, 6}, //randtoolbox.h
83          {"doSetSeed", (DL_FUNC) &doSetSeed, 1},    {"doHalton",            (DL_FUNC) &doHalton, 6}, //randtoolbox.h
84          {"doCongruRand", (DL_FUNC) &doCongruRand, 6},    {"doKnuthTAOCP",        (DL_FUNC) &doKnuthTAOCP, 2}, //randtoolbox.h
85          {"doSFMersenneTwister", (DL_FUNC) &doSFMersenneTwister, 4},    {"doSetSeed",           (DL_FUNC) &doSetSeed, 1}, //randtoolbox.h
86          {"doPokerTest", (DL_FUNC) &doPokerTest, 3},    {"doSFMersenneTwister", (DL_FUNC) &doSFMersenneTwister, 4}, //randtoolbox.h
87          {"doCollisionTest", (DL_FUNC) &doCollisionTest, 3},    {"doSobol",             (DL_FUNC) &doSobol, 6}, //randtoolbox.h
88          {"doWELL", (DL_FUNC) &doWELL, 5},    {"doTorus",             (DL_FUNC) &doTorus, 7}, //randtoolbox.h
89          {"doKnuthTAOCP", (DL_FUNC) &doKnuthTAOCP, 2},    {"doWELL",              (DL_FUNC) &doWELL, 5}, //randtoolbox.h
90      {"doPokerTest",         (DL_FUNC) &doPokerTest, 3}, //testrng.h
91      {"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    extern void F77_NAME(halton_f)(void *, void *, void *, void *, void *, void *, void *);
100    extern void F77_NAME(sobol_f)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
101    
102    //table of registration routines accessed with .Fortran()
103    static const R_FortranMethodDef FortranEntries[] = {
104      {"halton_f", (DL_FUNC) &F77_NAME(halton_f),  7},
105      {"sobol_f", (DL_FUNC) &F77_NAME(sobol_f),  11},
106          {NULL, NULL, 0}          {NULL, NULL, 0}
107  };  };
108    
109    
110  //table of registered routines  //there is no routine accessed with .External()
111  void R_init_randtoolbox(DllInfo *info)  
112    //table of all registered routines
113    void R_init_randtoolbox(DllInfo *dll)
114  {  {
115          //register method accessed with .Call    //register method accessed with .C, .Call, .Fortran, .External respectively
116          R_registerRoutines(info, NULL, callMethods, NULL, NULL);    R_registerRoutines(dll, CEntries, CallEntries, FortranEntries, NULL);
117      R_useDynamicSymbols(dll, FALSE);
118    
119          //make randtoolbox C functions available from other packages    //make randtoolbox C functions available for other packages
120          R_RegisterCCallable("randtoolbox", "torus", (DL_FUNC) torus);          R_RegisterCCallable("randtoolbox", "torus", (DL_FUNC) torus);
121      R_RegisterCCallable("randtoolbox", "halton_c", (DL_FUNC) halton_c);
122      R_RegisterCCallable("randtoolbox", "sobol_c", (DL_FUNC) halton_c);
123          R_RegisterCCallable("randtoolbox", "setSeed", (DL_FUNC) setSeed);          R_RegisterCCallable("randtoolbox", "setSeed", (DL_FUNC) setSeed);
124          R_RegisterCCallable("randtoolbox", "congruRand", (DL_FUNC) congruRand);          R_RegisterCCallable("randtoolbox", "congruRand", (DL_FUNC) congruRand);
125          R_RegisterCCallable("randtoolbox", "SFmersennetwister", (DL_FUNC) SFmersennetwister);          R_RegisterCCallable("randtoolbox", "SFmersennetwister", (DL_FUNC) SFmersennetwister);
# Line 89  Line 129 
129    
130                  //retrieve WELL rng entry point in the rngWELL pkg                  //retrieve WELL rng entry point in the rngWELL pkg
131                  WELLrng = (void (*) (double *, int, int, int, int, int)) R_GetCCallable("rngWELL", "WELLrng");                  WELLrng = (void (*) (double *, int, int, int, int, int)) R_GetCCallable("rngWELL", "WELLrng");
132                  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");
133      /*getRngWELL = (void (*) (int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "getRngWELL");
134       putRngWELL = (void (*) (int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "putRngWELL");
135       initMT2002 = (void (*) (unsigned int *, int *, unsigned int *)) R_GetCCallable("rngWELL", "initMT2002");*/
136    
137  }  }
138    

Legend:
Removed from v.4474  
changed lines
  Added in v.6033

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