Lines Matching refs:rp

177 	struct _randomjunk *rp = __randomjunk;
179 if (rp == 0) {
180 rp = (struct _randomjunk *)malloc(sizeof (*rp));
181 if (rp == 0)
183 *rp = _randominit;
184 __randomjunk = rp;
186 return (rp);
205 struct _randomjunk *rp = _randomjunk();
208 if (rp == 0)
210 if (rp->rand_type == TYPE_0) {
211 rp->state[0] = x;
213 rp->state[0] = x;
214 for (i = 1; i < rp->rand_deg; i++) {
215 rp->state[i] = 1103515245*rp->state[i - 1] + 12345;
217 rp->fptr = &rp->state[rp->rand_sep];
218 rp->rptr = &rp->state[0];
219 for (i = 0; i < 10 * rp->rand_deg; i++)
250 struct _randomjunk *rp = _randomjunk();
253 if (rp == 0)
255 ostate = (char *)(&rp->state[-1]);
257 if (rp->rand_type == TYPE_0) rp->state[-1] = rp->rand_type;
258 else rp->state[-1] =
259 MAX_TYPES*(rp->rptr - rp->state) + rp->rand_type;
266 rp->rand_type = TYPE_0;
267 rp->rand_deg = DEG_0;
268 rp->rand_sep = SEP_0;
270 rp->rand_type = TYPE_1;
271 rp->rand_deg = DEG_1;
272 rp->rand_sep = SEP_1;
274 rp->rand_type = TYPE_2;
275 rp->rand_deg = DEG_2;
276 rp->rand_sep = SEP_2;
278 rp->rand_type = TYPE_3;
279 rp->rand_deg = DEG_3;
280 rp->rand_sep = SEP_3;
282 rp->rand_type = TYPE_4;
283 rp->rand_deg = DEG_4;
284 rp->rand_sep = SEP_4;
286 rp->state = &((long *)arg_state)[1]; /* first location */
287 rp->end_ptr = &rp->state[rp->rand_deg]; /* set end_ptr before srandom */
289 rp->state[-1] = (rp->rand_type == TYPE_0) ? rp->rand_type
290 : MAX_TYPES * (rp->rptr - rp->state) + rp->rand_type;
310 struct _randomjunk *rp = _randomjunk();
316 if (rp == 0)
321 ostate = (char *)(&rp->state[-1]);
323 rp->state[-1] = (rp->rand_type == TYPE_0) ? rp->rand_type
324 : MAX_TYPES*(rp->rptr - rp->state) + rp->rand_type;
331 rp->rand_type = type;
332 rp->rand_deg = rp->degrees[type];
333 rp->rand_sep = rp->seps[type];
339 rp->state = &new_state[1];
340 if (rp->rand_type != TYPE_0) {
341 rp->rptr = &rp->state[rear];
342 rp->fptr = &rp->state[(rear + rp->rand_sep) % rp->rand_deg];
344 rp->end_ptr = &rp->state[rp->rand_deg]; /* set end_ptr too */
367 struct _randomjunk *rp = _randomjunk();
370 if (rp == 0)
372 if (rp->rand_type == TYPE_0) {
373 i = rp->state[0] = (rp->state[0]*1103515245 + 12345)&0x7fffffff;
375 *rp->fptr += *rp->rptr;
376 i = (*rp->fptr >> 1)&0x7fffffff; /* chucking least random bit */
377 if (++rp->fptr >= rp->end_ptr) {
378 rp->fptr = rp->state;
379 ++rp->rptr;
380 } else if (++rp->rptr >= rp->end_ptr)
381 rp->rptr = rp->state;