43{
46 size_t k=m;
47 const size_t m2=2*m;
48 const size_t m3=3*m;
49
50
52
53 do {
55
56 C_MUL(scratch[0],Fout[m] , *tw1 );
57 C_MUL(scratch[1],Fout[m2] , *tw2 );
58 C_MUL(scratch[2],Fout[m3] , *tw3 );
59
60 C_SUB( scratch[5] , *Fout, scratch[1] );
62 C_ADD( scratch[3] , scratch[0] , scratch[2] );
63 C_SUB( scratch[4] , scratch[0] , scratch[2] );
64 C_SUB( Fout[m2], *Fout, scratch[3] );
65 tw1 += fstride;
66 tw2 += fstride*2;
67 tw3 += fstride*3;
69
71 Fout[m].
r = scratch[5].
r - scratch[4].
i;
72 Fout[m].
i = scratch[5].
i + scratch[4].
r;
73 Fout[m3].
r = scratch[5].
r + scratch[4].
i;
74 Fout[m3].
i = scratch[5].
i - scratch[4].
r;
75 }else{
76 Fout[m].
r = scratch[5].
r + scratch[4].
i;
77 Fout[m].
i = scratch[5].
i - scratch[4].
r;
78 Fout[m3].
r = scratch[5].
r - scratch[4].
i;
79 Fout[m3].
i = scratch[5].
i + scratch[4].
r;
80 }
81 ++Fout;
82 }while(--k);
83}