How do you map indices to twiddle factors in FFT
Here is C++ code snippet that shows a relatively efficient way of doing it. The idea here is that the step size is always half the previous step and that the index wraps around if it exceeds N/2 which we can implement very efficiently with a bit masking operation (if it's a power of two).
constant int N = 8; // FFT size
constant int moduloMask = (N/2)-1;  // implements modulo N/2 adding

// loop over all stages
int stepSize = N;  // initial step size if FFT length
for (int i = 0; i &lt; numStages; i++)
{
  int twiddleIndex = 0;
  stepSize &gt;&gt;= 1;   // divide by two, it's half of the previous stage
  for (int b = 0; b &lt; numButterflies)
  {
    currentTwiddle = W[twiddleIndex];  // current twiddle factor from table
    // update the index: add step size and warp it around if it exceeds N/2
    twiddleIndex= (twiddleIndex+ stepSize) &amp; moduloMask ;
  }
}