Lines Matching refs:rp

190 	struct _randomjunk *rp = __randomjunk;  in _randomjunk()  local
192 if (rp == NULL) { in _randomjunk()
193 rp = (struct _randomjunk *)malloc(sizeof (*rp)); in _randomjunk()
194 if (rp == NULL) in _randomjunk()
196 (void) memcpy(rp, &_randominit, sizeof (*rp)); in _randomjunk()
197 __randomjunk = rp; in _randomjunk()
199 return (rp); in _randomjunk()
226 struct _randomjunk *rp = _randomjunk(); in initstate() local
234 if (rp == NULL) in initstate()
236 ostate = (char *)(&rp->state[ -1 ]); in initstate()
238 if (rp->rand_type == TYPE_0) rp->state[ -1 ] = rp->rand_type; in initstate()
239 else rp->state[ -1 ] = in initstate()
240 (unsigned int)(MAX_TYPES*(rp->rptr - rp->state) + rp->rand_type); in initstate()
245 rp->rand_type = TYPE_0; in initstate()
246 rp->rand_deg = DEG_0; in initstate()
247 rp->rand_sep = SEP_0; in initstate()
250 rp->rand_type = TYPE_1; in initstate()
251 rp->rand_deg = DEG_1; in initstate()
252 rp->rand_sep = SEP_1; in initstate()
255 rp->rand_type = TYPE_2; in initstate()
256 rp->rand_deg = DEG_2; in initstate()
257 rp->rand_sep = SEP_2; in initstate()
260 rp->rand_type = TYPE_3; in initstate()
261 rp->rand_deg = DEG_3; in initstate()
262 rp->rand_sep = SEP_3; in initstate()
264 rp->rand_type = TYPE_4; in initstate()
265 rp->rand_deg = DEG_4; in initstate()
266 rp->rand_sep = SEP_4; in initstate()
272 rp->state = &(((unsigned int *)(uintptr_t)arg_state)[1]); in initstate()
274 rp->end_ptr = &rp->state[rp->rand_deg]; in initstate()
276 if (rp->rand_type == TYPE_0) rp->state[ -1 ] = rp->rand_type; in initstate()
278 rp->state[-1] = (unsigned int)(MAX_TYPES* in initstate()
279 (rp->rptr - rp->state) + rp->rand_type); in initstate()
300 struct _randomjunk *rp = _randomjunk(); in setstate() local
306 if (rp == NULL) in setstate()
311 ostate = (char *)(&rp->state[ -1 ]); in setstate()
313 if (rp->rand_type == TYPE_0) rp->state[ -1 ] = rp->rand_type; in setstate()
315 rp->state[-1] = (unsigned int)(MAX_TYPES* in setstate()
316 (rp->rptr - rp->state) + rp->rand_type); in setstate()
323 rp->rand_type = type; in setstate()
324 rp->rand_deg = rp->degrees[ type ]; in setstate()
325 rp->rand_sep = rp->seps[ type ]; in setstate()
331 rp->state = &new_state[ 1 ]; in setstate()
332 if (rp->rand_type != TYPE_0) { in setstate()
333 rp->rptr = &rp->state[ rear ]; in setstate()
334 rp->fptr = &rp->state[ (rear + rp->rand_sep)%rp->rand_deg ]; in setstate()
336 rp->end_ptr = &rp->state[ rp->rand_deg ]; /* set end_ptr too */ in setstate()
360 struct _randomjunk *rp = _randomjunk(); in random() local
363 if (rp == NULL) in random()
365 if (rp->rand_type == TYPE_0) { in random()
366 i = rp->state[0] = (rp->state[0]*1103515245 + 12345)&0x7fffffff; in random()
368 *rp->fptr += *rp->rptr; in random()
369 i = (*rp->fptr >> 1)&0x7fffffff; /* chucking least random bit */ in random()
370 if (++rp->fptr >= rp->end_ptr) { in random()
371 rp->fptr = rp->state; in random()
372 ++rp->rptr; in random()
374 if (++rp->rptr >= rp->end_ptr) rp->rptr = rp->state; in random()
396 struct _randomjunk *rp = _randomjunk(); in srandom() local
399 if (rp == NULL) in srandom()
401 if (rp->rand_type == TYPE_0) { in srandom()
402 rp->state[ 0 ] = x; in srandom()
404 rp->state[ 0 ] = x; in srandom()
405 for (i = 1; i < rp->rand_deg; i++) { in srandom()
406 rp->state[i] = 1103515245*rp->state[i - 1] + 12345; in srandom()
408 rp->fptr = &rp->state[ rp->rand_sep ]; in srandom()
409 rp->rptr = &rp->state[ 0 ]; in srandom()
410 for (i = 0; i < 10*rp->rand_deg; i++) (void)random(); in srandom()