QDP++
qdp_random.h
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// QDP data parallel interface
4//
5// Random number support
6
7#ifndef QDP_RANDOM_H
8#define QDP_RANDOM_H
9
10namespace QDP {
11
12
14
20
21namespace RNG
22{
24
25 void initDefaultRNG(void);
26
28 void initRNG(void);
29
31
34 void setrn(const Seed& lseed);
35
37
40 void savern(Seed& lseed);
41
42 void finalizeRNG();
43
45 float sranf(Seed& seed, Seed&, const Seed&);
46
48 void sranf(float* d, int N, Seed& seed, ILatticeSeed&, const Seed&);
49}
50
52template<class T1, class T2>
53inline void
54fill_random(float& d, T1& seed, T2& skewed_seed, const T1& seed_mult)
55{
56 d = float(RNG::sranf(seed, skewed_seed, seed_mult));
57}
58
60template<class T1, class T2>
61inline void
62fill_random(double& d, T1& seed, T2& skewed_seed, const T1& seed_mult)
63{
64 d = double(RNG::sranf(seed, skewed_seed, seed_mult));
65}
66
67
69template<class T1, class T2, int N>
70inline void
71fill_random(float* d, T1& seed, T2& skewed_seed, const T1& seed_mult)
72{
73 RNG::sranf(d, N, seed, skewed_seed, seed_mult);
74}
75
76
78template<class T1, class T2, int N>
79inline void
80fill_random(double* d, T1& seed, T2& skewed_seed, const T1& seed_mult)
81{
82 float dd[N];
83 RNG::sranf(dd, N, seed, skewed_seed, seed_mult);
84 for(int i=0; i < N; ++i)
85 d[i] = float(dd[i]);
86}
87
88} // namespace QDP
89
90#endif
Seed ILatticeSeed
OScalar< PScalar< PSeed< RScalar< INTEGER32 > > > > Seed
Random number generator namespace.
Definition qdp_random.cc:18
float sranf(Seed &seed, Seed &skewed_seed, const Seed &seed_mult)
Scalar random number generator. Done on the front end. *‍/.
void savern(Seed &seed)
Return a copy of the random number seed.
void initDefaultRNG()
Initialize the random number generator with a default seed.
Definition qdp_random.cc:44
void initRNG()
Initialize the internals of the random number generator.
Definition qdp_random.cc:54
void setrn(const Seed &seed)
Initialize the random number generator seed.
void finalizeRNG()
Yet another random number generator.
void fill_random(float &d, T1 &seed, T2 &skewed_seed, const T1 &seed_mult)
dest = random
Definition qdp_random.h:54