void rand_c0o1(double *r, int n, void *d) { if( n >= DSFMT_N64 ) { int nn; if( n % 2 != 0 ) nn = n - 1; else nn = n; if( d == NULL ) { dsfmt_fill_array_close_open(&dsfmt_global_data, r, nn); } else { dsfmt_t *p = (dsfmt_t*) d; dsfmt_fill_array_close_open(p, r, nn); } if( n % 2 != 0 ) r[n-1] = rand_c0o1(d); } else { for(int i=0; i<n; i++) r[i] = rand_c0o1(d); } }
void drunif(RngEngine* rng, double* buffer, BlasInt* n, BlasInt* isAligned, RngErrorType* info) { if ((*isAligned == 0) || (*n == 1)) { for (BlasInt iter = 0; iter < *n; ++iter) { buffer[iter] = dsfmt_genrand_close_open(&(rng->m_dsfmt)); } } else if (*n > 1) { dsfmt_fill_array_close_open(&(rng->m_dsfmt), buffer, *n); } *info = 0; }