24#if defined(__cplusplus)
46 uint64_t th, tl, oh, ol;
48 th = ((uint64_t)in->
u[2] << 32) | ((uint64_t)in->
u[3]);
49 tl = ((uint64_t)in->
u[0] << 32) | ((uint64_t)in->
u[1]);
51 oh = th >> (shift * 8);
52 ol = tl >> (shift * 8);
53 ol |= th << (64 - shift * 8);
54 out->
u[0] = (uint32_t)(ol >> 32);
55 out->
u[1] = (uint32_t)ol;
56 out->
u[2] = (uint32_t)(oh >> 32);
57 out->
u[3] = (uint32_t)oh;
62 uint64_t th, tl, oh, ol;
64 th = ((uint64_t)in->
u[3] << 32) | ((uint64_t)in->
u[2]);
65 tl = ((uint64_t)in->
u[1] << 32) | ((uint64_t)in->
u[0]);
67 oh = th >> (shift * 8);
68 ol = tl >> (shift * 8);
69 ol |= th << (64 - shift * 8);
70 out->
u[1] = (uint32_t)(ol >> 32);
71 out->
u[0] = (uint32_t)ol;
72 out->
u[3] = (uint32_t)(oh >> 32);
73 out->
u[2] = (uint32_t)oh;
86 uint64_t th, tl, oh, ol;
88 th = ((uint64_t)in->
u[2] << 32) | ((uint64_t)in->
u[3]);
89 tl = ((uint64_t)in->
u[0] << 32) | ((uint64_t)in->
u[1]);
91 oh = th << (shift * 8);
92 ol = tl << (shift * 8);
93 oh |= tl >> (64 - shift * 8);
94 out->
u[0] = (uint32_t)(ol >> 32);
95 out->
u[1] = (uint32_t)ol;
96 out->
u[2] = (uint32_t)(oh >> 32);
97 out->
u[3] = (uint32_t)oh;
102 uint64_t th, tl, oh, ol;
104 th = ((uint64_t)in->
u[3] << 32) | ((uint64_t)in->
u[2]);
105 tl = ((uint64_t)in->
u[1] << 32) | ((uint64_t)in->
u[0]);
107 oh = th << (shift * 8);
108 ol = tl << (shift * 8);
109 oh |= tl >> (64 - shift * 8);
110 out->
u[1] = (uint32_t)(ol >> 32);
111 out->
u[0] = (uint32_t)ol;
112 out->
u[3] = (uint32_t)(oh >> 32);
113 out->
u[2] = (uint32_t)oh;
160#if defined(__cplusplus)
static void lshift128(w128_t *out, w128_t const *in, int shift)
Definition SFMT-common.h:100
static void do_recursion(w128_t *r, w128_t *a, w128_t *b, w128_t *c, w128_t *d)
Definition SFMT-common.h:142
static void rshift128(w128_t *out, w128_t const *in, int shift)
Definition SFMT-common.h:60
#define SFMT_SR1
Definition SFMT-params19937.h:8
#define SFMT_SL1
Definition SFMT-params19937.h:6
#define SFMT_SR2
Definition SFMT-params19937.h:9
#define SFMT_SL2
Definition SFMT-params19937.h:7
#define SFMT_MSK3
Definition SFMT-params19937.h:12
#define SFMT_MSK4
Definition SFMT-params19937.h:13
#define SFMT_MSK2
Definition SFMT-params19937.h:11
#define SFMT_MSK1
Definition SFMT-params19937.h:10
SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom number generator using C structure.
union W128_T w128_t
Definition SFMT.h:109
uint32_t u[4]
Definition SFMT.h:103