12#ifndef ROOT_Math_RanluxppEngine
13#define ROOT_Math_RanluxppEngine
23template <
int w,
int p,
int u = 0>
24class RanluxppEngineImpl;
31 std::unique_ptr<ImplType>
fImpl;
38 double Rndm()
override;
47 void Skip(uint64_t
n);
50 static const char *
Name() {
return "RANLUX++"; }
65 std::unique_ptr<ImplType>
fImpl;
72 double Rndm()
override;
79 void SetSeed(uint64_t seed);
81 void Skip(uint64_t
n);
84 static const char *
Name() {
return "RanluxppCompatJames"; }
111 double Rndm()
override;
118 void SetSeed(uint64_t seed);
120 void Skip(uint64_t
n);
123 static const char *
Name() {
return "RanluxppCompatGslRanlxs"; }
148 double Rndm()
override;
155 void SetSeed(uint64_t seed);
157 void Skip(uint64_t
n);
160 static const char *
Name() {
return "RanluxppCompatGslRanlxd"; }
170template <
int w,
int p>
186 double Rndm()
override;
193 void SetSeed(uint64_t seed);
195 void Skip(uint64_t
n);
198 static const char *
Name() {
return "RanluxppCompatLuescherRanlxs"; }
223 double Rndm()
override;
230 void SetSeed(uint64_t seed);
232 void Skip(uint64_t
n);
235 static const char *
Name() {
return "RanluxppCompatLuescherRanlxd"; }
256 double Rndm()
override;
263 void SetSeed(uint64_t seed);
265 void Skip(uint64_t
n);
268 static const char *
Name() {
return "RanluxppCompatStdRanlux24"; }
284 double Rndm()
override;
291 void SetSeed(uint64_t seed);
293 void Skip(uint64_t
n);
296 static const char *
Name() {
return "RanluxppCompatStdRanlux48"; }
TRObject operator()(const T1 &t1) const
Compatibility engine for gsl_rng_ranlxd* from the GNU Scientific Library.
std::unique_ptr< ImplType > fImpl
static const char * Name()
Get name of the generator.
virtual ~RanluxppCompatEngineGslRanlxd()
Compatibility engine for gsl_rng_ranlxs* from the GNU Scientific Library.
static const char * Name()
Get name of the generator.
virtual ~RanluxppCompatEngineGslRanlxs()
std::unique_ptr< ImplType > fImpl
virtual ~RanluxppCompatEngineJames()
std::unique_ptr< ImplType > fImpl
static const char * Name()
Get name of the generator.
Compatibility engine for Lüscher's ranlxd implementation written in C.
std::unique_ptr< ImplType > fImpl
virtual ~RanluxppCompatEngineLuescherRanlxd()
static const char * Name()
Get name of the generator.
Compatibility engine for Lüscher's ranlxs implementation written in C.
std::unique_ptr< ImplType > fImpl
static const char * Name()
Get name of the generator.
virtual ~RanluxppCompatEngineLuescherRanlxs()
Compatibility engine for std::ranlux24 from the C++ standard.
std::unique_ptr< ImplType > fImpl
static const char * Name()
Get name of the generator.
virtual ~RanluxppCompatEngineStdRanlux24()
Compatibility engine for std::ranlux48 from the C++ standard.
static const char * Name()
Get name of the generator.
std::unique_ptr< ImplType > fImpl
virtual ~RanluxppCompatEngineStdRanlux48()
Implementation of the RANLUX++ generator.
uint64_t IntRndm()
Generate a random integer value with 48 bits.
double Rndm() override
Generate a double-precision random number with 48 bits of randomness.
void Skip(uint64_t n)
Skip n random numbers without generating them.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
double operator()()
Generate a double-precision random number (non-virtual method)
virtual ~RanluxppEngine()
static const char * Name()
Get name of the generator.
std::unique_ptr< ImplType > fImpl
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...