52{
55 size_t k=m;
56 const size_t m2=2*m;
57 const size_t m3=3*m;
58
59
61
62 do {
64
65 C_MUL(scratch[0],Fout[m] , *tw1 );
66 C_MUL(scratch[1],Fout[m2] , *tw2 );
67 C_MUL(scratch[2],Fout[m3] , *tw3 );
68
69 C_SUB( scratch[5] , *Fout, scratch[1] );
71 C_ADD( scratch[3] , scratch[0] , scratch[2] );
72 C_SUB( scratch[4] , scratch[0] , scratch[2] );
73 C_SUB( Fout[m2], *Fout, scratch[3] );
74 tw1 += fstride;
75 tw2 += fstride*2;
76 tw3 += fstride*3;
78
80 Fout[m].
r = scratch[5].
r - scratch[4].
i;
81 Fout[m].
i = scratch[5].
i + scratch[4].
r;
82 Fout[m3].
r = scratch[5].
r + scratch[4].
i;
83 Fout[m3].
i = scratch[5].
i - scratch[4].
r;
84 }else{
85 Fout[m].
r = scratch[5].
r + scratch[4].
i;
86 Fout[m].
i = scratch[5].
i - scratch[4].
r;
87 Fout[m3].
r = scratch[5].
r - scratch[4].
i;
88 Fout[m3].
i = scratch[5].
i + scratch[4].
r;
89 }
90 ++Fout;
91 }while(--k);
92}