Home | History | Annotate | Download | only in lib

Lines Matching refs:state

28 static inline uint64_t rand_max(struct frand_state *state)
30 if (state->use64)
64 static inline unsigned int __rand32(struct taus88_state *state)
68 state->s1 = TAUSWORTHE(state->s1, 13, 19, 4294967294UL, 12);
69 state->s2 = TAUSWORTHE(state->s2, 2, 25, 4294967288UL, 4);
70 state->s3 = TAUSWORTHE(state->s3, 3, 11, 4294967280UL, 17);
72 return (state->s1 ^ state->s2 ^ state->s3);
75 static inline uint64_t __rand64(struct taus258_state *state)
79 xval = ((state->s1 << 1) ^ state->s1) >> 53;
80 state->s1 = ((state->s1 & 18446744073709551614ULL) << 10) ^ xval;
82 xval = ((state->s2 << 24) ^ state->s2) >> 50;
83 state->s2 = ((state->s2 & 18446744073709551104ULL) << 5) ^ xval;
85 xval = ((state->s3 << 3) ^ state->s3) >> 23;
86 state->s3 = ((state->s3 & 18446744073709547520ULL) << 29) ^ xval;
88 xval = ((state->s4 << 5) ^ state->s4) >> 24;
89 state->s4 = ((state->s4 & 18446744073709420544ULL) << 23) ^ xval;
91 xval = ((state->s5 << 3) ^ state->s5) >> 33;
92 state->s5 = ((state->s5 & 18446744073701163008ULL) << 8) ^ xval;
94 return (state->s1 ^ state->s2 ^ state->s3 ^ state->s4 ^ state->s5);
97 static inline uint64_t __rand(struct frand_state *state)
99 if (state->use64)
100 return __rand64(&state->state64);
102 return __rand32(&state->state32);
105 static inline double __rand_0_1(struct frand_state *state)
107 if (state->use64) {
108 uint64_t val = __rand64(&state->state64);
112 uint32_t val = __rand32(&state->state32);
121 static inline int rand32_between(struct frand_state *state, int start, int end)
125 assert(!state->use64);
127 r = __rand32(&state->state32);