static count SamplesLookup(Samples *samples, int key, ccount nwant, ccount nmax, count nmin) { count n; if( key == 13 && ndim_ == 2 ) { if( rule13_.first == NULL ) Rule13Alloc(&rule13_); samples->rule = &rule13_; samples->n = n = nmin = rule13_.n; samples->sampler = SampleRule; } else if( key == 11 && ndim_ == 3 ) { if( rule11_.first == NULL ) Rule11Alloc(&rule11_); samples->rule = &rule11_; samples->n = n = nmin = rule11_.n; samples->sampler = SampleRule; } else if( key == 9 ) { if( rule9_.first == NULL ) Rule9Alloc(&rule9_); samples->rule = &rule9_; samples->n = n = nmin = rule9_.n; samples->sampler = SampleRule; } else if( key == 7 ) { if( rule7_.first == NULL ) Rule7Alloc(&rule7_); samples->rule = &rule7_; samples->n = n = nmin = rule7_.n; samples->sampler = SampleRule; } else { n = Abs1(key); if( n < 40 ) n *= nwant; samples->sampler = (key < 0) ? SampleSobol : (n = n/2 + 1, SampleKorobov); samples->n = IMin(n, nmax); } samples->neff = samples->n; return IDim(n - nmax) | Marked(nmax - nmin); }
static count SamplesLookup(This *t, Samples *samples, cint key, cnumber nwant, cnumber nmax, number nmin) { number n; if( key == 13 && t->ndim == 2 ) { samples->rule = &t->rule13; samples->n = n = nmin = t->rule13.n; samples->sampler = SampleRule; } else if( key == 11 && t->ndim == 3 ) { samples->rule = &t->rule11; samples->n = n = nmin = t->rule11.n; samples->sampler = SampleRule; } else if( key == 9 ) { samples->rule = &t->rule9; samples->n = n = nmin = t->rule9.n; samples->sampler = SampleRule; } else if( key == 7 ) { samples->rule = &t->rule7; samples->n = n = nmin = t->rule7.n; samples->sampler = SampleRule; } else { n = Abs1(key); if( n < 40 ) n *= nwant; samples->sampler = (key < 0) ? SampleSobol : (n = n/2 + 1, SampleKorobov); samples->n = IMin(n, nmax); } samples->neff = samples->n; return IDim(n - nmax) | Marked(nmax - nmin); }