7 #ifndef ROOT_Math_MixMaxEngineImpl 8 #define ROOT_Math_MixMaxEngineImpl 13 #elif (ROOT_MM_N==240) 14 namespace mixmax_240 {
15 #elif (ROOT_MM_N==256) 16 namespace mixmax_256 {
22 #define __thread __declspec(thread) 35 using namespace mixmax_17;
36 #elif (ROOT_MM_N==240) 37 using namespace mixmax_240;
38 #elif (ROOT_MM_N==256) 39 using namespace mixmax_256;
50 class MixMaxEngineImpl {
53 std::cerr <<
"MixMaxEngineImpl - These template parameters are not supported for MixMaxEngine" << std::endl;
57 double Rndm() {
return -1; }
59 void SetState(
const std::vector<uint64_t> &) { }
96 void SetState(
const std::vector<StateInt_t> & state) {
98 fRngState =
rng_copy(const_cast<StateInt_t*>(state.data()) );
100 void GetState(std::vector<StateInt_t> & state)
const {
103 for (
int i = 0; i < n; ++i)
104 state[i] = fRngState->
V[i];
123 void ReadState(
const char filename[] ) {
127 void Branch(uint32_t * seedvec) {
int rng_free(rng_state_t *X)
int iterate(rng_state_t *X)
Namespace for new ROOT classes and functions.
MixMaxEngineImpl(uint64_t)
MixMaxEngine< ROOT_MM_N, 0 >::StateInt_t StateInt_t
MixMaxEngine< ROOT_MM_N, 0 >::Result_t Result_t
void fill_array(rng_state_t *X, unsigned int n, double *array)
void SetState(const std::vector< uint64_t > &)
void GetState(std::vector< uint64_t > &)
myuint get_next(rng_state_t *X)
void seed_uniquestream(rng_state_t *X, myID_t clusterID, myID_t machineID, myID_t runID, myID_t streamID)
rng_state_t * rng_alloc()
double get_next_float(rng_state_t *X)
void read_state(rng_state_t *X, const char filename[])
void GetState(std::vector< StateInt_t > &state) const
void RndmArray(int n, double *array)
MixMaxEngineImpl(uint64_t seed)
void SetSeedFast(Result_t seed)
void seed_spbox(rng_state_t *X, myuint seed)
void SetSeed(Result_t seed)
void SetState(const std::vector< StateInt_t > &state)
Namespace for new Math classes and functions.
rng_state_t * rng_copy(myuint *Y)
void branch_inplace(rng_state_t *Xin, myID_t *ID)