On 5/31/13 10:06 AM, finalpatch wrote:
Just want to share a new way I just discovered to do loop unrolling.template Unroll(alias CODE, alias N) { static if (N == 1) enum Unroll = format(CODE, 0); else enum Unroll = Unroll!(CODE, N-1)~format(CODE, N-1); } after that you can write stuff like mixin(Unroll!("v[%1$d]"~op~"=rhs.v[%1$d];", 3)); and it gets expanded to v[0]+=rhs.v[0];v[1]+=rhs.v[1];v[2]+=rhs.v[2]; I find this method simpler than with foreach() and a tuple range, and also faster because it's identical to hand unrolling.
Hehe, first shot is always a trip isn't it. Welcome aboard. We should have something like that in phobos. Andrei
