Mixed int/BigInt foreach interval
    bearophile 
    bearophileHUGS at lycos.com
       
    Wed Sep 28 10:21:20 PDT 2011
    
    
  
Timon Gehr:
> I mean, eg. the following is hardly useful:
> 
> foreach(i;0..BigInt("10000000000000000000000000"){}
I'd like a function template like this to work even if T is BigInt:
T binomial(T)(T n, T k) {
    if (k > n/2)
        k = n - k;
    T bc = n - k + 1;
    foreach (i; 2 .. k+1)
        bc = (bc * (n - k + i)) / i;
    return bc;
}
Current workaround: use this instead of the foreach:
for (T i = 2; i <= k; i++)
----------------------------
Christophe:
> The copy on write behavior of BigInt makes it very poorly efficient
> to iterate on. In addition, I guess the compiler won't be able to
> optimize anything. Someone could say this is a good reason to make the
> .. syntax on BigInt harder to use.
I'd like to use BigInts often in D. So some compiler optimizations are welcome here.
Bye,
bearophile
    
    
More information about the Digitalmars-d
mailing list