-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
https://github.com/lemire/testingRNG/blob/master/source/lehmer64.h
May be we already get it in lehmer
static __uint128_t g_lehmer64_state;
/**
* D. H. Lehmer, Mathematical methods in large-scale computing units.
* Proceedings of a Second Symposium on Large Scale Digital Calculating
* Machinery;
* Annals of the Computation Laboratory, Harvard Univ. 26 (1951), pp. 141-146.
*
* P L'Ecuyer, Tables of linear congruential generators of different sizes and
* good lattice structure. Mathematics of Computation of the American
* Mathematical
* Society 68.225 (1999): 249-260.
*/
static inline void lehmer64_seed(uint64_t seed) {
g_lehmer64_state = (((__uint128_t)splitmix64_stateless(seed, 0)) << 64) +
splitmix64_stateless(seed, 1);
}
static inline uint64_t lehmer64() {
g_lehmer64_state *= UINT64_C(0xda942042e4dd58b5);
return g_lehmer64_state >> 64;
}
#endif
Metadata
Metadata
Assignees
Labels
No labels