Lines Matching refs:rp

192 	struct _randomjunk *rp = __randomjunk;
194 if (rp == NULL) {
195 rp = (struct _randomjunk *)malloc(sizeof (*rp));
196 if (rp == NULL)
198 (void) memcpy(rp, &_randominit, sizeof (*rp));
199 __randomjunk = rp;
201 return (rp);
228 struct _randomjunk *rp = _randomjunk();
236 if (rp == NULL)
238 ostate = (char *)(&rp->state[ -1 ]);
240 if (rp->rand_type == TYPE_0) rp->state[ -1 ] = rp->rand_type;
241 else rp->state[ -1 ] =
242 (unsigned int)(MAX_TYPES*(rp->rptr - rp->state) + rp->rand_type);
247 rp->rand_type = TYPE_0;
248 rp->rand_deg = DEG_0;
249 rp->rand_sep = SEP_0;
252 rp->rand_type = TYPE_1;
253 rp->rand_deg = DEG_1;
254 rp->rand_sep = SEP_1;
257 rp->rand_type = TYPE_2;
258 rp->rand_deg = DEG_2;
259 rp->rand_sep = SEP_2;
262 rp->rand_type = TYPE_3;
263 rp->rand_deg = DEG_3;
264 rp->rand_sep = SEP_3;
266 rp->rand_type = TYPE_4;
267 rp->rand_deg = DEG_4;
268 rp->rand_sep = SEP_4;
274 rp->state = &(((unsigned int *)(uintptr_t)arg_state)[1]);
276 rp->end_ptr = &rp->state[rp->rand_deg];
278 if (rp->rand_type == TYPE_0) rp->state[ -1 ] = rp->rand_type;
280 rp->state[-1] = (unsigned int)(MAX_TYPES*
281 (rp->rptr - rp->state) + rp->rand_type);
302 struct _randomjunk *rp = _randomjunk();
308 if (rp == NULL)
313 ostate = (char *)(&rp->state[ -1 ]);
315 if (rp->rand_type == TYPE_0) rp->state[ -1 ] = rp->rand_type;
317 rp->state[-1] = (unsigned int)(MAX_TYPES*
318 (rp->rptr - rp->state) + rp->rand_type);
325 rp->rand_type = type;
326 rp->rand_deg = rp->degrees[ type ];
327 rp->rand_sep = rp->seps[ type ];
333 rp->state = &new_state[ 1 ];
334 if (rp->rand_type != TYPE_0) {
335 rp->rptr = &rp->state[ rear ];
336 rp->fptr = &rp->state[ (rear + rp->rand_sep)%rp->rand_deg ];
338 rp->end_ptr = &rp->state[ rp->rand_deg ]; /* set end_ptr too */
362 struct _randomjunk *rp = _randomjunk();
365 if (rp == NULL)
367 if (rp->rand_type == TYPE_0) {
368 i = rp->state[0] = (rp->state[0]*1103515245 + 12345)&0x7fffffff;
370 *rp->fptr += *rp->rptr;
371 i = (*rp->fptr >> 1)&0x7fffffff; /* chucking least random bit */
372 if (++rp->fptr >= rp->end_ptr) {
373 rp->fptr = rp->state;
374 ++rp->rptr;
376 if (++rp->rptr >= rp->end_ptr) rp->rptr = rp->state;
398 struct _randomjunk *rp = _randomjunk();
401 if (rp == NULL)
403 if (rp->rand_type == TYPE_0) {
404 rp->state[ 0 ] = x;
406 rp->state[ 0 ] = x;
407 for (i = 1; i < rp->rand_deg; i++) {
408 rp->state[i] = 1103515245*rp->state[i - 1] + 12345;
410 rp->fptr = &rp->state[ rp->rand_sep ];
411 rp->rptr = &rp->state[ 0 ];
412 for (i = 0; i < 10*rp->rand_deg; i++) (void)random();