Home | History | Annotate | Download | only in libdrm

Lines Matching refs:state

106 extern int           drmRandomDestroy(void *state);
107 extern unsigned long drmRandom(void *state);
108 extern double drmRandomDouble(void *state);
113 RandomState *state;
115 state = RANDOM_ALLOC(sizeof(*state));
116 if (!state) return NULL;
117 state->magic = RANDOM_MAGIC;
120 state->a = 16807;
121 state->m = 2147483647;
122 state->check = 1043618065; /* After 10000 iterations */
125 state->a = 48271;
126 state->m = 2147483647;
127 state->check = 399268537; /* After 10000 iterations */
129 state->q = state->m / state->a;
130 state->r = state->m % state->a;
132 state->seed = seed;
135 if (state->seed <= 0) state->seed = 1;
136 if (state->seed >= state->m) state->seed = state->m - 1;
138 return state;
141 int drmRandomDestroy(void *state)
143 RANDOM_FREE(state);
147 unsigned long drmRandom(void *state)
149 RandomState *s = (RandomState *)state;
161 double drmRandomDouble(void *state)
163 RandomState *s = (RandomState *)state;
165 return (double)drmRandom(state)/(double)s->m;
173 void *state;
175 state = drmRandomCreate(seed);
176 initial = drmRandom(state);
178 while (initial != drmRandom(state)) {
183 drmRandomDestroy(state);
188 RandomState *state;
192 state = drmRandomCreate(1);
194 rand = drmRandom(state);
197 rand, state->check,
198 rand - state->check ? "*INCORRECT*" : "CORRECT");
199 drmRandomDestroy(state);