code: void pass_2(int fi, 
  	      float in[],  int in0, int istride,
  	      float out[], int out0, int ostride,
  	      int sign, int product) {
      int k, k1;
  
      int factor = 2;
      int m = n / factor;
      int q = n / product;
      int product_1 = product / factor;
  
      int di = istride * m;
      int dj = ostride * product_1;
      int i = in0, j = out0;
      float x_real, x_imag;
      for (k = 0; k < q; k++) {
        float twids[] = twiddle[fi][k];
        float w_real =       twids[0];
        float w_imag = -sign*twids[1];
  
        for (k1 = 0; k1 < product_1; k1++) {
  	float z0_real = in[i];
  	float z0_imag = in[i+1];
  	float z1_real = in[i+di];
  	float z1_imag = in[i+di+1];
  	i += istride;
  
  	/* compute x = W(2) z */
  
  	/* apply twiddle factors */
  	  
  	/* out0 = 1 * (z0 + z1) */
  	out[j]   = z0_real + z1_real;
  	out[j+1] = z0_imag + z1_imag;
  	  
  	/* out1 = w * (z0 - z1) */
  	x_real = z0_real - z1_real;
  	x_imag = z0_imag - z1_imag;
  	out[j+dj]   = w_real * x_real - w_imag * x_imag;
  	out[j+dj+1] = w_real * x_imag + w_imag * x_real;
  	  
  	j += ostride;
        }
        j += (factor-1)*dj;
      }}
docs: /*______________________________________________________________________