51 static const int N = 17;
71 void flatArray (
const int size,
double* vect);
77 void setSeeds(
const long * seeds,
int seedNum=0);
83 void saveStatus(
const char filename[] =
"MixMaxRngState.conf" )
const;
86 void restoreStatus(
const char filename[] =
"MixMaxRngState.conf" );
97 operator unsigned int();
100 virtual std::ostream &
put (std::ostream & os)
const;
101 virtual std::istream &
get (std::istream & is);
103 virtual std::istream &
getState ( std::istream & is );
105 std::string
name()
const {
return "MixMaxRng"; }
108 std::vector<unsigned long>
put ()
const;
109 bool get (
const std::vector<unsigned long> & v);
110 bool getState (
const std::vector<unsigned long> & v);
114 static constexpr
long long int SPECIAL = ((
N==17)? 0 : ((
N==240)? 487013230256099140ULL:0) );
115 static constexpr
long long int SPECIALMUL= ((
N==17)? 36: ((
N==240)? 51 :53) );
119 static constexpr
double INV_M61=0.43368086899420177360298E-18;
122 #define MIXMAX_MOD_MERSENNE(k) ((((k)) & M61) + (((k)) >> BITS) )
146 #pragma GCC diagnostic push
147 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
151 const double one = 1;
154 double d = *(
double*)&tmp;
158 #pragma GCC diagnostic pop
166 #if defined(__x86_64__)
169 #else // on all other platforms, including 32-bit linux, PPC and PPC64, ARM and all Windows
177 std::array<myuint_t, N>
V;
double convert1double(myuint_t u)
void BranchInplace(int id)
static constexpr long long int SPECIAL
unsigned long long int myuint_t
std::vector< ExP01TrackerHit * > a
virtual std::istream & getState(std::istream &is)
static std::string beginTag()
myuint_t apply_bigskip(myuint_t *Vout, myuint_t *Vin, myID_t clusterID, myID_t machineID, myID_t runID, myID_t streamID)
void restoreStatus(const char filename[]="MixMaxRngState.conf")
static constexpr unsigned int VECTOR_STATE_SIZE
myuint_t MOD_MULSPEC(myuint_t k)
std::array< myuint_t, N > V
MixMaxRng & operator=(const MixMaxRng &rng)
void seed64(myuint_t seedval)
std::vector< unsigned long > put() const
myuint_t iterate_raw_vec(myuint_t *Y, myuint_t sumtotOld)
void setSeeds(const long *seeds, int seedNum=0)
myuint_t fmodmulM61(myuint_t cum, myuint_t s, myuint_t a)
double get_next_float_packbits()
void seed_vielbein(unsigned int i)
static constexpr double INV_M61
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
void saveStatus(const char filename[]="MixMaxRngState.conf") const
static constexpr myuint_t M61
static constexpr int rng_get_SPECIALMUL()
static constexpr long long int rng_get_SPECIAL()
myuint_t MULWU(myuint_t k)
void flatArray(const int size, double *vect)
static constexpr double bar
myuint_t modadd(myuint_t foo, myuint_t bar)
void seed_uniquestream(myID_t clusterID, myID_t machineID, myID_t runID, myID_t streamID)
static constexpr int BITS
static std::string engineName()
void setSeed(long seed, int dum=0)
static constexpr int rng_get_N()
static constexpr long long int SPECIALMUL
void seed_spbox(myuint_t)