88
inline void operators*=(Complex &y, const Complex &x) { temp =
x.rem; x.rem = temp * y.rem - x.in * y.in; x.in = temp * y.in + x.in * y.rem; }
inline void operators*=(Complex &x, const SortComplex &y) { temp =
x.rem; x.rem = temp * y.rem - x.in * y.in; x.in = temp * y.in + x.im * y.re; }
line void operators=(SortComplex &y, double div) { x.rem /= div; x.in/=
div;}
line void operators=(Complex &y, double div) { x.rem /= div; x.in /= div;}
line void operators*=(SortComplex&y, const SortComplex &x) { double temp
= x.rem; x.rem = temp * y.rem - x.in * y.in; x.in = temp * y.in + x.in * y.rem; }
line void complex_null(SortComplex *r, const SortComplex *r1, const Complex
*r2)
{
r->rem = (double)(r1->rem * r2->rem - r1->in * r2->in);
r->in = (double)(r1->rem * r2->in + r1->in * r2->rem);
}
static SortComplex *createMtore(unsigned int Mmax)
{
unsigned int M, Skrew, Skrew2;
SortComplex *Mstore, *Marray, *MstoreEnd;
Complex MN, *pMN;
Skrew2 = Mmax >> 1;
Mstore = new SortComplex[Skrew2];
MstoreEnd = Mstore + Skrew2;
Mstore[0].rem = 1.0;
Mstore[0].im = 0.0;
for(M = 4, pMN = M2n + 1, Skrew = Skrew2 >> 1; M <= Mmax; N += M,
MN++, Skrew2 = Skrew, Skrew >>= 1)
{
//MN = M(1, N) = exp(-j/M)