コード例 #1
0
ファイル: fni_9.c プロジェクト: kmx/mirror-im
void fftwi_no_twiddle_9(const fftw_complex *input, fftw_complex *output,
			int istride, int ostride)
{
     fftw_real tmp5;
     fftw_real tmp37;
     fftw_real tmp57;
     fftw_real tmp22;
     fftw_real tmp56;
     fftw_real tmp38;
     fftw_real tmp10;
     fftw_real tmp42;
     fftw_real tmp66;
     fftw_real tmp27;
     fftw_real tmp45;
     fftw_real tmp67;
     fftw_real tmp15;
     fftw_real tmp52;
     fftw_real tmp69;
     fftw_real tmp32;
     fftw_real tmp49;
     fftw_real tmp70;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp3;
	  fftw_real tmp4;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(input[0]);
	  tmp2 = c_re(input[3 * istride]);
	  tmp3 = c_re(input[6 * istride]);
	  tmp4 = tmp2 + tmp3;
	  tmp5 = tmp1 + tmp4;
	  tmp37 = tmp1 - (K500000000 * tmp4);
	  tmp57 = K866025403 * (tmp2 - tmp3);
     }
     {
	  fftw_real tmp18;
	  fftw_real tmp19;
	  fftw_real tmp20;
	  fftw_real tmp21;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp18 = c_im(input[0]);
	  tmp19 = c_im(input[3 * istride]);
	  tmp20 = c_im(input[6 * istride]);
	  tmp21 = tmp19 + tmp20;
	  tmp22 = tmp18 + tmp21;
	  tmp56 = tmp18 - (K500000000 * tmp21);
	  tmp38 = K866025403 * (tmp20 - tmp19);
     }
     {
	  fftw_real tmp6;
	  fftw_real tmp23;
	  fftw_real tmp9;
	  fftw_real tmp44;
	  fftw_real tmp26;
	  fftw_real tmp41;
	  fftw_real tmp40;
	  fftw_real tmp43;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp6 = c_re(input[istride]);
	  tmp23 = c_im(input[istride]);
	  {
	       fftw_real tmp7;
	       fftw_real tmp8;
	       fftw_real tmp24;
	       fftw_real tmp25;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp7 = c_re(input[4 * istride]);
	       tmp8 = c_re(input[7 * istride]);
	       tmp9 = tmp7 + tmp8;
	       tmp44 = K866025403 * (tmp7 - tmp8);
	       tmp24 = c_im(input[4 * istride]);
	       tmp25 = c_im(input[7 * istride]);
	       tmp26 = tmp24 + tmp25;
	       tmp41 = K866025403 * (tmp25 - tmp24);
	  }
	  tmp10 = tmp6 + tmp9;
	  tmp40 = tmp6 - (K500000000 * tmp9);
	  tmp42 = tmp40 - tmp41;
	  tmp66 = tmp40 + tmp41;
	  tmp27 = tmp23 + tmp26;
	  tmp43 = tmp23 - (K500000000 * tmp26);
	  tmp45 = tmp43 - tmp44;
	  tmp67 = tmp44 + tmp43;
     }
     {
	  fftw_real tmp11;
	  fftw_real tmp28;
	  fftw_real tmp14;
	  fftw_real tmp48;
	  fftw_real tmp31;
	  fftw_real tmp51;
	  fftw_real tmp50;
	  fftw_real tmp47;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp11 = c_re(input[2 * istride]);
	  tmp28 = c_im(input[2 * istride]);
	  {
	       fftw_real tmp12;
	       fftw_real tmp13;
	       fftw_real tmp29;
	       fftw_real tmp30;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp12 = c_re(input[5 * istride]);
	       tmp13 = c_re(input[8 * istride]);
	       tmp14 = tmp12 + tmp13;
	       tmp48 = K866025403 * (tmp12 - tmp13);
	       tmp29 = c_im(input[5 * istride]);
	       tmp30 = c_im(input[8 * istride]);
	       tmp31 = tmp29 + tmp30;
	       tmp51 = K866025403 * (tmp30 - tmp29);
	  }
	  tmp15 = tmp11 + tmp14;
	  tmp50 = tmp11 - (K500000000 * tmp14);
	  tmp52 = tmp50 - tmp51;
	  tmp69 = tmp50 + tmp51;
	  tmp32 = tmp28 + tmp31;
	  tmp47 = tmp28 - (K500000000 * tmp31);
	  tmp49 = tmp47 - tmp48;
	  tmp70 = tmp48 + tmp47;
     }
     {
	  fftw_real tmp36;
	  fftw_real tmp16;
	  fftw_real tmp35;
	  fftw_real tmp17;
	  fftw_real tmp33;
	  fftw_real tmp34;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp36 = K866025403 * (tmp32 - tmp27);
	  tmp16 = tmp10 + tmp15;
	  tmp35 = tmp5 - (K500000000 * tmp16);
	  c_re(output[0]) = tmp5 + tmp16;
	  c_re(output[3 * ostride]) = tmp35 + tmp36;
	  c_re(output[6 * ostride]) = tmp35 - tmp36;
	  tmp17 = K866025403 * (tmp10 - tmp15);
	  tmp33 = tmp27 + tmp32;
	  tmp34 = tmp22 - (K500000000 * tmp33);
	  c_im(output[3 * ostride]) = tmp17 + tmp34;
	  c_im(output[6 * ostride]) = tmp34 - tmp17;
	  c_im(output[0]) = tmp22 + tmp33;
     }
     {
	  fftw_real tmp39;
	  fftw_real tmp61;
	  fftw_real tmp64;
	  fftw_real tmp58;
	  fftw_real tmp54;
	  fftw_real tmp55;
	  fftw_real tmp63;
	  fftw_real tmp62;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp59;
	       fftw_real tmp60;
	       fftw_real tmp46;
	       fftw_real tmp53;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp39 = tmp37 - tmp38;
	       tmp59 = (K173648177 * tmp45) + (K984807753 * tmp42);
	       tmp60 = (K342020143 * tmp52) - (K939692620 * tmp49);
	       tmp61 = tmp59 + tmp60;
	       tmp64 = K866025403 * (tmp60 - tmp59);
	       tmp58 = tmp56 - tmp57;
	       tmp46 = (K173648177 * tmp42) - (K984807753 * tmp45);
	       tmp53 = (K342020143 * tmp49) + (K939692620 * tmp52);
	       tmp54 = tmp46 - tmp53;
	       tmp55 = K866025403 * (tmp46 + tmp53);
	  }
	  c_re(output[2 * ostride]) = tmp39 + tmp54;
	  tmp63 = tmp39 - (K500000000 * tmp54);
	  c_re(output[8 * ostride]) = tmp63 - tmp64;
	  c_re(output[5 * ostride]) = tmp63 + tmp64;
	  c_im(output[2 * ostride]) = tmp58 + tmp61;
	  tmp62 = tmp58 - (K500000000 * tmp61);
	  c_im(output[5 * ostride]) = tmp55 + tmp62;
	  c_im(output[8 * ostride]) = tmp62 - tmp55;
     }
     {
	  fftw_real tmp65;
	  fftw_real tmp77;
	  fftw_real tmp80;
	  fftw_real tmp74;
	  fftw_real tmp72;
	  fftw_real tmp73;
	  fftw_real tmp79;
	  fftw_real tmp78;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp75;
	       fftw_real tmp76;
	       fftw_real tmp68;
	       fftw_real tmp71;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp65 = tmp37 + tmp38;
	       tmp75 = (K766044443 * tmp67) + (K642787609 * tmp66);
	       tmp76 = (K173648177 * tmp70) + (K984807753 * tmp69);
	       tmp77 = tmp75 + tmp76;
	       tmp80 = K866025403 * (tmp76 - tmp75);
	       tmp74 = tmp57 + tmp56;
	       tmp68 = (K766044443 * tmp66) - (K642787609 * tmp67);
	       tmp71 = (K173648177 * tmp69) - (K984807753 * tmp70);
	       tmp72 = tmp68 + tmp71;
	       tmp73 = K866025403 * (tmp68 - tmp71);
	  }
	  c_re(output[ostride]) = tmp65 + tmp72;
	  tmp79 = tmp65 - (K500000000 * tmp72);
	  c_re(output[7 * ostride]) = tmp79 - tmp80;
	  c_re(output[4 * ostride]) = tmp79 + tmp80;
	  c_im(output[ostride]) = tmp74 + tmp77;
	  tmp78 = tmp74 - (K500000000 * tmp77);
	  c_im(output[4 * ostride]) = tmp73 + tmp78;
	  c_im(output[7 * ostride]) = tmp78 - tmp73;
     }
}
コード例 #2
0
void fftw_hc2hc_forward_7(fftw_real *A, const fftw_complex *W,
			  int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (7 * iostride);
     {
	  fftw_real tmp86;
	  fftw_real tmp84;
	  fftw_real tmp88;
	  fftw_real tmp78;
	  fftw_real tmp85;
	  fftw_real tmp81;
	  fftw_real tmp87;
	  fftw_real tmp82;
	  fftw_real tmp83;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp86 = X[0];
	  tmp82 = X[3 * iostride];
	  tmp83 = X[4 * iostride];
	  tmp84 = tmp82 - tmp83;
	  tmp88 = tmp82 + tmp83;
	  {
	       fftw_real tmp76;
	       fftw_real tmp77;
	       fftw_real tmp79;
	       fftw_real tmp80;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp76 = X[2 * iostride];
	       tmp77 = X[5 * iostride];
	       tmp78 = tmp76 - tmp77;
	       tmp85 = tmp76 + tmp77;
	       tmp79 = X[iostride];
	       tmp80 = X[6 * iostride];
	       tmp81 = tmp79 - tmp80;
	       tmp87 = tmp79 + tmp80;
	  }
	  Y[-3 * iostride] =
	      (K781831482 * tmp78) - (K433883739 * tmp81) -
	      (K974927912 * tmp84);
	  Y[-iostride] =
	      -((K974927912 * tmp78) + (K433883739 * tmp84) +
		(K781831482 * tmp81));
	  Y[-2 * iostride] =
	      (K433883739 * tmp78) + (K781831482 * tmp84) -
	      (K974927912 * tmp81);
	  X[2 * iostride] =
	      (K623489801 * tmp88) + tmp86 - (K222520933 * tmp87) -
	      (K900968867 * tmp85);
	  X[iostride] =
	      (K623489801 * tmp87) + tmp86 - (K900968867 * tmp88) -
	      (K222520933 * tmp85);
	  X[3 * iostride] =
	      (K623489801 * tmp85) + tmp86 - (K900968867 * tmp87) -
	      (K222520933 * tmp88);
	  X[0] = tmp85 + tmp88 + tmp87 + tmp86;
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 6) {
	  fftw_real tmp14;
	  fftw_real tmp66;
	  fftw_real tmp25;
	  fftw_real tmp68;
	  fftw_real tmp51;
	  fftw_real tmp63;
	  fftw_real tmp36;
	  fftw_real tmp69;
	  fftw_real tmp57;
	  fftw_real tmp64;
	  fftw_real tmp47;
	  fftw_real tmp70;
	  fftw_real tmp54;
	  fftw_real tmp65;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp14 = X[0];
	  tmp66 = Y[-6 * iostride];
	  {
	       fftw_real tmp19;
	       fftw_real tmp49;
	       fftw_real tmp24;
	       fftw_real tmp50;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp16;
		    fftw_real tmp18;
		    fftw_real tmp15;
		    fftw_real tmp17;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp16 = X[iostride];
		    tmp18 = Y[-5 * iostride];
		    tmp15 = c_re(W[0]);
		    tmp17 = c_im(W[0]);
		    tmp19 = (tmp15 * tmp16) - (tmp17 * tmp18);
		    tmp49 = (tmp17 * tmp16) + (tmp15 * tmp18);
	       }
	       {
		    fftw_real tmp21;
		    fftw_real tmp23;
		    fftw_real tmp20;
		    fftw_real tmp22;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp21 = X[6 * iostride];
		    tmp23 = Y[0];
		    tmp20 = c_re(W[5]);
		    tmp22 = c_im(W[5]);
		    tmp24 = (tmp20 * tmp21) - (tmp22 * tmp23);
		    tmp50 = (tmp22 * tmp21) + (tmp20 * tmp23);
	       }
	       tmp25 = tmp19 + tmp24;
	       tmp68 = tmp24 - tmp19;
	       tmp51 = tmp49 - tmp50;
	       tmp63 = tmp49 + tmp50;
	  }
	  {
	       fftw_real tmp30;
	       fftw_real tmp55;
	       fftw_real tmp35;
	       fftw_real tmp56;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp27;
		    fftw_real tmp29;
		    fftw_real tmp26;
		    fftw_real tmp28;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp27 = X[2 * iostride];
		    tmp29 = Y[-4 * iostride];
		    tmp26 = c_re(W[1]);
		    tmp28 = c_im(W[1]);
		    tmp30 = (tmp26 * tmp27) - (tmp28 * tmp29);
		    tmp55 = (tmp28 * tmp27) + (tmp26 * tmp29);
	       }
	       {
		    fftw_real tmp32;
		    fftw_real tmp34;
		    fftw_real tmp31;
		    fftw_real tmp33;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp32 = X[5 * iostride];
		    tmp34 = Y[-iostride];
		    tmp31 = c_re(W[4]);
		    tmp33 = c_im(W[4]);
		    tmp35 = (tmp31 * tmp32) - (tmp33 * tmp34);
		    tmp56 = (tmp33 * tmp32) + (tmp31 * tmp34);
	       }
	       tmp36 = tmp30 + tmp35;
	       tmp69 = tmp35 - tmp30;
	       tmp57 = tmp55 - tmp56;
	       tmp64 = tmp55 + tmp56;
	  }
	  {
	       fftw_real tmp41;
	       fftw_real tmp52;
	       fftw_real tmp46;
	       fftw_real tmp53;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp38;
		    fftw_real tmp40;
		    fftw_real tmp37;
		    fftw_real tmp39;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp38 = X[3 * iostride];
		    tmp40 = Y[-3 * iostride];
		    tmp37 = c_re(W[2]);
		    tmp39 = c_im(W[2]);
		    tmp41 = (tmp37 * tmp38) - (tmp39 * tmp40);
		    tmp52 = (tmp39 * tmp38) + (tmp37 * tmp40);
	       }
	       {
		    fftw_real tmp43;
		    fftw_real tmp45;
		    fftw_real tmp42;
		    fftw_real tmp44;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp43 = X[4 * iostride];
		    tmp45 = Y[-2 * iostride];
		    tmp42 = c_re(W[3]);
		    tmp44 = c_im(W[3]);
		    tmp46 = (tmp42 * tmp43) - (tmp44 * tmp45);
		    tmp53 = (tmp44 * tmp43) + (tmp42 * tmp45);
	       }
	       tmp47 = tmp41 + tmp46;
	       tmp70 = tmp46 - tmp41;
	       tmp54 = tmp52 - tmp53;
	       tmp65 = tmp52 + tmp53;
	  }
	  {
	       fftw_real tmp60;
	       fftw_real tmp59;
	       fftw_real tmp73;
	       fftw_real tmp72;
	       ASSERT_ALIGNED_DOUBLE;
	       X[0] = tmp14 + tmp25 + tmp36 + tmp47;
	       tmp60 =
		   (K781831482 * tmp51) + (K974927912 * tmp57) +
		   (K433883739 * tmp54);
	       tmp59 =
		   tmp14 + (K623489801 * tmp25) - (K900968867 * tmp47) -
		   (K222520933 * tmp36);
	       Y[-6 * iostride] = tmp59 - tmp60;
	       X[iostride] = tmp59 + tmp60;
	       {
		    fftw_real tmp62;
		    fftw_real tmp61;
		    fftw_real tmp58;
		    fftw_real tmp48;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp62 =
			(K433883739 * tmp51) + (K974927912 * tmp54) -
			(K781831482 * tmp57);
		    tmp61 =
			tmp14 + (K623489801 * tmp36) -
			(K222520933 * tmp47) - (K900968867 * tmp25);
		    Y[-4 * iostride] = tmp61 - tmp62;
		    X[3 * iostride] = tmp61 + tmp62;
		    tmp58 =
			(K974927912 * tmp51) - (K781831482 * tmp54) -
			(K433883739 * tmp57);
		    tmp48 =
			tmp14 + (K623489801 * tmp47) -
			(K900968867 * tmp36) - (K222520933 * tmp25);
		    Y[-5 * iostride] = tmp48 - tmp58;
		    X[2 * iostride] = tmp48 + tmp58;
	       }
	       Y[0] = tmp63 + tmp64 + tmp65 + tmp66;
	       tmp73 =
		   (K974927912 * tmp68) - (K781831482 * tmp70) -
		   (K433883739 * tmp69);
	       tmp72 =
		   (K623489801 * tmp65) + tmp66 - (K900968867 * tmp64) -
		   (K222520933 * tmp63);
	       X[5 * iostride] = -(tmp72 - tmp73);
	       Y[-2 * iostride] = tmp73 + tmp72;
	       {
		    fftw_real tmp75;
		    fftw_real tmp74;
		    fftw_real tmp71;
		    fftw_real tmp67;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp75 =
			(K433883739 * tmp68) + (K974927912 * tmp70) -
			(K781831482 * tmp69);
		    tmp74 =
			(K623489801 * tmp64) + tmp66 -
			(K222520933 * tmp65) - (K900968867 * tmp63);
		    X[4 * iostride] = -(tmp74 - tmp75);
		    Y[-3 * iostride] = tmp75 + tmp74;
		    tmp71 =
			(K781831482 * tmp68) + (K974927912 * tmp69) +
			(K433883739 * tmp70);
		    tmp67 =
			(K623489801 * tmp63) + tmp66 -
			(K900968867 * tmp65) - (K222520933 * tmp64);
		    X[6 * iostride] = -(tmp67 - tmp71);
		    Y[-iostride] = tmp71 + tmp67;
	       }
	  }
     }
     if (i == m) {
	  fftw_real tmp1;
	  fftw_real tmp10;
	  fftw_real tmp11;
	  fftw_real tmp4;
	  fftw_real tmp12;
	  fftw_real tmp7;
	  fftw_real tmp13;
	  fftw_real tmp8;
	  fftw_real tmp9;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = X[0];
	  tmp8 = X[2 * iostride];
	  tmp9 = X[5 * iostride];
	  tmp10 = tmp8 - tmp9;
	  tmp11 = tmp8 + tmp9;
	  {
	       fftw_real tmp2;
	       fftw_real tmp3;
	       fftw_real tmp5;
	       fftw_real tmp6;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp2 = X[3 * iostride];
	       tmp3 = X[4 * iostride];
	       tmp4 = tmp2 - tmp3;
	       tmp12 = tmp2 + tmp3;
	       tmp5 = X[iostride];
	       tmp6 = X[6 * iostride];
	       tmp7 = tmp5 - tmp6;
	       tmp13 = tmp5 + tmp6;
	  }
	  Y[0] =
	      -((K781831482 * tmp11) + (K974927912 * tmp12) +
		(K433883739 * tmp13));
	  Y[-iostride] =
	      (K781831482 * tmp12) - (K974927912 * tmp13) -
	      (K433883739 * tmp11);
	  Y[-2 * iostride] =
	      (K974927912 * tmp11) - (K781831482 * tmp13) -
	      (K433883739 * tmp12);
	  X[iostride] =
	      tmp1 + (K222520933 * tmp7) - (K623489801 * tmp4) -
	      (K900968867 * tmp10);
	  X[3 * iostride] = tmp1 + tmp10 - (tmp4 + tmp7);
	  X[2 * iostride] =
	      tmp1 + (K900968867 * tmp4) - (K623489801 * tmp7) -
	      (K222520933 * tmp10);
	  X[0] =
	      tmp1 + (K623489801 * tmp10) + (K222520933 * tmp4) +
	      (K900968867 * tmp7);
     }
}
コード例 #3
0
ファイル: ftw_9.c プロジェクト: dskinner/sndobj
void fftw_twiddle_9(fftw_complex *A, const fftw_complex *W, int iostride, int m, int dist)
{
     int i;
     fftw_complex *inout;
     inout = A;
     for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 8) {
	  fftw_real tmp1;
	  fftw_real tmp99;
	  fftw_real tmp52;
	  fftw_real tmp98;
	  fftw_real tmp105;
	  fftw_real tmp104;
	  fftw_real tmp12;
	  fftw_real tmp49;
	  fftw_real tmp47;
	  fftw_real tmp69;
	  fftw_real tmp86;
	  fftw_real tmp95;
	  fftw_real tmp74;
	  fftw_real tmp85;
	  fftw_real tmp30;
	  fftw_real tmp58;
	  fftw_real tmp82;
	  fftw_real tmp94;
	  fftw_real tmp63;
	  fftw_real tmp83;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp6;
	       fftw_real tmp50;
	       fftw_real tmp11;
	       fftw_real tmp51;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp1 = c_re(inout[0]);
	       tmp99 = c_im(inout[0]);
	       {
		    fftw_real tmp3;
		    fftw_real tmp5;
		    fftw_real tmp2;
		    fftw_real tmp4;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp3 = c_re(inout[3 * iostride]);
		    tmp5 = c_im(inout[3 * iostride]);
		    tmp2 = c_re(W[2]);
		    tmp4 = c_im(W[2]);
		    tmp6 = (tmp2 * tmp3) - (tmp4 * tmp5);
		    tmp50 = (tmp4 * tmp3) + (tmp2 * tmp5);
	       }
	       {
		    fftw_real tmp8;
		    fftw_real tmp10;
		    fftw_real tmp7;
		    fftw_real tmp9;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp8 = c_re(inout[6 * iostride]);
		    tmp10 = c_im(inout[6 * iostride]);
		    tmp7 = c_re(W[5]);
		    tmp9 = c_im(W[5]);
		    tmp11 = (tmp7 * tmp8) - (tmp9 * tmp10);
		    tmp51 = (tmp9 * tmp8) + (tmp7 * tmp10);
	       }
	       tmp52 = K866025403 * (tmp50 - tmp51);
	       tmp98 = tmp50 + tmp51;
	       tmp105 = tmp99 - (K500000000 * tmp98);
	       tmp104 = K866025403 * (tmp11 - tmp6);
	       tmp12 = tmp6 + tmp11;
	       tmp49 = tmp1 - (K500000000 * tmp12);
	  }
	  {
	       fftw_real tmp35;
	       fftw_real tmp71;
	       fftw_real tmp40;
	       fftw_real tmp66;
	       fftw_real tmp45;
	       fftw_real tmp67;
	       fftw_real tmp46;
	       fftw_real tmp72;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp32;
		    fftw_real tmp34;
		    fftw_real tmp31;
		    fftw_real tmp33;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp32 = c_re(inout[2 * iostride]);
		    tmp34 = c_im(inout[2 * iostride]);
		    tmp31 = c_re(W[1]);
		    tmp33 = c_im(W[1]);
		    tmp35 = (tmp31 * tmp32) - (tmp33 * tmp34);
		    tmp71 = (tmp33 * tmp32) + (tmp31 * tmp34);
	       }
	       {
		    fftw_real tmp37;
		    fftw_real tmp39;
		    fftw_real tmp36;
		    fftw_real tmp38;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp37 = c_re(inout[5 * iostride]);
		    tmp39 = c_im(inout[5 * iostride]);
		    tmp36 = c_re(W[4]);
		    tmp38 = c_im(W[4]);
		    tmp40 = (tmp36 * tmp37) - (tmp38 * tmp39);
		    tmp66 = (tmp38 * tmp37) + (tmp36 * tmp39);
	       }
	       {
		    fftw_real tmp42;
		    fftw_real tmp44;
		    fftw_real tmp41;
		    fftw_real tmp43;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp42 = c_re(inout[8 * iostride]);
		    tmp44 = c_im(inout[8 * iostride]);
		    tmp41 = c_re(W[7]);
		    tmp43 = c_im(W[7]);
		    tmp45 = (tmp41 * tmp42) - (tmp43 * tmp44);
		    tmp67 = (tmp43 * tmp42) + (tmp41 * tmp44);
	       }
	       tmp46 = tmp40 + tmp45;
	       tmp72 = tmp66 + tmp67;
	       {
		    fftw_real tmp65;
		    fftw_real tmp68;
		    fftw_real tmp70;
		    fftw_real tmp73;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp47 = tmp35 + tmp46;
		    tmp65 = tmp35 - (K500000000 * tmp46);
		    tmp68 = K866025403 * (tmp66 - tmp67);
		    tmp69 = tmp65 + tmp68;
		    tmp86 = tmp65 - tmp68;
		    tmp95 = tmp71 + tmp72;
		    tmp70 = K866025403 * (tmp45 - tmp40);
		    tmp73 = tmp71 - (K500000000 * tmp72);
		    tmp74 = tmp70 + tmp73;
		    tmp85 = tmp73 - tmp70;
	       }
	  }
	  {
	       fftw_real tmp18;
	       fftw_real tmp60;
	       fftw_real tmp23;
	       fftw_real tmp55;
	       fftw_real tmp28;
	       fftw_real tmp56;
	       fftw_real tmp29;
	       fftw_real tmp61;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp15;
		    fftw_real tmp17;
		    fftw_real tmp14;
		    fftw_real tmp16;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp15 = c_re(inout[iostride]);
		    tmp17 = c_im(inout[iostride]);
		    tmp14 = c_re(W[0]);
		    tmp16 = c_im(W[0]);
		    tmp18 = (tmp14 * tmp15) - (tmp16 * tmp17);
		    tmp60 = (tmp16 * tmp15) + (tmp14 * tmp17);
	       }
	       {
		    fftw_real tmp20;
		    fftw_real tmp22;
		    fftw_real tmp19;
		    fftw_real tmp21;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp20 = c_re(inout[4 * iostride]);
		    tmp22 = c_im(inout[4 * iostride]);
		    tmp19 = c_re(W[3]);
		    tmp21 = c_im(W[3]);
		    tmp23 = (tmp19 * tmp20) - (tmp21 * tmp22);
		    tmp55 = (tmp21 * tmp20) + (tmp19 * tmp22);
	       }
	       {
		    fftw_real tmp25;
		    fftw_real tmp27;
		    fftw_real tmp24;
		    fftw_real tmp26;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp25 = c_re(inout[7 * iostride]);
		    tmp27 = c_im(inout[7 * iostride]);
		    tmp24 = c_re(W[6]);
		    tmp26 = c_im(W[6]);
		    tmp28 = (tmp24 * tmp25) - (tmp26 * tmp27);
		    tmp56 = (tmp26 * tmp25) + (tmp24 * tmp27);
	       }
	       tmp29 = tmp23 + tmp28;
	       tmp61 = tmp55 + tmp56;
	       {
		    fftw_real tmp54;
		    fftw_real tmp57;
		    fftw_real tmp59;
		    fftw_real tmp62;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp30 = tmp18 + tmp29;
		    tmp54 = tmp18 - (K500000000 * tmp29);
		    tmp57 = K866025403 * (tmp55 - tmp56);
		    tmp58 = tmp54 + tmp57;
		    tmp82 = tmp54 - tmp57;
		    tmp94 = tmp60 + tmp61;
		    tmp59 = K866025403 * (tmp28 - tmp23);
		    tmp62 = tmp60 - (K500000000 * tmp61);
		    tmp63 = tmp59 + tmp62;
		    tmp83 = tmp62 - tmp59;
	       }
	  }
	  {
	       fftw_real tmp96;
	       fftw_real tmp13;
	       fftw_real tmp48;
	       fftw_real tmp93;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp96 = K866025403 * (tmp94 - tmp95);
	       tmp13 = tmp1 + tmp12;
	       tmp48 = tmp30 + tmp47;
	       tmp93 = tmp13 - (K500000000 * tmp48);
	       c_re(inout[0]) = tmp13 + tmp48;
	       c_re(inout[3 * iostride]) = tmp93 + tmp96;
	       c_re(inout[6 * iostride]) = tmp93 - tmp96;
	  }
	  {
	       fftw_real tmp101;
	       fftw_real tmp97;
	       fftw_real tmp100;
	       fftw_real tmp102;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp101 = K866025403 * (tmp47 - tmp30);
	       tmp97 = tmp94 + tmp95;
	       tmp100 = tmp98 + tmp99;
	       tmp102 = tmp100 - (K500000000 * tmp97);
	       c_im(inout[0]) = tmp97 + tmp100;
	       c_im(inout[6 * iostride]) = tmp102 - tmp101;
	       c_im(inout[3 * iostride]) = tmp101 + tmp102;
	  }
	  {
	       fftw_real tmp53;
	       fftw_real tmp106;
	       fftw_real tmp76;
	       fftw_real tmp107;
	       fftw_real tmp80;
	       fftw_real tmp103;
	       fftw_real tmp77;
	       fftw_real tmp108;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp53 = tmp49 + tmp52;
	       tmp106 = tmp104 + tmp105;
	       {
		    fftw_real tmp64;
		    fftw_real tmp75;
		    fftw_real tmp78;
		    fftw_real tmp79;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp64 = (K766044443 * tmp58) + (K642787609 * tmp63);
		    tmp75 = (K173648177 * tmp69) + (K984807753 * tmp74);
		    tmp76 = tmp64 + tmp75;
		    tmp107 = K866025403 * (tmp75 - tmp64);
		    tmp78 = (K766044443 * tmp63) - (K642787609 * tmp58);
		    tmp79 = (K173648177 * tmp74) - (K984807753 * tmp69);
		    tmp80 = K866025403 * (tmp78 - tmp79);
		    tmp103 = tmp78 + tmp79;
	       }
	       c_re(inout[iostride]) = tmp53 + tmp76;
	       tmp77 = tmp53 - (K500000000 * tmp76);
	       c_re(inout[7 * iostride]) = tmp77 - tmp80;
	       c_re(inout[4 * iostride]) = tmp77 + tmp80;
	       c_im(inout[iostride]) = tmp103 + tmp106;
	       tmp108 = tmp106 - (K500000000 * tmp103);
	       c_im(inout[4 * iostride]) = tmp107 + tmp108;
	       c_im(inout[7 * iostride]) = tmp108 - tmp107;
	  }
	  {
	       fftw_real tmp81;
	       fftw_real tmp110;
	       fftw_real tmp88;
	       fftw_real tmp111;
	       fftw_real tmp92;
	       fftw_real tmp109;
	       fftw_real tmp89;
	       fftw_real tmp112;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp81 = tmp49 - tmp52;
	       tmp110 = tmp105 - tmp104;
	       {
		    fftw_real tmp84;
		    fftw_real tmp87;
		    fftw_real tmp90;
		    fftw_real tmp91;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp84 = (K173648177 * tmp82) + (K984807753 * tmp83);
		    tmp87 = (K342020143 * tmp85) - (K939692620 * tmp86);
		    tmp88 = tmp84 + tmp87;
		    tmp111 = K866025403 * (tmp87 - tmp84);
		    tmp90 = (K173648177 * tmp83) - (K984807753 * tmp82);
		    tmp91 = (K342020143 * tmp86) + (K939692620 * tmp85);
		    tmp92 = K866025403 * (tmp90 + tmp91);
		    tmp109 = tmp90 - tmp91;
	       }
	       c_re(inout[2 * iostride]) = tmp81 + tmp88;
	       tmp89 = tmp81 - (K500000000 * tmp88);
	       c_re(inout[8 * iostride]) = tmp89 - tmp92;
	       c_re(inout[5 * iostride]) = tmp89 + tmp92;
	       c_im(inout[2 * iostride]) = tmp109 + tmp110;
	       tmp112 = tmp110 - (K500000000 * tmp109);
	       c_im(inout[5 * iostride]) = tmp111 + tmp112;
	       c_im(inout[8 * iostride]) = tmp112 - tmp111;
	  }
     }
}
コード例 #4
0
ファイル: fhb_3.c プロジェクト: glentner/Gadget
void fftw_hc2hc_backward_3(fftw_real *A, const fftw_complex *W,
			   int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (3 * iostride);
     {
	  fftw_real tmp30;
	  fftw_real tmp26;
	  fftw_real tmp27;
	  fftw_real tmp28;
	  fftw_real tmp29;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp29 = Y[-iostride];
	  tmp30 = K1_732050807 * tmp29;
	  tmp26 = X[0];
	  tmp27 = X[iostride];
	  tmp28 = tmp26 - tmp27;
	  X[0] = tmp26 + (K2_000000000 * tmp27);
	  X[iostride] = tmp28 - tmp30;
	  X[2 * iostride] = tmp28 + tmp30;
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 2) {
	  fftw_real tmp6;
	  fftw_real tmp9;
	  fftw_real tmp15;
	  fftw_real tmp19;
	  fftw_real tmp10;
	  fftw_real tmp13;
	  fftw_real tmp16;
	  fftw_real tmp20;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp7;
	       fftw_real tmp8;
	       fftw_real tmp11;
	       fftw_real tmp12;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp6 = X[0];
	       tmp7 = X[iostride];
	       tmp8 = Y[-2 * iostride];
	       tmp9 = tmp7 + tmp8;
	       tmp15 = K866025403 * (tmp7 - tmp8);
	       tmp19 = tmp6 - (K500000000 * tmp9);
	       tmp10 = Y[0];
	       tmp11 = Y[-iostride];
	       tmp12 = X[2 * iostride];
	       tmp13 = tmp11 - tmp12;
	       tmp16 = tmp10 - (K500000000 * tmp13);
	       tmp20 = K866025403 * (tmp11 + tmp12);
	  }
	  X[0] = tmp6 + tmp9;
	  {
	       fftw_real tmp23;
	       fftw_real tmp25;
	       fftw_real tmp22;
	       fftw_real tmp24;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp23 = tmp16 - tmp15;
	       tmp25 = tmp19 + tmp20;
	       tmp22 = c_re(W[1]);
	       tmp24 = c_im(W[1]);
	       Y[0] = (tmp22 * tmp23) - (tmp24 * tmp25);
	       X[2 * iostride] = (tmp24 * tmp23) + (tmp22 * tmp25);
	  }
	  Y[-2 * iostride] = tmp10 + tmp13;
	  {
	       fftw_real tmp17;
	       fftw_real tmp21;
	       fftw_real tmp14;
	       fftw_real tmp18;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp17 = tmp15 + tmp16;
	       tmp21 = tmp19 - tmp20;
	       tmp14 = c_re(W[0]);
	       tmp18 = c_im(W[0]);
	       Y[-iostride] = (tmp14 * tmp17) - (tmp18 * tmp21);
	       X[iostride] = (tmp18 * tmp17) + (tmp14 * tmp21);
	  }
     }
     if (i == m) {
	  fftw_real tmp5;
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp3;
	  fftw_real tmp4;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp4 = Y[0];
	  tmp5 = K1_732050807 * tmp4;
	  tmp1 = X[iostride];
	  tmp2 = X[0];
	  tmp3 = tmp2 - tmp1;
	  X[0] = tmp1 + (K2_000000000 * tmp2);
	  X[2 * iostride] = -(tmp3 + tmp5);
	  X[iostride] = tmp3 - tmp5;
     }
}
コード例 #5
0
ファイル: fhb_6.c プロジェクト: CRAVA/crava
void fftw_hc2hc_backward_6(fftw_real *A, const fftw_complex *W, int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (6 * iostride);
     {
	  fftw_real tmp71;
	  fftw_real tmp75;
	  fftw_real tmp80;
	  fftw_real tmp82;
	  fftw_real tmp74;
	  fftw_real tmp76;
	  fftw_real tmp69;
	  fftw_real tmp70;
	  fftw_real tmp77;
	  fftw_real tmp81;
	  ASSERT_ALIGNED_DOUBLE();
	  tmp69 = X[0];
	  tmp70 = X[3 * iostride];
	  tmp71 = tmp69 - tmp70;
	  tmp75 = tmp69 + tmp70;
	  {
	       fftw_real tmp78;
	       fftw_real tmp79;
	       fftw_real tmp72;
	       fftw_real tmp73;
	       ASSERT_ALIGNED_DOUBLE();
	       tmp78 = Y[-2 * iostride];
	       tmp79 = Y[-iostride];
	       tmp80 = K1_732050807 * (tmp78 + tmp79);
	       tmp82 = K1_732050807 * (tmp78 - tmp79);
	       tmp72 = X[2 * iostride];
	       tmp73 = X[iostride];
	       tmp74 = tmp72 - tmp73;
	       tmp76 = tmp72 + tmp73;
	  }
	  X[3 * iostride] = tmp71 + (K2_000000000 * tmp74);
	  tmp77 = tmp71 - tmp74;
	  X[iostride] = tmp77 - tmp80;
	  X[5 * iostride] = tmp77 + tmp80;
	  X[0] = tmp75 + (K2_000000000 * tmp76);
	  tmp81 = tmp75 - tmp76;
	  X[2 * iostride] = tmp81 + tmp82;
	  X[4 * iostride] = tmp81 - tmp82;
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 5) {
	  fftw_real tmp15;
	  fftw_real tmp46;
	  fftw_real tmp25;
	  fftw_real tmp52;
	  fftw_real tmp22;
	  fftw_real tmp35;
	  fftw_real tmp49;
	  fftw_real tmp62;
	  fftw_real tmp32;
	  fftw_real tmp39;
	  fftw_real tmp55;
	  fftw_real tmp59;
	  ASSERT_ALIGNED_DOUBLE();
	  {
	       fftw_real tmp13;
	       fftw_real tmp14;
	       fftw_real tmp23;
	       fftw_real tmp24;
	       ASSERT_ALIGNED_DOUBLE();
	       tmp13 = X[0];
	       tmp14 = Y[-3 * iostride];
	       tmp15 = tmp13 + tmp14;
	       tmp46 = tmp13 - tmp14;
	       tmp23 = Y[0];
	       tmp24 = X[3 * iostride];
	       tmp25 = tmp23 - tmp24;
	       tmp52 = tmp23 + tmp24;
	  }
	  {
	       fftw_real tmp18;
	       fftw_real tmp47;
	       fftw_real tmp21;
	       fftw_real tmp48;
	       ASSERT_ALIGNED_DOUBLE();
	       {
		    fftw_real tmp16;
		    fftw_real tmp17;
		    fftw_real tmp19;
		    fftw_real tmp20;
		    ASSERT_ALIGNED_DOUBLE();
		    tmp16 = X[2 * iostride];
		    tmp17 = Y[-5 * iostride];
		    tmp18 = tmp16 + tmp17;
		    tmp47 = tmp16 - tmp17;
		    tmp19 = Y[-4 * iostride];
		    tmp20 = X[iostride];
		    tmp21 = tmp19 + tmp20;
		    tmp48 = tmp19 - tmp20;
	       }
	       tmp22 = tmp18 + tmp21;
	       tmp35 = K866025403 * (tmp18 - tmp21);
	       tmp49 = tmp47 + tmp48;
	       tmp62 = K866025403 * (tmp47 - tmp48);
	  }
	  {
	       fftw_real tmp28;
	       fftw_real tmp54;
	       fftw_real tmp31;
	       fftw_real tmp53;
	       ASSERT_ALIGNED_DOUBLE();
	       {
		    fftw_real tmp26;
		    fftw_real tmp27;
		    fftw_real tmp29;
		    fftw_real tmp30;
		    ASSERT_ALIGNED_DOUBLE();
		    tmp26 = Y[-2 * iostride];
		    tmp27 = X[5 * iostride];
		    tmp28 = tmp26 - tmp27;
		    tmp54 = tmp26 + tmp27;
		    tmp29 = Y[-iostride];
		    tmp30 = X[4 * iostride];
		    tmp31 = tmp29 - tmp30;
		    tmp53 = tmp29 + tmp30;
	       }
	       tmp32 = tmp28 + tmp31;
	       tmp39 = K866025403 * (tmp31 - tmp28);
	       tmp55 = tmp53 - tmp54;
	       tmp59 = K866025403 * (tmp54 + tmp53);
	  }
	  X[0] = tmp15 + tmp22;
	  {
	       fftw_real tmp36;
	       fftw_real tmp42;
	       fftw_real tmp40;
	       fftw_real tmp44;
	       fftw_real tmp34;
	       fftw_real tmp38;
	       ASSERT_ALIGNED_DOUBLE();
	       tmp34 = tmp25 - (K500000000 * tmp32);
	       tmp36 = tmp34 - tmp35;
	       tmp42 = tmp35 + tmp34;
	       tmp38 = tmp15 - (K500000000 * tmp22);
	       tmp40 = tmp38 - tmp39;
	       tmp44 = tmp38 + tmp39;
	       {
		    fftw_real tmp33;
		    fftw_real tmp37;
		    fftw_real tmp41;
		    fftw_real tmp43;
		    ASSERT_ALIGNED_DOUBLE();
		    tmp33 = c_re(W[1]);
		    tmp37 = c_im(W[1]);
		    Y[-3 * iostride] = (tmp33 * tmp36) - (tmp37 * tmp40);
		    X[2 * iostride] = (tmp37 * tmp36) + (tmp33 * tmp40);
		    tmp41 = c_re(W[3]);
		    tmp43 = c_im(W[3]);
		    Y[-iostride] = (tmp41 * tmp42) - (tmp43 * tmp44);
		    X[4 * iostride] = (tmp43 * tmp42) + (tmp41 * tmp44);
	       }
	  }
	  Y[-5 * iostride] = tmp25 + tmp32;
	  {
	       fftw_real tmp50;
	       fftw_real tmp56;
	       fftw_real tmp45;
	       fftw_real tmp51;
	       ASSERT_ALIGNED_DOUBLE();
	       tmp50 = tmp46 + tmp49;
	       tmp56 = tmp52 - tmp55;
	       tmp45 = c_re(W[2]);
	       tmp51 = c_im(W[2]);
	       X[3 * iostride] = (tmp45 * tmp50) + (tmp51 * tmp56);
	       Y[-2 * iostride] = (tmp45 * tmp56) - (tmp51 * tmp50);
	  }
	  {
	       fftw_real tmp60;
	       fftw_real tmp66;
	       fftw_real tmp64;
	       fftw_real tmp68;
	       fftw_real tmp58;
	       fftw_real tmp63;
	       ASSERT_ALIGNED_DOUBLE();
	       tmp58 = tmp46 - (K500000000 * tmp49);
	       tmp60 = tmp58 - tmp59;
	       tmp66 = tmp58 + tmp59;
	       tmp63 = tmp52 + (K500000000 * tmp55);
	       tmp64 = tmp62 + tmp63;
	       tmp68 = tmp63 - tmp62;
	       {
		    fftw_real tmp57;
		    fftw_real tmp61;
		    fftw_real tmp65;
		    fftw_real tmp67;
		    ASSERT_ALIGNED_DOUBLE();
		    tmp57 = c_re(W[0]);
		    tmp61 = c_im(W[0]);
		    X[iostride] = (tmp57 * tmp60) + (tmp61 * tmp64);
		    Y[-4 * iostride] = (tmp57 * tmp64) - (tmp61 * tmp60);
		    tmp65 = c_re(W[4]);
		    tmp67 = c_im(W[4]);
		    X[5 * iostride] = (tmp65 * tmp66) + (tmp67 * tmp68);
		    Y[0] = (tmp65 * tmp68) - (tmp67 * tmp66);
	       }
	  }
     }
     if (i == m) {
	  fftw_real tmp1;
	  fftw_real tmp6;
	  fftw_real tmp4;
	  fftw_real tmp5;
	  fftw_real tmp9;
	  fftw_real tmp11;
	  fftw_real tmp12;
	  fftw_real tmp10;
	  ASSERT_ALIGNED_DOUBLE();
	  tmp1 = X[iostride];
	  tmp6 = Y[-iostride];
	  {
	       fftw_real tmp2;
	       fftw_real tmp3;
	       fftw_real tmp7;
	       fftw_real tmp8;
	       ASSERT_ALIGNED_DOUBLE();
	       tmp2 = X[2 * iostride];
	       tmp3 = X[0];
	       tmp4 = tmp2 + tmp3;
	       tmp5 = K1_732050807 * (tmp2 - tmp3);
	       tmp7 = Y[-2 * iostride];
	       tmp8 = Y[0];
	       tmp9 = tmp7 + tmp8;
	       tmp11 = K1_732050807 * (tmp7 - tmp8);
	  }
	  X[0] = K2_000000000 * (tmp1 + tmp4);
	  tmp12 = (K2_000000000 * tmp1) - tmp4;
	  X[2 * iostride] = tmp11 - tmp12;
	  X[4 * iostride] = tmp12 + tmp11;
	  X[3 * iostride] = K2_000000000 * (tmp6 - tmp9);
	  tmp10 = (K2_000000000 * tmp6) + tmp9;
	  X[iostride] = -(tmp5 + tmp10);
	  X[5 * iostride] = tmp5 - tmp10;
     }
}
コード例 #6
0
ファイル: ftw_8.c プロジェクト: alltom/taps
void fftw_twiddle_8(fftw_complex *A, const fftw_complex *W, int iostride, int m, int dist)
{
     int i;
     fftw_complex *inout;
     inout = A;
     for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 7) {
	  fftw_real tmp7;
	  fftw_real tmp43;
	  fftw_real tmp71;
	  fftw_real tmp76;
	  fftw_real tmp41;
	  fftw_real tmp53;
	  fftw_real tmp56;
	  fftw_real tmp65;
	  fftw_real tmp18;
	  fftw_real tmp77;
	  fftw_real tmp46;
	  fftw_real tmp68;
	  fftw_real tmp30;
	  fftw_real tmp48;
	  fftw_real tmp51;
	  fftw_real tmp64;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp1;
	       fftw_real tmp70;
	       fftw_real tmp6;
	       fftw_real tmp69;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp1 = c_re(inout[0]);
	       tmp70 = c_im(inout[0]);
	       {
		    fftw_real tmp3;
		    fftw_real tmp5;
		    fftw_real tmp2;
		    fftw_real tmp4;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp3 = c_re(inout[4 * iostride]);
		    tmp5 = c_im(inout[4 * iostride]);
		    tmp2 = c_re(W[3]);
		    tmp4 = c_im(W[3]);
		    tmp6 = (tmp2 * tmp3) - (tmp4 * tmp5);
		    tmp69 = (tmp4 * tmp3) + (tmp2 * tmp5);
	       }
	       tmp7 = tmp1 + tmp6;
	       tmp43 = tmp1 - tmp6;
	       tmp71 = tmp69 + tmp70;
	       tmp76 = tmp70 - tmp69;
	  }
	  {
	       fftw_real tmp35;
	       fftw_real tmp54;
	       fftw_real tmp40;
	       fftw_real tmp55;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp32;
		    fftw_real tmp34;
		    fftw_real tmp31;
		    fftw_real tmp33;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp32 = c_re(inout[7 * iostride]);
		    tmp34 = c_im(inout[7 * iostride]);
		    tmp31 = c_re(W[6]);
		    tmp33 = c_im(W[6]);
		    tmp35 = (tmp31 * tmp32) - (tmp33 * tmp34);
		    tmp54 = (tmp33 * tmp32) + (tmp31 * tmp34);
	       }
	       {
		    fftw_real tmp37;
		    fftw_real tmp39;
		    fftw_real tmp36;
		    fftw_real tmp38;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp37 = c_re(inout[3 * iostride]);
		    tmp39 = c_im(inout[3 * iostride]);
		    tmp36 = c_re(W[2]);
		    tmp38 = c_im(W[2]);
		    tmp40 = (tmp36 * tmp37) - (tmp38 * tmp39);
		    tmp55 = (tmp38 * tmp37) + (tmp36 * tmp39);
	       }
	       tmp41 = tmp35 + tmp40;
	       tmp53 = tmp35 - tmp40;
	       tmp56 = tmp54 - tmp55;
	       tmp65 = tmp54 + tmp55;
	  }
	  {
	       fftw_real tmp12;
	       fftw_real tmp44;
	       fftw_real tmp17;
	       fftw_real tmp45;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp9;
		    fftw_real tmp11;
		    fftw_real tmp8;
		    fftw_real tmp10;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp9 = c_re(inout[2 * iostride]);
		    tmp11 = c_im(inout[2 * iostride]);
		    tmp8 = c_re(W[1]);
		    tmp10 = c_im(W[1]);
		    tmp12 = (tmp8 * tmp9) - (tmp10 * tmp11);
		    tmp44 = (tmp10 * tmp9) + (tmp8 * tmp11);
	       }
	       {
		    fftw_real tmp14;
		    fftw_real tmp16;
		    fftw_real tmp13;
		    fftw_real tmp15;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp14 = c_re(inout[6 * iostride]);
		    tmp16 = c_im(inout[6 * iostride]);
		    tmp13 = c_re(W[5]);
		    tmp15 = c_im(W[5]);
		    tmp17 = (tmp13 * tmp14) - (tmp15 * tmp16);
		    tmp45 = (tmp15 * tmp14) + (tmp13 * tmp16);
	       }
	       tmp18 = tmp12 + tmp17;
	       tmp77 = tmp12 - tmp17;
	       tmp46 = tmp44 - tmp45;
	       tmp68 = tmp44 + tmp45;
	  }
	  {
	       fftw_real tmp24;
	       fftw_real tmp49;
	       fftw_real tmp29;
	       fftw_real tmp50;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp21;
		    fftw_real tmp23;
		    fftw_real tmp20;
		    fftw_real tmp22;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp21 = c_re(inout[iostride]);
		    tmp23 = c_im(inout[iostride]);
		    tmp20 = c_re(W[0]);
		    tmp22 = c_im(W[0]);
		    tmp24 = (tmp20 * tmp21) - (tmp22 * tmp23);
		    tmp49 = (tmp22 * tmp21) + (tmp20 * tmp23);
	       }
	       {
		    fftw_real tmp26;
		    fftw_real tmp28;
		    fftw_real tmp25;
		    fftw_real tmp27;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp26 = c_re(inout[5 * iostride]);
		    tmp28 = c_im(inout[5 * iostride]);
		    tmp25 = c_re(W[4]);
		    tmp27 = c_im(W[4]);
		    tmp29 = (tmp25 * tmp26) - (tmp27 * tmp28);
		    tmp50 = (tmp27 * tmp26) + (tmp25 * tmp28);
	       }
	       tmp30 = tmp24 + tmp29;
	       tmp48 = tmp24 - tmp29;
	       tmp51 = tmp49 - tmp50;
	       tmp64 = tmp49 + tmp50;
	  }
	  {
	       fftw_real tmp19;
	       fftw_real tmp42;
	       fftw_real tmp63;
	       fftw_real tmp66;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp19 = tmp7 + tmp18;
	       tmp42 = tmp30 + tmp41;
	       c_re(inout[4 * iostride]) = tmp19 - tmp42;
	       c_re(inout[0]) = tmp19 + tmp42;
	       {
		    fftw_real tmp73;
		    fftw_real tmp74;
		    fftw_real tmp67;
		    fftw_real tmp72;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp73 = tmp41 - tmp30;
		    tmp74 = tmp71 - tmp68;
		    c_im(inout[2 * iostride]) = tmp73 + tmp74;
		    c_im(inout[6 * iostride]) = tmp74 - tmp73;
		    tmp67 = tmp64 + tmp65;
		    tmp72 = tmp68 + tmp71;
		    c_im(inout[0]) = tmp67 + tmp72;
		    c_im(inout[4 * iostride]) = tmp72 - tmp67;
	       }
	       tmp63 = tmp7 - tmp18;
	       tmp66 = tmp64 - tmp65;
	       c_re(inout[6 * iostride]) = tmp63 - tmp66;
	       c_re(inout[2 * iostride]) = tmp63 + tmp66;
	       {
		    fftw_real tmp59;
		    fftw_real tmp78;
		    fftw_real tmp62;
		    fftw_real tmp75;
		    fftw_real tmp60;
		    fftw_real tmp61;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp59 = tmp43 - tmp46;
		    tmp78 = tmp76 - tmp77;
		    tmp60 = tmp51 - tmp48;
		    tmp61 = tmp53 + tmp56;
		    tmp62 = K707106781 * (tmp60 - tmp61);
		    tmp75 = K707106781 * (tmp60 + tmp61);
		    c_re(inout[7 * iostride]) = tmp59 - tmp62;
		    c_re(inout[3 * iostride]) = tmp59 + tmp62;
		    c_im(inout[iostride]) = tmp75 + tmp78;
		    c_im(inout[5 * iostride]) = tmp78 - tmp75;
	       }
	       {
		    fftw_real tmp47;
		    fftw_real tmp80;
		    fftw_real tmp58;
		    fftw_real tmp79;
		    fftw_real tmp52;
		    fftw_real tmp57;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp47 = tmp43 + tmp46;
		    tmp80 = tmp77 + tmp76;
		    tmp52 = tmp48 + tmp51;
		    tmp57 = tmp53 - tmp56;
		    tmp58 = K707106781 * (tmp52 + tmp57);
		    tmp79 = K707106781 * (tmp57 - tmp52);
		    c_re(inout[5 * iostride]) = tmp47 - tmp58;
		    c_re(inout[iostride]) = tmp47 + tmp58;
		    c_im(inout[3 * iostride]) = tmp79 + tmp80;
		    c_im(inout[7 * iostride]) = tmp80 - tmp79;
	       }
	  }
     }
}
コード例 #7
0
ファイル: fni_32.c プロジェクト: Sunwinds/ShapeDescriptor
void fftwi_no_twiddle_32(const fftw_complex *input, fftw_complex *output, int istride, int ostride)
{
     fftw_real tmp7;
     fftw_real tmp339;
     fftw_real tmp70;
     fftw_real tmp313;
     fftw_real tmp97;
     fftw_real tmp215;
     fftw_real tmp179;
     fftw_real tmp241;
     fftw_real tmp14;
     fftw_real tmp314;
     fftw_real tmp77;
     fftw_real tmp340;
     fftw_real tmp182;
     fftw_real tmp216;
     fftw_real tmp104;
     fftw_real tmp242;
     fftw_real tmp153;
     fftw_real tmp236;
     fftw_real tmp53;
     fftw_real tmp60;
     fftw_real tmp287;
     fftw_real tmp336;
     fftw_real tmp360;
     fftw_real tmp290;
     fftw_real tmp293;
     fftw_real tmp294;
     fftw_real tmp170;
     fftw_real tmp233;
     fftw_real tmp333;
     fftw_real tmp359;
     fftw_real tmp164;
     fftw_real tmp234;
     fftw_real tmp173;
     fftw_real tmp237;
     fftw_real tmp22;
     fftw_real tmp318;
     fftw_real tmp343;
     fftw_real tmp85;
     fftw_real tmp112;
     fftw_real tmp185;
     fftw_real tmp220;
     fftw_real tmp245;
     fftw_real tmp29;
     fftw_real tmp321;
     fftw_real tmp342;
     fftw_real tmp92;
     fftw_real tmp119;
     fftw_real tmp184;
     fftw_real tmp223;
     fftw_real tmp244;
     fftw_real tmp126;
     fftw_real tmp229;
     fftw_real tmp38;
     fftw_real tmp45;
     fftw_real tmp278;
     fftw_real tmp329;
     fftw_real tmp357;
     fftw_real tmp281;
     fftw_real tmp284;
     fftw_real tmp285;
     fftw_real tmp143;
     fftw_real tmp226;
     fftw_real tmp326;
     fftw_real tmp356;
     fftw_real tmp137;
     fftw_real tmp227;
     fftw_real tmp146;
     fftw_real tmp230;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp3;
	  fftw_real tmp177;
	  fftw_real tmp66;
	  fftw_real tmp96;
	  fftw_real tmp6;
	  fftw_real tmp95;
	  fftw_real tmp69;
	  fftw_real tmp178;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp1;
	       fftw_real tmp2;
	       fftw_real tmp64;
	       fftw_real tmp65;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp1 = c_re(input[0]);
	       tmp2 = c_re(input[16 * istride]);
	       tmp3 = tmp1 + tmp2;
	       tmp177 = tmp1 - tmp2;
	       tmp64 = c_im(input[0]);
	       tmp65 = c_im(input[16 * istride]);
	       tmp66 = tmp64 + tmp65;
	       tmp96 = tmp64 - tmp65;
	  }
	  {
	       fftw_real tmp4;
	       fftw_real tmp5;
	       fftw_real tmp67;
	       fftw_real tmp68;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp4 = c_re(input[8 * istride]);
	       tmp5 = c_re(input[24 * istride]);
	       tmp6 = tmp4 + tmp5;
	       tmp95 = tmp4 - tmp5;
	       tmp67 = c_im(input[8 * istride]);
	       tmp68 = c_im(input[24 * istride]);
	       tmp69 = tmp67 + tmp68;
	       tmp178 = tmp67 - tmp68;
	  }
	  tmp7 = tmp3 + tmp6;
	  tmp339 = tmp3 - tmp6;
	  tmp70 = tmp66 + tmp69;
	  tmp313 = tmp66 - tmp69;
	  tmp97 = tmp95 + tmp96;
	  tmp215 = tmp96 - tmp95;
	  tmp179 = tmp177 - tmp178;
	  tmp241 = tmp177 + tmp178;
     }
     {
	  fftw_real tmp10;
	  fftw_real tmp98;
	  fftw_real tmp73;
	  fftw_real tmp99;
	  fftw_real tmp13;
	  fftw_real tmp102;
	  fftw_real tmp76;
	  fftw_real tmp101;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp8;
	       fftw_real tmp9;
	       fftw_real tmp71;
	       fftw_real tmp72;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp8 = c_re(input[4 * istride]);
	       tmp9 = c_re(input[20 * istride]);
	       tmp10 = tmp8 + tmp9;
	       tmp98 = tmp8 - tmp9;
	       tmp71 = c_im(input[4 * istride]);
	       tmp72 = c_im(input[20 * istride]);
	       tmp73 = tmp71 + tmp72;
	       tmp99 = tmp71 - tmp72;
	  }
	  {
	       fftw_real tmp11;
	       fftw_real tmp12;
	       fftw_real tmp74;
	       fftw_real tmp75;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp11 = c_re(input[28 * istride]);
	       tmp12 = c_re(input[12 * istride]);
	       tmp13 = tmp11 + tmp12;
	       tmp102 = tmp11 - tmp12;
	       tmp74 = c_im(input[28 * istride]);
	       tmp75 = c_im(input[12 * istride]);
	       tmp76 = tmp74 + tmp75;
	       tmp101 = tmp74 - tmp75;
	  }
	  tmp14 = tmp10 + tmp13;
	  tmp314 = tmp10 - tmp13;
	  tmp77 = tmp73 + tmp76;
	  tmp340 = tmp76 - tmp73;
	  {
	       fftw_real tmp180;
	       fftw_real tmp181;
	       fftw_real tmp100;
	       fftw_real tmp103;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp180 = tmp98 - tmp99;
	       tmp181 = tmp102 + tmp101;
	       tmp182 = K707106781 * (tmp180 + tmp181);
	       tmp216 = K707106781 * (tmp180 - tmp181);
	       tmp100 = tmp98 + tmp99;
	       tmp103 = tmp101 - tmp102;
	       tmp104 = K707106781 * (tmp100 + tmp103);
	       tmp242 = K707106781 * (tmp103 - tmp100);
	  }
     }
     {
	  fftw_real tmp49;
	  fftw_real tmp149;
	  fftw_real tmp169;
	  fftw_real tmp288;
	  fftw_real tmp52;
	  fftw_real tmp166;
	  fftw_real tmp152;
	  fftw_real tmp289;
	  fftw_real tmp56;
	  fftw_real tmp154;
	  fftw_real tmp157;
	  fftw_real tmp291;
	  fftw_real tmp59;
	  fftw_real tmp159;
	  fftw_real tmp162;
	  fftw_real tmp292;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp47;
	       fftw_real tmp48;
	       fftw_real tmp167;
	       fftw_real tmp168;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp47 = c_re(input[31 * istride]);
	       tmp48 = c_re(input[15 * istride]);
	       tmp49 = tmp47 + tmp48;
	       tmp149 = tmp47 - tmp48;
	       tmp167 = c_im(input[31 * istride]);
	       tmp168 = c_im(input[15 * istride]);
	       tmp169 = tmp167 - tmp168;
	       tmp288 = tmp167 + tmp168;
	  }
	  {
	       fftw_real tmp50;
	       fftw_real tmp51;
	       fftw_real tmp150;
	       fftw_real tmp151;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp50 = c_re(input[7 * istride]);
	       tmp51 = c_re(input[23 * istride]);
	       tmp52 = tmp50 + tmp51;
	       tmp166 = tmp50 - tmp51;
	       tmp150 = c_im(input[7 * istride]);
	       tmp151 = c_im(input[23 * istride]);
	       tmp152 = tmp150 - tmp151;
	       tmp289 = tmp150 + tmp151;
	  }
	  {
	       fftw_real tmp54;
	       fftw_real tmp55;
	       fftw_real tmp155;
	       fftw_real tmp156;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp54 = c_re(input[3 * istride]);
	       tmp55 = c_re(input[19 * istride]);
	       tmp56 = tmp54 + tmp55;
	       tmp154 = tmp54 - tmp55;
	       tmp155 = c_im(input[3 * istride]);
	       tmp156 = c_im(input[19 * istride]);
	       tmp157 = tmp155 - tmp156;
	       tmp291 = tmp155 + tmp156;
	  }
	  {
	       fftw_real tmp57;
	       fftw_real tmp58;
	       fftw_real tmp160;
	       fftw_real tmp161;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp57 = c_re(input[27 * istride]);
	       tmp58 = c_re(input[11 * istride]);
	       tmp59 = tmp57 + tmp58;
	       tmp159 = tmp57 - tmp58;
	       tmp160 = c_im(input[27 * istride]);
	       tmp161 = c_im(input[11 * istride]);
	       tmp162 = tmp160 - tmp161;
	       tmp292 = tmp160 + tmp161;
	  }
	  {
	       fftw_real tmp334;
	       fftw_real tmp335;
	       fftw_real tmp331;
	       fftw_real tmp332;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp153 = tmp149 - tmp152;
	       tmp236 = tmp149 + tmp152;
	       tmp53 = tmp49 + tmp52;
	       tmp60 = tmp56 + tmp59;
	       tmp287 = tmp53 - tmp60;
	       tmp334 = tmp49 - tmp52;
	       tmp335 = tmp292 - tmp291;
	       tmp336 = tmp334 - tmp335;
	       tmp360 = tmp334 + tmp335;
	       tmp290 = tmp288 + tmp289;
	       tmp293 = tmp291 + tmp292;
	       tmp294 = tmp290 - tmp293;
	       tmp170 = tmp166 + tmp169;
	       tmp233 = tmp169 - tmp166;
	       tmp331 = tmp288 - tmp289;
	       tmp332 = tmp56 - tmp59;
	       tmp333 = tmp331 - tmp332;
	       tmp359 = tmp332 + tmp331;
	       {
		    fftw_real tmp158;
		    fftw_real tmp163;
		    fftw_real tmp171;
		    fftw_real tmp172;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp158 = tmp154 - tmp157;
		    tmp163 = tmp159 + tmp162;
		    tmp164 = K707106781 * (tmp158 + tmp163);
		    tmp234 = K707106781 * (tmp158 - tmp163);
		    tmp171 = tmp154 + tmp157;
		    tmp172 = tmp162 - tmp159;
		    tmp173 = K707106781 * (tmp171 + tmp172);
		    tmp237 = K707106781 * (tmp172 - tmp171);
	       }
	  }
     }
     {
	  fftw_real tmp18;
	  fftw_real tmp106;
	  fftw_real tmp81;
	  fftw_real tmp110;
	  fftw_real tmp21;
	  fftw_real tmp109;
	  fftw_real tmp84;
	  fftw_real tmp107;
	  fftw_real tmp316;
	  fftw_real tmp317;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp16;
	       fftw_real tmp17;
	       fftw_real tmp79;
	       fftw_real tmp80;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp16 = c_re(input[2 * istride]);
	       tmp17 = c_re(input[18 * istride]);
	       tmp18 = tmp16 + tmp17;
	       tmp106 = tmp16 - tmp17;
	       tmp79 = c_im(input[2 * istride]);
	       tmp80 = c_im(input[18 * istride]);
	       tmp81 = tmp79 + tmp80;
	       tmp110 = tmp79 - tmp80;
	  }
	  {
	       fftw_real tmp19;
	       fftw_real tmp20;
	       fftw_real tmp82;
	       fftw_real tmp83;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp19 = c_re(input[10 * istride]);
	       tmp20 = c_re(input[26 * istride]);
	       tmp21 = tmp19 + tmp20;
	       tmp109 = tmp19 - tmp20;
	       tmp82 = c_im(input[10 * istride]);
	       tmp83 = c_im(input[26 * istride]);
	       tmp84 = tmp82 + tmp83;
	       tmp107 = tmp82 - tmp83;
	  }
	  tmp22 = tmp18 + tmp21;
	  tmp316 = tmp18 - tmp21;
	  tmp317 = tmp81 - tmp84;
	  tmp318 = tmp316 - tmp317;
	  tmp343 = tmp316 + tmp317;
	  tmp85 = tmp81 + tmp84;
	  {
	       fftw_real tmp108;
	       fftw_real tmp111;
	       fftw_real tmp218;
	       fftw_real tmp219;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp108 = tmp106 - tmp107;
	       tmp111 = tmp109 + tmp110;
	       tmp112 = (K923879532 * tmp108) - (K382683432 * tmp111);
	       tmp185 = (K923879532 * tmp111) + (K382683432 * tmp108);
	       tmp218 = tmp106 + tmp107;
	       tmp219 = tmp110 - tmp109;
	       tmp220 = (K382683432 * tmp218) - (K923879532 * tmp219);
	       tmp245 = (K382683432 * tmp219) + (K923879532 * tmp218);
	  }
     }
     {
	  fftw_real tmp25;
	  fftw_real tmp116;
	  fftw_real tmp88;
	  fftw_real tmp114;
	  fftw_real tmp28;
	  fftw_real tmp113;
	  fftw_real tmp91;
	  fftw_real tmp117;
	  fftw_real tmp319;
	  fftw_real tmp320;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp23;
	       fftw_real tmp24;
	       fftw_real tmp86;
	       fftw_real tmp87;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp23 = c_re(input[30 * istride]);
	       tmp24 = c_re(input[14 * istride]);
	       tmp25 = tmp23 + tmp24;
	       tmp116 = tmp23 - tmp24;
	       tmp86 = c_im(input[30 * istride]);
	       tmp87 = c_im(input[14 * istride]);
	       tmp88 = tmp86 + tmp87;
	       tmp114 = tmp86 - tmp87;
	  }
	  {
	       fftw_real tmp26;
	       fftw_real tmp27;
	       fftw_real tmp89;
	       fftw_real tmp90;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp26 = c_re(input[6 * istride]);
	       tmp27 = c_re(input[22 * istride]);
	       tmp28 = tmp26 + tmp27;
	       tmp113 = tmp26 - tmp27;
	       tmp89 = c_im(input[6 * istride]);
	       tmp90 = c_im(input[22 * istride]);
	       tmp91 = tmp89 + tmp90;
	       tmp117 = tmp89 - tmp90;
	  }
	  tmp29 = tmp25 + tmp28;
	  tmp319 = tmp25 - tmp28;
	  tmp320 = tmp88 - tmp91;
	  tmp321 = tmp319 + tmp320;
	  tmp342 = tmp320 - tmp319;
	  tmp92 = tmp88 + tmp91;
	  {
	       fftw_real tmp115;
	       fftw_real tmp118;
	       fftw_real tmp221;
	       fftw_real tmp222;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp115 = tmp113 + tmp114;
	       tmp118 = tmp116 - tmp117;
	       tmp119 = (K382683432 * tmp115) + (K923879532 * tmp118);
	       tmp184 = (K923879532 * tmp115) - (K382683432 * tmp118);
	       tmp221 = tmp114 - tmp113;
	       tmp222 = tmp116 + tmp117;
	       tmp223 = (K923879532 * tmp221) + (K382683432 * tmp222);
	       tmp244 = (K382683432 * tmp221) - (K923879532 * tmp222);
	  }
     }
     {
	  fftw_real tmp34;
	  fftw_real tmp122;
	  fftw_real tmp142;
	  fftw_real tmp279;
	  fftw_real tmp37;
	  fftw_real tmp139;
	  fftw_real tmp125;
	  fftw_real tmp280;
	  fftw_real tmp41;
	  fftw_real tmp127;
	  fftw_real tmp130;
	  fftw_real tmp282;
	  fftw_real tmp44;
	  fftw_real tmp132;
	  fftw_real tmp135;
	  fftw_real tmp283;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp32;
	       fftw_real tmp33;
	       fftw_real tmp140;
	       fftw_real tmp141;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp32 = c_re(input[istride]);
	       tmp33 = c_re(input[17 * istride]);
	       tmp34 = tmp32 + tmp33;
	       tmp122 = tmp32 - tmp33;
	       tmp140 = c_im(input[istride]);
	       tmp141 = c_im(input[17 * istride]);
	       tmp142 = tmp140 - tmp141;
	       tmp279 = tmp140 + tmp141;
	  }
	  {
	       fftw_real tmp35;
	       fftw_real tmp36;
	       fftw_real tmp123;
	       fftw_real tmp124;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp35 = c_re(input[9 * istride]);
	       tmp36 = c_re(input[25 * istride]);
	       tmp37 = tmp35 + tmp36;
	       tmp139 = tmp35 - tmp36;
	       tmp123 = c_im(input[9 * istride]);
	       tmp124 = c_im(input[25 * istride]);
	       tmp125 = tmp123 - tmp124;
	       tmp280 = tmp123 + tmp124;
	  }
	  {
	       fftw_real tmp39;
	       fftw_real tmp40;
	       fftw_real tmp128;
	       fftw_real tmp129;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp39 = c_re(input[5 * istride]);
	       tmp40 = c_re(input[21 * istride]);
	       tmp41 = tmp39 + tmp40;
	       tmp127 = tmp39 - tmp40;
	       tmp128 = c_im(input[5 * istride]);
	       tmp129 = c_im(input[21 * istride]);
	       tmp130 = tmp128 - tmp129;
	       tmp282 = tmp128 + tmp129;
	  }
	  {
	       fftw_real tmp42;
	       fftw_real tmp43;
	       fftw_real tmp133;
	       fftw_real tmp134;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp42 = c_re(input[29 * istride]);
	       tmp43 = c_re(input[13 * istride]);
	       tmp44 = tmp42 + tmp43;
	       tmp132 = tmp42 - tmp43;
	       tmp133 = c_im(input[29 * istride]);
	       tmp134 = c_im(input[13 * istride]);
	       tmp135 = tmp133 - tmp134;
	       tmp283 = tmp133 + tmp134;
	  }
	  {
	       fftw_real tmp327;
	       fftw_real tmp328;
	       fftw_real tmp324;
	       fftw_real tmp325;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp126 = tmp122 - tmp125;
	       tmp229 = tmp122 + tmp125;
	       tmp38 = tmp34 + tmp37;
	       tmp45 = tmp41 + tmp44;
	       tmp278 = tmp38 - tmp45;
	       tmp327 = tmp34 - tmp37;
	       tmp328 = tmp283 - tmp282;
	       tmp329 = tmp327 - tmp328;
	       tmp357 = tmp327 + tmp328;
	       tmp281 = tmp279 + tmp280;
	       tmp284 = tmp282 + tmp283;
	       tmp285 = tmp281 - tmp284;
	       tmp143 = tmp139 + tmp142;
	       tmp226 = tmp142 - tmp139;
	       tmp324 = tmp279 - tmp280;
	       tmp325 = tmp41 - tmp44;
	       tmp326 = tmp324 - tmp325;
	       tmp356 = tmp325 + tmp324;
	       {
		    fftw_real tmp131;
		    fftw_real tmp136;
		    fftw_real tmp144;
		    fftw_real tmp145;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp131 = tmp127 - tmp130;
		    tmp136 = tmp132 + tmp135;
		    tmp137 = K707106781 * (tmp131 + tmp136);
		    tmp227 = K707106781 * (tmp131 - tmp136);
		    tmp144 = tmp127 + tmp130;
		    tmp145 = tmp135 - tmp132;
		    tmp146 = K707106781 * (tmp144 + tmp145);
		    tmp230 = K707106781 * (tmp145 - tmp144);
	       }
	  }
     }
     {
	  fftw_real tmp277;
	  fftw_real tmp301;
	  fftw_real tmp304;
	  fftw_real tmp306;
	  fftw_real tmp296;
	  fftw_real tmp300;
	  fftw_real tmp299;
	  fftw_real tmp305;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp275;
	       fftw_real tmp276;
	       fftw_real tmp302;
	       fftw_real tmp303;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp275 = tmp70 - tmp77;
	       tmp276 = tmp22 - tmp29;
	       tmp277 = tmp275 - tmp276;
	       tmp301 = tmp276 + tmp275;
	       tmp302 = tmp278 + tmp285;
	       tmp303 = tmp294 - tmp287;
	       tmp304 = K707106781 * (tmp302 + tmp303);
	       tmp306 = K707106781 * (tmp303 - tmp302);
	  }
	  {
	       fftw_real tmp286;
	       fftw_real tmp295;
	       fftw_real tmp297;
	       fftw_real tmp298;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp286 = tmp278 - tmp285;
	       tmp295 = tmp287 + tmp294;
	       tmp296 = K707106781 * (tmp286 - tmp295);
	       tmp300 = K707106781 * (tmp286 + tmp295);
	       tmp297 = tmp7 - tmp14;
	       tmp298 = tmp92 - tmp85;
	       tmp299 = tmp297 + tmp298;
	       tmp305 = tmp297 - tmp298;
	  }
	  c_im(output[28 * ostride]) = tmp277 - tmp296;
	  c_im(output[12 * ostride]) = tmp277 + tmp296;
	  c_re(output[20 * ostride]) = tmp299 - tmp300;
	  c_re(output[4 * ostride]) = tmp299 + tmp300;
	  c_im(output[20 * ostride]) = tmp301 - tmp304;
	  c_im(output[4 * ostride]) = tmp301 + tmp304;
	  c_re(output[28 * ostride]) = tmp305 - tmp306;
	  c_re(output[12 * ostride]) = tmp305 + tmp306;
     }
     {
	  fftw_real tmp31;
	  fftw_real tmp311;
	  fftw_real tmp310;
	  fftw_real tmp312;
	  fftw_real tmp62;
	  fftw_real tmp63;
	  fftw_real tmp94;
	  fftw_real tmp307;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp15;
	       fftw_real tmp30;
	       fftw_real tmp308;
	       fftw_real tmp309;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp15 = tmp7 + tmp14;
	       tmp30 = tmp22 + tmp29;
	       tmp31 = tmp15 + tmp30;
	       tmp311 = tmp15 - tmp30;
	       tmp308 = tmp281 + tmp284;
	       tmp309 = tmp290 + tmp293;
	       tmp310 = tmp308 + tmp309;
	       tmp312 = tmp309 - tmp308;
	  }
	  {
	       fftw_real tmp46;
	       fftw_real tmp61;
	       fftw_real tmp78;
	       fftw_real tmp93;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp46 = tmp38 + tmp45;
	       tmp61 = tmp53 + tmp60;
	       tmp62 = tmp46 + tmp61;
	       tmp63 = tmp46 - tmp61;
	       tmp78 = tmp70 + tmp77;
	       tmp93 = tmp85 + tmp92;
	       tmp94 = tmp78 - tmp93;
	       tmp307 = tmp78 + tmp93;
	  }
	  c_re(output[16 * ostride]) = tmp31 - tmp62;
	  c_re(output[0]) = tmp31 + tmp62;
	  c_im(output[8 * ostride]) = tmp63 + tmp94;
	  c_im(output[24 * ostride]) = tmp94 - tmp63;
	  c_im(output[16 * ostride]) = tmp307 - tmp310;
	  c_im(output[0]) = tmp307 + tmp310;
	  c_re(output[24 * ostride]) = tmp311 - tmp312;
	  c_re(output[8 * ostride]) = tmp311 + tmp312;
     }
     {
	  fftw_real tmp121;
	  fftw_real tmp189;
	  fftw_real tmp187;
	  fftw_real tmp193;
	  fftw_real tmp148;
	  fftw_real tmp190;
	  fftw_real tmp175;
	  fftw_real tmp191;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp105;
	       fftw_real tmp120;
	       fftw_real tmp183;
	       fftw_real tmp186;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp105 = tmp97 - tmp104;
	       tmp120 = tmp112 - tmp119;
	       tmp121 = tmp105 - tmp120;
	       tmp189 = tmp105 + tmp120;
	       tmp183 = tmp179 - tmp182;
	       tmp186 = tmp184 - tmp185;
	       tmp187 = tmp183 + tmp186;
	       tmp193 = tmp183 - tmp186;
	  }
	  {
	       fftw_real tmp138;
	       fftw_real tmp147;
	       fftw_real tmp165;
	       fftw_real tmp174;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp138 = tmp126 - tmp137;
	       tmp147 = tmp143 - tmp146;
	       tmp148 = (K555570233 * tmp138) - (K831469612 * tmp147);
	       tmp190 = (K831469612 * tmp138) + (K555570233 * tmp147);
	       tmp165 = tmp153 - tmp164;
	       tmp174 = tmp170 - tmp173;
	       tmp175 = (K555570233 * tmp165) + (K831469612 * tmp174);
	       tmp191 = (K555570233 * tmp174) - (K831469612 * tmp165);
	  }
	  {
	       fftw_real tmp176;
	       fftw_real tmp188;
	       fftw_real tmp192;
	       fftw_real tmp194;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp176 = tmp148 - tmp175;
	       c_im(output[29 * ostride]) = tmp121 - tmp176;
	       c_im(output[13 * ostride]) = tmp121 + tmp176;
	       tmp188 = tmp148 + tmp175;
	       c_re(output[21 * ostride]) = tmp187 - tmp188;
	       c_re(output[5 * ostride]) = tmp187 + tmp188;
	       tmp192 = tmp190 + tmp191;
	       c_im(output[21 * ostride]) = tmp189 - tmp192;
	       c_im(output[5 * ostride]) = tmp189 + tmp192;
	       tmp194 = tmp191 - tmp190;
	       c_re(output[29 * ostride]) = tmp193 - tmp194;
	       c_re(output[13 * ostride]) = tmp193 + tmp194;
	  }
     }
     {
	  fftw_real tmp197;
	  fftw_real tmp209;
	  fftw_real tmp207;
	  fftw_real tmp213;
	  fftw_real tmp200;
	  fftw_real tmp210;
	  fftw_real tmp203;
	  fftw_real tmp211;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp195;
	       fftw_real tmp196;
	       fftw_real tmp205;
	       fftw_real tmp206;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp195 = tmp97 + tmp104;
	       tmp196 = tmp185 + tmp184;
	       tmp197 = tmp195 - tmp196;
	       tmp209 = tmp195 + tmp196;
	       tmp205 = tmp179 + tmp182;
	       tmp206 = tmp112 + tmp119;
	       tmp207 = tmp205 + tmp206;
	       tmp213 = tmp205 - tmp206;
	  }
	  {
	       fftw_real tmp198;
	       fftw_real tmp199;
	       fftw_real tmp201;
	       fftw_real tmp202;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp198 = tmp126 + tmp137;
	       tmp199 = tmp143 + tmp146;
	       tmp200 = (K980785280 * tmp198) - (K195090322 * tmp199);
	       tmp210 = (K195090322 * tmp198) + (K980785280 * tmp199);
	       tmp201 = tmp153 + tmp164;
	       tmp202 = tmp170 + tmp173;
	       tmp203 = (K980785280 * tmp201) + (K195090322 * tmp202);
	       tmp211 = (K980785280 * tmp202) - (K195090322 * tmp201);
	  }
	  {
	       fftw_real tmp204;
	       fftw_real tmp208;
	       fftw_real tmp212;
	       fftw_real tmp214;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp204 = tmp200 - tmp203;
	       c_im(output[25 * ostride]) = tmp197 - tmp204;
	       c_im(output[9 * ostride]) = tmp197 + tmp204;
	       tmp208 = tmp200 + tmp203;
	       c_re(output[17 * ostride]) = tmp207 - tmp208;
	       c_re(output[ostride]) = tmp207 + tmp208;
	       tmp212 = tmp210 + tmp211;
	       c_im(output[17 * ostride]) = tmp209 - tmp212;
	       c_im(output[ostride]) = tmp209 + tmp212;
	       tmp214 = tmp211 - tmp210;
	       c_re(output[25 * ostride]) = tmp213 - tmp214;
	       c_re(output[9 * ostride]) = tmp213 + tmp214;
	  }
     }
     {
	  fftw_real tmp323;
	  fftw_real tmp347;
	  fftw_real tmp350;
	  fftw_real tmp352;
	  fftw_real tmp338;
	  fftw_real tmp346;
	  fftw_real tmp345;
	  fftw_real tmp351;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp315;
	       fftw_real tmp322;
	       fftw_real tmp348;
	       fftw_real tmp349;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp315 = tmp313 - tmp314;
	       tmp322 = K707106781 * (tmp318 - tmp321);
	       tmp323 = tmp315 + tmp322;
	       tmp347 = tmp315 - tmp322;
	       tmp348 = (K382683432 * tmp329) - (K923879532 * tmp326);
	       tmp349 = (K923879532 * tmp333) + (K382683432 * tmp336);
	       tmp350 = tmp348 - tmp349;
	       tmp352 = tmp348 + tmp349;
	  }
	  {
	       fftw_real tmp330;
	       fftw_real tmp337;
	       fftw_real tmp341;
	       fftw_real tmp344;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp330 = (K382683432 * tmp326) + (K923879532 * tmp329);
	       tmp337 = (K382683432 * tmp333) - (K923879532 * tmp336);
	       tmp338 = tmp330 + tmp337;
	       tmp346 = tmp337 - tmp330;
	       tmp341 = tmp339 - tmp340;
	       tmp344 = K707106781 * (tmp342 - tmp343);
	       tmp345 = tmp341 - tmp344;
	       tmp351 = tmp341 + tmp344;
	  }
	  c_im(output[22 * ostride]) = tmp323 - tmp338;
	  c_im(output[6 * ostride]) = tmp323 + tmp338;
	  c_re(output[30 * ostride]) = tmp345 - tmp346;
	  c_re(output[14 * ostride]) = tmp345 + tmp346;
	  c_im(output[30 * ostride]) = tmp347 - tmp350;
	  c_im(output[14 * ostride]) = tmp347 + tmp350;
	  c_re(output[22 * ostride]) = tmp351 - tmp352;
	  c_re(output[6 * ostride]) = tmp351 + tmp352;
     }
     {
	  fftw_real tmp355;
	  fftw_real tmp367;
	  fftw_real tmp370;
	  fftw_real tmp372;
	  fftw_real tmp362;
	  fftw_real tmp366;
	  fftw_real tmp365;
	  fftw_real tmp371;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp353;
	       fftw_real tmp354;
	       fftw_real tmp368;
	       fftw_real tmp369;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp353 = tmp314 + tmp313;
	       tmp354 = K707106781 * (tmp343 + tmp342);
	       tmp355 = tmp353 + tmp354;
	       tmp367 = tmp353 - tmp354;
	       tmp368 = (K923879532 * tmp357) - (K382683432 * tmp356);
	       tmp369 = (K382683432 * tmp359) + (K923879532 * tmp360);
	       tmp370 = tmp368 - tmp369;
	       tmp372 = tmp368 + tmp369;
	  }
	  {
	       fftw_real tmp358;
	       fftw_real tmp361;
	       fftw_real tmp363;
	       fftw_real tmp364;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp358 = (K923879532 * tmp356) + (K382683432 * tmp357);
	       tmp361 = (K923879532 * tmp359) - (K382683432 * tmp360);
	       tmp362 = tmp358 + tmp361;
	       tmp366 = tmp361 - tmp358;
	       tmp363 = tmp339 + tmp340;
	       tmp364 = K707106781 * (tmp318 + tmp321);
	       tmp365 = tmp363 - tmp364;
	       tmp371 = tmp363 + tmp364;
	  }
	  c_im(output[18 * ostride]) = tmp355 - tmp362;
	  c_im(output[2 * ostride]) = tmp355 + tmp362;
	  c_re(output[26 * ostride]) = tmp365 - tmp366;
	  c_re(output[10 * ostride]) = tmp365 + tmp366;
	  c_im(output[26 * ostride]) = tmp367 - tmp370;
	  c_im(output[10 * ostride]) = tmp367 + tmp370;
	  c_re(output[18 * ostride]) = tmp371 - tmp372;
	  c_re(output[2 * ostride]) = tmp371 + tmp372;
     }
     {
	  fftw_real tmp225;
	  fftw_real tmp249;
	  fftw_real tmp247;
	  fftw_real tmp253;
	  fftw_real tmp232;
	  fftw_real tmp250;
	  fftw_real tmp239;
	  fftw_real tmp251;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp217;
	       fftw_real tmp224;
	       fftw_real tmp243;
	       fftw_real tmp246;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp217 = tmp215 - tmp216;
	       tmp224 = tmp220 - tmp223;
	       tmp225 = tmp217 + tmp224;
	       tmp249 = tmp217 - tmp224;
	       tmp243 = tmp241 - tmp242;
	       tmp246 = tmp244 - tmp245;
	       tmp247 = tmp243 - tmp246;
	       tmp253 = tmp243 + tmp246;
	  }
	  {
	       fftw_real tmp228;
	       fftw_real tmp231;
	       fftw_real tmp235;
	       fftw_real tmp238;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp228 = tmp226 - tmp227;
	       tmp231 = tmp229 - tmp230;
	       tmp232 = (K195090322 * tmp228) + (K980785280 * tmp231);
	       tmp250 = (K195090322 * tmp231) - (K980785280 * tmp228);
	       tmp235 = tmp233 - tmp234;
	       tmp238 = tmp236 - tmp237;
	       tmp239 = (K195090322 * tmp235) - (K980785280 * tmp238);
	       tmp251 = (K980785280 * tmp235) + (K195090322 * tmp238);
	  }
	  {
	       fftw_real tmp240;
	       fftw_real tmp248;
	       fftw_real tmp252;
	       fftw_real tmp254;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp240 = tmp232 + tmp239;
	       c_im(output[23 * ostride]) = tmp225 - tmp240;
	       c_im(output[7 * ostride]) = tmp225 + tmp240;
	       tmp248 = tmp239 - tmp232;
	       c_re(output[31 * ostride]) = tmp247 - tmp248;
	       c_re(output[15 * ostride]) = tmp247 + tmp248;
	       tmp252 = tmp250 - tmp251;
	       c_im(output[31 * ostride]) = tmp249 - tmp252;
	       c_im(output[15 * ostride]) = tmp249 + tmp252;
	       tmp254 = tmp250 + tmp251;
	       c_re(output[23 * ostride]) = tmp253 - tmp254;
	       c_re(output[7 * ostride]) = tmp253 + tmp254;
	  }
     }
     {
	  fftw_real tmp257;
	  fftw_real tmp269;
	  fftw_real tmp267;
	  fftw_real tmp273;
	  fftw_real tmp260;
	  fftw_real tmp270;
	  fftw_real tmp263;
	  fftw_real tmp271;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp255;
	       fftw_real tmp256;
	       fftw_real tmp265;
	       fftw_real tmp266;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp255 = tmp215 + tmp216;
	       tmp256 = tmp245 + tmp244;
	       tmp257 = tmp255 + tmp256;
	       tmp269 = tmp255 - tmp256;
	       tmp265 = tmp241 + tmp242;
	       tmp266 = tmp220 + tmp223;
	       tmp267 = tmp265 - tmp266;
	       tmp273 = tmp265 + tmp266;
	  }
	  {
	       fftw_real tmp258;
	       fftw_real tmp259;
	       fftw_real tmp261;
	       fftw_real tmp262;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp258 = tmp226 + tmp227;
	       tmp259 = tmp229 + tmp230;
	       tmp260 = (K831469612 * tmp258) + (K555570233 * tmp259);
	       tmp270 = (K831469612 * tmp259) - (K555570233 * tmp258);
	       tmp261 = tmp233 + tmp234;
	       tmp262 = tmp236 + tmp237;
	       tmp263 = (K831469612 * tmp261) - (K555570233 * tmp262);
	       tmp271 = (K555570233 * tmp261) + (K831469612 * tmp262);
	  }
	  {
	       fftw_real tmp264;
	       fftw_real tmp268;
	       fftw_real tmp272;
	       fftw_real tmp274;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp264 = tmp260 + tmp263;
	       c_im(output[19 * ostride]) = tmp257 - tmp264;
	       c_im(output[3 * ostride]) = tmp257 + tmp264;
	       tmp268 = tmp263 - tmp260;
	       c_re(output[27 * ostride]) = tmp267 - tmp268;
	       c_re(output[11 * ostride]) = tmp267 + tmp268;
	       tmp272 = tmp270 - tmp271;
	       c_im(output[27 * ostride]) = tmp269 - tmp272;
	       c_im(output[11 * ostride]) = tmp269 + tmp272;
	       tmp274 = tmp270 + tmp271;
	       c_re(output[19 * ostride]) = tmp273 - tmp274;
	       c_re(output[3 * ostride]) = tmp273 + tmp274;
	  }
     }
}
コード例 #8
0
ファイル: fni_7.c プロジェクト: LuaDist/im
void fftwi_no_twiddle_7(const fftw_complex *input, fftw_complex *output,
			int istride, int ostride)
{
     fftw_real tmp1;
     fftw_real tmp15;
     fftw_real tmp4;
     fftw_real tmp11;
     fftw_real tmp21;
     fftw_real tmp31;
     fftw_real tmp7;
     fftw_real tmp13;
     fftw_real tmp24;
     fftw_real tmp33;
     fftw_real tmp10;
     fftw_real tmp12;
     fftw_real tmp18;
     fftw_real tmp32;
     ASSERT_ALIGNED_DOUBLE;
     tmp1 = c_re(input[0]);
     tmp15 = c_im(input[0]);
     {
	  fftw_real tmp2;
	  fftw_real tmp3;
	  fftw_real tmp19;
	  fftw_real tmp20;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp2 = c_re(input[istride]);
	  tmp3 = c_re(input[6 * istride]);
	  tmp4 = tmp2 + tmp3;
	  tmp11 = tmp2 - tmp3;
	  tmp19 = c_im(input[istride]);
	  tmp20 = c_im(input[6 * istride]);
	  tmp21 = tmp19 + tmp20;
	  tmp31 = tmp20 - tmp19;
     }
     {
	  fftw_real tmp5;
	  fftw_real tmp6;
	  fftw_real tmp22;
	  fftw_real tmp23;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp5 = c_re(input[2 * istride]);
	  tmp6 = c_re(input[5 * istride]);
	  tmp7 = tmp5 + tmp6;
	  tmp13 = tmp5 - tmp6;
	  tmp22 = c_im(input[2 * istride]);
	  tmp23 = c_im(input[5 * istride]);
	  tmp24 = tmp22 + tmp23;
	  tmp33 = tmp23 - tmp22;
     }
     {
	  fftw_real tmp8;
	  fftw_real tmp9;
	  fftw_real tmp16;
	  fftw_real tmp17;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp8 = c_re(input[3 * istride]);
	  tmp9 = c_re(input[4 * istride]);
	  tmp10 = tmp8 + tmp9;
	  tmp12 = tmp8 - tmp9;
	  tmp16 = c_im(input[3 * istride]);
	  tmp17 = c_im(input[4 * istride]);
	  tmp18 = tmp16 + tmp17;
	  tmp32 = tmp17 - tmp16;
     }
     {
	  fftw_real tmp36;
	  fftw_real tmp35;
	  fftw_real tmp26;
	  fftw_real tmp27;
	  ASSERT_ALIGNED_DOUBLE;
	  c_re(output[0]) = tmp1 + tmp4 + tmp7 + tmp10;
	  tmp36 =
	      (K974927912 * tmp33) + (K433883739 * tmp32) +
	      (K781831482 * tmp31);
	  tmp35 =
	      tmp1 + (K623489801 * tmp4) - (K900968867 * tmp10) -
	      (K222520933 * tmp7);
	  c_re(output[6 * ostride]) = tmp35 - tmp36;
	  c_re(output[ostride]) = tmp35 + tmp36;
	  {
	       fftw_real tmp38;
	       fftw_real tmp37;
	       fftw_real tmp34;
	       fftw_real tmp30;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp38 =
		   (K974927912 * tmp32) + (K433883739 * tmp31) -
		   (K781831482 * tmp33);
	       tmp37 =
		   tmp1 + (K623489801 * tmp7) - (K222520933 * tmp10) -
		   (K900968867 * tmp4);
	       c_re(output[4 * ostride]) = tmp37 - tmp38;
	       c_re(output[3 * ostride]) = tmp37 + tmp38;
	       tmp34 =
		   (K974927912 * tmp31) - (K781831482 * tmp32) -
		   (K433883739 * tmp33);
	       tmp30 =
		   tmp1 + (K623489801 * tmp10) - (K900968867 * tmp7) -
		   (K222520933 * tmp4);
	       c_re(output[5 * ostride]) = tmp30 - tmp34;
	       c_re(output[2 * ostride]) = tmp30 + tmp34;
	  }
	  c_im(output[0]) = tmp15 + tmp24 + tmp18 + tmp21;
	  tmp26 =
	      (K433883739 * tmp11) + (K974927912 * tmp12) -
	      (K781831482 * tmp13);
	  tmp27 =
	      tmp15 + (K623489801 * tmp24) - (K900968867 * tmp21) -
	      (K222520933 * tmp18);
	  c_im(output[3 * ostride]) = tmp26 + tmp27;
	  c_im(output[4 * ostride]) = tmp27 - tmp26;
	  {
	       fftw_real tmp14;
	       fftw_real tmp25;
	       fftw_real tmp28;
	       fftw_real tmp29;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp14 =
		   (K974927912 * tmp11) - (K781831482 * tmp12) -
		   (K433883739 * tmp13);
	       tmp25 =
		   tmp15 + (K623489801 * tmp18) - (K222520933 * tmp21) -
		   (K900968867 * tmp24);
	       c_im(output[2 * ostride]) = tmp14 + tmp25;
	       c_im(output[5 * ostride]) = tmp25 - tmp14;
	       tmp28 =
		   (K781831482 * tmp11) + (K974927912 * tmp13) +
		   (K433883739 * tmp12);
	       tmp29 =
		   tmp15 + (K623489801 * tmp21) - (K900968867 * tmp18) -
		   (K222520933 * tmp24);
	       c_im(output[ostride]) = tmp28 + tmp29;
	       c_im(output[6 * ostride]) = tmp29 - tmp28;
	  }
     }
}
コード例 #9
0
// this function walks through data loading every fourth element
// the purpose is to cache the data for a subsequent FFT
dist_fft_real prefetch_row(dist_fft_storage data,
                           int local_row,
                           int dimension)
{
    // prefetching only speeds things up for very large dimensions
    if (dimension < (1 << 13)) return 0;
    
    int index = local_row * dimension;
    
    int index1 = index;
    int index2 = index+4;
    int index3 = index+8;
    int index4 = index+12;
    
    double data_re1;
    double data_im1;

    double data_re2;
    double data_im2;

    double data_re3;
    double data_im3;

    double data_re4;
    double data_im4;

	int bigloopcount;
	int bigloopindex;
            
    dist_fft_real sum_re1 = 0, sum_im1 = 0, sum_re2 = 0, sum_im2 = 0;
    dist_fft_real sum_re3 = 0, sum_im3 = 0, sum_re4 = 0, sum_im4 = 0;
    
	bigloopcount = (dimension)/16;
	
    for (bigloopindex=0; bigloopindex<bigloopcount; bigloopindex++) {
        
        data_re1 = c_re(data, index1);
        data_im1 = c_im(data, index1);
        
        data_re2 = c_re(data, index2);
        data_im2 = c_im(data, index2);
        
        data_re3 = c_re(data, index3);
        data_im3 = c_im(data, index3);
        
        data_re4 = c_re(data, index4);
        data_im4 = c_im(data, index4);
        
        sum_re1 += data_re1;
        sum_im1 += data_im1;
                
        sum_re2 += data_re2;
        sum_im2 += data_im2;
                
        sum_re3 += data_re3;
        sum_im3 += data_im3;
                
        sum_re4 += data_re4;
        sum_im4 += data_im4;
                
        index1 += 16;
        index2 += 16;
        index3 += 16;
        index4 += 16;
    }
    
    return sum_re1 * sum_im1 + sum_re2 * sum_im2 + sum_re3 * sum_im3 + sum_re4 * sum_im4;
}
コード例 #10
0
ファイル: fhf_3.c プロジェクト: glentner/Gadget
void fftw_hc2hc_forward_3(fftw_real *A, const fftw_complex *W,
			  int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (3 * iostride);
     {
	  fftw_real tmp24;
	  fftw_real tmp25;
	  fftw_real tmp26;
	  fftw_real tmp27;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp24 = X[0];
	  tmp25 = X[iostride];
	  tmp26 = X[2 * iostride];
	  tmp27 = tmp25 + tmp26;
	  X[iostride] = tmp24 - (K500000000 * tmp27);
	  X[0] = tmp24 + tmp27;
	  Y[-iostride] = K866025403 * (tmp26 - tmp25);
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 2) {
	  fftw_real tmp4;
	  fftw_real tmp21;
	  fftw_real tmp9;
	  fftw_real tmp17;
	  fftw_real tmp14;
	  fftw_real tmp18;
	  fftw_real tmp15;
	  fftw_real tmp20;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp4 = X[0];
	  tmp21 = Y[-2 * iostride];
	  {
	       fftw_real tmp6;
	       fftw_real tmp8;
	       fftw_real tmp5;
	       fftw_real tmp7;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp6 = X[iostride];
	       tmp8 = Y[-iostride];
	       tmp5 = c_re(W[0]);
	       tmp7 = c_im(W[0]);
	       tmp9 = (tmp5 * tmp6) - (tmp7 * tmp8);
	       tmp17 = (tmp7 * tmp6) + (tmp5 * tmp8);
	  }
	  {
	       fftw_real tmp11;
	       fftw_real tmp13;
	       fftw_real tmp10;
	       fftw_real tmp12;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp11 = X[2 * iostride];
	       tmp13 = Y[0];
	       tmp10 = c_re(W[1]);
	       tmp12 = c_im(W[1]);
	       tmp14 = (tmp10 * tmp11) - (tmp12 * tmp13);
	       tmp18 = (tmp12 * tmp11) + (tmp10 * tmp13);
	  }
	  tmp15 = tmp9 + tmp14;
	  tmp20 = tmp17 + tmp18;
	  {
	       fftw_real tmp16;
	       fftw_real tmp19;
	       fftw_real tmp22;
	       fftw_real tmp23;
	       ASSERT_ALIGNED_DOUBLE;
	       X[0] = tmp4 + tmp15;
	       tmp16 = tmp4 - (K500000000 * tmp15);
	       tmp19 = K866025403 * (tmp17 - tmp18);
	       Y[-2 * iostride] = tmp16 - tmp19;
	       X[iostride] = tmp16 + tmp19;
	       Y[0] = tmp20 + tmp21;
	       tmp22 = tmp21 - (K500000000 * tmp20);
	       tmp23 = K866025403 * (tmp14 - tmp9);
	       X[2 * iostride] = -(tmp22 - tmp23);
	       Y[-iostride] = tmp23 + tmp22;
	  }
     }
     if (i == m) {
	  fftw_real tmp1;
	  fftw_real tmp3;
	  fftw_real tmp2;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = X[iostride];
	  tmp3 = X[0];
	  tmp2 = X[2 * iostride];
	  Y[0] = -(K866025403 * (tmp1 + tmp2));
	  X[iostride] = tmp2 + tmp3 - tmp1;
	  X[0] = tmp3 - (K500000000 * (tmp2 - tmp1));
     }
}
コード例 #11
0
ファイル: fn_14.c プロジェクト: Pinkii-/PCA
void fftw_no_twiddle_14(const fftw_complex *input, fftw_complex *output, int istride, int ostride)
{
     fftw_real tmp3;
     fftw_real tmp25;
     fftw_real tmp68;
     fftw_real tmp77;
     fftw_real tmp10;
     fftw_real tmp62;
     fftw_real tmp28;
     fftw_real tmp88;
     fftw_real tmp42;
     fftw_real tmp71;
     fftw_real tmp80;
     fftw_real tmp97;
     fftw_real tmp17;
     fftw_real tmp64;
     fftw_real tmp31;
     fftw_real tmp90;
     fftw_real tmp56;
     fftw_real tmp69;
     fftw_real tmp86;
     fftw_real tmp99;
     fftw_real tmp24;
     fftw_real tmp63;
     fftw_real tmp34;
     fftw_real tmp89;
     fftw_real tmp49;
     fftw_real tmp70;
     fftw_real tmp83;
     fftw_real tmp98;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp66;
	  fftw_real tmp67;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(input[0]);
	  tmp2 = c_re(input[7 * istride]);
	  tmp3 = tmp1 - tmp2;
	  tmp25 = tmp1 + tmp2;
	  tmp66 = c_im(input[0]);
	  tmp67 = c_im(input[7 * istride]);
	  tmp68 = tmp66 - tmp67;
	  tmp77 = tmp66 + tmp67;
     }
     {
	  fftw_real tmp6;
	  fftw_real tmp26;
	  fftw_real tmp9;
	  fftw_real tmp27;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp4;
	       fftw_real tmp5;
	       fftw_real tmp7;
	       fftw_real tmp8;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp4 = c_re(input[2 * istride]);
	       tmp5 = c_re(input[9 * istride]);
	       tmp6 = tmp4 - tmp5;
	       tmp26 = tmp4 + tmp5;
	       tmp7 = c_re(input[12 * istride]);
	       tmp8 = c_re(input[5 * istride]);
	       tmp9 = tmp7 - tmp8;
	       tmp27 = tmp7 + tmp8;
	  }
	  tmp10 = tmp6 + tmp9;
	  tmp62 = tmp9 - tmp6;
	  tmp28 = tmp26 + tmp27;
	  tmp88 = tmp27 - tmp26;
     }
     {
	  fftw_real tmp38;
	  fftw_real tmp78;
	  fftw_real tmp41;
	  fftw_real tmp79;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp36;
	       fftw_real tmp37;
	       fftw_real tmp39;
	       fftw_real tmp40;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp36 = c_im(input[2 * istride]);
	       tmp37 = c_im(input[9 * istride]);
	       tmp38 = tmp36 - tmp37;
	       tmp78 = tmp36 + tmp37;
	       tmp39 = c_im(input[12 * istride]);
	       tmp40 = c_im(input[5 * istride]);
	       tmp41 = tmp39 - tmp40;
	       tmp79 = tmp39 + tmp40;
	  }
	  tmp42 = tmp38 - tmp41;
	  tmp71 = tmp38 + tmp41;
	  tmp80 = tmp78 + tmp79;
	  tmp97 = tmp78 - tmp79;
     }
     {
	  fftw_real tmp13;
	  fftw_real tmp29;
	  fftw_real tmp16;
	  fftw_real tmp30;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp11;
	       fftw_real tmp12;
	       fftw_real tmp14;
	       fftw_real tmp15;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp11 = c_re(input[4 * istride]);
	       tmp12 = c_re(input[11 * istride]);
	       tmp13 = tmp11 - tmp12;
	       tmp29 = tmp11 + tmp12;
	       tmp14 = c_re(input[10 * istride]);
	       tmp15 = c_re(input[3 * istride]);
	       tmp16 = tmp14 - tmp15;
	       tmp30 = tmp14 + tmp15;
	  }
	  tmp17 = tmp13 + tmp16;
	  tmp64 = tmp16 - tmp13;
	  tmp31 = tmp29 + tmp30;
	  tmp90 = tmp29 - tmp30;
     }
     {
	  fftw_real tmp52;
	  fftw_real tmp84;
	  fftw_real tmp55;
	  fftw_real tmp85;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp50;
	       fftw_real tmp51;
	       fftw_real tmp53;
	       fftw_real tmp54;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp50 = c_im(input[4 * istride]);
	       tmp51 = c_im(input[11 * istride]);
	       tmp52 = tmp50 - tmp51;
	       tmp84 = tmp50 + tmp51;
	       tmp53 = c_im(input[10 * istride]);
	       tmp54 = c_im(input[3 * istride]);
	       tmp55 = tmp53 - tmp54;
	       tmp85 = tmp53 + tmp54;
	  }
	  tmp56 = tmp52 - tmp55;
	  tmp69 = tmp52 + tmp55;
	  tmp86 = tmp84 + tmp85;
	  tmp99 = tmp85 - tmp84;
     }
     {
	  fftw_real tmp20;
	  fftw_real tmp32;
	  fftw_real tmp23;
	  fftw_real tmp33;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp18;
	       fftw_real tmp19;
	       fftw_real tmp21;
	       fftw_real tmp22;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp18 = c_re(input[6 * istride]);
	       tmp19 = c_re(input[13 * istride]);
	       tmp20 = tmp18 - tmp19;
	       tmp32 = tmp18 + tmp19;
	       tmp21 = c_re(input[8 * istride]);
	       tmp22 = c_re(input[istride]);
	       tmp23 = tmp21 - tmp22;
	       tmp33 = tmp21 + tmp22;
	  }
	  tmp24 = tmp20 + tmp23;
	  tmp63 = tmp23 - tmp20;
	  tmp34 = tmp32 + tmp33;
	  tmp89 = tmp32 - tmp33;
     }
     {
	  fftw_real tmp45;
	  fftw_real tmp81;
	  fftw_real tmp48;
	  fftw_real tmp82;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp43;
	       fftw_real tmp44;
	       fftw_real tmp46;
	       fftw_real tmp47;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp43 = c_im(input[6 * istride]);
	       tmp44 = c_im(input[13 * istride]);
	       tmp45 = tmp43 - tmp44;
	       tmp81 = tmp43 + tmp44;
	       tmp46 = c_im(input[8 * istride]);
	       tmp47 = c_im(input[istride]);
	       tmp48 = tmp46 - tmp47;
	       tmp82 = tmp46 + tmp47;
	  }
	  tmp49 = tmp45 - tmp48;
	  tmp70 = tmp45 + tmp48;
	  tmp83 = tmp81 + tmp82;
	  tmp98 = tmp82 - tmp81;
     }
     {
	  fftw_real tmp57;
	  fftw_real tmp35;
	  fftw_real tmp100;
	  fftw_real tmp96;
	  ASSERT_ALIGNED_DOUBLE;
	  c_re(output[7 * ostride]) = tmp3 + tmp10 + tmp17 + tmp24;
	  tmp57 = (K974927912 * tmp42) - (K781831482 * tmp49) - (K433883739 * tmp56);
	  tmp35 = tmp3 + (K623489801 * tmp24) - (K900968867 * tmp17) - (K222520933 * tmp10);
	  c_re(output[5 * ostride]) = tmp35 - tmp57;
	  c_re(output[9 * ostride]) = tmp35 + tmp57;
	  {
	       fftw_real tmp59;
	       fftw_real tmp58;
	       fftw_real tmp61;
	       fftw_real tmp60;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp59 = (K781831482 * tmp42) + (K974927912 * tmp56) + (K433883739 * tmp49);
	       tmp58 = tmp3 + (K623489801 * tmp10) - (K900968867 * tmp24) - (K222520933 * tmp17);
	       c_re(output[13 * ostride]) = tmp58 - tmp59;
	       c_re(output[ostride]) = tmp58 + tmp59;
	       tmp61 = (K433883739 * tmp42) + (K974927912 * tmp49) - (K781831482 * tmp56);
	       tmp60 = tmp3 + (K623489801 * tmp17) - (K222520933 * tmp24) - (K900968867 * tmp10);
	       c_re(output[11 * ostride]) = tmp60 - tmp61;
	       c_re(output[3 * ostride]) = tmp60 + tmp61;
	  }
	  c_re(output[0]) = tmp25 + tmp28 + tmp31 + tmp34;
	  tmp100 = (K781831482 * tmp97) - (K433883739 * tmp98) - (K974927912 * tmp99);
	  tmp96 = tmp25 + (K623489801 * tmp28) - (K900968867 * tmp34) - (K222520933 * tmp31);
	  c_re(output[6 * ostride]) = tmp96 - tmp100;
	  c_re(output[8 * ostride]) = tmp96 + tmp100;
	  {
	       fftw_real tmp102;
	       fftw_real tmp101;
	       fftw_real tmp104;
	       fftw_real tmp103;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp102 = (K433883739 * tmp97) + (K781831482 * tmp99) - (K974927912 * tmp98);
	       tmp101 = tmp25 + (K623489801 * tmp31) - (K222520933 * tmp34) - (K900968867 * tmp28);
	       c_re(output[4 * ostride]) = tmp101 - tmp102;
	       c_re(output[10 * ostride]) = tmp101 + tmp102;
	       tmp104 = (K974927912 * tmp97) + (K433883739 * tmp99) + (K781831482 * tmp98);
	       tmp103 = tmp25 + (K623489801 * tmp34) - (K900968867 * tmp31) - (K222520933 * tmp28);
	       c_re(output[12 * ostride]) = tmp103 - tmp104;
	       c_re(output[2 * ostride]) = tmp103 + tmp104;
	  }
     }
     {
	  fftw_real tmp76;
	  fftw_real tmp75;
	  fftw_real tmp94;
	  fftw_real tmp95;
	  ASSERT_ALIGNED_DOUBLE;
	  c_im(output[7 * ostride]) = tmp68 + tmp71 + tmp69 + tmp70;
	  tmp76 = (K974927912 * tmp62) - (K781831482 * tmp63) - (K433883739 * tmp64);
	  tmp75 = tmp68 + (K623489801 * tmp70) - (K900968867 * tmp69) - (K222520933 * tmp71);
	  c_im(output[5 * ostride]) = tmp75 - tmp76;
	  c_im(output[9 * ostride]) = tmp76 + tmp75;
	  {
	       fftw_real tmp73;
	       fftw_real tmp74;
	       fftw_real tmp65;
	       fftw_real tmp72;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp73 = (K781831482 * tmp62) + (K974927912 * tmp64) + (K433883739 * tmp63);
	       tmp74 = tmp68 + (K623489801 * tmp71) - (K900968867 * tmp70) - (K222520933 * tmp69);
	       c_im(output[ostride]) = tmp73 + tmp74;
	       c_im(output[13 * ostride]) = tmp74 - tmp73;
	       tmp65 = (K433883739 * tmp62) + (K974927912 * tmp63) - (K781831482 * tmp64);
	       tmp72 = tmp68 + (K623489801 * tmp69) - (K222520933 * tmp70) - (K900968867 * tmp71);
	       c_im(output[3 * ostride]) = tmp65 + tmp72;
	       c_im(output[11 * ostride]) = tmp72 - tmp65;
	  }
	  c_im(output[0]) = tmp77 + tmp80 + tmp86 + tmp83;
	  tmp94 = (K974927912 * tmp88) + (K433883739 * tmp90) + (K781831482 * tmp89);
	  tmp95 = tmp77 + (K623489801 * tmp83) - (K900968867 * tmp86) - (K222520933 * tmp80);
	  c_im(output[2 * ostride]) = tmp94 + tmp95;
	  c_im(output[12 * ostride]) = tmp95 - tmp94;
	  {
	       fftw_real tmp91;
	       fftw_real tmp87;
	       fftw_real tmp93;
	       fftw_real tmp92;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp91 = (K781831482 * tmp88) - (K433883739 * tmp89) - (K974927912 * tmp90);
	       tmp87 = tmp77 + (K623489801 * tmp80) - (K900968867 * tmp83) - (K222520933 * tmp86);
	       c_im(output[6 * ostride]) = tmp87 - tmp91;
	       c_im(output[8 * ostride]) = tmp91 + tmp87;
	       tmp93 = (K433883739 * tmp88) + (K781831482 * tmp90) - (K974927912 * tmp89);
	       tmp92 = tmp77 + (K623489801 * tmp86) - (K222520933 * tmp83) - (K900968867 * tmp80);
	       c_im(output[4 * ostride]) = tmp92 - tmp93;
	       c_im(output[10 * ostride]) = tmp93 + tmp92;
	  }
     }
}
コード例 #12
0
void fftw_hc2hc_backward_16(fftw_real *A, const fftw_complex *W, int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (16 * iostride);
     {
	  fftw_real tmp279;
	  fftw_real tmp324;
	  fftw_real tmp312;
	  fftw_real tmp299;
	  fftw_real tmp276;
	  fftw_real tmp296;
	  fftw_real tmp309;
	  fftw_real tmp323;
	  fftw_real tmp283;
	  fftw_real tmp291;
	  fftw_real tmp286;
	  fftw_real tmp294;
	  fftw_real tmp301;
	  fftw_real tmp319;
	  fftw_real tmp327;
	  fftw_real tmp326;
	  fftw_real tmp316;
	  fftw_real tmp302;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp277;
	       fftw_real tmp278;
	       fftw_real tmp310;
	       fftw_real tmp297;
	       fftw_real tmp298;
	       fftw_real tmp311;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp277 = X[2 * iostride];
	       tmp278 = X[6 * iostride];
	       tmp310 = tmp277 - tmp278;
	       tmp297 = Y[-2 * iostride];
	       tmp298 = Y[-6 * iostride];
	       tmp311 = tmp298 + tmp297;
	       tmp279 = K2_000000000 * (tmp277 + tmp278);
	       tmp324 = K1_414213562 * (tmp310 + tmp311);
	       tmp312 = K1_414213562 * (tmp310 - tmp311);
	       tmp299 = K2_000000000 * (tmp297 - tmp298);
	  }
	  {
	       fftw_real tmp275;
	       fftw_real tmp308;
	       fftw_real tmp273;
	       fftw_real tmp306;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp274;
		    fftw_real tmp307;
		    fftw_real tmp271;
		    fftw_real tmp272;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp274 = X[4 * iostride];
		    tmp275 = K2_000000000 * tmp274;
		    tmp307 = Y[-4 * iostride];
		    tmp308 = K2_000000000 * tmp307;
		    tmp271 = X[0];
		    tmp272 = X[8 * iostride];
		    tmp273 = tmp271 + tmp272;
		    tmp306 = tmp271 - tmp272;
	       }
	       tmp276 = tmp273 + tmp275;
	       tmp296 = tmp273 - tmp275;
	       tmp309 = tmp306 - tmp308;
	       tmp323 = tmp306 + tmp308;
	  }
	  {
	       fftw_real tmp314;
	       fftw_real tmp318;
	       fftw_real tmp317;
	       fftw_real tmp315;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp281;
		    fftw_real tmp282;
		    fftw_real tmp289;
		    fftw_real tmp290;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp281 = X[iostride];
		    tmp282 = X[7 * iostride];
		    tmp283 = tmp281 + tmp282;
		    tmp314 = tmp281 - tmp282;
		    tmp289 = Y[-iostride];
		    tmp290 = Y[-7 * iostride];
		    tmp291 = tmp289 - tmp290;
		    tmp318 = tmp289 + tmp290;
	       }
	       {
		    fftw_real tmp284;
		    fftw_real tmp285;
		    fftw_real tmp292;
		    fftw_real tmp293;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp284 = X[3 * iostride];
		    tmp285 = X[5 * iostride];
		    tmp286 = tmp284 + tmp285;
		    tmp317 = tmp285 - tmp284;
		    tmp292 = Y[-3 * iostride];
		    tmp293 = Y[-5 * iostride];
		    tmp294 = tmp292 - tmp293;
		    tmp315 = tmp293 + tmp292;
	       }
	       tmp301 = tmp283 - tmp286;
	       tmp319 = tmp317 + tmp318;
	       tmp327 = tmp318 - tmp317;
	       tmp326 = tmp314 + tmp315;
	       tmp316 = tmp314 - tmp315;
	       tmp302 = tmp294 + tmp291;
	  }
	  {
	       fftw_real tmp280;
	       fftw_real tmp287;
	       fftw_real tmp288;
	       fftw_real tmp295;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp280 = tmp276 + tmp279;
	       tmp287 = K2_000000000 * (tmp283 + tmp286);
	       X[8 * iostride] = tmp280 - tmp287;
	       X[0] = tmp280 + tmp287;
	       tmp288 = tmp276 - tmp279;
	       tmp295 = K2_000000000 * (tmp291 - tmp294);
	       X[12 * iostride] = tmp288 + tmp295;
	       X[4 * iostride] = tmp288 - tmp295;
	  }
	  {
	       fftw_real tmp300;
	       fftw_real tmp303;
	       fftw_real tmp304;
	       fftw_real tmp305;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp300 = tmp296 - tmp299;
	       tmp303 = K1_414213562 * (tmp301 - tmp302);
	       X[10 * iostride] = tmp300 - tmp303;
	       X[2 * iostride] = tmp300 + tmp303;
	       tmp304 = tmp296 + tmp299;
	       tmp305 = K1_414213562 * (tmp301 + tmp302);
	       X[6 * iostride] = tmp304 - tmp305;
	       X[14 * iostride] = tmp304 + tmp305;
	  }
	  {
	       fftw_real tmp313;
	       fftw_real tmp320;
	       fftw_real tmp321;
	       fftw_real tmp322;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp313 = tmp309 + tmp312;
	       tmp320 = (K1_847759065 * tmp316) - (K765366864 * tmp319);
	       X[9 * iostride] = tmp313 - tmp320;
	       X[iostride] = tmp313 + tmp320;
	       tmp321 = tmp309 - tmp312;
	       tmp322 = (K765366864 * tmp316) + (K1_847759065 * tmp319);
	       X[5 * iostride] = tmp321 - tmp322;
	       X[13 * iostride] = tmp321 + tmp322;
	  }
	  {
	       fftw_real tmp325;
	       fftw_real tmp328;
	       fftw_real tmp329;
	       fftw_real tmp330;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp325 = tmp323 - tmp324;
	       tmp328 = (K765366864 * tmp326) - (K1_847759065 * tmp327);
	       X[11 * iostride] = tmp325 - tmp328;
	       X[3 * iostride] = tmp325 + tmp328;
	       tmp329 = tmp323 + tmp324;
	       tmp330 = (K1_847759065 * tmp326) + (K765366864 * tmp327);
	       X[7 * iostride] = tmp329 - tmp330;
	       X[15 * iostride] = tmp329 + tmp330;
	  }
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 15) {
	  fftw_real tmp73;
	  fftw_real tmp98;
	  fftw_real tmp135;
	  fftw_real tmp160;
	  fftw_real tmp182;
	  fftw_real tmp236;
	  fftw_real tmp210;
	  fftw_real tmp248;
	  fftw_real tmp95;
	  fftw_real tmp124;
	  fftw_real tmp138;
	  fftw_real tmp164;
	  fftw_real tmp197;
	  fftw_real tmp216;
	  fftw_real tmp244;
	  fftw_real tmp252;
	  fftw_real tmp80;
	  fftw_real tmp128;
	  fftw_real tmp105;
	  fftw_real tmp161;
	  fftw_real tmp213;
	  fftw_real tmp237;
	  fftw_real tmp189;
	  fftw_real tmp249;
	  fftw_real tmp88;
	  fftw_real tmp115;
	  fftw_real tmp137;
	  fftw_real tmp163;
	  fftw_real tmp204;
	  fftw_real tmp215;
	  fftw_real tmp241;
	  fftw_real tmp251;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp69;
	       fftw_real tmp180;
	       fftw_real tmp131;
	       fftw_real tmp209;
	       fftw_real tmp72;
	       fftw_real tmp208;
	       fftw_real tmp134;
	       fftw_real tmp181;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp67;
		    fftw_real tmp68;
		    fftw_real tmp129;
		    fftw_real tmp130;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp67 = X[0];
		    tmp68 = Y[-8 * iostride];
		    tmp69 = tmp67 + tmp68;
		    tmp180 = tmp67 - tmp68;
		    tmp129 = Y[0];
		    tmp130 = X[8 * iostride];
		    tmp131 = tmp129 - tmp130;
		    tmp209 = tmp129 + tmp130;
	       }
	       {
		    fftw_real tmp70;
		    fftw_real tmp71;
		    fftw_real tmp132;
		    fftw_real tmp133;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp70 = X[4 * iostride];
		    tmp71 = Y[-12 * iostride];
		    tmp72 = tmp70 + tmp71;
		    tmp208 = tmp70 - tmp71;
		    tmp132 = Y[-4 * iostride];
		    tmp133 = X[12 * iostride];
		    tmp134 = tmp132 - tmp133;
		    tmp181 = tmp132 + tmp133;
	       }
	       tmp73 = tmp69 + tmp72;
	       tmp98 = tmp69 - tmp72;
	       tmp135 = tmp131 - tmp134;
	       tmp160 = tmp131 + tmp134;
	       tmp182 = tmp180 - tmp181;
	       tmp236 = tmp180 + tmp181;
	       tmp210 = tmp208 + tmp209;
	       tmp248 = tmp209 - tmp208;
	  }
	  {
	       fftw_real tmp91;
	       fftw_real tmp194;
	       fftw_real tmp119;
	       fftw_real tmp192;
	       fftw_real tmp94;
	       fftw_real tmp191;
	       fftw_real tmp122;
	       fftw_real tmp195;
	       fftw_real tmp116;
	       fftw_real tmp123;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp89;
		    fftw_real tmp90;
		    fftw_real tmp117;
		    fftw_real tmp118;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp89 = Y[-15 * iostride];
		    tmp90 = X[7 * iostride];
		    tmp91 = tmp89 + tmp90;
		    tmp194 = tmp89 - tmp90;
		    tmp117 = Y[-7 * iostride];
		    tmp118 = X[15 * iostride];
		    tmp119 = tmp117 - tmp118;
		    tmp192 = tmp117 + tmp118;
	       }
	       {
		    fftw_real tmp92;
		    fftw_real tmp93;
		    fftw_real tmp120;
		    fftw_real tmp121;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp92 = X[3 * iostride];
		    tmp93 = Y[-11 * iostride];
		    tmp94 = tmp92 + tmp93;
		    tmp191 = tmp92 - tmp93;
		    tmp120 = Y[-3 * iostride];
		    tmp121 = X[11 * iostride];
		    tmp122 = tmp120 - tmp121;
		    tmp195 = tmp120 + tmp121;
	       }
	       tmp95 = tmp91 + tmp94;
	       tmp116 = tmp91 - tmp94;
	       tmp123 = tmp119 - tmp122;
	       tmp124 = tmp116 + tmp123;
	       tmp138 = tmp123 - tmp116;
	       tmp164 = tmp119 + tmp122;
	       {
		    fftw_real tmp193;
		    fftw_real tmp196;
		    fftw_real tmp242;
		    fftw_real tmp243;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp193 = tmp191 - tmp192;
		    tmp196 = tmp194 - tmp195;
		    tmp197 = (K923879532 * tmp193) - (K382683432 * tmp196);
		    tmp216 = (K382683432 * tmp193) + (K923879532 * tmp196);
		    tmp242 = tmp194 + tmp195;
		    tmp243 = tmp191 + tmp192;
		    tmp244 = (K382683432 * tmp242) - (K923879532 * tmp243);
		    tmp252 = (K382683432 * tmp243) + (K923879532 * tmp242);
	       }
	  }
	  {
	       fftw_real tmp76;
	       fftw_real tmp183;
	       fftw_real tmp104;
	       fftw_real tmp184;
	       fftw_real tmp79;
	       fftw_real tmp186;
	       fftw_real tmp101;
	       fftw_real tmp187;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp74;
		    fftw_real tmp75;
		    fftw_real tmp102;
		    fftw_real tmp103;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp74 = X[2 * iostride];
		    tmp75 = Y[-10 * iostride];
		    tmp76 = tmp74 + tmp75;
		    tmp183 = tmp74 - tmp75;
		    tmp102 = Y[-2 * iostride];
		    tmp103 = X[10 * iostride];
		    tmp104 = tmp102 - tmp103;
		    tmp184 = tmp102 + tmp103;
	       }
	       {
		    fftw_real tmp77;
		    fftw_real tmp78;
		    fftw_real tmp99;
		    fftw_real tmp100;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp77 = Y[-14 * iostride];
		    tmp78 = X[6 * iostride];
		    tmp79 = tmp77 + tmp78;
		    tmp186 = tmp77 - tmp78;
		    tmp99 = Y[-6 * iostride];
		    tmp100 = X[14 * iostride];
		    tmp101 = tmp99 - tmp100;
		    tmp187 = tmp99 + tmp100;
	       }
	       tmp80 = tmp76 + tmp79;
	       tmp128 = tmp76 - tmp79;
	       tmp105 = tmp101 - tmp104;
	       tmp161 = tmp104 + tmp101;
	       {
		    fftw_real tmp211;
		    fftw_real tmp212;
		    fftw_real tmp185;
		    fftw_real tmp188;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp211 = tmp183 + tmp184;
		    tmp212 = tmp186 + tmp187;
		    tmp213 = K707106781 * (tmp211 - tmp212);
		    tmp237 = K707106781 * (tmp211 + tmp212);
		    tmp185 = tmp183 - tmp184;
		    tmp188 = tmp186 - tmp187;
		    tmp189 = K707106781 * (tmp185 + tmp188);
		    tmp249 = K707106781 * (tmp185 - tmp188);
	       }
	  }
	  {
	       fftw_real tmp84;
	       fftw_real tmp201;
	       fftw_real tmp110;
	       fftw_real tmp199;
	       fftw_real tmp87;
	       fftw_real tmp198;
	       fftw_real tmp113;
	       fftw_real tmp202;
	       fftw_real tmp107;
	       fftw_real tmp114;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp82;
		    fftw_real tmp83;
		    fftw_real tmp108;
		    fftw_real tmp109;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp82 = X[iostride];
		    tmp83 = Y[-9 * iostride];
		    tmp84 = tmp82 + tmp83;
		    tmp201 = tmp82 - tmp83;
		    tmp108 = Y[-iostride];
		    tmp109 = X[9 * iostride];
		    tmp110 = tmp108 - tmp109;
		    tmp199 = tmp108 + tmp109;
	       }
	       {
		    fftw_real tmp85;
		    fftw_real tmp86;
		    fftw_real tmp111;
		    fftw_real tmp112;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp85 = X[5 * iostride];
		    tmp86 = Y[-13 * iostride];
		    tmp87 = tmp85 + tmp86;
		    tmp198 = tmp85 - tmp86;
		    tmp111 = Y[-5 * iostride];
		    tmp112 = X[13 * iostride];
		    tmp113 = tmp111 - tmp112;
		    tmp202 = tmp111 + tmp112;
	       }
	       tmp88 = tmp84 + tmp87;
	       tmp107 = tmp84 - tmp87;
	       tmp114 = tmp110 - tmp113;
	       tmp115 = tmp107 - tmp114;
	       tmp137 = tmp107 + tmp114;
	       tmp163 = tmp110 + tmp113;
	       {
		    fftw_real tmp200;
		    fftw_real tmp203;
		    fftw_real tmp239;
		    fftw_real tmp240;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp200 = tmp198 + tmp199;
		    tmp203 = tmp201 - tmp202;
		    tmp204 = (K923879532 * tmp200) + (K382683432 * tmp203);
		    tmp215 = (K923879532 * tmp203) - (K382683432 * tmp200);
		    tmp239 = tmp201 + tmp202;
		    tmp240 = tmp199 - tmp198;
		    tmp241 = (K382683432 * tmp239) - (K923879532 * tmp240);
		    tmp251 = (K382683432 * tmp240) + (K923879532 * tmp239);
	       }
	  }
	  {
	       fftw_real tmp81;
	       fftw_real tmp96;
	       fftw_real tmp158;
	       fftw_real tmp162;
	       fftw_real tmp165;
	       fftw_real tmp166;
	       fftw_real tmp157;
	       fftw_real tmp159;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp81 = tmp73 + tmp80;
	       tmp96 = tmp88 + tmp95;
	       tmp158 = tmp81 - tmp96;
	       tmp162 = tmp160 + tmp161;
	       tmp165 = tmp163 + tmp164;
	       tmp166 = tmp162 - tmp165;
	       X[0] = tmp81 + tmp96;
	       Y[-15 * iostride] = tmp162 + tmp165;
	       tmp157 = c_re(W[7]);
	       tmp159 = c_im(W[7]);
	       X[8 * iostride] = (tmp157 * tmp158) + (tmp159 * tmp166);
	       Y[-7 * iostride] = (tmp157 * tmp166) - (tmp159 * tmp158);
	  }
	  {
	       fftw_real tmp170;
	       fftw_real tmp176;
	       fftw_real tmp174;
	       fftw_real tmp178;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp168;
		    fftw_real tmp169;
		    fftw_real tmp172;
		    fftw_real tmp173;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp168 = tmp160 - tmp161;
		    tmp169 = tmp88 - tmp95;
		    tmp170 = tmp168 - tmp169;
		    tmp176 = tmp169 + tmp168;
		    tmp172 = tmp73 - tmp80;
		    tmp173 = tmp164 - tmp163;
		    tmp174 = tmp172 - tmp173;
		    tmp178 = tmp172 + tmp173;
	       }
	       {
		    fftw_real tmp167;
		    fftw_real tmp171;
		    fftw_real tmp175;
		    fftw_real tmp177;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp167 = c_re(W[11]);
		    tmp171 = c_im(W[11]);
		    Y[-3 * iostride] = (tmp167 * tmp170) - (tmp171 * tmp174);
		    X[12 * iostride] = (tmp171 * tmp170) + (tmp167 * tmp174);
		    tmp175 = c_re(W[3]);
		    tmp177 = c_im(W[3]);
		    Y[-11 * iostride] = (tmp175 * tmp176) - (tmp177 * tmp178);
		    X[4 * iostride] = (tmp177 * tmp176) + (tmp175 * tmp178);
	       }
	  }
	  {
	       fftw_real tmp126;
	       fftw_real tmp142;
	       fftw_real tmp140;
	       fftw_real tmp144;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp106;
		    fftw_real tmp125;
		    fftw_real tmp136;
		    fftw_real tmp139;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp106 = tmp98 + tmp105;
		    tmp125 = K707106781 * (tmp115 + tmp124);
		    tmp126 = tmp106 - tmp125;
		    tmp142 = tmp106 + tmp125;
		    tmp136 = tmp128 + tmp135;
		    tmp139 = K707106781 * (tmp137 + tmp138);
		    tmp140 = tmp136 - tmp139;
		    tmp144 = tmp136 + tmp139;
	       }
	       {
		    fftw_real tmp97;
		    fftw_real tmp127;
		    fftw_real tmp141;
		    fftw_real tmp143;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp97 = c_re(W[9]);
		    tmp127 = c_im(W[9]);
		    X[10 * iostride] = (tmp97 * tmp126) + (tmp127 * tmp140);
		    Y[-5 * iostride] = (tmp97 * tmp140) - (tmp127 * tmp126);
		    tmp141 = c_re(W[1]);
		    tmp143 = c_im(W[1]);
		    X[2 * iostride] = (tmp141 * tmp142) + (tmp143 * tmp144);
		    Y[-13 * iostride] = (tmp141 * tmp144) - (tmp143 * tmp142);
	       }
	  }
	  {
	       fftw_real tmp148;
	       fftw_real tmp154;
	       fftw_real tmp152;
	       fftw_real tmp156;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp146;
		    fftw_real tmp147;
		    fftw_real tmp150;
		    fftw_real tmp151;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp146 = tmp135 - tmp128;
		    tmp147 = K707106781 * (tmp115 - tmp124);
		    tmp148 = tmp146 - tmp147;
		    tmp154 = tmp146 + tmp147;
		    tmp150 = tmp98 - tmp105;
		    tmp151 = K707106781 * (tmp138 - tmp137);
		    tmp152 = tmp150 - tmp151;
		    tmp156 = tmp150 + tmp151;
	       }
	       {
		    fftw_real tmp145;
		    fftw_real tmp149;
		    fftw_real tmp153;
		    fftw_real tmp155;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp145 = c_re(W[13]);
		    tmp149 = c_im(W[13]);
		    Y[-iostride] = (tmp145 * tmp148) - (tmp149 * tmp152);
		    X[14 * iostride] = (tmp149 * tmp148) + (tmp145 * tmp152);
		    tmp153 = c_re(W[5]);
		    tmp155 = c_im(W[5]);
		    Y[-9 * iostride] = (tmp153 * tmp154) - (tmp155 * tmp156);
		    X[6 * iostride] = (tmp155 * tmp154) + (tmp153 * tmp156);
	       }
	  }
	  {
	       fftw_real tmp206;
	       fftw_real tmp220;
	       fftw_real tmp218;
	       fftw_real tmp222;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp190;
		    fftw_real tmp205;
		    fftw_real tmp214;
		    fftw_real tmp217;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp190 = tmp182 - tmp189;
		    tmp205 = tmp197 - tmp204;
		    tmp206 = tmp190 - tmp205;
		    tmp220 = tmp190 + tmp205;
		    tmp214 = tmp210 - tmp213;
		    tmp217 = tmp215 - tmp216;
		    tmp218 = tmp214 - tmp217;
		    tmp222 = tmp214 + tmp217;
	       }
	       {
		    fftw_real tmp179;
		    fftw_real tmp207;
		    fftw_real tmp219;
		    fftw_real tmp221;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp179 = c_re(W[12]);
		    tmp207 = c_im(W[12]);
		    X[13 * iostride] = (tmp179 * tmp206) + (tmp207 * tmp218);
		    Y[-2 * iostride] = (tmp179 * tmp218) - (tmp207 * tmp206);
		    tmp219 = c_re(W[4]);
		    tmp221 = c_im(W[4]);
		    X[5 * iostride] = (tmp219 * tmp220) + (tmp221 * tmp222);
		    Y[-10 * iostride] = (tmp219 * tmp222) - (tmp221 * tmp220);
	       }
	  }
	  {
	       fftw_real tmp226;
	       fftw_real tmp232;
	       fftw_real tmp230;
	       fftw_real tmp234;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp224;
		    fftw_real tmp225;
		    fftw_real tmp228;
		    fftw_real tmp229;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp224 = tmp210 + tmp213;
		    tmp225 = tmp204 + tmp197;
		    tmp226 = tmp224 - tmp225;
		    tmp232 = tmp224 + tmp225;
		    tmp228 = tmp182 + tmp189;
		    tmp229 = tmp215 + tmp216;
		    tmp230 = tmp228 - tmp229;
		    tmp234 = tmp228 + tmp229;
	       }
	       {
		    fftw_real tmp223;
		    fftw_real tmp227;
		    fftw_real tmp231;
		    fftw_real tmp233;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp223 = c_re(W[8]);
		    tmp227 = c_im(W[8]);
		    Y[-6 * iostride] = (tmp223 * tmp226) - (tmp227 * tmp230);
		    X[9 * iostride] = (tmp227 * tmp226) + (tmp223 * tmp230);
		    tmp231 = c_re(W[0]);
		    tmp233 = c_im(W[0]);
		    Y[-14 * iostride] = (tmp231 * tmp232) - (tmp233 * tmp234);
		    X[iostride] = (tmp233 * tmp232) + (tmp231 * tmp234);
	       }
	  }
	  {
	       fftw_real tmp246;
	       fftw_real tmp256;
	       fftw_real tmp254;
	       fftw_real tmp258;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp238;
		    fftw_real tmp245;
		    fftw_real tmp250;
		    fftw_real tmp253;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp238 = tmp236 - tmp237;
		    tmp245 = tmp241 + tmp244;
		    tmp246 = tmp238 - tmp245;
		    tmp256 = tmp238 + tmp245;
		    tmp250 = tmp248 + tmp249;
		    tmp253 = tmp251 - tmp252;
		    tmp254 = tmp250 - tmp253;
		    tmp258 = tmp250 + tmp253;
	       }
	       {
		    fftw_real tmp235;
		    fftw_real tmp247;
		    fftw_real tmp255;
		    fftw_real tmp257;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp235 = c_re(W[10]);
		    tmp247 = c_im(W[10]);
		    X[11 * iostride] = (tmp235 * tmp246) + (tmp247 * tmp254);
		    Y[-4 * iostride] = (tmp235 * tmp254) - (tmp247 * tmp246);
		    tmp255 = c_re(W[2]);
		    tmp257 = c_im(W[2]);
		    X[3 * iostride] = (tmp255 * tmp256) + (tmp257 * tmp258);
		    Y[-12 * iostride] = (tmp255 * tmp258) - (tmp257 * tmp256);
	       }
	  }
	  {
	       fftw_real tmp262;
	       fftw_real tmp268;
	       fftw_real tmp266;
	       fftw_real tmp270;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp260;
		    fftw_real tmp261;
		    fftw_real tmp264;
		    fftw_real tmp265;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp260 = tmp248 - tmp249;
		    tmp261 = tmp241 - tmp244;
		    tmp262 = tmp260 + tmp261;
		    tmp268 = tmp260 - tmp261;
		    tmp264 = tmp236 + tmp237;
		    tmp265 = tmp251 + tmp252;
		    tmp266 = tmp264 - tmp265;
		    tmp270 = tmp264 + tmp265;
	       }
	       {
		    fftw_real tmp259;
		    fftw_real tmp263;
		    fftw_real tmp267;
		    fftw_real tmp269;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp259 = c_re(W[6]);
		    tmp263 = c_im(W[6]);
		    Y[-8 * iostride] = (tmp259 * tmp262) - (tmp263 * tmp266);
		    X[7 * iostride] = (tmp263 * tmp262) + (tmp259 * tmp266);
		    tmp267 = c_re(W[14]);
		    tmp269 = c_im(W[14]);
		    Y[0] = (tmp267 * tmp268) - (tmp269 * tmp270);
		    X[15 * iostride] = (tmp269 * tmp268) + (tmp267 * tmp270);
	       }
	  }
     }
     if (i == m) {
	  fftw_real tmp7;
	  fftw_real tmp51;
	  fftw_real tmp19;
	  fftw_real tmp43;
	  fftw_real tmp39;
	  fftw_real tmp47;
	  fftw_real tmp59;
	  fftw_real tmp64;
	  fftw_real tmp14;
	  fftw_real tmp56;
	  fftw_real tmp24;
	  fftw_real tmp32;
	  fftw_real tmp29;
	  fftw_real tmp33;
	  fftw_real tmp54;
	  fftw_real tmp65;
	  fftw_real tmp63;
	  fftw_real tmp66;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp3;
	       fftw_real tmp15;
	       fftw_real tmp38;
	       fftw_real tmp57;
	       fftw_real tmp6;
	       fftw_real tmp35;
	       fftw_real tmp18;
	       fftw_real tmp58;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp1;
		    fftw_real tmp2;
		    fftw_real tmp36;
		    fftw_real tmp37;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp1 = X[0];
		    tmp2 = X[7 * iostride];
		    tmp3 = tmp1 + tmp2;
		    tmp15 = tmp1 - tmp2;
		    tmp36 = Y[0];
		    tmp37 = Y[-7 * iostride];
		    tmp38 = tmp36 + tmp37;
		    tmp57 = tmp36 - tmp37;
	       }
	       {
		    fftw_real tmp4;
		    fftw_real tmp5;
		    fftw_real tmp16;
		    fftw_real tmp17;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp4 = X[4 * iostride];
		    tmp5 = X[3 * iostride];
		    tmp6 = tmp4 + tmp5;
		    tmp35 = tmp4 - tmp5;
		    tmp16 = Y[-4 * iostride];
		    tmp17 = Y[-3 * iostride];
		    tmp18 = tmp16 + tmp17;
		    tmp58 = tmp16 - tmp17;
	       }
	       tmp7 = tmp3 + tmp6;
	       tmp51 = tmp3 - tmp6;
	       tmp19 = tmp15 - tmp18;
	       tmp43 = tmp15 + tmp18;
	       tmp39 = tmp35 + tmp38;
	       tmp47 = tmp38 - tmp35;
	       tmp59 = tmp57 - tmp58;
	       tmp64 = tmp58 + tmp57;
	  }
	  {
	       fftw_real tmp10;
	       fftw_real tmp20;
	       fftw_real tmp23;
	       fftw_real tmp53;
	       fftw_real tmp13;
	       fftw_real tmp25;
	       fftw_real tmp28;
	       fftw_real tmp52;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp8;
		    fftw_real tmp9;
		    fftw_real tmp21;
		    fftw_real tmp22;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp8 = X[2 * iostride];
		    tmp9 = X[5 * iostride];
		    tmp10 = tmp8 + tmp9;
		    tmp20 = tmp8 - tmp9;
		    tmp21 = Y[-2 * iostride];
		    tmp22 = Y[-5 * iostride];
		    tmp23 = tmp21 + tmp22;
		    tmp53 = tmp21 - tmp22;
	       }
	       {
		    fftw_real tmp11;
		    fftw_real tmp12;
		    fftw_real tmp26;
		    fftw_real tmp27;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp11 = X[iostride];
		    tmp12 = X[6 * iostride];
		    tmp13 = tmp11 + tmp12;
		    tmp25 = tmp11 - tmp12;
		    tmp26 = Y[-iostride];
		    tmp27 = Y[-6 * iostride];
		    tmp28 = tmp26 + tmp27;
		    tmp52 = tmp27 - tmp26;
	       }
	       tmp14 = tmp10 + tmp13;
	       tmp56 = tmp10 - tmp13;
	       tmp24 = tmp20 - tmp23;
	       tmp32 = tmp20 + tmp23;
	       tmp29 = tmp25 - tmp28;
	       tmp33 = tmp25 + tmp28;
	       tmp54 = tmp52 - tmp53;
	       tmp65 = tmp53 + tmp52;
	  }
	  X[0] = K2_000000000 * (tmp7 + tmp14);
	  X[8 * iostride] = -(K2_000000000 * (tmp65 + tmp64));
	  tmp63 = tmp7 - tmp14;
	  tmp66 = tmp64 - tmp65;
	  X[4 * iostride] = K1_414213562 * (tmp63 - tmp66);
	  X[12 * iostride] = -(K1_414213562 * (tmp63 + tmp66));
	  {
	       fftw_real tmp61;
	       fftw_real tmp62;
	       fftw_real tmp55;
	       fftw_real tmp60;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp61 = tmp51 - tmp54;
	       tmp62 = tmp59 - tmp56;
	       X[6 * iostride] = (K765366864 * tmp61) - (K1_847759065 * tmp62);
	       X[14 * iostride] = -((K1_847759065 * tmp61) + (K765366864 * tmp62));
	       tmp55 = tmp51 + tmp54;
	       tmp60 = tmp56 + tmp59;
	       X[2 * iostride] = (K1_847759065 * tmp55) - (K765366864 * tmp60);
	       X[10 * iostride] = -((K765366864 * tmp55) + (K1_847759065 * tmp60));
	  }
	  {
	       fftw_real tmp45;
	       fftw_real tmp49;
	       fftw_real tmp48;
	       fftw_real tmp50;
	       fftw_real tmp44;
	       fftw_real tmp46;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp44 = K707106781 * (tmp32 + tmp33);
	       tmp45 = tmp43 - tmp44;
	       tmp49 = tmp43 + tmp44;
	       tmp46 = K707106781 * (tmp24 - tmp29);
	       tmp48 = tmp46 + tmp47;
	       tmp50 = tmp47 - tmp46;
	       X[3 * iostride] = (K1_662939224 * tmp45) - (K1_111140466 * tmp48);
	       X[11 * iostride] = -((K1_111140466 * tmp45) + (K1_662939224 * tmp48));
	       X[7 * iostride] = (K390180644 * tmp49) - (K1_961570560 * tmp50);
	       X[15 * iostride] = -((K1_961570560 * tmp49) + (K390180644 * tmp50));
	  }
	  {
	       fftw_real tmp31;
	       fftw_real tmp41;
	       fftw_real tmp40;
	       fftw_real tmp42;
	       fftw_real tmp30;
	       fftw_real tmp34;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp30 = K707106781 * (tmp24 + tmp29);
	       tmp31 = tmp19 + tmp30;
	       tmp41 = tmp19 - tmp30;
	       tmp34 = K707106781 * (tmp32 - tmp33);
	       tmp40 = tmp34 + tmp39;
	       tmp42 = tmp39 - tmp34;
	       X[iostride] = (K1_961570560 * tmp31) - (K390180644 * tmp40);
	       X[9 * iostride] = -((K390180644 * tmp31) + (K1_961570560 * tmp40));
	       X[5 * iostride] = (K1_111140466 * tmp41) - (K1_662939224 * tmp42);
	       X[13 * iostride] = -((K1_662939224 * tmp41) + (K1_111140466 * tmp42));
	  }
     }
}
コード例 #13
0
ファイル: ftwi_6.c プロジェクト: JonBoley/peaqb-fast
void fftwi_twiddle_6(fftw_complex *A, const fftw_complex *W, int iostride,
		     int m, int dist)
{
     int i;
     fftw_complex *inout;
     inout = A;
     for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 5) {
	  fftw_real tmp7;
	  fftw_real tmp31;
	  fftw_real tmp50;
	  fftw_real tmp54;
	  fftw_real tmp29;
	  fftw_real tmp33;
	  fftw_real tmp38;
	  fftw_real tmp44;
	  fftw_real tmp18;
	  fftw_real tmp32;
	  fftw_real tmp41;
	  fftw_real tmp45;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp1;
	       fftw_real tmp49;
	       fftw_real tmp6;
	       fftw_real tmp48;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp1 = c_re(inout[0]);
	       tmp49 = c_im(inout[0]);
	       {
		    fftw_real tmp3;
		    fftw_real tmp5;
		    fftw_real tmp2;
		    fftw_real tmp4;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp3 = c_re(inout[3 * iostride]);
		    tmp5 = c_im(inout[3 * iostride]);
		    tmp2 = c_re(W[2]);
		    tmp4 = c_im(W[2]);
		    tmp6 = (tmp2 * tmp3) + (tmp4 * tmp5);
		    tmp48 = (tmp2 * tmp5) - (tmp4 * tmp3);
	       }
	       tmp7 = tmp1 - tmp6;
	       tmp31 = tmp1 + tmp6;
	       tmp50 = tmp48 + tmp49;
	       tmp54 = tmp49 - tmp48;
	  }
	  {
	       fftw_real tmp23;
	       fftw_real tmp36;
	       fftw_real tmp28;
	       fftw_real tmp37;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp20;
		    fftw_real tmp22;
		    fftw_real tmp19;
		    fftw_real tmp21;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp20 = c_re(inout[4 * iostride]);
		    tmp22 = c_im(inout[4 * iostride]);
		    tmp19 = c_re(W[3]);
		    tmp21 = c_im(W[3]);
		    tmp23 = (tmp19 * tmp20) + (tmp21 * tmp22);
		    tmp36 = (tmp19 * tmp22) - (tmp21 * tmp20);
	       }
	       {
		    fftw_real tmp25;
		    fftw_real tmp27;
		    fftw_real tmp24;
		    fftw_real tmp26;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp25 = c_re(inout[iostride]);
		    tmp27 = c_im(inout[iostride]);
		    tmp24 = c_re(W[0]);
		    tmp26 = c_im(W[0]);
		    tmp28 = (tmp24 * tmp25) + (tmp26 * tmp27);
		    tmp37 = (tmp24 * tmp27) - (tmp26 * tmp25);
	       }
	       tmp29 = tmp23 - tmp28;
	       tmp33 = tmp23 + tmp28;
	       tmp38 = tmp36 - tmp37;
	       tmp44 = tmp36 + tmp37;
	  }
	  {
	       fftw_real tmp12;
	       fftw_real tmp39;
	       fftw_real tmp17;
	       fftw_real tmp40;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp9;
		    fftw_real tmp11;
		    fftw_real tmp8;
		    fftw_real tmp10;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp9 = c_re(inout[2 * iostride]);
		    tmp11 = c_im(inout[2 * iostride]);
		    tmp8 = c_re(W[1]);
		    tmp10 = c_im(W[1]);
		    tmp12 = (tmp8 * tmp9) + (tmp10 * tmp11);
		    tmp39 = (tmp8 * tmp11) - (tmp10 * tmp9);
	       }
	       {
		    fftw_real tmp14;
		    fftw_real tmp16;
		    fftw_real tmp13;
		    fftw_real tmp15;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp14 = c_re(inout[5 * iostride]);
		    tmp16 = c_im(inout[5 * iostride]);
		    tmp13 = c_re(W[4]);
		    tmp15 = c_im(W[4]);
		    tmp17 = (tmp13 * tmp14) + (tmp15 * tmp16);
		    tmp40 = (tmp13 * tmp16) - (tmp15 * tmp14);
	       }
	       tmp18 = tmp12 - tmp17;
	       tmp32 = tmp12 + tmp17;
	       tmp41 = tmp39 - tmp40;
	       tmp45 = tmp39 + tmp40;
	  }
	  {
	       fftw_real tmp42;
	       fftw_real tmp30;
	       fftw_real tmp35;
	       fftw_real tmp53;
	       fftw_real tmp55;
	       fftw_real tmp56;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp42 = K866025403 * (tmp38 - tmp41);
	       tmp30 = tmp18 + tmp29;
	       tmp35 = tmp7 - (K500000000 * tmp30);
	       c_re(inout[3 * iostride]) = tmp7 + tmp30;
	       c_re(inout[iostride]) = tmp35 + tmp42;
	       c_re(inout[5 * iostride]) = tmp35 - tmp42;
	       tmp53 = K866025403 * (tmp18 - tmp29);
	       tmp55 = tmp41 + tmp38;
	       tmp56 = tmp54 - (K500000000 * tmp55);
	       c_im(inout[iostride]) = tmp53 + tmp56;
	       c_im(inout[5 * iostride]) = tmp56 - tmp53;
	       c_im(inout[3 * iostride]) = tmp55 + tmp54;
	  }
	  {
	       fftw_real tmp46;
	       fftw_real tmp34;
	       fftw_real tmp43;
	       fftw_real tmp52;
	       fftw_real tmp47;
	       fftw_real tmp51;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp46 = K866025403 * (tmp44 - tmp45);
	       tmp34 = tmp32 + tmp33;
	       tmp43 = tmp31 - (K500000000 * tmp34);
	       c_re(inout[0]) = tmp31 + tmp34;
	       c_re(inout[4 * iostride]) = tmp43 + tmp46;
	       c_re(inout[2 * iostride]) = tmp43 - tmp46;
	       tmp52 = K866025403 * (tmp32 - tmp33);
	       tmp47 = tmp45 + tmp44;
	       tmp51 = tmp50 - (K500000000 * tmp47);
	       c_im(inout[0]) = tmp47 + tmp50;
	       c_im(inout[4 * iostride]) = tmp52 + tmp51;
	       c_im(inout[2 * iostride]) = tmp51 - tmp52;
	  }
     }
}
コード例 #14
0
void fftw_no_twiddle_13(const fftw_complex *input, fftw_complex *output, int istride, int ostride)
{
     fftw_real tmp1;
     fftw_real tmp88;
     fftw_real tmp29;
     fftw_real tmp36;
     fftw_real tmp43;
     fftw_real tmp121;
     fftw_real tmp128;
     fftw_real tmp30;
     fftw_real tmp24;
     fftw_real tmp131;
     fftw_real tmp124;
     fftw_real tmp129;
     fftw_real tmp41;
     fftw_real tmp44;
     fftw_real tmp134;
     fftw_real tmp83;
     fftw_real tmp89;
     fftw_real tmp70;
     fftw_real tmp85;
     fftw_real tmp137;
     fftw_real tmp141;
     fftw_real tmp146;
     fftw_real tmp77;
     fftw_real tmp86;
     fftw_real tmp144;
     fftw_real tmp147;
     ASSERT_ALIGNED_DOUBLE;
     tmp1 = c_re(input[0]);
     tmp88 = c_im(input[0]);
     {
	  fftw_real tmp15;
	  fftw_real tmp25;
	  fftw_real tmp18;
	  fftw_real tmp26;
	  fftw_real tmp21;
	  fftw_real tmp27;
	  fftw_real tmp22;
	  fftw_real tmp28;
	  fftw_real tmp6;
	  fftw_real tmp37;
	  fftw_real tmp33;
	  fftw_real tmp11;
	  fftw_real tmp38;
	  fftw_real tmp34;
	  fftw_real tmp13;
	  fftw_real tmp14;
	  fftw_real tmp12;
	  fftw_real tmp23;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp13 = c_re(input[8 * istride]);
	  tmp14 = c_re(input[5 * istride]);
	  tmp15 = tmp13 + tmp14;
	  tmp25 = tmp13 - tmp14;
	  {
	       fftw_real tmp16;
	       fftw_real tmp17;
	       fftw_real tmp19;
	       fftw_real tmp20;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp16 = c_re(input[6 * istride]);
	       tmp17 = c_re(input[11 * istride]);
	       tmp18 = tmp16 + tmp17;
	       tmp26 = tmp16 - tmp17;
	       tmp19 = c_re(input[2 * istride]);
	       tmp20 = c_re(input[7 * istride]);
	       tmp21 = tmp19 + tmp20;
	       tmp27 = tmp19 - tmp20;
	  }
	  tmp22 = tmp18 + tmp21;
	  tmp28 = tmp26 + tmp27;
	  {
	       fftw_real tmp2;
	       fftw_real tmp3;
	       fftw_real tmp4;
	       fftw_real tmp5;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp2 = c_re(input[istride]);
	       tmp3 = c_re(input[3 * istride]);
	       tmp4 = c_re(input[9 * istride]);
	       tmp5 = tmp3 + tmp4;
	       tmp6 = tmp2 + tmp5;
	       tmp37 = tmp2 - (K500000000 * tmp5);
	       tmp33 = tmp3 - tmp4;
	  }
	  {
	       fftw_real tmp7;
	       fftw_real tmp8;
	       fftw_real tmp9;
	       fftw_real tmp10;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp7 = c_re(input[12 * istride]);
	       tmp8 = c_re(input[4 * istride]);
	       tmp9 = c_re(input[10 * istride]);
	       tmp10 = tmp8 + tmp9;
	       tmp11 = tmp7 + tmp10;
	       tmp38 = tmp7 - (K500000000 * tmp10);
	       tmp34 = tmp8 - tmp9;
	  }
	  tmp29 = tmp25 - tmp28;
	  {
	       fftw_real tmp32;
	       fftw_real tmp35;
	       fftw_real tmp119;
	       fftw_real tmp120;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp32 = tmp25 + (K500000000 * tmp28);
	       tmp35 = K866025403 * (tmp33 + tmp34);
	       tmp36 = tmp32 - tmp35;
	       tmp43 = tmp35 + tmp32;
	       tmp119 = tmp33 - tmp34;
	       tmp120 = tmp27 - tmp26;
	       tmp121 = tmp119 + tmp120;
	       tmp128 = tmp120 - tmp119;
	  }
	  tmp30 = tmp6 - tmp11;
	  tmp12 = tmp6 + tmp11;
	  tmp23 = tmp15 + tmp22;
	  tmp24 = tmp12 + tmp23;
	  tmp131 = K300462606 * (tmp12 - tmp23);
	  {
	       fftw_real tmp122;
	       fftw_real tmp123;
	       fftw_real tmp39;
	       fftw_real tmp40;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp122 = tmp37 + tmp38;
	       tmp123 = tmp15 - (K500000000 * tmp22);
	       tmp124 = tmp122 + tmp123;
	       tmp129 = tmp122 - tmp123;
	       tmp39 = tmp37 - tmp38;
	       tmp40 = K866025403 * (tmp18 - tmp21);
	       tmp41 = tmp39 + tmp40;
	       tmp44 = tmp39 - tmp40;
	  }
     }
     {
	  fftw_real tmp61;
	  fftw_real tmp135;
	  fftw_real tmp64;
	  fftw_real tmp71;
	  fftw_real tmp67;
	  fftw_real tmp72;
	  fftw_real tmp68;
	  fftw_real tmp136;
	  fftw_real tmp52;
	  fftw_real tmp79;
	  fftw_real tmp75;
	  fftw_real tmp57;
	  fftw_real tmp80;
	  fftw_real tmp74;
	  fftw_real tmp59;
	  fftw_real tmp60;
	  fftw_real tmp139;
	  fftw_real tmp140;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp59 = c_im(input[8 * istride]);
	  tmp60 = c_im(input[5 * istride]);
	  tmp61 = tmp59 + tmp60;
	  tmp135 = tmp59 - tmp60;
	  {
	       fftw_real tmp62;
	       fftw_real tmp63;
	       fftw_real tmp65;
	       fftw_real tmp66;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp62 = c_im(input[6 * istride]);
	       tmp63 = c_im(input[11 * istride]);
	       tmp64 = tmp62 + tmp63;
	       tmp71 = tmp62 - tmp63;
	       tmp65 = c_im(input[2 * istride]);
	       tmp66 = c_im(input[7 * istride]);
	       tmp67 = tmp65 + tmp66;
	       tmp72 = tmp65 - tmp66;
	  }
	  tmp68 = tmp64 + tmp67;
	  tmp136 = tmp71 + tmp72;
	  {
	       fftw_real tmp48;
	       fftw_real tmp49;
	       fftw_real tmp50;
	       fftw_real tmp51;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp48 = c_im(input[istride]);
	       tmp49 = c_im(input[3 * istride]);
	       tmp50 = c_im(input[9 * istride]);
	       tmp51 = tmp49 + tmp50;
	       tmp52 = tmp48 - (K500000000 * tmp51);
	       tmp79 = tmp48 + tmp51;
	       tmp75 = tmp49 - tmp50;
	  }
	  {
	       fftw_real tmp53;
	       fftw_real tmp54;
	       fftw_real tmp55;
	       fftw_real tmp56;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp53 = c_im(input[12 * istride]);
	       tmp54 = c_im(input[4 * istride]);
	       tmp55 = c_im(input[10 * istride]);
	       tmp56 = tmp54 + tmp55;
	       tmp57 = tmp53 - (K500000000 * tmp56);
	       tmp80 = tmp53 + tmp56;
	       tmp74 = tmp54 - tmp55;
	  }
	  tmp134 = tmp79 - tmp80;
	  {
	       fftw_real tmp81;
	       fftw_real tmp82;
	       fftw_real tmp58;
	       fftw_real tmp69;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp81 = tmp79 + tmp80;
	       tmp82 = tmp61 + tmp68;
	       tmp83 = K300462606 * (tmp81 - tmp82);
	       tmp89 = tmp81 + tmp82;
	       tmp58 = tmp52 + tmp57;
	       tmp69 = tmp61 - (K500000000 * tmp68);
	       tmp70 = tmp58 - tmp69;
	       tmp85 = tmp58 + tmp69;
	  }
	  tmp137 = tmp135 - tmp136;
	  tmp139 = K866025403 * (tmp75 + tmp74);
	  tmp140 = tmp135 + (K500000000 * tmp136);
	  tmp141 = tmp139 - tmp140;
	  tmp146 = tmp139 + tmp140;
	  {
	       fftw_real tmp73;
	       fftw_real tmp76;
	       fftw_real tmp142;
	       fftw_real tmp143;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp73 = tmp71 - tmp72;
	       tmp76 = tmp74 - tmp75;
	       tmp77 = tmp73 - tmp76;
	       tmp86 = tmp76 + tmp73;
	       tmp142 = tmp52 - tmp57;
	       tmp143 = K866025403 * (tmp67 - tmp64);
	       tmp144 = tmp142 - tmp143;
	       tmp147 = tmp142 + tmp143;
	  }
     }
     c_re(output[0]) = tmp1 + tmp24;
     {
	  fftw_real tmp163;
	  fftw_real tmp173;
	  fftw_real tmp127;
	  fftw_real tmp169;
	  fftw_real tmp153;
	  fftw_real tmp132;
	  fftw_real tmp138;
	  fftw_real tmp149;
	  fftw_real tmp160;
	  fftw_real tmp172;
	  fftw_real tmp154;
	  fftw_real tmp157;
	  fftw_real tmp158;
	  fftw_real tmp170;
	  fftw_real tmp161;
	  fftw_real tmp162;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp161 = (K113854479 * tmp121) - (K503537032 * tmp124);
	  tmp162 = (K387390585 * tmp128) - (K265966249 * tmp129);
	  tmp163 = tmp161 - tmp162;
	  tmp173 = tmp162 + tmp161;
	  {
	       fftw_real tmp130;
	       fftw_real tmp151;
	       fftw_real tmp125;
	       fftw_real tmp126;
	       fftw_real tmp152;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp130 = (K132983124 * tmp128) + (K258260390 * tmp129);
	       tmp151 = tmp131 - tmp130;
	       tmp125 = (K251768516 * tmp121) + (K075902986 * tmp124);
	       tmp126 = tmp1 - (K083333333 * tmp24);
	       tmp152 = tmp126 - tmp125;
	       tmp127 = (K2_000000000 * tmp125) + tmp126;
	       tmp169 = tmp152 - tmp151;
	       tmp153 = tmp151 + tmp152;
	       tmp132 = (K2_000000000 * tmp130) + tmp131;
	  }
	  {
	       fftw_real tmp145;
	       fftw_real tmp148;
	       fftw_real tmp155;
	       fftw_real tmp156;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp138 = (K575140729 * tmp134) + (K174138601 * tmp137);
	       tmp145 = (K011599105 * tmp141) + (K300238635 * tmp144);
	       tmp148 = (K156891391 * tmp146) - (K256247671 * tmp147);
	       tmp149 = tmp145 + tmp148;
	       tmp160 = K1_732050807 * (tmp148 - tmp145);
	       tmp172 = tmp149 - tmp138;
	       tmp154 = (K174138601 * tmp134) - (K575140729 * tmp137);
	       tmp155 = (K300238635 * tmp141) - (K011599105 * tmp144);
	       tmp156 = (K256247671 * tmp146) + (K156891391 * tmp147);
	       tmp157 = tmp155 + tmp156;
	       tmp158 = tmp154 - tmp157;
	       tmp170 = K1_732050807 * (tmp156 - tmp155);
	  }
	  {
	       fftw_real tmp133;
	       fftw_real tmp150;
	       fftw_real tmp165;
	       fftw_real tmp166;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp133 = tmp127 - tmp132;
	       tmp150 = tmp138 + (K2_000000000 * tmp149);
	       c_re(output[8 * ostride]) = tmp133 - tmp150;
	       c_re(output[5 * ostride]) = tmp133 + tmp150;
	       {
		    fftw_real tmp167;
		    fftw_real tmp168;
		    fftw_real tmp159;
		    fftw_real tmp164;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp167 = tmp132 + tmp127;
		    tmp168 = tmp154 + (K2_000000000 * tmp157);
		    c_re(output[12 * ostride]) = tmp167 - tmp168;
		    c_re(output[ostride]) = tmp167 + tmp168;
		    tmp159 = tmp153 - tmp158;
		    tmp164 = tmp160 - tmp163;
		    c_re(output[4 * ostride]) = tmp159 - tmp164;
		    c_re(output[10 * ostride]) = tmp164 + tmp159;
	       }
	       tmp165 = tmp153 + tmp158;
	       tmp166 = tmp163 + tmp160;
	       c_re(output[3 * ostride]) = tmp165 - tmp166;
	       c_re(output[9 * ostride]) = tmp166 + tmp165;
	       {
		    fftw_real tmp175;
		    fftw_real tmp176;
		    fftw_real tmp171;
		    fftw_real tmp174;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp175 = tmp169 + tmp170;
		    tmp176 = tmp173 + tmp172;
		    c_re(output[2 * ostride]) = tmp175 - tmp176;
		    c_re(output[7 * ostride]) = tmp176 + tmp175;
		    tmp171 = tmp169 - tmp170;
		    tmp174 = tmp172 - tmp173;
		    c_re(output[6 * ostride]) = tmp171 - tmp174;
		    c_re(output[11 * ostride]) = tmp174 + tmp171;
	       }
	  }
     }
     c_im(output[0]) = tmp88 + tmp89;
     {
	  fftw_real tmp102;
	  fftw_real tmp115;
	  fftw_real tmp84;
	  fftw_real tmp112;
	  fftw_real tmp106;
	  fftw_real tmp91;
	  fftw_real tmp31;
	  fftw_real tmp46;
	  fftw_real tmp107;
	  fftw_real tmp111;
	  fftw_real tmp94;
	  fftw_real tmp97;
	  fftw_real tmp99;
	  fftw_real tmp114;
	  fftw_real tmp100;
	  fftw_real tmp101;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp100 = (K387390585 * tmp77) + (K265966249 * tmp70);
	  tmp101 = (K113854479 * tmp86) + (K503537032 * tmp85);
	  tmp102 = tmp100 + tmp101;
	  tmp115 = tmp100 - tmp101;
	  {
	       fftw_real tmp78;
	       fftw_real tmp105;
	       fftw_real tmp87;
	       fftw_real tmp90;
	       fftw_real tmp104;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp78 = (K258260390 * tmp70) - (K132983124 * tmp77);
	       tmp105 = tmp83 - tmp78;
	       tmp87 = (K075902986 * tmp85) - (K251768516 * tmp86);
	       tmp90 = tmp88 - (K083333333 * tmp89);
	       tmp104 = tmp90 - tmp87;
	       tmp84 = (K2_000000000 * tmp78) + tmp83;
	       tmp112 = tmp105 + tmp104;
	       tmp106 = tmp104 - tmp105;
	       tmp91 = (K2_000000000 * tmp87) + tmp90;
	  }
	  {
	       fftw_real tmp42;
	       fftw_real tmp45;
	       fftw_real tmp95;
	       fftw_real tmp96;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp31 = (K575140729 * tmp29) - (K174138601 * tmp30);
	       tmp42 = (K300238635 * tmp36) + (K011599105 * tmp41);
	       tmp45 = (K256247671 * tmp43) + (K156891391 * tmp44);
	       tmp46 = tmp42 - tmp45;
	       tmp107 = K1_732050807 * (tmp45 + tmp42);
	       tmp111 = tmp31 - tmp46;
	       tmp94 = (K575140729 * tmp30) + (K174138601 * tmp29);
	       tmp95 = (K156891391 * tmp43) - (K256247671 * tmp44);
	       tmp96 = (K300238635 * tmp41) - (K011599105 * tmp36);
	       tmp97 = tmp95 + tmp96;
	       tmp99 = tmp97 - tmp94;
	       tmp114 = K1_732050807 * (tmp96 - tmp95);
	  }
	  {
	       fftw_real tmp47;
	       fftw_real tmp92;
	       fftw_real tmp109;
	       fftw_real tmp110;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp47 = tmp31 + (K2_000000000 * tmp46);
	       tmp92 = tmp84 + tmp91;
	       c_im(output[ostride]) = tmp47 + tmp92;
	       c_im(output[12 * ostride]) = tmp92 - tmp47;
	       {
		    fftw_real tmp93;
		    fftw_real tmp98;
		    fftw_real tmp103;
		    fftw_real tmp108;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp93 = tmp91 - tmp84;
		    tmp98 = tmp94 + (K2_000000000 * tmp97);
		    c_im(output[5 * ostride]) = tmp93 - tmp98;
		    c_im(output[8 * ostride]) = tmp98 + tmp93;
		    tmp103 = tmp99 + tmp102;
		    tmp108 = tmp106 - tmp107;
		    c_im(output[2 * ostride]) = tmp103 + tmp108;
		    c_im(output[7 * ostride]) = tmp108 - tmp103;
	       }
	       tmp109 = tmp107 + tmp106;
	       tmp110 = tmp102 - tmp99;
	       c_im(output[6 * ostride]) = tmp109 - tmp110;
	       c_im(output[11 * ostride]) = tmp110 + tmp109;
	       {
		    fftw_real tmp117;
		    fftw_real tmp118;
		    fftw_real tmp113;
		    fftw_real tmp116;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp117 = tmp112 - tmp111;
		    tmp118 = tmp114 - tmp115;
		    c_im(output[4 * ostride]) = tmp117 - tmp118;
		    c_im(output[10 * ostride]) = tmp118 + tmp117;
		    tmp113 = tmp111 + tmp112;
		    tmp116 = tmp114 + tmp115;
		    c_im(output[3 * ostride]) = tmp113 - tmp116;
		    c_im(output[9 * ostride]) = tmp116 + tmp113;
	       }
	  }
     }
}
コード例 #15
0
ファイル: verify-r2r.c プロジェクト: exic/last.fm-dbus
static void mkoddonly(C *a, int n)
{
     int i;
     for (i = 0; i < n; i += 2)
	  c_re(a[i]) = c_im(a[i]) = 0.0;
}
コード例 #16
0
ファイル: fni_14.c プロジェクト: fido2478/epspectra
void fftwi_no_twiddle_14(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[9 * istride]);
	  tim1_1_0 = c_im(in[9 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[11 * istride]);
	  tim1_1_0 = c_im(in[11 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[13 * istride]);
	  tim1_1_0 = c_im(in[13 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[8 * istride]);
	  tim1_0_0 = c_im(in[8 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0;
	  tre0_1_4 = tre1_0_0 - tre1_1_0;
	  tim0_1_4 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[10 * istride]);
	  tim1_0_0 = c_im(in[10 * istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_5 = tre1_0_0 + tre1_1_0;
	  tim0_0_5 = tim1_0_0 + tim1_1_0;
	  tre0_1_5 = tre1_0_0 - tre1_1_0;
	  tim0_1_5 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[12 * istride]);
	  tim1_0_0 = c_im(in[12 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_6 = tre1_0_0 + tre1_1_0;
	  tim0_0_6 = tim1_0_0 + tim1_1_0;
	  tre0_1_6 = tre1_0_0 - tre1_1_0;
	  tim0_1_6 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4 + tre0_0_5 + tre0_0_6;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4 + tim0_0_5 + tim0_0_6;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_1 + tre0_0_6)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_2 + tre0_0_5));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_0_6 - tim0_0_1)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_0_5 - tim0_0_2)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_0_4 - tim0_0_3));
	  c_re(out[8 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[6 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_1 + tim0_0_6)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_2 + tim0_0_5));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_0_1 - tre0_0_6)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_0_2 - tre0_0_5)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_0_3 - tre0_0_4));
	  c_im(out[8 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[6 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_2 + tre0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_1 + tre0_0_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_0_6 - tim0_0_1)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_0_2 - tim0_0_5)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_0_3 - tim0_0_4));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[12 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_2 + tim0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_1 + tim0_0_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_0_1 - tre0_0_6)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_0_5 - tre0_0_2)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_0_4 - tre0_0_3));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[12 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_2 + tre0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_1 + tre0_0_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_0_6 - tim0_0_1)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_0_2 - tim0_0_5)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_0_4 - tim0_0_3));
	  c_re(out[10 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_2 + tim0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_1 + tim0_0_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_0_1 - tre0_0_6)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_0_5 - tre0_0_2)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_0_3 - tre0_0_4));
	  c_im(out[10 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[7 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4 + tre0_1_5 + tre0_1_6;
     c_im(out[7 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4 + tim0_1_5 + tim0_1_6;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_1 + tre0_1_6)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_2 + tre0_1_5));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_1_6 - tim0_1_1)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_1_5 - tim0_1_2)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_1_4 - tim0_1_3));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[13 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_1 + tim0_1_6)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_2 + tim0_1_5));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_1_1 - tre0_1_6)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_1_2 - tre0_1_5)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_1_3 - tre0_1_4));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[13 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_2 + tre0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_1 + tre0_1_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_1_6 - tim0_1_1)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_1_2 - tim0_1_5)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_1_3 - tim0_1_4));
	  c_re(out[9 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[5 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_2 + tim0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_1 + tim0_1_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_1_1 - tre0_1_6)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_1_5 - tre0_1_2)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_1_4 - tre0_1_3));
	  c_im(out[9 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[5 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_2 + tre0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_1 + tre0_1_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_1_6 - tim0_1_1)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_1_2 - tim0_1_5)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_1_4 - tim0_1_3));
	  c_re(out[3 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[11 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_2 + tim0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_1 + tim0_1_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_1_1 - tre0_1_6)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_1_5 - tre0_1_2)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_1_3 - tre0_1_4));
	  c_im(out[3 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[11 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
コード例 #17
0
ファイル: verify-r2r.c プロジェクト: exic/last.fm-dbus
static void r2r_apply(dofft_closure *k_, bench_complex *in, bench_complex *out)
{
     dofft_r2r_closure *k = (dofft_r2r_closure *)k_;
     bench_problem *p = k->p;
     bench_real *ri, *ro;
     int n, is, os;

     n = p->sz->dims[0].n;
     is = p->sz->dims[0].is;
     os = p->sz->dims[0].os;

     ri = (bench_real *) p->in;
     ro = (bench_real *) p->out;

     switch (p->k[0]) {
	 case R2R_R2HC:
	      cpyr1(n, &c_re(in[0]), 2, ri, is, 1.0);
	      break;
	 case R2R_HC2R:
	      cpyr1(n/2 + 1, &c_re(in[0]), 2, ri, is, 1.0);
	      cpyr1((n+1)/2 - 1, &c_im(in[n-1]), -2, ri + is*(n-1), -is, 1.0);
	      break;
	 case R2R_REDFT00:
	      cpyr1(n, &c_re(in[0]), 2, ri, is, 1.0);
	      break;
	 case R2R_RODFT00:
	      cpyr1(n, &c_re(in[1]), 2, ri, is, 1.0);
	      break;
	 case R2R_REDFT01:
	      cpyr1(n, &c_re(in[0]), 2, ri, is, 1.0);
	      break;
	 case R2R_REDFT10:
	      cpyr1(n, &c_re(in[1]), 4, ri, is, 1.0);
	      break;
	 case R2R_RODFT01:
	      cpyr1(n, &c_re(in[1]), 2, ri, is, 1.0);
	      break;
	 case R2R_RODFT10:
	      cpyr1(n, &c_im(in[1]), 4, ri, is, 1.0);
	      break;
	 case R2R_REDFT11:
	      cpyr1(n, &c_re(in[1]), 4, ri, is, 1.0);
	      break;
	 case R2R_RODFT11:
	      cpyr1(n, &c_re(in[1]), 4, ri, is, 1.0);
	      break;
	 default:
	      BENCH_ASSERT(0); /* not yet implemented */
     }

     doit(1, p);

     switch (p->k[0]) {
	 case R2R_R2HC:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_re(in[0]), 2, 1.0);
	      cpyr1(n/2 + 1, ro, os, &c_re(out[0]), 2, 1.0);
	      cpyr1((n+1)/2 - 1, ro + os*(n-1), -os, &c_im(out[1]), 2, 1.0);
	      c_im(out[0]) = 0.0;
	      if (n % 2 == 0)
		   c_im(out[n/2]) = 0.0;
	      mkhermitian1(out, n);
	      break;
	 case R2R_HC2R:
	      if (k->k.recopy_input) {
		   cpyr1(n/2 + 1, ri, is, &c_re(in[0]), 2, 1.0);
		   cpyr1((n+1)/2 - 1, ri + is*(n-1), -is, &c_im(in[1]), 2,1.0);
	      }
	      cpyr1(n, ro, os, &c_re(out[0]), 2, 1.0);
	      mkreal(out, n);
	      break;
	 case R2R_REDFT00:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_re(in[0]), 2, 1.0);
	      cpyr1(n, ro, os, &c_re(out[0]), 2, 1.0);
	      mkre00(out, k->n0);
	      break;
	 case R2R_RODFT00:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_im(in[1]), 2, -1.0);
	      cpyr1(n, ro, os, &c_im(out[1]), 2, -1.0);
	      mkio00(out, k->n0);
	      break;
	 case R2R_REDFT01:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_re(in[0]), 2, 1.0);
	      cpyr1(n, ro, os, &c_re(out[1]), 4, 2.0);
	      mkre10(out, k->n0);
	      break;
	 case R2R_REDFT10:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_re(in[1]), 4, 2.0);
	      cpyr1(n, ro, os, &c_re(out[0]), 2, 1.0);
	      mkre01(out, k->n0);
	      break;
	 case R2R_RODFT01:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_re(in[1]), 2, 1.0);
	      cpyr1(n, ro, os, &c_im(out[1]), 4, -2.0);
	      mkio10(out, k->n0);
	      break;
	 case R2R_RODFT10:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_im(in[1]), 4, -2.0);
	      cpyr1(n, ro, os, &c_re(out[1]), 2, 1.0);
	      mkro01(out, k->n0);
	      break;
	 case R2R_REDFT11:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_re(in[1]), 4, 2.0);
	      cpyr1(n, ro, os, &c_re(out[1]), 4, 2.0);
	      mkre11(out, k->n0);
	      break;
	 case R2R_RODFT11:
	      if (k->k.recopy_input)
		   cpyr1(n, ri, is, &c_im(in[1]), 4, -2.0);
	      cpyr1(n, ro, os, &c_im(out[1]), 4, -2.0);
	      mkio11(out, k->n0);
	      break;
	 default:
	      BENCH_ASSERT(0); /* not yet implemented */
     }
}
コード例 #18
0
ファイル: fhf_9.c プロジェクト: alltom/taps
void fftw_hc2hc_forward_9(fftw_real *A, const fftw_complex *W, int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (9 * iostride);
     {
	  fftw_real tmp136;
	  fftw_real tmp150;
	  fftw_real tmp155;
	  fftw_real tmp154;
	  fftw_real tmp139;
	  fftw_real tmp162;
	  fftw_real tmp145;
	  fftw_real tmp153;
	  fftw_real tmp156;
	  fftw_real tmp137;
	  fftw_real tmp138;
	  fftw_real tmp140;
	  fftw_real tmp151;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp136 = X[0];
	  {
	       fftw_real tmp146;
	       fftw_real tmp147;
	       fftw_real tmp148;
	       fftw_real tmp149;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp146 = X[2 * iostride];
	       tmp147 = X[5 * iostride];
	       tmp148 = X[8 * iostride];
	       tmp149 = tmp147 + tmp148;
	       tmp150 = tmp146 + tmp149;
	       tmp155 = tmp146 - (K500000000 * tmp149);
	       tmp154 = tmp148 - tmp147;
	  }
	  tmp137 = X[3 * iostride];
	  tmp138 = X[6 * iostride];
	  tmp139 = tmp137 + tmp138;
	  tmp162 = tmp138 - tmp137;
	  {
	       fftw_real tmp141;
	       fftw_real tmp142;
	       fftw_real tmp143;
	       fftw_real tmp144;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp141 = X[iostride];
	       tmp142 = X[4 * iostride];
	       tmp143 = X[7 * iostride];
	       tmp144 = tmp142 + tmp143;
	       tmp145 = tmp141 + tmp144;
	       tmp153 = tmp141 - (K500000000 * tmp144);
	       tmp156 = tmp143 - tmp142;
	  }
	  Y[-3 * iostride] = K866025403 * (tmp150 - tmp145);
	  tmp140 = tmp136 + tmp139;
	  tmp151 = tmp145 + tmp150;
	  X[3 * iostride] = tmp140 - (K500000000 * tmp151);
	  X[0] = tmp140 + tmp151;
	  {
	       fftw_real tmp164;
	       fftw_real tmp160;
	       fftw_real tmp161;
	       fftw_real tmp163;
	       fftw_real tmp152;
	       fftw_real tmp157;
	       fftw_real tmp158;
	       fftw_real tmp159;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp164 = K866025403 * tmp162;
	       tmp160 = (K663413948 * tmp156) - (K642787609 * tmp153);
	       tmp161 = (K150383733 * tmp154) - (K984807753 * tmp155);
	       tmp163 = tmp160 + tmp161;
	       tmp152 = tmp136 - (K500000000 * tmp139);
	       tmp157 = (K766044443 * tmp153) + (K556670399 * tmp156);
	       tmp158 = (K173648177 * tmp155) + (K852868531 * tmp154);
	       tmp159 = tmp157 + tmp158;
	       X[iostride] = tmp152 + tmp159;
	       X[4 * iostride] = tmp152 + (K866025403 * (tmp160 - tmp161)) - (K500000000 * tmp159);
	       X[2 * iostride] = tmp152 + (K173648177 * tmp153) - (K296198132 * tmp154) - (K939692620 * tmp155) - (K852868531 * tmp156);
	       Y[-iostride] = tmp164 + tmp163;
	       Y[-4 * iostride] = (K866025403 * (tmp162 + (tmp158 - tmp157))) - (K500000000 * tmp163);
	       Y[-2 * iostride] = (K813797681 * tmp154) - (K342020143 * tmp155) - (K150383733 * tmp156) - (K984807753 * tmp153) - tmp164;
	  }
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 8) {
	  fftw_real tmp24;
	  fftw_real tmp122;
	  fftw_real tmp75;
	  fftw_real tmp121;
	  fftw_real tmp128;
	  fftw_real tmp127;
	  fftw_real tmp35;
	  fftw_real tmp72;
	  fftw_real tmp70;
	  fftw_real tmp92;
	  fftw_real tmp109;
	  fftw_real tmp118;
	  fftw_real tmp97;
	  fftw_real tmp108;
	  fftw_real tmp53;
	  fftw_real tmp81;
	  fftw_real tmp105;
	  fftw_real tmp117;
	  fftw_real tmp86;
	  fftw_real tmp106;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp29;
	       fftw_real tmp73;
	       fftw_real tmp34;
	       fftw_real tmp74;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp24 = X[0];
	       tmp122 = Y[-8 * iostride];
	       {
		    fftw_real tmp26;
		    fftw_real tmp28;
		    fftw_real tmp25;
		    fftw_real tmp27;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp26 = X[3 * iostride];
		    tmp28 = Y[-5 * iostride];
		    tmp25 = c_re(W[2]);
		    tmp27 = c_im(W[2]);
		    tmp29 = (tmp25 * tmp26) - (tmp27 * tmp28);
		    tmp73 = (tmp27 * tmp26) + (tmp25 * tmp28);
	       }
	       {
		    fftw_real tmp31;
		    fftw_real tmp33;
		    fftw_real tmp30;
		    fftw_real tmp32;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp31 = X[6 * iostride];
		    tmp33 = Y[-2 * iostride];
		    tmp30 = c_re(W[5]);
		    tmp32 = c_im(W[5]);
		    tmp34 = (tmp30 * tmp31) - (tmp32 * tmp33);
		    tmp74 = (tmp32 * tmp31) + (tmp30 * tmp33);
	       }
	       tmp75 = K866025403 * (tmp73 - tmp74);
	       tmp121 = tmp73 + tmp74;
	       tmp128 = tmp122 - (K500000000 * tmp121);
	       tmp127 = K866025403 * (tmp34 - tmp29);
	       tmp35 = tmp29 + tmp34;
	       tmp72 = tmp24 - (K500000000 * tmp35);
	  }
	  {
	       fftw_real tmp58;
	       fftw_real tmp94;
	       fftw_real tmp63;
	       fftw_real tmp89;
	       fftw_real tmp68;
	       fftw_real tmp90;
	       fftw_real tmp69;
	       fftw_real tmp95;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp55;
		    fftw_real tmp57;
		    fftw_real tmp54;
		    fftw_real tmp56;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp55 = X[2 * iostride];
		    tmp57 = Y[-6 * iostride];
		    tmp54 = c_re(W[1]);
		    tmp56 = c_im(W[1]);
		    tmp58 = (tmp54 * tmp55) - (tmp56 * tmp57);
		    tmp94 = (tmp56 * tmp55) + (tmp54 * tmp57);
	       }
	       {
		    fftw_real tmp60;
		    fftw_real tmp62;
		    fftw_real tmp59;
		    fftw_real tmp61;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp60 = X[5 * iostride];
		    tmp62 = Y[-3 * iostride];
		    tmp59 = c_re(W[4]);
		    tmp61 = c_im(W[4]);
		    tmp63 = (tmp59 * tmp60) - (tmp61 * tmp62);
		    tmp89 = (tmp61 * tmp60) + (tmp59 * tmp62);
	       }
	       {
		    fftw_real tmp65;
		    fftw_real tmp67;
		    fftw_real tmp64;
		    fftw_real tmp66;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp65 = X[8 * iostride];
		    tmp67 = Y[0];
		    tmp64 = c_re(W[7]);
		    tmp66 = c_im(W[7]);
		    tmp68 = (tmp64 * tmp65) - (tmp66 * tmp67);
		    tmp90 = (tmp66 * tmp65) + (tmp64 * tmp67);
	       }
	       tmp69 = tmp63 + tmp68;
	       tmp95 = tmp89 + tmp90;
	       {
		    fftw_real tmp88;
		    fftw_real tmp91;
		    fftw_real tmp93;
		    fftw_real tmp96;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp70 = tmp58 + tmp69;
		    tmp88 = tmp58 - (K500000000 * tmp69);
		    tmp91 = K866025403 * (tmp89 - tmp90);
		    tmp92 = tmp88 + tmp91;
		    tmp109 = tmp88 - tmp91;
		    tmp118 = tmp94 + tmp95;
		    tmp93 = K866025403 * (tmp68 - tmp63);
		    tmp96 = tmp94 - (K500000000 * tmp95);
		    tmp97 = tmp93 + tmp96;
		    tmp108 = tmp96 - tmp93;
	       }
	  }
	  {
	       fftw_real tmp41;
	       fftw_real tmp83;
	       fftw_real tmp46;
	       fftw_real tmp78;
	       fftw_real tmp51;
	       fftw_real tmp79;
	       fftw_real tmp52;
	       fftw_real tmp84;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp38;
		    fftw_real tmp40;
		    fftw_real tmp37;
		    fftw_real tmp39;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp38 = X[iostride];
		    tmp40 = Y[-7 * iostride];
		    tmp37 = c_re(W[0]);
		    tmp39 = c_im(W[0]);
		    tmp41 = (tmp37 * tmp38) - (tmp39 * tmp40);
		    tmp83 = (tmp39 * tmp38) + (tmp37 * tmp40);
	       }
	       {
		    fftw_real tmp43;
		    fftw_real tmp45;
		    fftw_real tmp42;
		    fftw_real tmp44;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp43 = X[4 * iostride];
		    tmp45 = Y[-4 * iostride];
		    tmp42 = c_re(W[3]);
		    tmp44 = c_im(W[3]);
		    tmp46 = (tmp42 * tmp43) - (tmp44 * tmp45);
		    tmp78 = (tmp44 * tmp43) + (tmp42 * tmp45);
	       }
	       {
		    fftw_real tmp48;
		    fftw_real tmp50;
		    fftw_real tmp47;
		    fftw_real tmp49;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp48 = X[7 * iostride];
		    tmp50 = Y[-iostride];
		    tmp47 = c_re(W[6]);
		    tmp49 = c_im(W[6]);
		    tmp51 = (tmp47 * tmp48) - (tmp49 * tmp50);
		    tmp79 = (tmp49 * tmp48) + (tmp47 * tmp50);
	       }
	       tmp52 = tmp46 + tmp51;
	       tmp84 = tmp78 + tmp79;
	       {
		    fftw_real tmp77;
		    fftw_real tmp80;
		    fftw_real tmp82;
		    fftw_real tmp85;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp53 = tmp41 + tmp52;
		    tmp77 = tmp41 - (K500000000 * tmp52);
		    tmp80 = K866025403 * (tmp78 - tmp79);
		    tmp81 = tmp77 + tmp80;
		    tmp105 = tmp77 - tmp80;
		    tmp117 = tmp83 + tmp84;
		    tmp82 = K866025403 * (tmp51 - tmp46);
		    tmp85 = tmp83 - (K500000000 * tmp84);
		    tmp86 = tmp82 + tmp85;
		    tmp106 = tmp85 - tmp82;
	       }
	  }
	  {
	       fftw_real tmp119;
	       fftw_real tmp36;
	       fftw_real tmp71;
	       fftw_real tmp116;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp119 = K866025403 * (tmp117 - tmp118);
	       tmp36 = tmp24 + tmp35;
	       tmp71 = tmp53 + tmp70;
	       tmp116 = tmp36 - (K500000000 * tmp71);
	       X[0] = tmp36 + tmp71;
	       X[3 * iostride] = tmp116 + tmp119;
	       Y[-6 * iostride] = tmp116 - tmp119;
	  }
	  {
	       fftw_real tmp125;
	       fftw_real tmp120;
	       fftw_real tmp123;
	       fftw_real tmp124;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp125 = K866025403 * (tmp70 - tmp53);
	       tmp120 = tmp117 + tmp118;
	       tmp123 = tmp121 + tmp122;
	       tmp124 = tmp123 - (K500000000 * tmp120);
	       Y[0] = tmp120 + tmp123;
	       Y[-3 * iostride] = tmp125 + tmp124;
	       X[6 * iostride] = -(tmp124 - tmp125);
	  }
	  {
	       fftw_real tmp76;
	       fftw_real tmp129;
	       fftw_real tmp99;
	       fftw_real tmp131;
	       fftw_real tmp103;
	       fftw_real tmp126;
	       fftw_real tmp100;
	       fftw_real tmp130;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp76 = tmp72 + tmp75;
	       tmp129 = tmp127 + tmp128;
	       {
		    fftw_real tmp87;
		    fftw_real tmp98;
		    fftw_real tmp101;
		    fftw_real tmp102;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp87 = (K766044443 * tmp81) + (K642787609 * tmp86);
		    tmp98 = (K173648177 * tmp92) + (K984807753 * tmp97);
		    tmp99 = tmp87 + tmp98;
		    tmp131 = K866025403 * (tmp98 - tmp87);
		    tmp101 = (K766044443 * tmp86) - (K642787609 * tmp81);
		    tmp102 = (K173648177 * tmp97) - (K984807753 * tmp92);
		    tmp103 = K866025403 * (tmp101 - tmp102);
		    tmp126 = tmp101 + tmp102;
	       }
	       X[iostride] = tmp76 + tmp99;
	       tmp100 = tmp76 - (K500000000 * tmp99);
	       Y[-7 * iostride] = tmp100 - tmp103;
	       X[4 * iostride] = tmp100 + tmp103;
	       Y[-iostride] = tmp126 + tmp129;
	       tmp130 = tmp129 - (K500000000 * tmp126);
	       X[7 * iostride] = -(tmp130 - tmp131);
	       Y[-4 * iostride] = tmp131 + tmp130;
	  }
	  {
	       fftw_real tmp104;
	       fftw_real tmp133;
	       fftw_real tmp111;
	       fftw_real tmp132;
	       fftw_real tmp115;
	       fftw_real tmp134;
	       fftw_real tmp112;
	       fftw_real tmp135;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp104 = tmp72 - tmp75;
	       tmp133 = tmp128 - tmp127;
	       {
		    fftw_real tmp107;
		    fftw_real tmp110;
		    fftw_real tmp113;
		    fftw_real tmp114;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp107 = (K173648177 * tmp105) + (K984807753 * tmp106);
		    tmp110 = (K342020143 * tmp108) - (K939692620 * tmp109);
		    tmp111 = tmp107 + tmp110;
		    tmp132 = K866025403 * (tmp110 - tmp107);
		    tmp113 = (K173648177 * tmp106) - (K984807753 * tmp105);
		    tmp114 = (K342020143 * tmp109) + (K939692620 * tmp108);
		    tmp115 = K866025403 * (tmp113 + tmp114);
		    tmp134 = tmp113 - tmp114;
	       }
	       X[2 * iostride] = tmp104 + tmp111;
	       tmp112 = tmp104 - (K500000000 * tmp111);
	       Y[-8 * iostride] = tmp112 - tmp115;
	       Y[-5 * iostride] = tmp112 + tmp115;
	       Y[-2 * iostride] = tmp134 + tmp133;
	       tmp135 = tmp133 - (K500000000 * tmp134);
	       X[5 * iostride] = -(tmp132 + tmp135);
	       X[8 * iostride] = -(tmp135 - tmp132);
	  }
     }
     if (i == m) {
	  fftw_real tmp12;
	  fftw_real tmp18;
	  fftw_real tmp4;
	  fftw_real tmp7;
	  fftw_real tmp10;
	  fftw_real tmp9;
	  fftw_real tmp14;
	  fftw_real tmp23;
	  fftw_real tmp16;
	  fftw_real tmp21;
	  fftw_real tmp5;
	  fftw_real tmp8;
	  fftw_real tmp6;
	  fftw_real tmp11;
	  fftw_real tmp22;
	  fftw_real tmp13;
	  fftw_real tmp17;
	  fftw_real tmp20;
	  fftw_real tmp1;
	  fftw_real tmp3;
	  fftw_real tmp2;
	  fftw_real tmp15;
	  fftw_real tmp19;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = X[0];
	  tmp3 = X[3 * iostride];
	  tmp2 = X[6 * iostride];
	  tmp12 = K866025403 * (tmp3 + tmp2);
	  tmp18 = tmp1 - (K500000000 * (tmp2 - tmp3));
	  tmp4 = tmp1 + tmp2 - tmp3;
	  tmp7 = X[4 * iostride];
	  tmp10 = X[7 * iostride];
	  tmp9 = X[iostride];
	  tmp14 = (K1_969615506 * tmp7) + (K684040286 * tmp9) + (K1_285575219 * tmp10);
	  tmp23 = (K1_285575219 * tmp9) - (K1_969615506 * tmp10) - (K684040286 * tmp7);
	  tmp16 = (K347296355 * tmp7) + (K1_879385241 * tmp9) - (K1_532088886 * tmp10);
	  tmp21 = (K1_879385241 * tmp7) + (K1_532088886 * tmp9) + (K347296355 * tmp10);
	  tmp5 = X[2 * iostride];
	  tmp8 = X[5 * iostride];
	  tmp6 = X[8 * iostride];
	  tmp11 = tmp8 - (tmp5 + tmp6);
	  tmp22 = (K1_285575219 * tmp6) - (K684040286 * tmp8) - (K1_969615506 * tmp5);
	  tmp13 = (K1_285575219 * tmp5) + (K1_969615506 * tmp8) + (K684040286 * tmp6);
	  tmp17 = (K1_532088886 * tmp5) - (K1_879385241 * tmp6) - (K347296355 * tmp8);
	  tmp20 = (K347296355 * tmp5) + (K1_879385241 * tmp8) + (K1_532088886 * tmp6);
	  Y[-iostride] = K866025403 * (tmp11 + tmp7 - (tmp9 + tmp10));
	  X[iostride] = tmp4 + (K500000000 * (tmp11 + tmp9 + tmp10 - tmp7));
	  X[4 * iostride] = tmp4 + tmp5 + tmp6 + tmp7 - (tmp8 + tmp9 + tmp10);
	  X[2 * iostride] = tmp18 + (K433012701 * (tmp22 - tmp23)) + (K250000000 * (tmp21 - tmp20));
	  Y[-2 * iostride] = tmp12 - (K433012701 * (tmp20 + tmp21)) - (K250000000 * (tmp22 + tmp23));
	  tmp15 = tmp13 + tmp14;
	  Y[0] = -(tmp12 + (K500000000 * tmp15));
	  Y[-3 * iostride] = (K250000000 * tmp15) - (K433012701 * (tmp16 - tmp17)) - tmp12;
	  tmp19 = tmp17 + tmp16;
	  X[0] = tmp18 + (K500000000 * tmp19);
	  X[3 * iostride] = tmp18 + (K433012701 * (tmp13 - tmp14)) - (K250000000 * tmp19);
     }
}
コード例 #19
0
ファイル: fni_11.c プロジェクト: LuaDist/im
void fftwi_no_twiddle_11(const fftw_complex *input, fftw_complex *output,
			 int istride, int ostride)
{
     fftw_real tmp1;
     fftw_real tmp23;
     fftw_real tmp4;
     fftw_real tmp17;
     fftw_real tmp32;
     fftw_real tmp51;
     fftw_real tmp38;
     fftw_real tmp53;
     fftw_real tmp7;
     fftw_real tmp21;
     fftw_real tmp10;
     fftw_real tmp18;
     fftw_real tmp29;
     fftw_real tmp50;
     fftw_real tmp13;
     fftw_real tmp19;
     fftw_real tmp35;
     fftw_real tmp49;
     fftw_real tmp26;
     fftw_real tmp52;
     fftw_real tmp16;
     fftw_real tmp20;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp2;
	  fftw_real tmp3;
	  fftw_real tmp30;
	  fftw_real tmp31;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(input[0]);
	  tmp23 = c_im(input[0]);
	  tmp2 = c_re(input[istride]);
	  tmp3 = c_re(input[10 * istride]);
	  tmp4 = tmp2 + tmp3;
	  tmp17 = tmp2 - tmp3;
	  tmp30 = c_im(input[istride]);
	  tmp31 = c_im(input[10 * istride]);
	  tmp32 = tmp30 + tmp31;
	  tmp51 = tmp31 - tmp30;
	  {
	       fftw_real tmp36;
	       fftw_real tmp37;
	       fftw_real tmp5;
	       fftw_real tmp6;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp36 = c_im(input[2 * istride]);
	       tmp37 = c_im(input[9 * istride]);
	       tmp38 = tmp36 + tmp37;
	       tmp53 = tmp37 - tmp36;
	       tmp5 = c_re(input[2 * istride]);
	       tmp6 = c_re(input[9 * istride]);
	       tmp7 = tmp5 + tmp6;
	       tmp21 = tmp5 - tmp6;
	  }
     }
     {
	  fftw_real tmp8;
	  fftw_real tmp9;
	  fftw_real tmp33;
	  fftw_real tmp34;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp8 = c_re(input[3 * istride]);
	  tmp9 = c_re(input[8 * istride]);
	  tmp10 = tmp8 + tmp9;
	  tmp18 = tmp8 - tmp9;
	  {
	       fftw_real tmp27;
	       fftw_real tmp28;
	       fftw_real tmp11;
	       fftw_real tmp12;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp27 = c_im(input[3 * istride]);
	       tmp28 = c_im(input[8 * istride]);
	       tmp29 = tmp27 + tmp28;
	       tmp50 = tmp28 - tmp27;
	       tmp11 = c_re(input[4 * istride]);
	       tmp12 = c_re(input[7 * istride]);
	       tmp13 = tmp11 + tmp12;
	       tmp19 = tmp11 - tmp12;
	  }
	  tmp33 = c_im(input[4 * istride]);
	  tmp34 = c_im(input[7 * istride]);
	  tmp35 = tmp33 + tmp34;
	  tmp49 = tmp34 - tmp33;
	  {
	       fftw_real tmp24;
	       fftw_real tmp25;
	       fftw_real tmp14;
	       fftw_real tmp15;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp24 = c_im(input[5 * istride]);
	       tmp25 = c_im(input[6 * istride]);
	       tmp26 = tmp24 + tmp25;
	       tmp52 = tmp25 - tmp24;
	       tmp14 = c_re(input[5 * istride]);
	       tmp15 = c_re(input[6 * istride]);
	       tmp16 = tmp14 + tmp15;
	       tmp20 = tmp14 - tmp15;
	  }
     }
     {
	  fftw_real tmp56;
	  fftw_real tmp55;
	  fftw_real tmp44;
	  fftw_real tmp45;
	  ASSERT_ALIGNED_DOUBLE;
	  c_re(output[0]) = tmp1 + tmp4 + tmp7 + tmp10 + tmp13 + tmp16;
	  {
	       fftw_real tmp62;
	       fftw_real tmp61;
	       fftw_real tmp58;
	       fftw_real tmp57;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp62 =
		   (K989821441 * tmp52) + (K755749574 * tmp50) +
		   (K281732556 * tmp51) - (K909631995 * tmp49) -
		   (K540640817 * tmp53);
	       tmp61 =
		   tmp1 + (K841253532 * tmp7) + (K415415013 * tmp13) -
		   (K142314838 * tmp16) - (K654860733 * tmp10) -
		   (K959492973 * tmp4);
	       c_re(output[6 * ostride]) = tmp61 - tmp62;
	       c_re(output[5 * ostride]) = tmp61 + tmp62;
	       tmp58 =
		   (K909631995 * tmp53) + (K755749574 * tmp49) +
		   (K281732556 * tmp52) + (K989821441 * tmp50) +
		   (K540640817 * tmp51);
	       tmp57 =
		   tmp1 + (K841253532 * tmp4) + (K415415013 * tmp7) -
		   (K959492973 * tmp16) - (K654860733 * tmp13) -
		   (K142314838 * tmp10);
	       c_re(output[10 * ostride]) = tmp57 - tmp58;
	       c_re(output[ostride]) = tmp57 + tmp58;
	  }
	  tmp56 =
	      (K755749574 * tmp53) + (K909631995 * tmp51) -
	      (K281732556 * tmp50) - (K540640817 * tmp52) -
	      (K989821441 * tmp49);
	  tmp55 =
	      tmp1 + (K415415013 * tmp4) + (K841253532 * tmp16) -
	      (K142314838 * tmp13) - (K959492973 * tmp10) -
	      (K654860733 * tmp7);
	  c_re(output[9 * ostride]) = tmp55 - tmp56;
	  c_re(output[2 * ostride]) = tmp55 + tmp56;
	  {
	       fftw_real tmp60;
	       fftw_real tmp59;
	       fftw_real tmp54;
	       fftw_real tmp48;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp60 =
		   (K540640817 * tmp49) + (K755749574 * tmp52) +
		   (K989821441 * tmp51) - (K909631995 * tmp50) -
		   (K281732556 * tmp53);
	       tmp59 =
		   tmp1 + (K415415013 * tmp10) + (K841253532 * tmp13) -
		   (K654860733 * tmp16) - (K959492973 * tmp7) -
		   (K142314838 * tmp4);
	       c_re(output[8 * ostride]) = tmp59 - tmp60;
	       c_re(output[3 * ostride]) = tmp59 + tmp60;
	       tmp54 =
		   (K281732556 * tmp49) + (K540640817 * tmp50) +
		   (K755749574 * tmp51) - (K909631995 * tmp52) -
		   (K989821441 * tmp53);
	       tmp48 =
		   tmp1 + (K841253532 * tmp10) + (K415415013 * tmp16) -
		   (K959492973 * tmp13) - (K142314838 * tmp7) -
		   (K654860733 * tmp4);
	       c_re(output[7 * ostride]) = tmp48 - tmp54;
	       c_re(output[4 * ostride]) = tmp48 + tmp54;
	  }
	  c_im(output[0]) = tmp23 + tmp38 + tmp35 + tmp26 + tmp29 + tmp32;
	  {
	       fftw_real tmp22;
	       fftw_real tmp39;
	       fftw_real tmp42;
	       fftw_real tmp43;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp22 =
		   (K755749574 * tmp17) + (K540640817 * tmp18) +
		   (K281732556 * tmp19) - (K909631995 * tmp20) -
		   (K989821441 * tmp21);
	       tmp39 =
		   tmp23 + (K415415013 * tmp26) + (K841253532 * tmp29) -
		   (K654860733 * tmp32) - (K959492973 * tmp35) -
		   (K142314838 * tmp38);
	       c_im(output[4 * ostride]) = tmp22 + tmp39;
	       c_im(output[7 * ostride]) = tmp39 - tmp22;
	       tmp42 =
		   (K281732556 * tmp17) + (K755749574 * tmp18) +
		   (K989821441 * tmp20) - (K909631995 * tmp19) -
		   (K540640817 * tmp21);
	       tmp43 =
		   tmp23 + (K841253532 * tmp38) + (K415415013 * tmp35) -
		   (K959492973 * tmp32) - (K654860733 * tmp29) -
		   (K142314838 * tmp26);
	       c_im(output[5 * ostride]) = tmp42 + tmp43;
	       c_im(output[6 * ostride]) = tmp43 - tmp42;
	  }
	  tmp44 =
	      (K540640817 * tmp17) + (K909631995 * tmp21) +
	      (K989821441 * tmp18) + (K755749574 * tmp19) +
	      (K281732556 * tmp20);
	  tmp45 =
	      tmp23 + (K415415013 * tmp38) + (K841253532 * tmp32) -
	      (K142314838 * tmp29) - (K959492973 * tmp26) -
	      (K654860733 * tmp35);
	  c_im(output[ostride]) = tmp44 + tmp45;
	  c_im(output[10 * ostride]) = tmp45 - tmp44;
	  {
	       fftw_real tmp40;
	       fftw_real tmp41;
	       fftw_real tmp46;
	       fftw_real tmp47;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp40 =
		   (K989821441 * tmp17) + (K540640817 * tmp19) +
		   (K755749574 * tmp20) - (K909631995 * tmp18) -
		   (K281732556 * tmp21);
	       tmp41 =
		   tmp23 + (K841253532 * tmp35) + (K415415013 * tmp29) -
		   (K142314838 * tmp32) - (K654860733 * tmp26) -
		   (K959492973 * tmp38);
	       c_im(output[3 * ostride]) = tmp40 + tmp41;
	       c_im(output[8 * ostride]) = tmp41 - tmp40;
	       tmp46 =
		   (K909631995 * tmp17) + (K755749574 * tmp21) -
		   (K540640817 * tmp20) - (K989821441 * tmp19) -
		   (K281732556 * tmp18);
	       tmp47 =
		   tmp23 + (K841253532 * tmp26) + (K415415013 * tmp32) -
		   (K959492973 * tmp29) - (K142314838 * tmp35) -
		   (K654860733 * tmp38);
	       c_im(output[2 * ostride]) = tmp46 + tmp47;
	       c_im(output[9 * ostride]) = tmp47 - tmp46;
	  }
     }
}
コード例 #20
0
ファイル: fftw_threads_test.c プロジェクト: Pinkii-/PCA
void test_in_place(int n, int istride, int howmany, fftw_direction dir,
		   fftw_plan validated_plan, int specific)
{
     fftw_complex *in1, *in2, *out2;
     fftw_plan plan;
     int i, j;
     int flags = measure_flag | wisdom_flag | FFTW_IN_PLACE;

     if (coinflip())
	  flags |= FFTW_THREADSAFE;

     in1 = (fftw_complex *) fftw_malloc(istride * n * sizeof(fftw_complex) * howmany);
     in2 = (fftw_complex *) fftw_malloc(n * sizeof(fftw_complex) * howmany);
     out2 = (fftw_complex *) fftw_malloc(n * sizeof(fftw_complex) * howmany);

     if (!specific)
	  plan = fftw_create_plan(n, dir, flags);
     else
	  plan = fftw_create_plan_specific(n, dir, flags,
					   in1, istride,
					   (fftw_complex *) NULL, 0);

     /* generate random inputs */
     for (i = 0; i < n * howmany; ++i) {
	  c_re(in1[i * istride]) = c_re(in2[i]) = DRAND();
	  c_im(in1[i * istride]) = c_im(in2[i]) = DRAND();
     }

     /* 
      * fill in other positions of the array, to make sure that
      * fftw doesn't overwrite them 
      */
     for (j = 1; j < istride; ++j)
	  for (i = 0; i < n * howmany; ++i) {
	       c_re(in1[i * istride + j]) = i * istride + j;
	       c_im(in1[i * istride + j]) = i * istride - j;
	  }
     CHECK(plan != NULL, "can't create plan");
     WHEN_VERBOSE(2, fftw_print_plan(plan));

     /* fft-ize */
     if (howmany != 1 || istride != 1 || coinflip())
	  fftw_threads(nthreads, plan, howmany, in1, istride, n * istride,
		       (fftw_complex *) NULL, 0, 0);
     else
	  fftw_threads_one(nthreads, plan, in1, NULL);

     fftw_destroy_plan(plan);

     /* check for overwriting */
     for (j = 1; j < istride; ++j)
	  for (i = 0; i < n * howmany; ++i)
	       CHECK(c_re(in1[i * istride + j]) == i * istride + j &&
		     c_im(in1[i * istride + j]) == i * istride - j,
		     "input has been overwritten");

     for (i = 0; i < howmany; ++i) {
	  fftw(validated_plan, 1, in2 + n * i, 1, n, out2 + n * i, 1, n);
     }

     CHECK(compute_error_complex(in1, istride, out2, 1, n * howmany) < TOLERANCE,
	   "test_in_place: wrong answer");
     WHEN_VERBOSE(2, printf("OK\n"));

     fftw_free(in1);
     fftw_free(in2);
     fftw_free(out2);
}
コード例 #21
0
ファイル: fn_12.c プロジェクト: 1suming/pap2
void fftw_no_twiddle_12(const fftw_complex *input, fftw_complex *output,
			int istride, int ostride)
{
     fftw_real tmp5;
     fftw_real tmp53;
     fftw_real tmp36;
     fftw_real tmp28;
     fftw_real tmp35;
     fftw_real tmp54;
     fftw_real tmp10;
     fftw_real tmp56;
     fftw_real tmp39;
     fftw_real tmp33;
     fftw_real tmp38;
     fftw_real tmp57;
     fftw_real tmp16;
     fftw_real tmp42;
     fftw_real tmp72;
     fftw_real tmp45;
     fftw_real tmp92;
     fftw_real tmp75;
     fftw_real tmp21;
     fftw_real tmp47;
     fftw_real tmp77;
     fftw_real tmp50;
     fftw_real tmp93;
     fftw_real tmp80;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp3;
	  fftw_real tmp4;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(input[0]);
	  tmp2 = c_re(input[4 * istride]);
	  tmp3 = c_re(input[8 * istride]);
	  tmp4 = tmp2 + tmp3;
	  tmp5 = tmp1 + tmp4;
	  tmp53 = tmp1 - (K500000000 * tmp4);
	  tmp36 = K866025403 * (tmp3 - tmp2);
     }
     {
	  fftw_real tmp24;
	  fftw_real tmp25;
	  fftw_real tmp26;
	  fftw_real tmp27;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp24 = c_im(input[0]);
	  tmp25 = c_im(input[4 * istride]);
	  tmp26 = c_im(input[8 * istride]);
	  tmp27 = tmp25 + tmp26;
	  tmp28 = tmp24 + tmp27;
	  tmp35 = tmp24 - (K500000000 * tmp27);
	  tmp54 = K866025403 * (tmp25 - tmp26);
     }
     {
	  fftw_real tmp6;
	  fftw_real tmp7;
	  fftw_real tmp8;
	  fftw_real tmp9;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp6 = c_re(input[6 * istride]);
	  tmp7 = c_re(input[10 * istride]);
	  tmp8 = c_re(input[2 * istride]);
	  tmp9 = tmp7 + tmp8;
	  tmp10 = tmp6 + tmp9;
	  tmp56 = tmp6 - (K500000000 * tmp9);
	  tmp39 = K866025403 * (tmp8 - tmp7);
     }
     {
	  fftw_real tmp29;
	  fftw_real tmp30;
	  fftw_real tmp31;
	  fftw_real tmp32;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp29 = c_im(input[6 * istride]);
	  tmp30 = c_im(input[10 * istride]);
	  tmp31 = c_im(input[2 * istride]);
	  tmp32 = tmp30 + tmp31;
	  tmp33 = tmp29 + tmp32;
	  tmp38 = tmp29 - (K500000000 * tmp32);
	  tmp57 = K866025403 * (tmp30 - tmp31);
     }
     {
	  fftw_real tmp12;
	  fftw_real tmp13;
	  fftw_real tmp14;
	  fftw_real tmp15;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp12 = c_re(input[3 * istride]);
	  tmp13 = c_re(input[7 * istride]);
	  tmp14 = c_re(input[11 * istride]);
	  tmp15 = tmp13 + tmp14;
	  tmp16 = tmp12 + tmp15;
	  tmp42 = tmp12 - (K500000000 * tmp15);
	  tmp72 = K866025403 * (tmp14 - tmp13);
     }
     {
	  fftw_real tmp73;
	  fftw_real tmp43;
	  fftw_real tmp44;
	  fftw_real tmp74;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp73 = c_im(input[3 * istride]);
	  tmp43 = c_im(input[7 * istride]);
	  tmp44 = c_im(input[11 * istride]);
	  tmp74 = tmp43 + tmp44;
	  tmp45 = K866025403 * (tmp43 - tmp44);
	  tmp92 = tmp73 + tmp74;
	  tmp75 = tmp73 - (K500000000 * tmp74);
     }
     {
	  fftw_real tmp17;
	  fftw_real tmp18;
	  fftw_real tmp19;
	  fftw_real tmp20;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp17 = c_re(input[9 * istride]);
	  tmp18 = c_re(input[istride]);
	  tmp19 = c_re(input[5 * istride]);
	  tmp20 = tmp18 + tmp19;
	  tmp21 = tmp17 + tmp20;
	  tmp47 = tmp17 - (K500000000 * tmp20);
	  tmp77 = K866025403 * (tmp19 - tmp18);
     }
     {
	  fftw_real tmp78;
	  fftw_real tmp48;
	  fftw_real tmp49;
	  fftw_real tmp79;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp78 = c_im(input[9 * istride]);
	  tmp48 = c_im(input[istride]);
	  tmp49 = c_im(input[5 * istride]);
	  tmp79 = tmp48 + tmp49;
	  tmp50 = K866025403 * (tmp48 - tmp49);
	  tmp93 = tmp78 + tmp79;
	  tmp80 = tmp78 - (K500000000 * tmp79);
     }
     {
	  fftw_real tmp11;
	  fftw_real tmp22;
	  fftw_real tmp23;
	  fftw_real tmp34;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp11 = tmp5 + tmp10;
	  tmp22 = tmp16 + tmp21;
	  c_re(output[6 * ostride]) = tmp11 - tmp22;
	  c_re(output[0]) = tmp11 + tmp22;
	  {
	       fftw_real tmp91;
	       fftw_real tmp94;
	       fftw_real tmp95;
	       fftw_real tmp96;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp91 = tmp5 - tmp10;
	       tmp94 = tmp92 - tmp93;
	       c_re(output[3 * ostride]) = tmp91 - tmp94;
	       c_re(output[9 * ostride]) = tmp91 + tmp94;
	       tmp95 = tmp28 + tmp33;
	       tmp96 = tmp92 + tmp93;
	       c_im(output[6 * ostride]) = tmp95 - tmp96;
	       c_im(output[0]) = tmp95 + tmp96;
	  }
	  tmp23 = tmp16 - tmp21;
	  tmp34 = tmp28 - tmp33;
	  c_im(output[3 * ostride]) = tmp23 + tmp34;
	  c_im(output[9 * ostride]) = tmp34 - tmp23;
	  {
	       fftw_real tmp63;
	       fftw_real tmp83;
	       fftw_real tmp82;
	       fftw_real tmp84;
	       fftw_real tmp66;
	       fftw_real tmp70;
	       fftw_real tmp69;
	       fftw_real tmp71;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp61;
		    fftw_real tmp62;
		    fftw_real tmp76;
		    fftw_real tmp81;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp61 = tmp36 + tmp35;
		    tmp62 = tmp39 + tmp38;
		    tmp63 = tmp61 - tmp62;
		    tmp83 = tmp61 + tmp62;
		    tmp76 = tmp72 + tmp75;
		    tmp81 = tmp77 + tmp80;
		    tmp82 = tmp76 - tmp81;
		    tmp84 = tmp76 + tmp81;
	       }
	       {
		    fftw_real tmp64;
		    fftw_real tmp65;
		    fftw_real tmp67;
		    fftw_real tmp68;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp64 = tmp42 + tmp45;
		    tmp65 = tmp47 + tmp50;
		    tmp66 = tmp64 - tmp65;
		    tmp70 = tmp64 + tmp65;
		    tmp67 = tmp53 + tmp54;
		    tmp68 = tmp56 + tmp57;
		    tmp69 = tmp67 + tmp68;
		    tmp71 = tmp67 - tmp68;
	       }
	       c_im(output[ostride]) = tmp63 - tmp66;
	       c_im(output[7 * ostride]) = tmp63 + tmp66;
	       c_re(output[10 * ostride]) = tmp69 - tmp70;
	       c_re(output[4 * ostride]) = tmp69 + tmp70;
	       c_re(output[7 * ostride]) = tmp71 - tmp82;
	       c_re(output[ostride]) = tmp71 + tmp82;
	       c_im(output[10 * ostride]) = tmp83 - tmp84;
	       c_im(output[4 * ostride]) = tmp83 + tmp84;
	  }
	  {
	       fftw_real tmp41;
	       fftw_real tmp89;
	       fftw_real tmp88;
	       fftw_real tmp90;
	       fftw_real tmp52;
	       fftw_real tmp60;
	       fftw_real tmp59;
	       fftw_real tmp85;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp37;
		    fftw_real tmp40;
		    fftw_real tmp86;
		    fftw_real tmp87;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp37 = tmp35 - tmp36;
		    tmp40 = tmp38 - tmp39;
		    tmp41 = tmp37 - tmp40;
		    tmp89 = tmp37 + tmp40;
		    tmp86 = tmp75 - tmp72;
		    tmp87 = tmp80 - tmp77;
		    tmp88 = tmp86 - tmp87;
		    tmp90 = tmp86 + tmp87;
	       }
	       {
		    fftw_real tmp46;
		    fftw_real tmp51;
		    fftw_real tmp55;
		    fftw_real tmp58;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp46 = tmp42 - tmp45;
		    tmp51 = tmp47 - tmp50;
		    tmp52 = tmp46 - tmp51;
		    tmp60 = tmp46 + tmp51;
		    tmp55 = tmp53 - tmp54;
		    tmp58 = tmp56 - tmp57;
		    tmp59 = tmp55 + tmp58;
		    tmp85 = tmp55 - tmp58;
	       }
	       c_im(output[5 * ostride]) = tmp41 - tmp52;
	       c_im(output[11 * ostride]) = tmp41 + tmp52;
	       c_re(output[2 * ostride]) = tmp59 - tmp60;
	       c_re(output[8 * ostride]) = tmp59 + tmp60;
	       c_re(output[11 * ostride]) = tmp85 - tmp88;
	       c_re(output[5 * ostride]) = tmp85 + tmp88;
	       c_im(output[2 * ostride]) = tmp89 - tmp90;
	       c_im(output[8 * ostride]) = tmp89 + tmp90;
	  }
     }
}
コード例 #22
0
ファイル: fftw_threads_test.c プロジェクト: Pinkii-/PCA
void zero_arr(int n, fftw_complex * a)
{
     int i;
     for (i = 0; i < n; ++i)
	  c_re(a[i]) = c_im(a[i]) = 0.0;
}
コード例 #23
0
void fftw_hc2hc_backward_4(fftw_real *A, const fftw_complex *W,
			   int iostride, int m, int dist)
{
     int i;
     fftw_real *X;
     fftw_real *Y;
     X = A;
     Y = A + (4 * iostride);
     {
	  fftw_real tmp39;
	  fftw_real tmp42;
	  fftw_real tmp37;
	  fftw_real tmp40;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp38;
	       fftw_real tmp41;
	       fftw_real tmp35;
	       fftw_real tmp36;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp38 = X[iostride];
	       tmp39 = K2_000000000 * tmp38;
	       tmp41 = Y[-iostride];
	       tmp42 = K2_000000000 * tmp41;
	       tmp35 = X[0];
	       tmp36 = X[2 * iostride];
	       tmp37 = tmp35 + tmp36;
	       tmp40 = tmp35 - tmp36;
	  }
	  X[2 * iostride] = tmp37 - tmp39;
	  X[0] = tmp37 + tmp39;
	  X[3 * iostride] = tmp40 + tmp42;
	  X[iostride] = tmp40 - tmp42;
     }
     X = X + dist;
     Y = Y - dist;
     for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 3) {
	  fftw_real tmp9;
	  fftw_real tmp28;
	  fftw_real tmp18;
	  fftw_real tmp25;
	  fftw_real tmp12;
	  fftw_real tmp24;
	  fftw_real tmp21;
	  fftw_real tmp29;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp7;
	       fftw_real tmp8;
	       fftw_real tmp16;
	       fftw_real tmp17;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp7 = X[0];
	       tmp8 = Y[-2 * iostride];
	       tmp9 = tmp7 + tmp8;
	       tmp28 = tmp7 - tmp8;
	       tmp16 = Y[0];
	       tmp17 = X[2 * iostride];
	       tmp18 = tmp16 - tmp17;
	       tmp25 = tmp16 + tmp17;
	  }
	  {
	       fftw_real tmp10;
	       fftw_real tmp11;
	       fftw_real tmp19;
	       fftw_real tmp20;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp10 = X[iostride];
	       tmp11 = Y[-3 * iostride];
	       tmp12 = tmp10 + tmp11;
	       tmp24 = tmp10 - tmp11;
	       tmp19 = Y[-iostride];
	       tmp20 = X[3 * iostride];
	       tmp21 = tmp19 - tmp20;
	       tmp29 = tmp19 + tmp20;
	  }
	  X[0] = tmp9 + tmp12;
	  {
	       fftw_real tmp14;
	       fftw_real tmp22;
	       fftw_real tmp13;
	       fftw_real tmp15;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp14 = tmp9 - tmp12;
	       tmp22 = tmp18 - tmp21;
	       tmp13 = c_re(W[1]);
	       tmp15 = c_im(W[1]);
	       X[2 * iostride] = (tmp13 * tmp14) + (tmp15 * tmp22);
	       Y[-iostride] = (tmp13 * tmp22) - (tmp15 * tmp14);
	  }
	  Y[-3 * iostride] = tmp18 + tmp21;
	  {
	       fftw_real tmp26;
	       fftw_real tmp30;
	       fftw_real tmp23;
	       fftw_real tmp27;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp26 = tmp24 + tmp25;
	       tmp30 = tmp28 - tmp29;
	       tmp23 = c_re(W[0]);
	       tmp27 = c_im(W[0]);
	       Y[-2 * iostride] = (tmp23 * tmp26) - (tmp27 * tmp30);
	       X[iostride] = (tmp27 * tmp26) + (tmp23 * tmp30);
	  }
	  {
	       fftw_real tmp32;
	       fftw_real tmp34;
	       fftw_real tmp31;
	       fftw_real tmp33;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp32 = tmp25 - tmp24;
	       tmp34 = tmp28 + tmp29;
	       tmp31 = c_re(W[2]);
	       tmp33 = c_im(W[2]);
	       Y[0] = (tmp31 * tmp32) - (tmp33 * tmp34);
	       X[3 * iostride] = (tmp33 * tmp32) + (tmp31 * tmp34);
	  }
     }
     if (i == m) {
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp3;
	  fftw_real tmp4;
	  fftw_real tmp5;
	  fftw_real tmp6;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = X[0];
	  tmp2 = X[iostride];
	  tmp3 = tmp1 - tmp2;
	  tmp4 = Y[0];
	  tmp5 = Y[-iostride];
	  tmp6 = tmp4 + tmp5;
	  X[0] = K2_000000000 * (tmp1 + tmp2);
	  X[2 * iostride] = -(K2_000000000 * (tmp4 - tmp5));
	  X[iostride] = K1_414213562 * (tmp3 - tmp6);
	  X[3 * iostride] = -(K1_414213562 * (tmp3 + tmp6));
     }
}
コード例 #24
0
ファイル: fftw_threads_test.c プロジェクト: Pinkii-/PCA
void testnd_in_place(int rank, int *n, fftw_direction dir,
		     fftwnd_plan validated_plan,
		     int alternate_api, int specific, int force_buffered)
{
     int istride;
     int N, dim, i;
     fftw_complex *in1, *in2, *out2;
     fftwnd_plan p;
     int flags = measure_flag | wisdom_flag | FFTW_IN_PLACE;

     if (coinflip())
	  flags |= FFTW_THREADSAFE;

     if (force_buffered)
	  flags |= FFTWND_FORCE_BUFFERED;

     N = 1;
     for (dim = 0; dim < rank; ++dim)
	  N *= n[dim];

     in1 = (fftw_complex *) fftw_malloc(N * MAX_STRIDE * sizeof(fftw_complex));
     in2 = (fftw_complex *) fftw_malloc(N * sizeof(fftw_complex));
     out2 = (fftw_complex *) fftw_malloc(N * sizeof(fftw_complex));

     if (!specific) {
	  if (alternate_api && (rank == 2 || rank == 3)) {
	       if (rank == 2)
		    p = fftw2d_create_plan(n[0], n[1], dir, flags);
	       else
		    p = fftw3d_create_plan(n[0], n[1], n[2], dir, flags);
	  } else		/* standard api */
	       p = fftwnd_create_plan(rank, n, dir, flags);
     } else {			/* specific plan creation */
	  if (alternate_api && (rank == 2 || rank == 3)) {
	       if (rank == 2)
		    p = fftw2d_create_plan_specific(n[0], n[1], dir, flags,
						    in1, 1,
					       (fftw_complex *) NULL, 1);
	       else
		    p = fftw3d_create_plan_specific(n[0], n[1], n[2], dir, flags,
						    in1, 1,
					       (fftw_complex *) NULL, 1);
	  } else		/* standard api */
	       p = fftwnd_create_plan_specific(rank, n, dir, flags,
					       in1, 1,
					       (fftw_complex *) NULL, 1);

     }

     for (istride = 1; istride <= MAX_STRIDE; ++istride) {
	  /* 
	   * generate random inputs */
	  for (i = 0; i < N; ++i) {
	       int j;
	       c_re(in2[i]) = DRAND();
	       c_im(in2[i]) = DRAND();
	       for (j = 0; j < istride; ++j) {
		    c_re(in1[i * istride + j]) = c_re(in2[i]);
		    c_im(in1[i * istride + j]) = c_im(in2[i]);
	       }
	  }

	  if (istride != 1 || istride != 1 || coinflip())
	       fftwnd_threads(nthreads, p, istride, in1, istride, 1,
			      (fftw_complex *) NULL, 1, 1);
	  else
	       fftwnd_threads_one(nthreads, p, in1, NULL);

	  fftwnd(validated_plan, 1, in2, 1, 1, out2, 1, 1);

	  for (i = 0; i < istride; ++i)
	       CHECK(compute_error_complex(in1 + i, istride, out2, 1, N) < TOLERANCE,
		     "testnd_in_place: wrong answer");
     }

     fftwnd_destroy_plan(p);

     fftw_free(out2);
     fftw_free(in2);
     fftw_free(in1);
}
コード例 #25
0
ファイル: ftwi_16.c プロジェクト: LuaDist/im
void fftwi_twiddle_16(fftw_complex *A, const fftw_complex *W, int iostride,
		      int m, int dist)
{
     int i;
     fftw_complex *inout;
     inout = A;
     for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 15) {
	  fftw_real tmp7;
	  fftw_real tmp91;
	  fftw_real tmp180;
	  fftw_real tmp194;
	  fftw_real tmp18;
	  fftw_real tmp193;
	  fftw_real tmp94;
	  fftw_real tmp177;
	  fftw_real tmp77;
	  fftw_real tmp88;
	  fftw_real tmp161;
	  fftw_real tmp117;
	  fftw_real tmp141;
	  fftw_real tmp162;
	  fftw_real tmp163;
	  fftw_real tmp164;
	  fftw_real tmp112;
	  fftw_real tmp140;
	  fftw_real tmp30;
	  fftw_real tmp153;
	  fftw_real tmp100;
	  fftw_real tmp137;
	  fftw_real tmp41;
	  fftw_real tmp152;
	  fftw_real tmp105;
	  fftw_real tmp136;
	  fftw_real tmp54;
	  fftw_real tmp65;
	  fftw_real tmp156;
	  fftw_real tmp128;
	  fftw_real tmp144;
	  fftw_real tmp157;
	  fftw_real tmp158;
	  fftw_real tmp159;
	  fftw_real tmp123;
	  fftw_real tmp143;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp1;
	       fftw_real tmp179;
	       fftw_real tmp6;
	       fftw_real tmp178;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp1 = c_re(inout[0]);
	       tmp179 = c_im(inout[0]);
	       {
		    fftw_real tmp3;
		    fftw_real tmp5;
		    fftw_real tmp2;
		    fftw_real tmp4;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp3 = c_re(inout[8 * iostride]);
		    tmp5 = c_im(inout[8 * iostride]);
		    tmp2 = c_re(W[7]);
		    tmp4 = c_im(W[7]);
		    tmp6 = (tmp2 * tmp3) + (tmp4 * tmp5);
		    tmp178 = (tmp2 * tmp5) - (tmp4 * tmp3);
	       }
	       tmp7 = tmp1 + tmp6;
	       tmp91 = tmp1 - tmp6;
	       tmp180 = tmp178 + tmp179;
	       tmp194 = tmp179 - tmp178;
	  }
	  {
	       fftw_real tmp12;
	       fftw_real tmp92;
	       fftw_real tmp17;
	       fftw_real tmp93;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp9;
		    fftw_real tmp11;
		    fftw_real tmp8;
		    fftw_real tmp10;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp9 = c_re(inout[4 * iostride]);
		    tmp11 = c_im(inout[4 * iostride]);
		    tmp8 = c_re(W[3]);
		    tmp10 = c_im(W[3]);
		    tmp12 = (tmp8 * tmp9) + (tmp10 * tmp11);
		    tmp92 = (tmp8 * tmp11) - (tmp10 * tmp9);
	       }
	       {
		    fftw_real tmp14;
		    fftw_real tmp16;
		    fftw_real tmp13;
		    fftw_real tmp15;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp14 = c_re(inout[12 * iostride]);
		    tmp16 = c_im(inout[12 * iostride]);
		    tmp13 = c_re(W[11]);
		    tmp15 = c_im(W[11]);
		    tmp17 = (tmp13 * tmp14) + (tmp15 * tmp16);
		    tmp93 = (tmp13 * tmp16) - (tmp15 * tmp14);
	       }
	       tmp18 = tmp12 + tmp17;
	       tmp193 = tmp12 - tmp17;
	       tmp94 = tmp92 - tmp93;
	       tmp177 = tmp92 + tmp93;
	  }
	  {
	       fftw_real tmp71;
	       fftw_real tmp108;
	       fftw_real tmp87;
	       fftw_real tmp115;
	       fftw_real tmp76;
	       fftw_real tmp109;
	       fftw_real tmp82;
	       fftw_real tmp114;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp68;
		    fftw_real tmp70;
		    fftw_real tmp67;
		    fftw_real tmp69;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp68 = c_re(inout[15 * iostride]);
		    tmp70 = c_im(inout[15 * iostride]);
		    tmp67 = c_re(W[14]);
		    tmp69 = c_im(W[14]);
		    tmp71 = (tmp67 * tmp68) + (tmp69 * tmp70);
		    tmp108 = (tmp67 * tmp70) - (tmp69 * tmp68);
	       }
	       {
		    fftw_real tmp84;
		    fftw_real tmp86;
		    fftw_real tmp83;
		    fftw_real tmp85;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp84 = c_re(inout[11 * iostride]);
		    tmp86 = c_im(inout[11 * iostride]);
		    tmp83 = c_re(W[10]);
		    tmp85 = c_im(W[10]);
		    tmp87 = (tmp83 * tmp84) + (tmp85 * tmp86);
		    tmp115 = (tmp83 * tmp86) - (tmp85 * tmp84);
	       }
	       {
		    fftw_real tmp73;
		    fftw_real tmp75;
		    fftw_real tmp72;
		    fftw_real tmp74;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp73 = c_re(inout[7 * iostride]);
		    tmp75 = c_im(inout[7 * iostride]);
		    tmp72 = c_re(W[6]);
		    tmp74 = c_im(W[6]);
		    tmp76 = (tmp72 * tmp73) + (tmp74 * tmp75);
		    tmp109 = (tmp72 * tmp75) - (tmp74 * tmp73);
	       }
	       {
		    fftw_real tmp79;
		    fftw_real tmp81;
		    fftw_real tmp78;
		    fftw_real tmp80;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp79 = c_re(inout[3 * iostride]);
		    tmp81 = c_im(inout[3 * iostride]);
		    tmp78 = c_re(W[2]);
		    tmp80 = c_im(W[2]);
		    tmp82 = (tmp78 * tmp79) + (tmp80 * tmp81);
		    tmp114 = (tmp78 * tmp81) - (tmp80 * tmp79);
	       }
	       {
		    fftw_real tmp113;
		    fftw_real tmp116;
		    fftw_real tmp110;
		    fftw_real tmp111;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp77 = tmp71 + tmp76;
		    tmp88 = tmp82 + tmp87;
		    tmp161 = tmp77 - tmp88;
		    tmp113 = tmp71 - tmp76;
		    tmp116 = tmp114 - tmp115;
		    tmp117 = tmp113 - tmp116;
		    tmp141 = tmp113 + tmp116;
		    tmp162 = tmp108 + tmp109;
		    tmp163 = tmp114 + tmp115;
		    tmp164 = tmp162 - tmp163;
		    tmp110 = tmp108 - tmp109;
		    tmp111 = tmp82 - tmp87;
		    tmp112 = tmp110 + tmp111;
		    tmp140 = tmp110 - tmp111;
	       }
	  }
	  {
	       fftw_real tmp24;
	       fftw_real tmp97;
	       fftw_real tmp29;
	       fftw_real tmp98;
	       fftw_real tmp96;
	       fftw_real tmp99;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp21;
		    fftw_real tmp23;
		    fftw_real tmp20;
		    fftw_real tmp22;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp21 = c_re(inout[2 * iostride]);
		    tmp23 = c_im(inout[2 * iostride]);
		    tmp20 = c_re(W[1]);
		    tmp22 = c_im(W[1]);
		    tmp24 = (tmp20 * tmp21) + (tmp22 * tmp23);
		    tmp97 = (tmp20 * tmp23) - (tmp22 * tmp21);
	       }
	       {
		    fftw_real tmp26;
		    fftw_real tmp28;
		    fftw_real tmp25;
		    fftw_real tmp27;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp26 = c_re(inout[10 * iostride]);
		    tmp28 = c_im(inout[10 * iostride]);
		    tmp25 = c_re(W[9]);
		    tmp27 = c_im(W[9]);
		    tmp29 = (tmp25 * tmp26) + (tmp27 * tmp28);
		    tmp98 = (tmp25 * tmp28) - (tmp27 * tmp26);
	       }
	       tmp30 = tmp24 + tmp29;
	       tmp153 = tmp97 + tmp98;
	       tmp96 = tmp24 - tmp29;
	       tmp99 = tmp97 - tmp98;
	       tmp100 = tmp96 - tmp99;
	       tmp137 = tmp96 + tmp99;
	  }
	  {
	       fftw_real tmp35;
	       fftw_real tmp102;
	       fftw_real tmp40;
	       fftw_real tmp103;
	       fftw_real tmp101;
	       fftw_real tmp104;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp32;
		    fftw_real tmp34;
		    fftw_real tmp31;
		    fftw_real tmp33;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp32 = c_re(inout[14 * iostride]);
		    tmp34 = c_im(inout[14 * iostride]);
		    tmp31 = c_re(W[13]);
		    tmp33 = c_im(W[13]);
		    tmp35 = (tmp31 * tmp32) + (tmp33 * tmp34);
		    tmp102 = (tmp31 * tmp34) - (tmp33 * tmp32);
	       }
	       {
		    fftw_real tmp37;
		    fftw_real tmp39;
		    fftw_real tmp36;
		    fftw_real tmp38;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp37 = c_re(inout[6 * iostride]);
		    tmp39 = c_im(inout[6 * iostride]);
		    tmp36 = c_re(W[5]);
		    tmp38 = c_im(W[5]);
		    tmp40 = (tmp36 * tmp37) + (tmp38 * tmp39);
		    tmp103 = (tmp36 * tmp39) - (tmp38 * tmp37);
	       }
	       tmp41 = tmp35 + tmp40;
	       tmp152 = tmp102 + tmp103;
	       tmp101 = tmp35 - tmp40;
	       tmp104 = tmp102 - tmp103;
	       tmp105 = tmp101 + tmp104;
	       tmp136 = tmp104 - tmp101;
	  }
	  {
	       fftw_real tmp48;
	       fftw_real tmp119;
	       fftw_real tmp64;
	       fftw_real tmp126;
	       fftw_real tmp53;
	       fftw_real tmp120;
	       fftw_real tmp59;
	       fftw_real tmp125;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp45;
		    fftw_real tmp47;
		    fftw_real tmp44;
		    fftw_real tmp46;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp45 = c_re(inout[iostride]);
		    tmp47 = c_im(inout[iostride]);
		    tmp44 = c_re(W[0]);
		    tmp46 = c_im(W[0]);
		    tmp48 = (tmp44 * tmp45) + (tmp46 * tmp47);
		    tmp119 = (tmp44 * tmp47) - (tmp46 * tmp45);
	       }
	       {
		    fftw_real tmp61;
		    fftw_real tmp63;
		    fftw_real tmp60;
		    fftw_real tmp62;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp61 = c_re(inout[13 * iostride]);
		    tmp63 = c_im(inout[13 * iostride]);
		    tmp60 = c_re(W[12]);
		    tmp62 = c_im(W[12]);
		    tmp64 = (tmp60 * tmp61) + (tmp62 * tmp63);
		    tmp126 = (tmp60 * tmp63) - (tmp62 * tmp61);
	       }
	       {
		    fftw_real tmp50;
		    fftw_real tmp52;
		    fftw_real tmp49;
		    fftw_real tmp51;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp50 = c_re(inout[9 * iostride]);
		    tmp52 = c_im(inout[9 * iostride]);
		    tmp49 = c_re(W[8]);
		    tmp51 = c_im(W[8]);
		    tmp53 = (tmp49 * tmp50) + (tmp51 * tmp52);
		    tmp120 = (tmp49 * tmp52) - (tmp51 * tmp50);
	       }
	       {
		    fftw_real tmp56;
		    fftw_real tmp58;
		    fftw_real tmp55;
		    fftw_real tmp57;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp56 = c_re(inout[5 * iostride]);
		    tmp58 = c_im(inout[5 * iostride]);
		    tmp55 = c_re(W[4]);
		    tmp57 = c_im(W[4]);
		    tmp59 = (tmp55 * tmp56) + (tmp57 * tmp58);
		    tmp125 = (tmp55 * tmp58) - (tmp57 * tmp56);
	       }
	       {
		    fftw_real tmp124;
		    fftw_real tmp127;
		    fftw_real tmp121;
		    fftw_real tmp122;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp54 = tmp48 + tmp53;
		    tmp65 = tmp59 + tmp64;
		    tmp156 = tmp54 - tmp65;
		    tmp124 = tmp48 - tmp53;
		    tmp127 = tmp125 - tmp126;
		    tmp128 = tmp124 - tmp127;
		    tmp144 = tmp124 + tmp127;
		    tmp157 = tmp119 + tmp120;
		    tmp158 = tmp125 + tmp126;
		    tmp159 = tmp157 - tmp158;
		    tmp121 = tmp119 - tmp120;
		    tmp122 = tmp59 - tmp64;
		    tmp123 = tmp121 + tmp122;
		    tmp143 = tmp121 - tmp122;
	       }
	  }
	  {
	       fftw_real tmp107;
	       fftw_real tmp131;
	       fftw_real tmp196;
	       fftw_real tmp198;
	       fftw_real tmp130;
	       fftw_real tmp191;
	       fftw_real tmp134;
	       fftw_real tmp197;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp95;
		    fftw_real tmp106;
		    fftw_real tmp192;
		    fftw_real tmp195;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp95 = tmp91 - tmp94;
		    tmp106 = K707106781 * (tmp100 + tmp105);
		    tmp107 = tmp95 - tmp106;
		    tmp131 = tmp95 + tmp106;
		    tmp192 = K707106781 * (tmp137 + tmp136);
		    tmp195 = tmp193 + tmp194;
		    tmp196 = tmp192 + tmp195;
		    tmp198 = tmp195 - tmp192;
	       }
	       {
		    fftw_real tmp118;
		    fftw_real tmp129;
		    fftw_real tmp132;
		    fftw_real tmp133;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp118 = (K923879532 * tmp112) - (K382683432 * tmp117);
		    tmp129 = (K923879532 * tmp123) + (K382683432 * tmp128);
		    tmp130 = tmp118 - tmp129;
		    tmp191 = tmp129 + tmp118;
		    tmp132 = (K923879532 * tmp128) - (K382683432 * tmp123);
		    tmp133 = (K382683432 * tmp112) + (K923879532 * tmp117);
		    tmp134 = tmp132 + tmp133;
		    tmp197 = tmp132 - tmp133;
	       }
	       c_re(inout[13 * iostride]) = tmp107 - tmp130;
	       c_re(inout[5 * iostride]) = tmp107 + tmp130;
	       c_re(inout[9 * iostride]) = tmp131 - tmp134;
	       c_re(inout[iostride]) = tmp131 + tmp134;
	       c_im(inout[iostride]) = tmp191 + tmp196;
	       c_im(inout[9 * iostride]) = tmp196 - tmp191;
	       c_im(inout[5 * iostride]) = tmp197 + tmp198;
	       c_im(inout[13 * iostride]) = tmp198 - tmp197;
	  }
	  {
	       fftw_real tmp139;
	       fftw_real tmp147;
	       fftw_real tmp202;
	       fftw_real tmp204;
	       fftw_real tmp146;
	       fftw_real tmp199;
	       fftw_real tmp150;
	       fftw_real tmp203;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp135;
		    fftw_real tmp138;
		    fftw_real tmp200;
		    fftw_real tmp201;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp135 = tmp91 + tmp94;
		    tmp138 = K707106781 * (tmp136 - tmp137);
		    tmp139 = tmp135 - tmp138;
		    tmp147 = tmp135 + tmp138;
		    tmp200 = K707106781 * (tmp100 - tmp105);
		    tmp201 = tmp194 - tmp193;
		    tmp202 = tmp200 + tmp201;
		    tmp204 = tmp201 - tmp200;
	       }
	       {
		    fftw_real tmp142;
		    fftw_real tmp145;
		    fftw_real tmp148;
		    fftw_real tmp149;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp142 = (K382683432 * tmp140) - (K923879532 * tmp141);
		    tmp145 = (K382683432 * tmp143) + (K923879532 * tmp144);
		    tmp146 = tmp142 - tmp145;
		    tmp199 = tmp145 + tmp142;
		    tmp148 = (K382683432 * tmp144) - (K923879532 * tmp143);
		    tmp149 = (K923879532 * tmp140) + (K382683432 * tmp141);
		    tmp150 = tmp148 + tmp149;
		    tmp203 = tmp148 - tmp149;
	       }
	       c_re(inout[15 * iostride]) = tmp139 - tmp146;
	       c_re(inout[7 * iostride]) = tmp139 + tmp146;
	       c_re(inout[11 * iostride]) = tmp147 - tmp150;
	       c_re(inout[3 * iostride]) = tmp147 + tmp150;
	       c_im(inout[3 * iostride]) = tmp199 + tmp202;
	       c_im(inout[11 * iostride]) = tmp202 - tmp199;
	       c_im(inout[7 * iostride]) = tmp203 + tmp204;
	       c_im(inout[15 * iostride]) = tmp204 - tmp203;
	  }
	  {
	       fftw_real tmp155;
	       fftw_real tmp167;
	       fftw_real tmp188;
	       fftw_real tmp190;
	       fftw_real tmp166;
	       fftw_real tmp189;
	       fftw_real tmp170;
	       fftw_real tmp185;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp151;
		    fftw_real tmp154;
		    fftw_real tmp186;
		    fftw_real tmp187;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp151 = tmp7 - tmp18;
		    tmp154 = tmp152 - tmp153;
		    tmp155 = tmp151 + tmp154;
		    tmp167 = tmp151 - tmp154;
		    tmp186 = tmp30 - tmp41;
		    tmp187 = tmp180 - tmp177;
		    tmp188 = tmp186 + tmp187;
		    tmp190 = tmp187 - tmp186;
	       }
	       {
		    fftw_real tmp160;
		    fftw_real tmp165;
		    fftw_real tmp168;
		    fftw_real tmp169;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp160 = tmp156 - tmp159;
		    tmp165 = tmp161 + tmp164;
		    tmp166 = K707106781 * (tmp160 + tmp165);
		    tmp189 = K707106781 * (tmp160 - tmp165);
		    tmp168 = tmp164 - tmp161;
		    tmp169 = tmp156 + tmp159;
		    tmp170 = K707106781 * (tmp168 - tmp169);
		    tmp185 = K707106781 * (tmp169 + tmp168);
	       }
	       c_re(inout[10 * iostride]) = tmp155 - tmp166;
	       c_re(inout[2 * iostride]) = tmp155 + tmp166;
	       c_re(inout[14 * iostride]) = tmp167 - tmp170;
	       c_re(inout[6 * iostride]) = tmp167 + tmp170;
	       c_im(inout[2 * iostride]) = tmp185 + tmp188;
	       c_im(inout[10 * iostride]) = tmp188 - tmp185;
	       c_im(inout[6 * iostride]) = tmp189 + tmp190;
	       c_im(inout[14 * iostride]) = tmp190 - tmp189;
	  }
	  {
	       fftw_real tmp43;
	       fftw_real tmp171;
	       fftw_real tmp182;
	       fftw_real tmp184;
	       fftw_real tmp90;
	       fftw_real tmp183;
	       fftw_real tmp174;
	       fftw_real tmp175;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp19;
		    fftw_real tmp42;
		    fftw_real tmp176;
		    fftw_real tmp181;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp19 = tmp7 + tmp18;
		    tmp42 = tmp30 + tmp41;
		    tmp43 = tmp19 + tmp42;
		    tmp171 = tmp19 - tmp42;
		    tmp176 = tmp153 + tmp152;
		    tmp181 = tmp177 + tmp180;
		    tmp182 = tmp176 + tmp181;
		    tmp184 = tmp181 - tmp176;
	       }
	       {
		    fftw_real tmp66;
		    fftw_real tmp89;
		    fftw_real tmp172;
		    fftw_real tmp173;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp66 = tmp54 + tmp65;
		    tmp89 = tmp77 + tmp88;
		    tmp90 = tmp66 + tmp89;
		    tmp183 = tmp66 - tmp89;
		    tmp172 = tmp162 + tmp163;
		    tmp173 = tmp157 + tmp158;
		    tmp174 = tmp172 - tmp173;
		    tmp175 = tmp173 + tmp172;
	       }
	       c_re(inout[8 * iostride]) = tmp43 - tmp90;
	       c_re(inout[0]) = tmp43 + tmp90;
	       c_re(inout[12 * iostride]) = tmp171 - tmp174;
	       c_re(inout[4 * iostride]) = tmp171 + tmp174;
	       c_im(inout[0]) = tmp175 + tmp182;
	       c_im(inout[8 * iostride]) = tmp182 - tmp175;
	       c_im(inout[4 * iostride]) = tmp183 + tmp184;
	       c_im(inout[12 * iostride]) = tmp184 - tmp183;
	  }
     }
}
コード例 #26
0
ファイル: fn_10.cpp プロジェクト: xiangliu/QSceneEdit
void fftw_no_twiddle_10(const fftw_complex *input, fftw_complex *output, int istride, int ostride)
{
     fftw_real tmp3;
     fftw_real tmp19;
     fftw_real tmp52;
     fftw_real tmp76;
     fftw_real tmp56;
     fftw_real tmp57;
     fftw_real tmp10;
     fftw_real tmp17;
     fftw_real tmp18;
     fftw_real tmp74;
     fftw_real tmp73;
     fftw_real tmp22;
     fftw_real tmp25;
     fftw_real tmp26;
     fftw_real tmp36;
     fftw_real tmp43;
     fftw_real tmp47;
     fftw_real tmp48;
     fftw_real tmp53;
     fftw_real tmp66;
     fftw_real tmp69;
     fftw_real tmp77;
     fftw_real tmp78;
     fftw_real tmp79;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp50;
	  fftw_real tmp51;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(input[0]);
	  tmp2 = c_re(input[5 * istride]);
	  tmp3 = tmp1 - tmp2;
	  tmp19 = tmp1 + tmp2;
	  tmp50 = c_im(input[0]);
	  tmp51 = c_im(input[5 * istride]);
	  tmp52 = tmp50 - tmp51;
	  tmp76 = tmp50 + tmp51;
     }
     {
	  fftw_real tmp6;
	  fftw_real tmp20;
	  fftw_real tmp16;
	  fftw_real tmp24;
	  fftw_real tmp9;
	  fftw_real tmp21;
	  fftw_real tmp13;
	  fftw_real tmp23;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp4;
	       fftw_real tmp5;
	       fftw_real tmp14;
	       fftw_real tmp15;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp4 = c_re(input[2 * istride]);
	       tmp5 = c_re(input[7 * istride]);
	       tmp6 = tmp4 - tmp5;
	       tmp20 = tmp4 + tmp5;
	       tmp14 = c_re(input[6 * istride]);
	       tmp15 = c_re(input[istride]);
	       tmp16 = tmp14 - tmp15;
	       tmp24 = tmp14 + tmp15;
	  }
	  {
	       fftw_real tmp7;
	       fftw_real tmp8;
	       fftw_real tmp11;
	       fftw_real tmp12;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp7 = c_re(input[8 * istride]);
	       tmp8 = c_re(input[3 * istride]);
	       tmp9 = tmp7 - tmp8;
	       tmp21 = tmp7 + tmp8;
	       tmp11 = c_re(input[4 * istride]);
	       tmp12 = c_re(input[9 * istride]);
	       tmp13 = tmp11 - tmp12;
	       tmp23 = tmp11 + tmp12;
	  }
	  tmp56 = tmp6 - tmp9;
	  tmp57 = tmp13 - tmp16;
	  tmp10 = tmp6 + tmp9;
	  tmp17 = tmp13 + tmp16;
	  tmp18 = tmp10 + tmp17;
	  tmp74 = tmp20 - tmp21;
	  tmp73 = tmp23 - tmp24;
	  tmp22 = tmp20 + tmp21;
	  tmp25 = tmp23 + tmp24;
	  tmp26 = tmp22 + tmp25;
     }
     {
	  fftw_real tmp32;
	  fftw_real tmp67;
	  fftw_real tmp42;
	  fftw_real tmp65;
	  fftw_real tmp35;
	  fftw_real tmp68;
	  fftw_real tmp39;
	  fftw_real tmp64;
	  ASSERT_ALIGNED_DOUBLE;
	  {
	       fftw_real tmp30;
	       fftw_real tmp31;
	       fftw_real tmp40;
	       fftw_real tmp41;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp30 = c_im(input[2 * istride]);
	       tmp31 = c_im(input[7 * istride]);
	       tmp32 = tmp30 - tmp31;
	       tmp67 = tmp30 + tmp31;
	       tmp40 = c_im(input[6 * istride]);
	       tmp41 = c_im(input[istride]);
	       tmp42 = tmp40 - tmp41;
	       tmp65 = tmp40 + tmp41;
	  }
	  {
	       fftw_real tmp33;
	       fftw_real tmp34;
	       fftw_real tmp37;
	       fftw_real tmp38;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp33 = c_im(input[8 * istride]);
	       tmp34 = c_im(input[3 * istride]);
	       tmp35 = tmp33 - tmp34;
	       tmp68 = tmp33 + tmp34;
	       tmp37 = c_im(input[4 * istride]);
	       tmp38 = c_im(input[9 * istride]);
	       tmp39 = tmp37 - tmp38;
	       tmp64 = tmp37 + tmp38;
	  }
	  tmp36 = tmp32 - tmp35;
	  tmp43 = tmp39 - tmp42;
	  tmp47 = tmp32 + tmp35;
	  tmp48 = tmp39 + tmp42;
	  tmp53 = tmp47 + tmp48;
	  tmp66 = tmp64 - tmp65;
	  tmp69 = tmp67 - tmp68;
	  tmp77 = tmp67 + tmp68;
	  tmp78 = tmp64 + tmp65;
	  tmp79 = tmp77 + tmp78;
     }
     c_re(output[5 * ostride]) = tmp3 + tmp18;
     {
	  fftw_real tmp44;
	  fftw_real tmp46;
	  fftw_real tmp29;
	  fftw_real tmp45;
	  fftw_real tmp27;
	  fftw_real tmp28;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp44 = (K951056516 * tmp36) + (K587785252 * tmp43);
	  tmp46 = (K951056516 * tmp43) - (K587785252 * tmp36);
	  tmp27 = K559016994 * (tmp10 - tmp17);
	  tmp28 = tmp3 - (K250000000 * tmp18);
	  tmp29 = tmp27 + tmp28;
	  tmp45 = tmp28 - tmp27;
	  c_re(output[9 * ostride]) = tmp29 - tmp44;
	  c_re(output[ostride]) = tmp29 + tmp44;
	  c_re(output[7 * ostride]) = tmp45 - tmp46;
	  c_re(output[3 * ostride]) = tmp45 + tmp46;
     }
     c_re(output[0]) = tmp19 + tmp26;
     {
	  fftw_real tmp70;
	  fftw_real tmp72;
	  fftw_real tmp63;
	  fftw_real tmp71;
	  fftw_real tmp61;
	  fftw_real tmp62;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp70 = (K951056516 * tmp66) - (K587785252 * tmp69);
	  tmp72 = (K951056516 * tmp69) + (K587785252 * tmp66);
	  tmp61 = tmp19 - (K250000000 * tmp26);
	  tmp62 = K559016994 * (tmp22 - tmp25);
	  tmp63 = tmp61 - tmp62;
	  tmp71 = tmp62 + tmp61;
	  c_re(output[2 * ostride]) = tmp63 - tmp70;
	  c_re(output[8 * ostride]) = tmp63 + tmp70;
	  c_re(output[4 * ostride]) = tmp71 - tmp72;
	  c_re(output[6 * ostride]) = tmp71 + tmp72;
     }
     c_im(output[5 * ostride]) = tmp52 + tmp53;
     {
	  fftw_real tmp58;
	  fftw_real tmp60;
	  fftw_real tmp55;
	  fftw_real tmp59;
	  fftw_real tmp49;
	  fftw_real tmp54;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp58 = (K951056516 * tmp56) + (K587785252 * tmp57);
	  tmp60 = (K951056516 * tmp57) - (K587785252 * tmp56);
	  tmp49 = K559016994 * (tmp47 - tmp48);
	  tmp54 = tmp52 - (K250000000 * tmp53);
	  tmp55 = tmp49 + tmp54;
	  tmp59 = tmp54 - tmp49;
	  c_im(output[ostride]) = tmp55 - tmp58;
	  c_im(output[9 * ostride]) = tmp58 + tmp55;
	  c_im(output[3 * ostride]) = tmp59 - tmp60;
	  c_im(output[7 * ostride]) = tmp60 + tmp59;
     }
     c_im(output[0]) = tmp76 + tmp79;
     {
	  fftw_real tmp75;
	  fftw_real tmp83;
	  fftw_real tmp82;
	  fftw_real tmp84;
	  fftw_real tmp80;
	  fftw_real tmp81;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp75 = (K951056516 * tmp73) - (K587785252 * tmp74);
	  tmp83 = (K951056516 * tmp74) + (K587785252 * tmp73);
	  tmp80 = tmp76 - (K250000000 * tmp79);
	  tmp81 = K559016994 * (tmp77 - tmp78);
	  tmp82 = tmp80 - tmp81;
	  tmp84 = tmp81 + tmp80;
	  c_im(output[2 * ostride]) = tmp75 + tmp82;
	  c_im(output[8 * ostride]) = tmp82 - tmp75;
	  c_im(output[4 * ostride]) = tmp83 + tmp84;
	  c_im(output[6 * ostride]) = tmp84 - tmp83;
     }
}
コード例 #27
0
ファイル: ftwi_7.c プロジェクト: Vulcanior/IUP
void fftwi_twiddle_7(fftw_complex *A, const fftw_complex *W, int iostride,
		     int m, int dist)
{
     int i;
     fftw_complex *inout;
     inout = A;
     for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 6) {
	  fftw_real tmp1;
	  fftw_real tmp53;
	  fftw_real tmp12;
	  fftw_real tmp54;
	  fftw_real tmp38;
	  fftw_real tmp50;
	  fftw_real tmp23;
	  fftw_real tmp55;
	  fftw_real tmp44;
	  fftw_real tmp51;
	  fftw_real tmp34;
	  fftw_real tmp56;
	  fftw_real tmp41;
	  fftw_real tmp52;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(inout[0]);
	  tmp53 = c_im(inout[0]);
	  {
	       fftw_real tmp6;
	       fftw_real tmp37;
	       fftw_real tmp11;
	       fftw_real tmp36;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp3;
		    fftw_real tmp5;
		    fftw_real tmp2;
		    fftw_real tmp4;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp3 = c_re(inout[iostride]);
		    tmp5 = c_im(inout[iostride]);
		    tmp2 = c_re(W[0]);
		    tmp4 = c_im(W[0]);
		    tmp6 = (tmp2 * tmp3) + (tmp4 * tmp5);
		    tmp37 = (tmp2 * tmp5) - (tmp4 * tmp3);
	       }
	       {
		    fftw_real tmp8;
		    fftw_real tmp10;
		    fftw_real tmp7;
		    fftw_real tmp9;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp8 = c_re(inout[6 * iostride]);
		    tmp10 = c_im(inout[6 * iostride]);
		    tmp7 = c_re(W[5]);
		    tmp9 = c_im(W[5]);
		    tmp11 = (tmp7 * tmp8) + (tmp9 * tmp10);
		    tmp36 = (tmp7 * tmp10) - (tmp9 * tmp8);
	       }
	       tmp12 = tmp6 + tmp11;
	       tmp54 = tmp6 - tmp11;
	       tmp38 = tmp36 - tmp37;
	       tmp50 = tmp37 + tmp36;
	  }
	  {
	       fftw_real tmp17;
	       fftw_real tmp43;
	       fftw_real tmp22;
	       fftw_real tmp42;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp14;
		    fftw_real tmp16;
		    fftw_real tmp13;
		    fftw_real tmp15;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp14 = c_re(inout[2 * iostride]);
		    tmp16 = c_im(inout[2 * iostride]);
		    tmp13 = c_re(W[1]);
		    tmp15 = c_im(W[1]);
		    tmp17 = (tmp13 * tmp14) + (tmp15 * tmp16);
		    tmp43 = (tmp13 * tmp16) - (tmp15 * tmp14);
	       }
	       {
		    fftw_real tmp19;
		    fftw_real tmp21;
		    fftw_real tmp18;
		    fftw_real tmp20;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp19 = c_re(inout[5 * iostride]);
		    tmp21 = c_im(inout[5 * iostride]);
		    tmp18 = c_re(W[4]);
		    tmp20 = c_im(W[4]);
		    tmp22 = (tmp18 * tmp19) + (tmp20 * tmp21);
		    tmp42 = (tmp18 * tmp21) - (tmp20 * tmp19);
	       }
	       tmp23 = tmp17 + tmp22;
	       tmp55 = tmp17 - tmp22;
	       tmp44 = tmp42 - tmp43;
	       tmp51 = tmp43 + tmp42;
	  }
	  {
	       fftw_real tmp28;
	       fftw_real tmp40;
	       fftw_real tmp33;
	       fftw_real tmp39;
	       ASSERT_ALIGNED_DOUBLE;
	       {
		    fftw_real tmp25;
		    fftw_real tmp27;
		    fftw_real tmp24;
		    fftw_real tmp26;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp25 = c_re(inout[3 * iostride]);
		    tmp27 = c_im(inout[3 * iostride]);
		    tmp24 = c_re(W[2]);
		    tmp26 = c_im(W[2]);
		    tmp28 = (tmp24 * tmp25) + (tmp26 * tmp27);
		    tmp40 = (tmp24 * tmp27) - (tmp26 * tmp25);
	       }
	       {
		    fftw_real tmp30;
		    fftw_real tmp32;
		    fftw_real tmp29;
		    fftw_real tmp31;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp30 = c_re(inout[4 * iostride]);
		    tmp32 = c_im(inout[4 * iostride]);
		    tmp29 = c_re(W[3]);
		    tmp31 = c_im(W[3]);
		    tmp33 = (tmp29 * tmp30) + (tmp31 * tmp32);
		    tmp39 = (tmp29 * tmp32) - (tmp31 * tmp30);
	       }
	       tmp34 = tmp28 + tmp33;
	       tmp56 = tmp28 - tmp33;
	       tmp41 = tmp39 - tmp40;
	       tmp52 = tmp40 + tmp39;
	  }
	  {
	       fftw_real tmp47;
	       fftw_real tmp46;
	       fftw_real tmp59;
	       fftw_real tmp60;
	       ASSERT_ALIGNED_DOUBLE;
	       c_re(inout[0]) = tmp1 + tmp12 + tmp23 + tmp34;
	       tmp47 =
		   (K781831482 * tmp38) + (K974927912 * tmp44) +
		   (K433883739 * tmp41);
	       tmp46 =
		   tmp1 + (K623489801 * tmp12) - (K900968867 * tmp34) -
		   (K222520933 * tmp23);
	       c_re(inout[6 * iostride]) = tmp46 - tmp47;
	       c_re(inout[iostride]) = tmp46 + tmp47;
	       {
		    fftw_real tmp49;
		    fftw_real tmp48;
		    fftw_real tmp45;
		    fftw_real tmp35;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp49 =
			(K433883739 * tmp38) + (K974927912 * tmp41) -
			(K781831482 * tmp44);
		    tmp48 =
			tmp1 + (K623489801 * tmp23) -
			(K222520933 * tmp34) - (K900968867 * tmp12);
		    c_re(inout[4 * iostride]) = tmp48 - tmp49;
		    c_re(inout[3 * iostride]) = tmp48 + tmp49;
		    tmp45 =
			(K974927912 * tmp38) - (K781831482 * tmp41) -
			(K433883739 * tmp44);
		    tmp35 =
			tmp1 + (K623489801 * tmp34) -
			(K900968867 * tmp23) - (K222520933 * tmp12);
		    c_re(inout[5 * iostride]) = tmp35 - tmp45;
		    c_re(inout[2 * iostride]) = tmp35 + tmp45;
	       }
	       c_im(inout[0]) = tmp50 + tmp51 + tmp52 + tmp53;
	       tmp59 =
		   (K974927912 * tmp54) - (K781831482 * tmp56) -
		   (K433883739 * tmp55);
	       tmp60 =
		   (K623489801 * tmp52) + tmp53 - (K900968867 * tmp51) -
		   (K222520933 * tmp50);
	       c_im(inout[2 * iostride]) = tmp59 + tmp60;
	       c_im(inout[5 * iostride]) = tmp60 - tmp59;
	       {
		    fftw_real tmp61;
		    fftw_real tmp62;
		    fftw_real tmp57;
		    fftw_real tmp58;
		    ASSERT_ALIGNED_DOUBLE;
		    tmp61 =
			(K433883739 * tmp54) + (K974927912 * tmp56) -
			(K781831482 * tmp55);
		    tmp62 =
			(K623489801 * tmp51) + tmp53 -
			(K222520933 * tmp52) - (K900968867 * tmp50);
		    c_im(inout[3 * iostride]) = tmp61 + tmp62;
		    c_im(inout[4 * iostride]) = tmp62 - tmp61;
		    tmp57 =
			(K781831482 * tmp54) + (K974927912 * tmp55) +
			(K433883739 * tmp56);
		    tmp58 =
			(K623489801 * tmp50) + tmp53 -
			(K900968867 * tmp52) - (K222520933 * tmp51);
		    c_im(inout[iostride]) = tmp57 + tmp58;
		    c_im(inout[6 * iostride]) = tmp58 - tmp57;
	       }
	  }
     }
}
コード例 #28
0
ファイル: verify-r2r.c プロジェクト: exic/last.fm-dbus
static void mkro01(C *a, int n) /* n should be be multiple of 4 */
{
     c_re(a[0]) = c_im(a[0]) = 0.0;
     mkre00(a, n/2);
     mkro00(a, n);
}
コード例 #29
0
ファイル: fn_6.cpp プロジェクト: xiangliu/QSceneEdit
void fftw_no_twiddle_6(const fftw_complex *input, fftw_complex *output, int istride, int ostride)
{
     fftw_real tmp3;
     fftw_real tmp11;
     fftw_real tmp26;
     fftw_real tmp33;
     fftw_real tmp6;
     fftw_real tmp12;
     fftw_real tmp9;
     fftw_real tmp13;
     fftw_real tmp10;
     fftw_real tmp14;
     fftw_real tmp18;
     fftw_real tmp30;
     fftw_real tmp21;
     fftw_real tmp31;
     fftw_real tmp27;
     fftw_real tmp34;
     ASSERT_ALIGNED_DOUBLE;
     {
	  fftw_real tmp1;
	  fftw_real tmp2;
	  fftw_real tmp24;
	  fftw_real tmp25;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(input[0]);
	  tmp2 = c_re(input[3 * istride]);
	  tmp3 = tmp1 - tmp2;
	  tmp11 = tmp1 + tmp2;
	  tmp24 = c_im(input[0]);
	  tmp25 = c_im(input[3 * istride]);
	  tmp26 = tmp24 - tmp25;
	  tmp33 = tmp24 + tmp25;
     }
     {
	  fftw_real tmp4;
	  fftw_real tmp5;
	  fftw_real tmp7;
	  fftw_real tmp8;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp4 = c_re(input[2 * istride]);
	  tmp5 = c_re(input[5 * istride]);
	  tmp6 = tmp4 - tmp5;
	  tmp12 = tmp4 + tmp5;
	  tmp7 = c_re(input[4 * istride]);
	  tmp8 = c_re(input[istride]);
	  tmp9 = tmp7 - tmp8;
	  tmp13 = tmp7 + tmp8;
     }
     tmp10 = tmp6 + tmp9;
     tmp14 = tmp12 + tmp13;
     {
	  fftw_real tmp16;
	  fftw_real tmp17;
	  fftw_real tmp19;
	  fftw_real tmp20;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp16 = c_im(input[2 * istride]);
	  tmp17 = c_im(input[5 * istride]);
	  tmp18 = tmp16 - tmp17;
	  tmp30 = tmp16 + tmp17;
	  tmp19 = c_im(input[4 * istride]);
	  tmp20 = c_im(input[istride]);
	  tmp21 = tmp19 - tmp20;
	  tmp31 = tmp19 + tmp20;
     }
     tmp27 = tmp18 + tmp21;
     tmp34 = tmp30 + tmp31;
     {
	  fftw_real tmp15;
	  fftw_real tmp22;
	  fftw_real tmp29;
	  fftw_real tmp32;
	  ASSERT_ALIGNED_DOUBLE;
	  c_re(output[3 * ostride]) = tmp3 + tmp10;
	  tmp15 = tmp3 - (K500000000 * tmp10);
	  tmp22 = K866025403 * (tmp18 - tmp21);
	  c_re(output[5 * ostride]) = tmp15 - tmp22;
	  c_re(output[ostride]) = tmp15 + tmp22;
	  c_re(output[0]) = tmp11 + tmp14;
	  tmp29 = tmp11 - (K500000000 * tmp14);
	  tmp32 = K866025403 * (tmp30 - tmp31);
	  c_re(output[2 * ostride]) = tmp29 - tmp32;
	  c_re(output[4 * ostride]) = tmp29 + tmp32;
     }
     {
	  fftw_real tmp23;
	  fftw_real tmp28;
	  fftw_real tmp35;
	  fftw_real tmp36;
	  ASSERT_ALIGNED_DOUBLE;
	  c_im(output[3 * ostride]) = tmp26 + tmp27;
	  tmp23 = K866025403 * (tmp9 - tmp6);
	  tmp28 = tmp26 - (K500000000 * tmp27);
	  c_im(output[ostride]) = tmp23 + tmp28;
	  c_im(output[5 * ostride]) = tmp28 - tmp23;
	  c_im(output[0]) = tmp33 + tmp34;
	  tmp35 = tmp33 - (K500000000 * tmp34);
	  tmp36 = K866025403 * (tmp13 - tmp12);
	  c_im(output[2 * ostride]) = tmp35 - tmp36;
	  c_im(output[4 * ostride]) = tmp36 + tmp35;
     }
}
コード例 #30
0
ファイル: ftw_4.c プロジェクト: 1suming/pap2
void fftw_twiddle_4(fftw_complex *A, const fftw_complex *W, int iostride,
		    int m, int dist)
{
     int i;
     fftw_complex *inout;
     inout = A;
     for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 3) {
	  fftw_real tmp1;
	  fftw_real tmp25;
	  fftw_real tmp6;
	  fftw_real tmp24;
	  fftw_real tmp12;
	  fftw_real tmp20;
	  fftw_real tmp17;
	  fftw_real tmp21;
	  ASSERT_ALIGNED_DOUBLE;
	  tmp1 = c_re(inout[0]);
	  tmp25 = c_im(inout[0]);
	  {
	       fftw_real tmp3;
	       fftw_real tmp5;
	       fftw_real tmp2;
	       fftw_real tmp4;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp3 = c_re(inout[2 * iostride]);
	       tmp5 = c_im(inout[2 * iostride]);
	       tmp2 = c_re(W[1]);
	       tmp4 = c_im(W[1]);
	       tmp6 = (tmp2 * tmp3) - (tmp4 * tmp5);
	       tmp24 = (tmp4 * tmp3) + (tmp2 * tmp5);
	  }
	  {
	       fftw_real tmp9;
	       fftw_real tmp11;
	       fftw_real tmp8;
	       fftw_real tmp10;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp9 = c_re(inout[iostride]);
	       tmp11 = c_im(inout[iostride]);
	       tmp8 = c_re(W[0]);
	       tmp10 = c_im(W[0]);
	       tmp12 = (tmp8 * tmp9) - (tmp10 * tmp11);
	       tmp20 = (tmp10 * tmp9) + (tmp8 * tmp11);
	  }
	  {
	       fftw_real tmp14;
	       fftw_real tmp16;
	       fftw_real tmp13;
	       fftw_real tmp15;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp14 = c_re(inout[3 * iostride]);
	       tmp16 = c_im(inout[3 * iostride]);
	       tmp13 = c_re(W[2]);
	       tmp15 = c_im(W[2]);
	       tmp17 = (tmp13 * tmp14) - (tmp15 * tmp16);
	       tmp21 = (tmp15 * tmp14) + (tmp13 * tmp16);
	  }
	  {
	       fftw_real tmp7;
	       fftw_real tmp18;
	       fftw_real tmp27;
	       fftw_real tmp28;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp7 = tmp1 + tmp6;
	       tmp18 = tmp12 + tmp17;
	       c_re(inout[2 * iostride]) = tmp7 - tmp18;
	       c_re(inout[0]) = tmp7 + tmp18;
	       tmp27 = tmp25 - tmp24;
	       tmp28 = tmp12 - tmp17;
	       c_im(inout[iostride]) = tmp27 - tmp28;
	       c_im(inout[3 * iostride]) = tmp28 + tmp27;
	  }
	  {
	       fftw_real tmp23;
	       fftw_real tmp26;
	       fftw_real tmp19;
	       fftw_real tmp22;
	       ASSERT_ALIGNED_DOUBLE;
	       tmp23 = tmp20 + tmp21;
	       tmp26 = tmp24 + tmp25;
	       c_im(inout[0]) = tmp23 + tmp26;
	       c_im(inout[2 * iostride]) = tmp26 - tmp23;
	       tmp19 = tmp1 - tmp6;
	       tmp22 = tmp20 - tmp21;
	       c_re(inout[3 * iostride]) = tmp19 - tmp22;
	       c_re(inout[iostride]) = tmp19 + tmp22;
	  }
     }
}