* This function fills the user-specified array with pseudorandom * integers. * * @param array an 128-bit array to be filled by pseudorandom numbers. * @param size number of 128-bit pseudorandom numbers to be generated. */
| 310 | * @param size number of 128-bit pseudorandom numbers to be generated. |
| 311 | */ |
| 312 | static inline void gen_rand_array(sfmt_t *ctx, w128_t *array, int size) { |
| 313 | int i, j; |
| 314 | w128_t *r1, *r2; |
| 315 | |
| 316 | r1 = &ctx->sfmt[N - 2]; |
| 317 | r2 = &ctx->sfmt[N - 1]; |
| 318 | for (i = 0; i < N - POS1; i++) { |
| 319 | do_recursion(&array[i], &ctx->sfmt[i], &ctx->sfmt[i + POS1], r1, r2); |
| 320 | r1 = r2; |
| 321 | r2 = &array[i]; |
| 322 | } |
| 323 | for (; i < N; i++) { |
| 324 | do_recursion(&array[i], &ctx->sfmt[i], &array[i + POS1 - N], r1, r2); |
| 325 | r1 = r2; |
| 326 | r2 = &array[i]; |
| 327 | } |
| 328 | for (; i < size - N; i++) { |
| 329 | do_recursion(&array[i], &array[i - N], &array[i + POS1 - N], r1, r2); |
| 330 | r1 = r2; |
| 331 | r2 = &array[i]; |
| 332 | } |
| 333 | for (j = 0; j < 2 * N - size; j++) { |
| 334 | ctx->sfmt[j] = array[j + size - N]; |
| 335 | } |
| 336 | for (; i < size; i++, j++) { |
| 337 | do_recursion(&array[i], &array[i - N], &array[i + POS1 - N], r1, r2); |
| 338 | r1 = r2; |
| 339 | r2 = &array[i]; |
| 340 | ctx->sfmt[j] = array[i]; |
| 341 | } |
| 342 | } |
| 343 | #endif |
| 344 | |
| 345 | #if defined(BIG_ENDIAN64) && !defined(ONLY64) && !defined(HAVE_ALTIVEC) |
no test coverage detected