32 #ifndef BZ_RANDOM_UNIFORM_H
33 #define BZ_RANDOM_UNIFORM_H
52 const long double norm32open = .2328306436538696289062500000000000000000E-9L;
53 const long double norm64open = .5421010862427522170037264004349708557129E-19L;
54 const long double norm96open = .1262177448353618888658765704452457967477E-28L;
55 const long double norm128open = .2938735877055718769921841343055614194547E-38L;
58 template<
typename IRNG,
typename stateTag>
73 #if (FLT_MANT_DIG > 128) && !defined(BZ_IGNORE_RNG_ERRORS)
74 #error RNG code assumes float mantissa is <= 128 bits (not true for your platform). Use -DBZ_IGNORE_RNG_ERRORS to ignore this warning.
80 return i1 * norm128open + i2 * norm96open + i3 * norm64open
82 #elif FLT_MANT_DIG > 64
86 return i1 * norm96open + i2 * norm64open + i3 *
norm32open;
87 #elif FLT_MANT_DIG > 32
101 template<
typename IRNG,
typename stateTag>
114 #if DBL_MANT_DIG > 96
115 #if (DBL_MANT_DIG > 128) && !defined(BZ_IGNORE_RNG_ERRORS)
116 #error RNG code assumes double mantissa is <= 128 bits (not true for your platform). Use -DBZ_IGNORE_RNG_ERRORS to ignore this warning.
123 return i1 * norm128open + i2 * norm96open + i3 * norm64open
125 #elif DBL_MANT_DIG > 64
129 return i1 * norm96open + i2 * norm64open + i3 *
norm32open;
130 #elif DBL_MANT_DIG > 32
144 template<
typename IRNG,
typename stateTag>
157 #if LDBL_MANT_DIG > 96
158 #if (LDBL_MANT_DIG > 128) && !defined(BZ_IGNORE_RNG_ERRORS)
159 #error RNG code assumes long double mantissa is <= 128 bits (not true for your platform). Use -DBZ_IGNORE_RNG_ERRORS to ignore this warning.
166 return i1 * norm128open + i2 * norm96open + i3 * norm64open
168 #elif LDBL_MANT_DIG > 64
172 return i1 * norm96open + i2 * norm64open + i3 *
norm32open;
173 #elif LDBL_MANT_DIG > 32
204 const long double norm32closed = .2328306437080797375431469961868475648078E-9L;
209 .23283064365386962891887177448353618888727188481031E-9L;
211 .54210108624275221703311375920552804341370213034169E-19L;
214 const long double norm96closed1 = .2328306436538696289062500000029387358771E-9L;
216 .5421010862427522170037264004418131333707E-19L;
218 .1262177448353618888658765704468388886588E-28L;
222 const long double norm128clos1 = .2328306436538696289062500000000000000007E-9L;
223 const long double norm128clos2 = .5421010862427522170037264004349708557145E-19L;
224 const long double norm128clos3 = .1262177448353618888658765704452457967481E-28L;
225 const long double norm128clos4 = .2938735877055718769921841343055614194555E-38L;
228 template<
typename T = double,
typename IRNG =
defaultIRNG,
232 template<
typename IRNG,
typename stateTag>
245 #if (FLT_MANT_DIG > 128) && !defined(BZ_IGNORE_RNG_ERRORS)
246 #error RNG code assumes float mantissa is <= 128 bits (not true for your platform). Use -DBZ_IGNORE_RNG_ERRORS to ignore this warning.
253 return i1 * norm128clos1 + i2 * norm128clos2
255 #elif FLT_MANT_DIG > 64
260 return i1 * norm96closed1 + i2 * norm96closed2
262 #elif FLT_MANT_DIG > 32
278 template<
typename IRNG,
typename stateTag>
290 #if DBL_MANT_DIG > 96
291 #if (DBL_MANT_DIG > 128) && !defined(BZ_IGNORE_RNG_ERRORS)
292 #error RNG code assumes double mantissa is <= 128 bits (not true for your platform). Use -DBZ_IGNORE_RNG_ERRORS to ignore this warning.
299 return i1 * norm128clos1 + i2 * norm128clos2
301 #elif DBL_MANT_DIG > 64
306 return i1 * norm96closed1 + i2 * norm96closed2
308 #elif DBL_MANT_DIG > 32
324 template<
typename IRNG,
typename stateTag>
337 #if LDBL_MANT_DIG > 96
338 #if (LDBL_MANT_DIG > 128) && !defined(BZ_IGNORE_RNG_ERRORS)
339 #error RNG code assumes long double mantissa is <= 128 bits (not true for your platform). Use -DBZ_IGNORE_RNG_ERRORS to ignore this warning.
346 return i1 * norm128clos1 + i2 * norm128clos2
348 #elif LDBL_MANT_DIG > 64
353 return i1 * norm96closed1 + i2 * norm96closed2
355 #elif LDBL_MANT_DIG > 32
375 template<
typename T = double,
typename IRNG =
defaultIRNG,
406 template<
typename T = double,
typename IRNG =
defaultIRNG,
431 #endif // BZ_RANDOM_UNIFORM_H
_bz_global blitz::IndexPlaceholder< 0 > i
Definition: indexexpr.h:256
const long double norm128clos1
Definition: uniform.h:222
const long double norm96closed3
Definition: uniform.h:217
const long double norm32closed
Definition: uniform.h:204
const long double norm64closed1
Definition: uniform.h:208
const long double norm64closed2
Definition: uniform.h:210
const long double norm32open
Definition: uniform.h:52
const long double norm96closed2
Definition: uniform.h:215
float defaultType
Definition: default.h:46
const long double norm128clos2
Definition: uniform.h:223
const long double norm128clos3
Definition: uniform.h:224
unsigned int IRNG_int
Definition: default.h:57
const long double norm96closed1
Definition: uniform.h:214
MersenneTwister defaultIRNG
Definition: default.h:120
const long double norm64open
Definition: uniform.h:53
const long double norm96open
Definition: uniform.h:54
const long double norm128clos4
Definition: uniform.h:225
sharedState defaultState
Definition: default.h:55
const long double norm128open
Definition: uniform.h:55