32 #ifndef MCKL_RANDOM_INTERNAL_THREEFRY_CONSTANTS_HPP 33 #define MCKL_RANDOM_INTERNAL_THREEFRY_CONSTANTS_HPP 41 template <typename T, int = std::numeric_limits<T>::digits>
48 static constexpr T value = 0x1BD11BDA;
55 static constexpr T value = 0x1BD11BDAA9FC1A22;
58 template <typename T, std::size_t, int = std::numeric_limits<T>::digits>
65 static constexpr
int value[1][8] = {{13, 15, 26, 6, 17, 29, 16, 24}};
72 static constexpr
int value[2][8] = {
73 {10, 11, 13, 23, 6, 17, 25, 18}, {26, 21, 27, 5, 20, 11, 10, 20}};
80 static constexpr
int value[1][8] = {{16, 42, 12, 31, 16, 32, 24, 21}};
87 static constexpr
int value[2][8] = {
88 {14, 52, 23, 5, 25, 46, 58, 32}, {16, 57, 40, 37, 33, 12, 22, 32}};
95 static constexpr
int value[4][8] = {{46, 33, 17, 44, 39, 13, 25, 8},
96 {36, 27, 49, 9, 30, 50, 29, 35}, {19, 14, 36, 54, 34, 10, 39, 56},
97 {37, 42, 39, 56, 24, 17, 43, 22}};
100 template <
typename T>
104 static constexpr
int value[8][8] = {{24, 38, 33, 5, 41, 16, 31, 9},
105 {13, 19, 4, 20, 9, 34, 44, 48}, {8, 10, 51, 48, 37, 56, 47, 35},
106 {47, 55, 13, 41, 31, 51, 46, 52}, {8, 49, 34, 47, 12, 4, 19, 23},
107 {17, 18, 41, 28, 47, 53, 42, 31}, {22, 23, 59, 16, 44, 42, 44, 37},
108 {37, 52, 17, 25, 30, 41, 25, 20}};
111 template <std::
size_t>
118 static constexpr std::size_t value[2] = {0, 1};
125 static constexpr std::size_t value[4] = {0, 3, 2, 1};
132 static constexpr std::size_t value[8] = {2, 1, 4, 7, 6, 5, 0, 3};
138 static constexpr std::size_t value[16] = {
139 0, 9, 2, 13, 6, 11, 4, 15, 10, 7, 12, 3, 14, 5, 8, 1};
146 template <
typename T, std::
size_t K>
157 #endif // MCKL_RANDOM_INTERNAL_THREEFRY_CONSTANTS_HPP
Default Threefry constants.