78#include "builtin/fftpack4/fftpack4.h"
94static void cfftb1( integer_t *n, real_t *c__, real_t *ch, real_t *wa, integer_t *ifac );
95static void cfftf1( integer_t *n, real_t *c__, real_t *ch, real_t *wa, integer_t *ifac );
96static void cffti1( integer_t *n, real_t *wa, integer_t *ifac );
97static void cosqb1( integer_t *n, real_t *x, real_t *w, real_t *xh, integer_t *ifac );
98static void cosqf1( integer_t *n, real_t *x, real_t *w, real_t *xh, integer_t *ifac );
99static void ezfft1( integer_t *n, real_t *wa, integer_t *ifac );
100static void passb( integer_t *nac, integer_t *ido, integer_t *ip, integer_t *l1, integer_t *idl1, real_t *cc, real_t *c1, real_t *c2, real_t *ch, real_t *ch2, real_t *wa );
101static void passb2( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1 );
102static void passb3( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2 );
103static void passb4( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3 );
104static void passb5( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4 );
105static void passf( integer_t *nac, integer_t *ido, integer_t *ip, integer_t *l1, integer_t *idl1, real_t *cc, real_t *c1, real_t *c2, real_t *ch, real_t *ch2, real_t *wa );
106static void passf2( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1 );
107static void passf3( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2 );
108static void passf4( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3 );
109static void passf5( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4 );
110static void radb2( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1 );
111static void radb3( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2 );
112static void radb4( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3 );
113static void radb5( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4 );
114static void radbg( integer_t *ido, integer_t *ip, integer_t *l1, integer_t *idl1, real_t *cc, real_t *c1, real_t *c2, real_t *ch, real_t *ch2, real_t *wa );
115static void radf2( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1 );
116static void radf3( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2 );
117static void radf4( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3 );
118static void radf5( integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4 );
119static void radfg( integer_t *ido, integer_t *ip, integer_t *l1, integer_t *idl1, real_t *cc, real_t *c1, real_t *c2, real_t *ch, real_t *ch2, real_t *wa );
120static void rfftb1( integer_t *n, real_t *c__, real_t *ch, real_t *wa, integer_t *ifac );
121static void rfftf1( integer_t *n, real_t *c__, real_t *ch, real_t *wa, integer_t *ifac );
122static void rffti1( integer_t *n, real_t *wa, integer_t *ifac );
123static void sint1( integer_t *n, real_t *war, real_t *was, real_t *xh, real_t *x, integer_t *ifac );
125 void cfftb(integer_t *n, real_t *c__, real_t *wsave,
140 cfftb1(n, &c__[1], &wsave[1], &wsave[iw1], &ifac[1]);
144 static void cfftb1(integer_t *n, real_t *c__, real_t *ch,
145 real_t *wa, integer_t *ifac)
151 integer_t i__, k1, l1, l2, n2, na, nf, ip, iw, ix2, ix3, ix4, nac, ido,
166 for (k1 = 1; k1 <= i__1; ++k1) {
180 passb4(&idot, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3]);
183 passb4(&idot, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3]);
194 passb2(&idot, &l1, &c__[1], &ch[1], &wa[iw]);
197 passb2(&idot, &l1, &ch[1], &c__[1], &wa[iw]);
209 passb3(&idot, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2]);
212 passb3(&idot, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2]);
226 passb5(&idot, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
230 passb5(&idot, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
239 passb(&nac, &idot, &ip, &l1, &idl1, &c__[1], &c__[1], &c__[1], &ch[1]
243 passb(&nac, &idot, &ip, &l1, &idl1, &ch[1], &ch[1], &ch[1], &c__[1],
251 iw += (ip - 1) * idot;
259 for (i__ = 1; i__ <= i__1; ++i__) {
266 void cfftf(integer_t *n, real_t *c__, real_t *wsave,
281 cfftf1(n, &c__[1], &wsave[1], &wsave[iw1], &ifac[1]);
285 static void cfftf1(integer_t *n, real_t *c__, real_t *ch,
286 real_t *wa, integer_t *ifac)
292 integer_t i__, k1, l1, l2, n2, na, nf, ip, iw, ix2, ix3, ix4, nac, ido,
307 for (k1 = 1; k1 <= i__1; ++k1) {
321 passf4(&idot, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3]);
324 passf4(&idot, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3]);
335 passf2(&idot, &l1, &c__[1], &ch[1], &wa[iw]);
338 passf2(&idot, &l1, &ch[1], &c__[1], &wa[iw]);
350 passf3(&idot, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2]);
353 passf3(&idot, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2]);
367 passf5(&idot, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
371 passf5(&idot, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
380 passf(&nac, &idot, &ip, &l1, &idl1, &c__[1], &c__[1], &c__[1], &ch[1]
384 passf(&nac, &idot, &ip, &l1, &idl1, &ch[1], &ch[1], &ch[1], &c__[1],
392 iw += (ip - 1) * idot;
400 for (i__ = 1; i__ <= i__1; ++i__) {
407 void cffti(integer_t *n, real_t *wsave, integer_t *ifac)
420 cffti1(n, &wsave[iw1], &ifac[1]);
424 static void cffti1(integer_t *n, real_t *wa, integer_t *ifac)
428 static integer_t ntryh[4] = { 3,4,2,5 };
431 integer_t i__1, i__2, i__3;
434 integer_t i__, j, i1, k1, l1, l2, ib;
436 integer_t ld, ii, nf, ip, nl, nq, nr;
440 integer_t idot, ntry=0;
482 for (i__ = 2; i__ <= i__1; ++i__) {
484 ifac[ib + 2] = ifac[ib + 1];
494 tpi = REAL_CONSTANT(6.283185307179586476925286766559005768394338798750211619498891846);
495 argh = tpi / (real_t) (*n);
499 for (k1 = 1; k1 <= i__1; ++k1) {
504 idot = ido + ido + 2;
507 for (j = 1; j <= i__2; ++j) {
509 wa[i__ - 1] = REAL_CONSTANT(1.0);
510 wa[i__] = REAL_CONSTANT(0.0);
512 fi = REAL_CONSTANT(0.0);
513 argld = (real_t) ld * argh;
515 for (ii = 4; ii <= i__3; ii += 2) {
517 fi += REAL_CONSTANT(1.0);
519 wa[i__ - 1] = cos(arg);
526 wa[i1 - 1] = wa[i__ - 1];
537 void cosqb(integer_t *n, real_t *x, real_t *wsave,
542 static real_t tsqrt2 =
543 REAL_CONSTANT(2.82842712474619009760337744841939615713934375053896146353359476);
557 if ((i__1 = *n - 2) < 0) {
559 }
else if (i__1 == 0) {
565 x[1] *= REAL_CONSTANT(4.0);
568 x1 = (x[1] + x[2]) * REAL_CONSTANT(4.0);
569 x[2] = tsqrt2 * (x[1] - x[2]);
573 cosqb1(n, &x[1], &wsave[1], &wsave[*n + 1], &ifac[1]);
577 static void cosqb1(integer_t *n, real_t *x, real_t *w,
578 real_t *xh, integer_t *ifac)
584 integer_t i__, k, kc, np2, ns2;
598 for (i__ = 3; i__ <= i__1; i__ += 2) {
599 xim1 = x[i__ - 1] + x[i__];
600 x[i__] -= x[i__ - 1];
609 rfftb(n, &x[1], &xh[1], &ifac[1]);
611 for (k = 2; k <= i__1; ++k) {
613 xh[k] = w[k - 1] * x[kc] + w[kc - 1] * x[k];
614 xh[kc] = w[k - 1] * x[k] - w[kc - 1] * x[kc];
618 x[ns2 + 1] = w[ns2] * (x[ns2 + 1] + x[ns2 + 1]);
621 for (k = 2; k <= i__1; ++k) {
623 x[k] = xh[k] + xh[kc];
624 x[kc] = xh[k] - xh[kc];
631 void cosqf(integer_t *n, real_t *x, real_t *wsave,
636 static real_t sqrt2 =
637 REAL_CONSTANT(1.41421356237309504880168872420969807856967187536948073176679738);
651 if ((i__1 = *n - 2) < 0) {
653 }
else if (i__1 == 0) {
665 cosqf1(n, &x[1], &wsave[1], &wsave[*n + 1], &ifac[1]);
669 static void cosqf1(integer_t *n, real_t *x, real_t *w,
670 real_t *xh, integer_t *ifac)
676 integer_t i__, k, kc, np2, ns2;
690 for (k = 2; k <= i__1; ++k) {
692 xh[k] = x[k] + x[kc];
693 xh[kc] = x[k] - x[kc];
698 xh[ns2 + 1] = x[ns2 + 1] + x[ns2 + 1];
701 for (k = 2; k <= i__1; ++k) {
703 x[k] = w[k - 1] * xh[kc] + w[kc - 1] * xh[k];
704 x[kc] = w[k - 1] * xh[k] - w[kc - 1] * xh[kc];
708 x[ns2 + 1] = w[ns2] * xh[ns2 + 1];
710 rfftf(n, &x[1], &xh[1], &ifac[1]);
712 for (i__ = 3; i__ <= i__1; i__ += 2) {
713 xim1 = x[i__ - 1] - x[i__];
714 x[i__] = x[i__ - 1] + x[i__];
721 void cosqi(integer_t *n, real_t *wsave, integer_t *ifac)
726 REAL_CONSTANT(1.570796326794896619231321691639751442098584699687529104874722962);
740 dt = pih / (real_t) (*n);
741 fk = REAL_CONSTANT(0.0);
743 for (k = 1; k <= i__1; ++k) {
744 fk += REAL_CONSTANT(1.0);
745 wsave[k] = cos(fk * dt);
748 rffti(n, &wsave[*n + 1], &ifac[1]);
752 void cost(integer_t *n, real_t *x, real_t *wsave,
766 real_t tx2, x1p3, xim2;
778 if ((i__1 = *n - 2) < 0) {
780 }
else if (i__1 == 0) {
804 for (k = 2; k <= i__1; ++k) {
808 c1 += wsave[kc] * t2;
816 x[ns2 + 1] += x[ns2 + 1];
818 rfftf(&nm1, &x[1], &wsave[*n + 1], &ifac[1]);
822 for (i__ = 4; i__ <= i__1; i__ += 2) {
824 x[i__] = x[i__ - 2] - x[i__ - 1];
836 void costi(integer_t *n, real_t *wsave, integer_t *ifac)
841 REAL_CONSTANT(3.141592653589793238462643383279502884197169399375158209749445923);
849 integer_t nm1, np1, ns2;
862 dt = pi / (real_t) nm1;
863 fk = REAL_CONSTANT(0.0);
865 for (k = 2; k <= i__1; ++k) {
867 fk += REAL_CONSTANT(1.0);
868 wsave[k] = sin(fk * dt) * REAL_CONSTANT(2.0);
869 wsave[kc] = cos(fk * dt) * REAL_CONSTANT(2.0);
872 rffti(&nm1, &wsave[*n + 1], &ifac[1]);
876 static void ezfft1(integer_t *n, real_t *wa, integer_t *ifac)
880 static integer_t ntryh[4] = { 4,2,3,5 };
882 REAL_CONSTANT(6.283185307179586476925286766559005768394338798750211419498891846);
885 integer_t i__1, i__2, i__3;
888 integer_t i__, j, k1, l1, l2, ib, ii, nf, ip, nl, is, nq, nr;
891 real_t dch1, ch1h, arg1, dsh1;
935 for (i__ = 2; i__ <= i__1; ++i__) {
937 ifac[ib + 2] = ifac[ib + 1];
947 argh = tpi / (real_t) (*n);
955 for (k1 = 1; k1 <= i__1; ++k1) {
960 arg1 = (real_t) l1 * argh;
961 ch1 = REAL_CONSTANT(1.0);
962 sh1 = REAL_CONSTANT(0.0);
966 for (j = 1; j <= i__2; ++j) {
967 ch1h = dch1 * ch1 - dsh1 * sh1;
968 sh1 = dch1 * sh1 + dsh1 * ch1;
977 for (ii = 5; ii <= i__3; ii += 2) {
979 wa[i__ - 1] = ch1 * wa[i__ - 3] - sh1 * wa[i__ - 2];
980 wa[i__] = ch1 * wa[i__ - 2] + sh1 * wa[i__ - 3];
993 void ezfftb(integer_t *n, real_t *r__, real_t *azero,
994 real_t *a, real_t *b, real_t *wsave, integer_t *ifac)
1010 if ((i__1 = *n - 2) < 0) {
1012 }
else if (i__1 == 0) {
1021 r__[1] = *azero + a[1];
1022 r__[2] = *azero - a[1];
1027 for (i__ = 1; i__ <= i__1; ++i__) {
1028 r__[i__ * 2] = a[i__] * REAL_CONSTANT(0.5);
1029 r__[(i__ << 1) + 1] = b[i__] * REAL_CONSTANT(-0.5);
1034 r__[*n] = a[ns2 + 1];
1036 rfftb(n, &r__[1], &wsave[*n + 1], &ifac[1]);
1040 void ezfftf(integer_t *n, real_t *r__, real_t *azero,
1041 real_t *a, real_t *b, real_t *wsave, integer_t *ifac)
1063 if ((i__1 = *n - 2) < 0) {
1065 }
else if (i__1 == 0) {
1074 *azero = (r__[1] + r__[2]) * REAL_CONSTANT(0.5);
1075 a[1] = (r__[1] - r__[2]) * REAL_CONSTANT(0.5);
1079 for (i__ = 1; i__ <= i__1; ++i__) {
1080 wsave[i__] = r__[i__];
1083 rfftf(n, &wsave[1], &wsave[*n + 1], &ifac[1]);
1084 cf = 2.0 / (real_t) (*n);
1086 *azero = cf * 0.5 * wsave[1];
1090 for (i__ = 1; i__ <= i__1; ++i__) {
1091 a[i__] = cf * wsave[i__ * 2];
1092 b[i__] = cfm * wsave[(i__ << 1) + 1];
1098 a[ns2] = cf * 0.5 * wsave[*n];
1099 b[ns2] = REAL_CONSTANT(0.0);
1103 void ezffti(integer_t *n, real_t *wsave, integer_t *ifac)
1113 ezfft1(n, &wsave[(*n << 1) + 1], &ifac[1]);
1117 static void passb(integer_t *nac, integer_t *ido, integer_t *ip, integer_t *
1118 l1, integer_t *idl1, real_t *cc, real_t *c1, real_t *c2,
1119 real_t *ch, real_t *ch2, real_t *wa)
1122 integer_t ch_dim1, ch_dim2, ch_offset, cc_dim1, cc_dim2, cc_offset, c1_dim1,
1123 c1_dim2, c1_offset, c2_dim1, c2_offset, ch2_dim1, ch2_offset,
1127 integer_t i__, j, k, l, jc, lc, ik;
1131 integer_t idj, idl, inc, idp;
1133 integer_t ipp2, idij, idlj, idot, ipph;
1138 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
1142 c1_offset = 1 + c1_dim1 * (1 + c1_dim2);
1146 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
1149 ch2_offset = 1 + ch2_dim1;
1152 c2_offset = 1 + c2_dim1;
1162 ipph = (*ip + 1) / 2;
1169 for (j = 2; j <= i__1; ++j) {
1172 for (k = 1; k <= i__2; ++k) {
1174 for (i__ = 1; i__ <= i__3; ++i__) {
1175 ch[i__ + (k + j * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1176 cc_dim2) * cc_dim1] + cc[i__ + (jc + k * cc_dim2) *
1178 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1179 cc_dim2) * cc_dim1] - cc[i__ + (jc + k * cc_dim2) *
1188 for (k = 1; k <= i__1; ++k) {
1190 for (i__ = 1; i__ <= i__2; ++i__) {
1191 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * cc_dim2 + 1) *
1200 for (j = 2; j <= i__1; ++j) {
1203 for (i__ = 1; i__ <= i__2; ++i__) {
1205 for (k = 1; k <= i__3; ++k) {
1206 ch[i__ + (k + j * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1207 cc_dim2) * cc_dim1] + cc[i__ + (jc + k * cc_dim2) *
1209 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1210 cc_dim2) * cc_dim1] - cc[i__ + (jc + k * cc_dim2) *
1219 for (i__ = 1; i__ <= i__1; ++i__) {
1221 for (k = 1; k <= i__2; ++k) {
1222 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * cc_dim2 + 1) *
1232 for (l = 2; l <= i__1; ++l) {
1236 for (ik = 1; ik <= i__2; ++ik) {
1237 c2[ik + l * c2_dim1] = ch2[ik + ch2_dim1] + wa[idl - 1] * ch2[ik
1239 c2[ik + lc * c2_dim1] = wa[idl] * ch2[ik + *ip * ch2_dim1];
1245 for (j = 3; j <= i__2; ++j) {
1254 for (ik = 1; ik <= i__3; ++ik) {
1255 c2[ik + l * c2_dim1] += war * ch2[ik + j * ch2_dim1];
1256 c2[ik + lc * c2_dim1] += wai * ch2[ik + jc * ch2_dim1];
1264 for (j = 2; j <= i__1; ++j) {
1266 for (ik = 1; ik <= i__2; ++ik) {
1267 ch2[ik + ch2_dim1] += ch2[ik + j * ch2_dim1];
1273 for (j = 2; j <= i__1; ++j) {
1276 for (ik = 2; ik <= i__2; ik += 2) {
1277 ch2[ik - 1 + j * ch2_dim1] = c2[ik - 1 + j * c2_dim1] - c2[ik +
1279 ch2[ik - 1 + jc * ch2_dim1] = c2[ik - 1 + j * c2_dim1] + c2[ik +
1281 ch2[ik + j * ch2_dim1] = c2[ik + j * c2_dim1] + c2[ik - 1 + jc *
1283 ch2[ik + jc * ch2_dim1] = c2[ik + j * c2_dim1] - c2[ik - 1 + jc *
1295 for (ik = 1; ik <= i__1; ++ik) {
1296 c2[ik + c2_dim1] = ch2[ik + ch2_dim1];
1300 for (j = 2; j <= i__1; ++j) {
1302 for (k = 1; k <= i__2; ++k) {
1303 c1[(k + j * c1_dim2) * c1_dim1 + 1] = ch[(k + j * ch_dim2) *
1305 c1[(k + j * c1_dim2) * c1_dim1 + 2] = ch[(k + j * ch_dim2) *
1316 for (j = 2; j <= i__1; ++j) {
1319 for (i__ = 4; i__ <= i__2; i__ += 2) {
1322 for (k = 1; k <= i__3; ++k) {
1323 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[
1324 i__ - 1 + (k + j * ch_dim2) * ch_dim1] - wa[idij] *
1325 ch[i__ + (k + j * ch_dim2) * ch_dim1];
1326 c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__
1327 + (k + j * ch_dim2) * ch_dim1] + wa[idij] * ch[i__ -
1328 1 + (k + j * ch_dim2) * ch_dim1];
1339 for (j = 2; j <= i__1; ++j) {
1342 for (k = 1; k <= i__2; ++k) {
1345 for (i__ = 4; i__ <= i__3; i__ += 2) {
1347 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[
1348 i__ - 1 + (k + j * ch_dim2) * ch_dim1] - wa[idij] *
1349 ch[i__ + (k + j * ch_dim2) * ch_dim1];
1350 c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__
1351 + (k + j * ch_dim2) * ch_dim1] + wa[idij] * ch[i__ -
1352 1 + (k + j * ch_dim2) * ch_dim1];
1362 static void passb2(integer_t *ido, integer_t *l1, real_t *cc,
1363 real_t *ch, real_t *wa1)
1366 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
1375 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
1378 cc_offset = 1 + cc_dim1 * 3;
1387 for (k = 1; k <= i__1; ++k) {
1388 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1 + 1] +
1389 cc[((k << 1) + 2) * cc_dim1 + 1];
1390 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1
1391 + 1] - cc[((k << 1) + 2) * cc_dim1 + 1];
1392 ch[(k + ch_dim2) * ch_dim1 + 2] = cc[((k << 1) + 1) * cc_dim1 + 2] +
1393 cc[((k << 1) + 2) * cc_dim1 + 2];
1394 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = cc[((k << 1) + 1) * cc_dim1
1395 + 2] - cc[((k << 1) + 2) * cc_dim1 + 2];
1401 for (k = 1; k <= i__1; ++k) {
1403 for (i__ = 2; i__ <= i__2; i__ += 2) {
1404 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + ((k << 1) +
1405 1) * cc_dim1] + cc[i__ - 1 + ((k << 1) + 2) * cc_dim1];
1406 tr2 = cc[i__ - 1 + ((k << 1) + 1) * cc_dim1] - cc[i__ - 1 + ((k <<
1408 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + ((k << 1) + 1) *
1409 cc_dim1] + cc[i__ + ((k << 1) + 2) * cc_dim1];
1410 ti2 = cc[i__ + ((k << 1) + 1) * cc_dim1] - cc[i__ + ((k << 1) + 2)
1412 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * ti2 +
1414 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * tr2
1423 static void passb3(integer_t *ido, integer_t *l1, real_t *cc,
1424 real_t *ch, real_t *wa1, real_t *wa2)
1428 static real_t taur = REAL_CONSTANT(-0.5);
1429 static real_t taui =
1430 REAL_CONSTANT(0.8660254037844386467637231707529361834710262690519031402790348975);
1433 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
1437 real_t ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
1442 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
1445 cc_offset = 1 + (cc_dim1 << 2);
1455 for (k = 1; k <= i__1; ++k) {
1456 tr2 = cc[(k * 3 + 2) * cc_dim1 + 1] + cc[(k * 3 + 3) * cc_dim1 + 1];
1457 cr2 = cc[(k * 3 + 1) * cc_dim1 + 1] + taur * tr2;
1458 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 3 + 1) * cc_dim1 + 1] + tr2;
1459 ti2 = cc[(k * 3 + 2) * cc_dim1 + 2] + cc[(k * 3 + 3) * cc_dim1 + 2];
1460 ci2 = cc[(k * 3 + 1) * cc_dim1 + 2] + taur * ti2;
1461 ch[(k + ch_dim2) * ch_dim1 + 2] = cc[(k * 3 + 1) * cc_dim1 + 2] + ti2;
1462 cr3 = taui * (cc[(k * 3 + 2) * cc_dim1 + 1] - cc[(k * 3 + 3) *
1464 ci3 = taui * (cc[(k * 3 + 2) * cc_dim1 + 2] - cc[(k * 3 + 3) *
1466 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci3;
1467 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr2 + ci3;
1468 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ci2 + cr3;
1469 ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ci2 - cr3;
1475 for (k = 1; k <= i__1; ++k) {
1477 for (i__ = 2; i__ <= i__2; i__ += 2) {
1478 tr2 = cc[i__ - 1 + (k * 3 + 2) * cc_dim1] + cc[i__ - 1 + (k * 3 +
1480 cr2 = cc[i__ - 1 + (k * 3 + 1) * cc_dim1] + taur * tr2;
1481 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 3 + 1) *
1483 ti2 = cc[i__ + (k * 3 + 2) * cc_dim1] + cc[i__ + (k * 3 + 3) *
1485 ci2 = cc[i__ + (k * 3 + 1) * cc_dim1] + taur * ti2;
1486 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 3 + 1) *
1488 cr3 = taui * (cc[i__ - 1 + (k * 3 + 2) * cc_dim1] - cc[i__ - 1 + (
1489 k * 3 + 3) * cc_dim1]);
1490 ci3 = taui * (cc[i__ + (k * 3 + 2) * cc_dim1] - cc[i__ + (k * 3 +
1496 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * di2 +
1498 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * dr2
1500 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * di3 + wa2[
1502 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * dr3 -
1511 static void passb4(integer_t *ido, integer_t *l1, real_t *cc,
1512 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3)
1515 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
1519 real_t ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2,
1525 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
1528 cc_offset = 1 + cc_dim1 * 5;
1539 for (k = 1; k <= i__1; ++k) {
1540 ti1 = cc[((k << 2) + 1) * cc_dim1 + 2] - cc[((k << 2) + 3) * cc_dim1
1542 ti2 = cc[((k << 2) + 1) * cc_dim1 + 2] + cc[((k << 2) + 3) * cc_dim1
1544 tr4 = cc[((k << 2) + 4) * cc_dim1 + 2] - cc[((k << 2) + 2) * cc_dim1
1546 ti3 = cc[((k << 2) + 2) * cc_dim1 + 2] + cc[((k << 2) + 4) * cc_dim1
1548 tr1 = cc[((k << 2) + 1) * cc_dim1 + 1] - cc[((k << 2) + 3) * cc_dim1
1550 tr2 = cc[((k << 2) + 1) * cc_dim1 + 1] + cc[((k << 2) + 3) * cc_dim1
1552 ti4 = cc[((k << 2) + 2) * cc_dim1 + 1] - cc[((k << 2) + 4) * cc_dim1
1554 tr3 = cc[((k << 2) + 2) * cc_dim1 + 1] + cc[((k << 2) + 4) * cc_dim1
1556 ch[(k + ch_dim2) * ch_dim1 + 1] = tr2 + tr3;
1557 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = tr2 - tr3;
1558 ch[(k + ch_dim2) * ch_dim1 + 2] = ti2 + ti3;
1559 ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ti2 - ti3;
1560 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = tr1 + tr4;
1561 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = tr1 - tr4;
1562 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ti1 + ti4;
1563 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 2] = ti1 - ti4;
1569 for (k = 1; k <= i__1; ++k) {
1571 for (i__ = 2; i__ <= i__2; i__ += 2) {
1572 ti1 = cc[i__ + ((k << 2) + 1) * cc_dim1] - cc[i__ + ((k << 2) + 3)
1574 ti2 = cc[i__ + ((k << 2) + 1) * cc_dim1] + cc[i__ + ((k << 2) + 3)
1576 ti3 = cc[i__ + ((k << 2) + 2) * cc_dim1] + cc[i__ + ((k << 2) + 4)
1578 tr4 = cc[i__ + ((k << 2) + 4) * cc_dim1] - cc[i__ + ((k << 2) + 2)
1580 tr1 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] - cc[i__ - 1 + ((k <<
1582 tr2 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] + cc[i__ - 1 + ((k <<
1584 ti4 = cc[i__ - 1 + ((k << 2) + 2) * cc_dim1] - cc[i__ - 1 + ((k <<
1586 tr3 = cc[i__ - 1 + ((k << 2) + 2) * cc_dim1] + cc[i__ - 1 + ((k <<
1588 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = tr2 + tr3;
1590 ch[i__ + (k + ch_dim2) * ch_dim1] = ti2 + ti3;
1596 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * cr2
1598 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * ci2 +
1600 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * cr3 -
1602 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * ci3 + wa2[
1604 ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * cr4
1606 ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * ci4 +
1615 static void passb5(integer_t *ido, integer_t *l1, real_t *cc,
1616 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3,
1621 static real_t tr11 =
1622 REAL_CONSTANT(0.3090169943749474241022934171828195886015458990288143106772431137);
1623 static real_t ti11 =
1624 REAL_CONSTANT(0.9510565162951535721164393337938214340569863412575022244730564442);
1625 static real_t tr12 =
1626 REAL_CONSTANT(-0.8090169943749474241022934171828190588601545899028814310677431135);
1627 static real_t ti12 =
1628 REAL_CONSTANT(0.5877852522924731291687059546390727685976524376431459107227248076);
1631 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
1635 real_t ci2, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4,
1636 ti2, ti3, ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5;
1641 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
1644 cc_offset = 1 + cc_dim1 * 6;
1656 for (k = 1; k <= i__1; ++k) {
1657 ti5 = cc[(k * 5 + 2) * cc_dim1 + 2] - cc[(k * 5 + 5) * cc_dim1 + 2];
1658 ti2 = cc[(k * 5 + 2) * cc_dim1 + 2] + cc[(k * 5 + 5) * cc_dim1 + 2];
1659 ti4 = cc[(k * 5 + 3) * cc_dim1 + 2] - cc[(k * 5 + 4) * cc_dim1 + 2];
1660 ti3 = cc[(k * 5 + 3) * cc_dim1 + 2] + cc[(k * 5 + 4) * cc_dim1 + 2];
1661 tr5 = cc[(k * 5 + 2) * cc_dim1 + 1] - cc[(k * 5 + 5) * cc_dim1 + 1];
1662 tr2 = cc[(k * 5 + 2) * cc_dim1 + 1] + cc[(k * 5 + 5) * cc_dim1 + 1];
1663 tr4 = cc[(k * 5 + 3) * cc_dim1 + 1] - cc[(k * 5 + 4) * cc_dim1 + 1];
1664 tr3 = cc[(k * 5 + 3) * cc_dim1 + 1] + cc[(k * 5 + 4) * cc_dim1 + 1];
1665 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 5 + 1) * cc_dim1 + 1] + tr2
1667 ch[(k + ch_dim2) * ch_dim1 + 2] = cc[(k * 5 + 1) * cc_dim1 + 2] + ti2
1669 cr2 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr11 * tr2 + tr12 * tr3;
1670 ci2 = cc[(k * 5 + 1) * cc_dim1 + 2] + tr11 * ti2 + tr12 * ti3;
1671 cr3 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr12 * tr2 + tr11 * tr3;
1672 ci3 = cc[(k * 5 + 1) * cc_dim1 + 2] + tr12 * ti2 + tr11 * ti3;
1673 cr5 = ti11 * tr5 + ti12 * tr4;
1674 ci5 = ti11 * ti5 + ti12 * ti4;
1675 cr4 = ti12 * tr5 - ti11 * tr4;
1676 ci4 = ti12 * ti5 - ti11 * ti4;
1677 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci5;
1678 ch[(k + ch_dim2 * 5) * ch_dim1 + 1] = cr2 + ci5;
1679 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ci2 + cr5;
1680 ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ci3 + cr4;
1681 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr3 - ci4;
1682 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = cr3 + ci4;
1683 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 2] = ci3 - cr4;
1684 ch[(k + ch_dim2 * 5) * ch_dim1 + 2] = ci2 - cr5;
1690 for (k = 1; k <= i__1; ++k) {
1692 for (i__ = 2; i__ <= i__2; i__ += 2) {
1693 ti5 = cc[i__ + (k * 5 + 2) * cc_dim1] - cc[i__ + (k * 5 + 5) *
1695 ti2 = cc[i__ + (k * 5 + 2) * cc_dim1] + cc[i__ + (k * 5 + 5) *
1697 ti4 = cc[i__ + (k * 5 + 3) * cc_dim1] - cc[i__ + (k * 5 + 4) *
1699 ti3 = cc[i__ + (k * 5 + 3) * cc_dim1] + cc[i__ + (k * 5 + 4) *
1701 tr5 = cc[i__ - 1 + (k * 5 + 2) * cc_dim1] - cc[i__ - 1 + (k * 5 +
1703 tr2 = cc[i__ - 1 + (k * 5 + 2) * cc_dim1] + cc[i__ - 1 + (k * 5 +
1705 tr4 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] - cc[i__ - 1 + (k * 5 +
1707 tr3 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] + cc[i__ - 1 + (k * 5 +
1709 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 5 + 1) *
1710 cc_dim1] + tr2 + tr3;
1711 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 5 + 1) *
1712 cc_dim1] + ti2 + ti3;
1713 cr2 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr11 * tr2 + tr12 *
1715 ci2 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr11 * ti2 + tr12 * ti3;
1716 cr3 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr12 * tr2 + tr11 *
1718 ci3 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr12 * ti2 + tr11 * ti3;
1719 cr5 = ti11 * tr5 + ti12 * tr4;
1720 ci5 = ti11 * ti5 + ti12 * ti4;
1721 cr4 = ti12 * tr5 - ti11 * tr4;
1722 ci4 = ti12 * ti5 - ti11 * ti4;
1731 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * dr2
1733 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * di2 +
1735 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * dr3 -
1737 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * di3 + wa2[
1739 ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * dr4
1741 ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * di4 +
1743 ch[i__ - 1 + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 1] * dr5 -
1745 ch[i__ + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 1] * di5 + wa4[
1754 static void passf(integer_t *nac, integer_t *ido, integer_t *ip, integer_t *
1755 l1, integer_t *idl1, real_t *cc, real_t *c1, real_t *c2,
1756 real_t *ch, real_t *ch2, real_t *wa)
1759 integer_t ch_dim1, ch_dim2, ch_offset, cc_dim1, cc_dim2, cc_offset, c1_dim1,
1760 c1_dim2, c1_offset, c2_dim1, c2_offset, ch2_dim1, ch2_offset,
1764 integer_t i__, j, k, l, jc, lc, ik;
1768 integer_t idj, idl, inc, idp;
1770 integer_t ipp2, idij, idlj, idot, ipph;
1775 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
1779 c1_offset = 1 + c1_dim1 * (1 + c1_dim2);
1783 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
1786 ch2_offset = 1 + ch2_dim1;
1789 c2_offset = 1 + c2_dim1;
1799 ipph = (*ip + 1) / 2;
1806 for (j = 2; j <= i__1; ++j) {
1809 for (k = 1; k <= i__2; ++k) {
1811 for (i__ = 1; i__ <= i__3; ++i__) {
1812 ch[i__ + (k + j * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1813 cc_dim2) * cc_dim1] + cc[i__ + (jc + k * cc_dim2) *
1815 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1816 cc_dim2) * cc_dim1] - cc[i__ + (jc + k * cc_dim2) *
1825 for (k = 1; k <= i__1; ++k) {
1827 for (i__ = 1; i__ <= i__2; ++i__) {
1828 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * cc_dim2 + 1) *
1837 for (j = 2; j <= i__1; ++j) {
1840 for (i__ = 1; i__ <= i__2; ++i__) {
1842 for (k = 1; k <= i__3; ++k) {
1843 ch[i__ + (k + j * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1844 cc_dim2) * cc_dim1] + cc[i__ + (jc + k * cc_dim2) *
1846 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = cc[i__ + (j + k *
1847 cc_dim2) * cc_dim1] - cc[i__ + (jc + k * cc_dim2) *
1856 for (i__ = 1; i__ <= i__1; ++i__) {
1858 for (k = 1; k <= i__2; ++k) {
1859 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * cc_dim2 + 1) *
1869 for (l = 2; l <= i__1; ++l) {
1873 for (ik = 1; ik <= i__2; ++ik) {
1874 c2[ik + l * c2_dim1] = ch2[ik + ch2_dim1] + wa[idl - 1] * ch2[ik
1876 c2[ik + lc * c2_dim1] = -wa[idl] * ch2[ik + *ip * ch2_dim1];
1882 for (j = 3; j <= i__2; ++j) {
1891 for (ik = 1; ik <= i__3; ++ik) {
1892 c2[ik + l * c2_dim1] += war * ch2[ik + j * ch2_dim1];
1893 c2[ik + lc * c2_dim1] -= wai * ch2[ik + jc * ch2_dim1];
1901 for (j = 2; j <= i__1; ++j) {
1903 for (ik = 1; ik <= i__2; ++ik) {
1904 ch2[ik + ch2_dim1] += ch2[ik + j * ch2_dim1];
1910 for (j = 2; j <= i__1; ++j) {
1913 for (ik = 2; ik <= i__2; ik += 2) {
1914 ch2[ik - 1 + j * ch2_dim1] = c2[ik - 1 + j * c2_dim1] - c2[ik +
1916 ch2[ik - 1 + jc * ch2_dim1] = c2[ik - 1 + j * c2_dim1] + c2[ik +
1918 ch2[ik + j * ch2_dim1] = c2[ik + j * c2_dim1] + c2[ik - 1 + jc *
1920 ch2[ik + jc * ch2_dim1] = c2[ik + j * c2_dim1] - c2[ik - 1 + jc *
1932 for (ik = 1; ik <= i__1; ++ik) {
1933 c2[ik + c2_dim1] = ch2[ik + ch2_dim1];
1937 for (j = 2; j <= i__1; ++j) {
1939 for (k = 1; k <= i__2; ++k) {
1940 c1[(k + j * c1_dim2) * c1_dim1 + 1] = ch[(k + j * ch_dim2) *
1942 c1[(k + j * c1_dim2) * c1_dim1 + 2] = ch[(k + j * ch_dim2) *
1953 for (j = 2; j <= i__1; ++j) {
1956 for (i__ = 4; i__ <= i__2; i__ += 2) {
1959 for (k = 1; k <= i__3; ++k) {
1960 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[
1961 i__ - 1 + (k + j * ch_dim2) * ch_dim1] + wa[idij] *
1962 ch[i__ + (k + j * ch_dim2) * ch_dim1];
1963 c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__
1964 + (k + j * ch_dim2) * ch_dim1] - wa[idij] * ch[i__ -
1965 1 + (k + j * ch_dim2) * ch_dim1];
1976 for (j = 2; j <= i__1; ++j) {
1979 for (k = 1; k <= i__2; ++k) {
1982 for (i__ = 4; i__ <= i__3; i__ += 2) {
1984 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[
1985 i__ - 1 + (k + j * ch_dim2) * ch_dim1] + wa[idij] *
1986 ch[i__ + (k + j * ch_dim2) * ch_dim1];
1987 c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__
1988 + (k + j * ch_dim2) * ch_dim1] - wa[idij] * ch[i__ -
1989 1 + (k + j * ch_dim2) * ch_dim1];
1999 static void passf2(integer_t *ido, integer_t *l1, real_t *cc,
2000 real_t *ch, real_t *wa1)
2003 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2012 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2015 cc_offset = 1 + cc_dim1 * 3;
2024 for (k = 1; k <= i__1; ++k) {
2025 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1 + 1] +
2026 cc[((k << 1) + 2) * cc_dim1 + 1];
2027 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1
2028 + 1] - cc[((k << 1) + 2) * cc_dim1 + 1];
2029 ch[(k + ch_dim2) * ch_dim1 + 2] = cc[((k << 1) + 1) * cc_dim1 + 2] +
2030 cc[((k << 1) + 2) * cc_dim1 + 2];
2031 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = cc[((k << 1) + 1) * cc_dim1
2032 + 2] - cc[((k << 1) + 2) * cc_dim1 + 2];
2038 for (k = 1; k <= i__1; ++k) {
2040 for (i__ = 2; i__ <= i__2; i__ += 2) {
2041 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + ((k << 1) +
2042 1) * cc_dim1] + cc[i__ - 1 + ((k << 1) + 2) * cc_dim1];
2043 tr2 = cc[i__ - 1 + ((k << 1) + 1) * cc_dim1] - cc[i__ - 1 + ((k <<
2045 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + ((k << 1) + 1) *
2046 cc_dim1] + cc[i__ + ((k << 1) + 2) * cc_dim1];
2047 ti2 = cc[i__ + ((k << 1) + 1) * cc_dim1] - cc[i__ + ((k << 1) + 2)
2049 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * ti2 -
2051 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * tr2
2060 static void passf3(integer_t *ido, integer_t *l1, real_t *cc,
2061 real_t *ch, real_t *wa1, real_t *wa2)
2065 static real_t taur = REAL_CONSTANT(-0.5);
2066 static real_t taui =
2067 REAL_CONSTANT(-0.8660254037844386467637231707529361834740262690519031402790348975);
2070 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2074 real_t ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
2079 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2082 cc_offset = 1 + (cc_dim1 << 2);
2092 for (k = 1; k <= i__1; ++k) {
2093 tr2 = cc[(k * 3 + 2) * cc_dim1 + 1] + cc[(k * 3 + 3) * cc_dim1 + 1];
2094 cr2 = cc[(k * 3 + 1) * cc_dim1 + 1] + taur * tr2;
2095 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 3 + 1) * cc_dim1 + 1] + tr2;
2096 ti2 = cc[(k * 3 + 2) * cc_dim1 + 2] + cc[(k * 3 + 3) * cc_dim1 + 2];
2097 ci2 = cc[(k * 3 + 1) * cc_dim1 + 2] + taur * ti2;
2098 ch[(k + ch_dim2) * ch_dim1 + 2] = cc[(k * 3 + 1) * cc_dim1 + 2] + ti2;
2099 cr3 = taui * (cc[(k * 3 + 2) * cc_dim1 + 1] - cc[(k * 3 + 3) *
2101 ci3 = taui * (cc[(k * 3 + 2) * cc_dim1 + 2] - cc[(k * 3 + 3) *
2103 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci3;
2104 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr2 + ci3;
2105 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ci2 + cr3;
2106 ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ci2 - cr3;
2112 for (k = 1; k <= i__1; ++k) {
2114 for (i__ = 2; i__ <= i__2; i__ += 2) {
2115 tr2 = cc[i__ - 1 + (k * 3 + 2) * cc_dim1] + cc[i__ - 1 + (k * 3 +
2117 cr2 = cc[i__ - 1 + (k * 3 + 1) * cc_dim1] + taur * tr2;
2118 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 3 + 1) *
2120 ti2 = cc[i__ + (k * 3 + 2) * cc_dim1] + cc[i__ + (k * 3 + 3) *
2122 ci2 = cc[i__ + (k * 3 + 1) * cc_dim1] + taur * ti2;
2123 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 3 + 1) *
2125 cr3 = taui * (cc[i__ - 1 + (k * 3 + 2) * cc_dim1] - cc[i__ - 1 + (
2126 k * 3 + 3) * cc_dim1]);
2127 ci3 = taui * (cc[i__ + (k * 3 + 2) * cc_dim1] - cc[i__ + (k * 3 +
2133 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * di2 -
2135 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * dr2
2137 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * di3 - wa2[
2139 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * dr3 +
2148 static void passf4(integer_t *ido, integer_t *l1, real_t *cc,
2149 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3)
2152 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2156 real_t ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2,
2162 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2165 cc_offset = 1 + cc_dim1 * 5;
2176 for (k = 1; k <= i__1; ++k) {
2177 ti1 = cc[((k << 2) + 1) * cc_dim1 + 2] - cc[((k << 2) + 3) * cc_dim1
2179 ti2 = cc[((k << 2) + 1) * cc_dim1 + 2] + cc[((k << 2) + 3) * cc_dim1
2181 tr4 = cc[((k << 2) + 2) * cc_dim1 + 2] - cc[((k << 2) + 4) * cc_dim1
2183 ti3 = cc[((k << 2) + 2) * cc_dim1 + 2] + cc[((k << 2) + 4) * cc_dim1
2185 tr1 = cc[((k << 2) + 1) * cc_dim1 + 1] - cc[((k << 2) + 3) * cc_dim1
2187 tr2 = cc[((k << 2) + 1) * cc_dim1 + 1] + cc[((k << 2) + 3) * cc_dim1
2189 ti4 = cc[((k << 2) + 4) * cc_dim1 + 1] - cc[((k << 2) + 2) * cc_dim1
2191 tr3 = cc[((k << 2) + 2) * cc_dim1 + 1] + cc[((k << 2) + 4) * cc_dim1
2193 ch[(k + ch_dim2) * ch_dim1 + 1] = tr2 + tr3;
2194 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = tr2 - tr3;
2195 ch[(k + ch_dim2) * ch_dim1 + 2] = ti2 + ti3;
2196 ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ti2 - ti3;
2197 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = tr1 + tr4;
2198 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = tr1 - tr4;
2199 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ti1 + ti4;
2200 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 2] = ti1 - ti4;
2206 for (k = 1; k <= i__1; ++k) {
2208 for (i__ = 2; i__ <= i__2; i__ += 2) {
2209 ti1 = cc[i__ + ((k << 2) + 1) * cc_dim1] - cc[i__ + ((k << 2) + 3)
2211 ti2 = cc[i__ + ((k << 2) + 1) * cc_dim1] + cc[i__ + ((k << 2) + 3)
2213 ti3 = cc[i__ + ((k << 2) + 2) * cc_dim1] + cc[i__ + ((k << 2) + 4)
2215 tr4 = cc[i__ + ((k << 2) + 2) * cc_dim1] - cc[i__ + ((k << 2) + 4)
2217 tr1 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] - cc[i__ - 1 + ((k <<
2219 tr2 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] + cc[i__ - 1 + ((k <<
2221 ti4 = cc[i__ - 1 + ((k << 2) + 4) * cc_dim1] - cc[i__ - 1 + ((k <<
2223 tr3 = cc[i__ - 1 + ((k << 2) + 2) * cc_dim1] + cc[i__ - 1 + ((k <<
2225 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = tr2 + tr3;
2227 ch[i__ + (k + ch_dim2) * ch_dim1] = ti2 + ti3;
2233 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * cr2
2235 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * ci2 -
2237 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * cr3 +
2239 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * ci3 - wa2[
2241 ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * cr4
2243 ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * ci4 -
2252 static void passf5(integer_t *ido, integer_t *l1, real_t *cc,
2253 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3,
2258 static real_t tr11 =
2259 REAL_CONSTANT(0.3090169943749474241022934171828195886015458990288143106772431137);
2260 static real_t ti11 =
2261 REAL_CONSTANT(-0.9510565162951535721164393337938214340569863412575022244730564442);
2262 static real_t tr12 =
2263 REAL_CONSTANT(-0.8090169943749474241022934171828190588601545899028814310677431135);
2264 static real_t ti12 =
2265 REAL_CONSTANT(-0.5877852522924731291687059546390727685976524376431459107227248076);
2268 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2272 real_t ci2, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4,
2273 ti2, ti3, ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5;
2278 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2281 cc_offset = 1 + cc_dim1 * 6;
2293 for (k = 1; k <= i__1; ++k) {
2294 ti5 = cc[(k * 5 + 2) * cc_dim1 + 2] - cc[(k * 5 + 5) * cc_dim1 + 2];
2295 ti2 = cc[(k * 5 + 2) * cc_dim1 + 2] + cc[(k * 5 + 5) * cc_dim1 + 2];
2296 ti4 = cc[(k * 5 + 3) * cc_dim1 + 2] - cc[(k * 5 + 4) * cc_dim1 + 2];
2297 ti3 = cc[(k * 5 + 3) * cc_dim1 + 2] + cc[(k * 5 + 4) * cc_dim1 + 2];
2298 tr5 = cc[(k * 5 + 2) * cc_dim1 + 1] - cc[(k * 5 + 5) * cc_dim1 + 1];
2299 tr2 = cc[(k * 5 + 2) * cc_dim1 + 1] + cc[(k * 5 + 5) * cc_dim1 + 1];
2300 tr4 = cc[(k * 5 + 3) * cc_dim1 + 1] - cc[(k * 5 + 4) * cc_dim1 + 1];
2301 tr3 = cc[(k * 5 + 3) * cc_dim1 + 1] + cc[(k * 5 + 4) * cc_dim1 + 1];
2302 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 5 + 1) * cc_dim1 + 1] + tr2
2304 ch[(k + ch_dim2) * ch_dim1 + 2] = cc[(k * 5 + 1) * cc_dim1 + 2] + ti2
2306 cr2 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr11 * tr2 + tr12 * tr3;
2307 ci2 = cc[(k * 5 + 1) * cc_dim1 + 2] + tr11 * ti2 + tr12 * ti3;
2308 cr3 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr12 * tr2 + tr11 * tr3;
2309 ci3 = cc[(k * 5 + 1) * cc_dim1 + 2] + tr12 * ti2 + tr11 * ti3;
2310 cr5 = ti11 * tr5 + ti12 * tr4;
2311 ci5 = ti11 * ti5 + ti12 * ti4;
2312 cr4 = ti12 * tr5 - ti11 * tr4;
2313 ci4 = ti12 * ti5 - ti11 * ti4;
2314 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci5;
2315 ch[(k + ch_dim2 * 5) * ch_dim1 + 1] = cr2 + ci5;
2316 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ci2 + cr5;
2317 ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ci3 + cr4;
2318 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr3 - ci4;
2319 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = cr3 + ci4;
2320 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 2] = ci3 - cr4;
2321 ch[(k + ch_dim2 * 5) * ch_dim1 + 2] = ci2 - cr5;
2327 for (k = 1; k <= i__1; ++k) {
2329 for (i__ = 2; i__ <= i__2; i__ += 2) {
2330 ti5 = cc[i__ + (k * 5 + 2) * cc_dim1] - cc[i__ + (k * 5 + 5) *
2332 ti2 = cc[i__ + (k * 5 + 2) * cc_dim1] + cc[i__ + (k * 5 + 5) *
2334 ti4 = cc[i__ + (k * 5 + 3) * cc_dim1] - cc[i__ + (k * 5 + 4) *
2336 ti3 = cc[i__ + (k * 5 + 3) * cc_dim1] + cc[i__ + (k * 5 + 4) *
2338 tr5 = cc[i__ - 1 + (k * 5 + 2) * cc_dim1] - cc[i__ - 1 + (k * 5 +
2340 tr2 = cc[i__ - 1 + (k * 5 + 2) * cc_dim1] + cc[i__ - 1 + (k * 5 +
2342 tr4 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] - cc[i__ - 1 + (k * 5 +
2344 tr3 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] + cc[i__ - 1 + (k * 5 +
2346 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 5 + 1) *
2347 cc_dim1] + tr2 + tr3;
2348 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 5 + 1) *
2349 cc_dim1] + ti2 + ti3;
2350 cr2 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr11 * tr2 + tr12 *
2352 ci2 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr11 * ti2 + tr12 * ti3;
2353 cr3 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr12 * tr2 + tr11 *
2355 ci3 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr12 * ti2 + tr11 * ti3;
2356 cr5 = ti11 * tr5 + ti12 * tr4;
2357 ci5 = ti11 * ti5 + ti12 * ti4;
2358 cr4 = ti12 * tr5 - ti11 * tr4;
2359 ci4 = ti12 * ti5 - ti11 * ti4;
2368 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * dr2
2370 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * di2 -
2372 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * dr3 +
2374 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * di3 - wa2[
2376 ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * dr4
2378 ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * di4 -
2380 ch[i__ - 1 + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 1] * dr5 +
2382 ch[i__ + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 1] * di5 - wa4[
2391 static void radb2(integer_t *ido, integer_t *l1, real_t *cc,
2392 real_t *ch, real_t *wa1)
2395 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2398 integer_t i__, k, ic;
2405 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2408 cc_offset = 1 + cc_dim1 * 3;
2414 for (k = 1; k <= i__1; ++k) {
2415 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1 + 1] +
2416 cc[*ido + ((k << 1) + 2) * cc_dim1];
2417 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1
2418 + 1] - cc[*ido + ((k << 1) + 2) * cc_dim1];
2421 if ((i__1 = *ido - 2) < 0) {
2423 }
else if (i__1 == 0) {
2431 for (k = 1; k <= i__1; ++k) {
2433 for (i__ = 3; i__ <= i__2; i__ += 2) {
2435 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + ((k << 1) +
2436 1) * cc_dim1] + cc[ic - 1 + ((k << 1) + 2) * cc_dim1];
2437 tr2 = cc[i__ - 1 + ((k << 1) + 1) * cc_dim1] - cc[ic - 1 + ((k <<
2439 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + ((k << 1) + 1) *
2440 cc_dim1] - cc[ic + ((k << 1) + 2) * cc_dim1];
2441 ti2 = cc[i__ + ((k << 1) + 1) * cc_dim1] + cc[ic + ((k << 1) + 2)
2443 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * tr2
2444 - wa1[i__ - 1] * ti2;
2445 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * ti2 +
2451 if (*ido % 2 == 1) {
2456 for (k = 1; k <= i__1; ++k) {
2457 ch[*ido + (k + ch_dim2) * ch_dim1] = cc[*ido + ((k << 1) + 1) *
2458 cc_dim1] + cc[*ido + ((k << 1) + 1) * cc_dim1];
2459 ch[*ido + (k + (ch_dim2 << 1)) * ch_dim1] = -(cc[((k << 1) + 2) *
2460 cc_dim1 + 1] + cc[((k << 1) + 2) * cc_dim1 + 1]);
2467 static void radb3(integer_t *ido, integer_t *l1, real_t *cc,
2468 real_t *ch, real_t *wa1, real_t *wa2)
2472 static real_t taur = REAL_CONSTANT(-0.5);
2473 static real_t taui =
2474 REAL_CONSTANT(0.8660254037844386467637231707529361834710262690519031402790348975);
2477 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2480 integer_t i__, k, ic;
2481 real_t ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
2487 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2490 cc_offset = 1 + (cc_dim1 << 2);
2497 for (k = 1; k <= i__1; ++k) {
2498 tr2 = cc[*ido + (k * 3 + 2) * cc_dim1] + cc[*ido + (k * 3 + 2) *
2500 cr2 = cc[(k * 3 + 1) * cc_dim1 + 1] + taur * tr2;
2501 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 3 + 1) * cc_dim1 + 1] + tr2;
2502 ci3 = taui * (cc[(k * 3 + 3) * cc_dim1 + 1] + cc[(k * 3 + 3) *
2504 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci3;
2505 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr2 + ci3;
2513 for (k = 1; k <= i__1; ++k) {
2515 for (i__ = 3; i__ <= i__2; i__ += 2) {
2517 tr2 = cc[i__ - 1 + (k * 3 + 3) * cc_dim1] + cc[ic - 1 + (k * 3 +
2519 cr2 = cc[i__ - 1 + (k * 3 + 1) * cc_dim1] + taur * tr2;
2520 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 3 + 1) *
2522 ti2 = cc[i__ + (k * 3 + 3) * cc_dim1] - cc[ic + (k * 3 + 2) *
2524 ci2 = cc[i__ + (k * 3 + 1) * cc_dim1] + taur * ti2;
2525 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 3 + 1) *
2527 cr3 = taui * (cc[i__ - 1 + (k * 3 + 3) * cc_dim1] - cc[ic - 1 + (
2528 k * 3 + 2) * cc_dim1]);
2529 ci3 = taui * (cc[i__ + (k * 3 + 3) * cc_dim1] + cc[ic + (k * 3 +
2535 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * dr2
2536 - wa1[i__ - 1] * di2;
2537 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * di2 +
2539 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 2] * dr3 -
2541 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 2] * di3 + wa2[
2550 static void radb4(integer_t *ido, integer_t *l1, real_t *cc,
2551 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3)
2555 static real_t sqrt2 =
2556 REAL_CONSTANT(1.41421356237309504880168872420969807856967187536948073176679738);
2559 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2562 integer_t i__, k, ic;
2563 real_t ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2,
2570 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2573 cc_offset = 1 + cc_dim1 * 5;
2581 for (k = 1; k <= i__1; ++k) {
2582 tr1 = cc[((k << 2) + 1) * cc_dim1 + 1] - cc[*ido + ((k << 2) + 4) *
2584 tr2 = cc[((k << 2) + 1) * cc_dim1 + 1] + cc[*ido + ((k << 2) + 4) *
2586 tr3 = cc[*ido + ((k << 2) + 2) * cc_dim1] + cc[*ido + ((k << 2) + 2) *
2588 tr4 = cc[((k << 2) + 3) * cc_dim1 + 1] + cc[((k << 2) + 3) * cc_dim1
2590 ch[(k + ch_dim2) * ch_dim1 + 1] = tr2 + tr3;
2591 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = tr1 - tr4;
2592 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = tr2 - tr3;
2593 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = tr1 + tr4;
2596 if ((i__1 = *ido - 2) < 0) {
2598 }
else if (i__1 == 0) {
2606 for (k = 1; k <= i__1; ++k) {
2608 for (i__ = 3; i__ <= i__2; i__ += 2) {
2610 ti1 = cc[i__ + ((k << 2) + 1) * cc_dim1] + cc[ic + ((k << 2) + 4)
2612 ti2 = cc[i__ + ((k << 2) + 1) * cc_dim1] - cc[ic + ((k << 2) + 4)
2614 ti3 = cc[i__ + ((k << 2) + 3) * cc_dim1] - cc[ic + ((k << 2) + 2)
2616 tr4 = cc[i__ + ((k << 2) + 3) * cc_dim1] + cc[ic + ((k << 2) + 2)
2618 tr1 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] - cc[ic - 1 + ((k <<
2620 tr2 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] + cc[ic - 1 + ((k <<
2622 ti4 = cc[i__ - 1 + ((k << 2) + 3) * cc_dim1] - cc[ic - 1 + ((k <<
2624 tr3 = cc[i__ - 1 + ((k << 2) + 3) * cc_dim1] + cc[ic - 1 + ((k <<
2626 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = tr2 + tr3;
2628 ch[i__ + (k + ch_dim2) * ch_dim1] = ti2 + ti3;
2634 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * cr2
2635 - wa1[i__ - 1] * ci2;
2636 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * ci2 +
2638 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 2] * cr3 -
2640 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 2] * ci3 + wa2[
2642 ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 2] * cr4
2643 - wa3[i__ - 1] * ci4;
2644 ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 2] * ci4 +
2650 if (*ido % 2 == 1) {
2655 for (k = 1; k <= i__1; ++k) {
2656 ti1 = cc[((k << 2) + 2) * cc_dim1 + 1] + cc[((k << 2) + 4) * cc_dim1
2658 ti2 = cc[((k << 2) + 4) * cc_dim1 + 1] - cc[((k << 2) + 2) * cc_dim1
2660 tr1 = cc[*ido + ((k << 2) + 1) * cc_dim1] - cc[*ido + ((k << 2) + 3) *
2662 tr2 = cc[*ido + ((k << 2) + 1) * cc_dim1] + cc[*ido + ((k << 2) + 3) *
2664 ch[*ido + (k + ch_dim2) * ch_dim1] = tr2 + tr2;
2665 ch[*ido + (k + (ch_dim2 << 1)) * ch_dim1] = sqrt2 * (tr1 - ti1);
2666 ch[*ido + (k + ch_dim2 * 3) * ch_dim1] = ti2 + ti2;
2667 ch[*ido + (k + (ch_dim2 << 2)) * ch_dim1] = -sqrt2 * (tr1 + ti1);
2674 static void radb5(integer_t *ido, integer_t *l1, real_t *cc,
2675 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3,
2680 static real_t tr11 =
2681 REAL_CONSTANT(0.3090169943749474241022934171828195886015458990288143106772431137);
2682 static real_t ti11 =
2683 REAL_CONSTANT(0.9510565162951535721164393337938214340569863412575022244730564442);
2684 static real_t tr12 =
2685 REAL_CONSTANT(-0.8090169943749474241022934171828190588601545899028814310677431135);
2686 static real_t ti12 =
2687 REAL_CONSTANT(0.5877852522924731291687059546390727685976524376431459107227248076);
2690 integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2;
2693 integer_t i__, k, ic;
2694 real_t ci2, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4,
2695 ti2, ti3, ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5;
2701 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2704 cc_offset = 1 + cc_dim1 * 6;
2713 for (k = 1; k <= i__1; ++k) {
2714 ti5 = cc[(k * 5 + 3) * cc_dim1 + 1] + cc[(k * 5 + 3) * cc_dim1 + 1];
2715 ti4 = cc[(k * 5 + 5) * cc_dim1 + 1] + cc[(k * 5 + 5) * cc_dim1 + 1];
2716 tr2 = cc[*ido + (k * 5 + 2) * cc_dim1] + cc[*ido + (k * 5 + 2) *
2718 tr3 = cc[*ido + (k * 5 + 4) * cc_dim1] + cc[*ido + (k * 5 + 4) *
2720 ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 5 + 1) * cc_dim1 + 1] + tr2
2722 cr2 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr11 * tr2 + tr12 * tr3;
2723 cr3 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr12 * tr2 + tr11 * tr3;
2724 ci5 = ti11 * ti5 + ti12 * ti4;
2725 ci4 = ti12 * ti5 - ti11 * ti4;
2726 ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci5;
2727 ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr3 - ci4;
2728 ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = cr3 + ci4;
2729 ch[(k + ch_dim2 * 5) * ch_dim1 + 1] = cr2 + ci5;
2737 for (k = 1; k <= i__1; ++k) {
2739 for (i__ = 3; i__ <= i__2; i__ += 2) {
2741 ti5 = cc[i__ + (k * 5 + 3) * cc_dim1] + cc[ic + (k * 5 + 2) *
2743 ti2 = cc[i__ + (k * 5 + 3) * cc_dim1] - cc[ic + (k * 5 + 2) *
2745 ti4 = cc[i__ + (k * 5 + 5) * cc_dim1] + cc[ic + (k * 5 + 4) *
2747 ti3 = cc[i__ + (k * 5 + 5) * cc_dim1] - cc[ic + (k * 5 + 4) *
2749 tr5 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] - cc[ic - 1 + (k * 5 +
2751 tr2 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] + cc[ic - 1 + (k * 5 +
2753 tr4 = cc[i__ - 1 + (k * 5 + 5) * cc_dim1] - cc[ic - 1 + (k * 5 +
2755 tr3 = cc[i__ - 1 + (k * 5 + 5) * cc_dim1] + cc[ic - 1 + (k * 5 +
2757 ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 5 + 1) *
2758 cc_dim1] + tr2 + tr3;
2759 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 5 + 1) *
2760 cc_dim1] + ti2 + ti3;
2761 cr2 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr11 * tr2 + tr12 *
2763 ci2 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr11 * ti2 + tr12 * ti3;
2764 cr3 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr12 * tr2 + tr11 *
2766 ci3 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr12 * ti2 + tr11 * ti3;
2767 cr5 = ti11 * tr5 + ti12 * tr4;
2768 ci5 = ti11 * ti5 + ti12 * ti4;
2769 cr4 = ti12 * tr5 - ti11 * tr4;
2770 ci4 = ti12 * ti5 - ti11 * ti4;
2779 ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * dr2
2780 - wa1[i__ - 1] * di2;
2781 ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 2] * di2 +
2783 ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 2] * dr3 -
2785 ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 2] * di3 + wa2[
2787 ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 2] * dr4
2788 - wa3[i__ - 1] * di4;
2789 ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 2] * di4 +
2791 ch[i__ - 1 + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 2] * dr5 -
2793 ch[i__ + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 2] * di5 + wa4[
2802 static void radbg(integer_t *ido, integer_t *ip, integer_t *l1, integer_t *
2803 idl1, real_t *cc, real_t *c1, real_t *c2, real_t *ch,
2804 real_t *ch2, real_t *wa)
2809 REAL_CONSTANT(6.283185307179586476925286766559005768394338798750116419498891846);
2812 integer_t ch_dim1, ch_dim2, ch_offset, cc_dim1, cc_dim2, cc_offset, c1_dim1,
2813 c1_dim2, c1_offset, c2_dim1, c2_offset, ch2_dim1, ch2_offset,
2817 integer_t i__, j, k, l, j2, ic, jc, lc, ik, is;
2818 real_t dc2, ai1, ai2, ar1, ar2, ds2;
2820 real_t dcp, arg, dsp, ar1h, ar2h;
2821 integer_t idp2, ipp2, idij, ipph;
2826 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
2830 c1_offset = 1 + c1_dim1 * (1 + c1_dim2);
2834 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
2837 ch2_offset = 1 + ch2_dim1;
2840 c2_offset = 1 + c2_dim1;
2845 arg = tpi / (real_t) (*ip);
2849 nbd = (*ido - 1) / 2;
2851 ipph = (*ip + 1) / 2;
2856 for (k = 1; k <= i__1; ++k) {
2858 for (i__ = 1; i__ <= i__2; ++i__) {
2859 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * cc_dim2 + 1) *
2868 for (i__ = 1; i__ <= i__1; ++i__) {
2870 for (k = 1; k <= i__2; ++k) {
2871 ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * cc_dim2 + 1) *
2879 for (j = 2; j <= i__1; ++j) {
2883 for (k = 1; k <= i__2; ++k) {
2884 ch[(k + j * ch_dim2) * ch_dim1 + 1] = cc[*ido + (j2 - 2 + k *
2885 cc_dim2) * cc_dim1] + cc[*ido + (j2 - 2 + k * cc_dim2) *
2887 ch[(k + jc * ch_dim2) * ch_dim1 + 1] = cc[(j2 - 1 + k * cc_dim2) *
2888 cc_dim1 + 1] + cc[(j2 - 1 + k * cc_dim2) * cc_dim1 + 1];
2900 for (j = 2; j <= i__1; ++j) {
2903 for (k = 1; k <= i__2; ++k) {
2905 for (i__ = 3; i__ <= i__3; i__ += 2) {
2907 ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1] = cc[i__ - 1 + ((j
2908 << 1) - 1 + k * cc_dim2) * cc_dim1] + cc[ic - 1 + ((j
2909 << 1) - 2 + k * cc_dim2) * cc_dim1];
2910 ch[i__ - 1 + (k + jc * ch_dim2) * ch_dim1] = cc[i__ - 1 + ((j
2911 << 1) - 1 + k * cc_dim2) * cc_dim1] - cc[ic - 1 + ((j
2912 << 1) - 2 + k * cc_dim2) * cc_dim1];
2913 ch[i__ + (k + j * ch_dim2) * ch_dim1] = cc[i__ + ((j << 1) -
2914 1 + k * cc_dim2) * cc_dim1] - cc[ic + ((j << 1) - 2 +
2915 k * cc_dim2) * cc_dim1];
2916 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = cc[i__ + ((j << 1) -
2917 1 + k * cc_dim2) * cc_dim1] + cc[ic + ((j << 1) - 2 +
2918 k * cc_dim2) * cc_dim1];
2928 for (j = 2; j <= i__1; ++j) {
2931 for (i__ = 3; i__ <= i__2; i__ += 2) {
2934 for (k = 1; k <= i__3; ++k) {
2935 ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1] = cc[i__ - 1 + ((j
2936 << 1) - 1 + k * cc_dim2) * cc_dim1] + cc[ic - 1 + ((j
2937 << 1) - 2 + k * cc_dim2) * cc_dim1];
2938 ch[i__ - 1 + (k + jc * ch_dim2) * ch_dim1] = cc[i__ - 1 + ((j
2939 << 1) - 1 + k * cc_dim2) * cc_dim1] - cc[ic - 1 + ((j
2940 << 1) - 2 + k * cc_dim2) * cc_dim1];
2941 ch[i__ + (k + j * ch_dim2) * ch_dim1] = cc[i__ + ((j << 1) -
2942 1 + k * cc_dim2) * cc_dim1] - cc[ic + ((j << 1) - 2 +
2943 k * cc_dim2) * cc_dim1];
2944 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = cc[i__ + ((j << 1) -
2945 1 + k * cc_dim2) * cc_dim1] + cc[ic + ((j << 1) - 2 +
2946 k * cc_dim2) * cc_dim1];
2954 ar1 = REAL_CONSTANT(1.0);
2955 ai1 = REAL_CONSTANT(0.0);
2957 for (l = 2; l <= i__1; ++l) {
2959 ar1h = dcp * ar1 - dsp * ai1;
2960 ai1 = dcp * ai1 + dsp * ar1;
2963 for (ik = 1; ik <= i__2; ++ik) {
2964 c2[ik + l * c2_dim1] = ch2[ik + ch2_dim1] + ar1 * ch2[ik + (
2966 c2[ik + lc * c2_dim1] = ai1 * ch2[ik + *ip * ch2_dim1];
2974 for (j = 3; j <= i__2; ++j) {
2976 ar2h = dc2 * ar2 - ds2 * ai2;
2977 ai2 = dc2 * ai2 + ds2 * ar2;
2980 for (ik = 1; ik <= i__3; ++ik) {
2981 c2[ik + l * c2_dim1] += ar2 * ch2[ik + j * ch2_dim1];
2982 c2[ik + lc * c2_dim1] += ai2 * ch2[ik + jc * ch2_dim1];
2990 for (j = 2; j <= i__1; ++j) {
2992 for (ik = 1; ik <= i__2; ++ik) {
2993 ch2[ik + ch2_dim1] += ch2[ik + j * ch2_dim1];
2999 for (j = 2; j <= i__1; ++j) {
3002 for (k = 1; k <= i__2; ++k) {
3003 ch[(k + j * ch_dim2) * ch_dim1 + 1] = c1[(k + j * c1_dim2) *
3004 c1_dim1 + 1] - c1[(k + jc * c1_dim2) * c1_dim1 + 1];
3005 ch[(k + jc * ch_dim2) * ch_dim1 + 1] = c1[(k + j * c1_dim2) *
3006 c1_dim1 + 1] + c1[(k + jc * c1_dim2) * c1_dim1 + 1];
3018 for (j = 2; j <= i__1; ++j) {
3021 for (k = 1; k <= i__2; ++k) {
3023 for (i__ = 3; i__ <= i__3; i__ += 2) {
3024 ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1] = c1[i__ - 1 + (k +
3025 j * c1_dim2) * c1_dim1] - c1[i__ + (k + jc * c1_dim2)
3027 ch[i__ - 1 + (k + jc * ch_dim2) * ch_dim1] = c1[i__ - 1 + (k
3028 + j * c1_dim2) * c1_dim1] + c1[i__ + (k + jc *
3029 c1_dim2) * c1_dim1];
3030 ch[i__ + (k + j * ch_dim2) * ch_dim1] = c1[i__ + (k + j *
3031 c1_dim2) * c1_dim1] + c1[i__ - 1 + (k + jc * c1_dim2)
3033 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = c1[i__ + (k + j *
3034 c1_dim2) * c1_dim1] - c1[i__ - 1 + (k + jc * c1_dim2)
3045 for (j = 2; j <= i__1; ++j) {
3048 for (i__ = 3; i__ <= i__2; i__ += 2) {
3050 for (k = 1; k <= i__3; ++k) {
3051 ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1] = c1[i__ - 1 + (k +
3052 j * c1_dim2) * c1_dim1] - c1[i__ + (k + jc * c1_dim2)
3054 ch[i__ - 1 + (k + jc * ch_dim2) * ch_dim1] = c1[i__ - 1 + (k
3055 + j * c1_dim2) * c1_dim1] + c1[i__ + (k + jc *
3056 c1_dim2) * c1_dim1];
3057 ch[i__ + (k + j * ch_dim2) * ch_dim1] = c1[i__ + (k + j *
3058 c1_dim2) * c1_dim1] + c1[i__ - 1 + (k + jc * c1_dim2)
3060 ch[i__ + (k + jc * ch_dim2) * ch_dim1] = c1[i__ + (k + j *
3061 c1_dim2) * c1_dim1] - c1[i__ - 1 + (k + jc * c1_dim2)
3074 for (ik = 1; ik <= i__1; ++ik) {
3075 c2[ik + c2_dim1] = ch2[ik + ch2_dim1];
3079 for (j = 2; j <= i__1; ++j) {
3081 for (k = 1; k <= i__2; ++k) {
3082 c1[(k + j * c1_dim2) * c1_dim1 + 1] = ch[(k + j * ch_dim2) *
3093 for (j = 2; j <= i__1; ++j) {
3097 for (i__ = 3; i__ <= i__2; i__ += 2) {
3100 for (k = 1; k <= i__3; ++k) {
3101 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[
3102 i__ - 1 + (k + j * ch_dim2) * ch_dim1] - wa[idij] *
3103 ch[i__ + (k + j * ch_dim2) * ch_dim1];
3104 c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__
3105 + (k + j * ch_dim2) * ch_dim1] + wa[idij] * ch[i__ -
3106 1 + (k + j * ch_dim2) * ch_dim1];
3117 for (j = 2; j <= i__1; ++j) {
3120 for (k = 1; k <= i__2; ++k) {
3123 for (i__ = 3; i__ <= i__3; i__ += 2) {
3125 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[
3126 i__ - 1 + (k + j * ch_dim2) * ch_dim1] - wa[idij] *
3127 ch[i__ + (k + j * ch_dim2) * ch_dim1];
3128 c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__
3129 + (k + j * ch_dim2) * ch_dim1] + wa[idij] * ch[i__ -
3130 1 + (k + j * ch_dim2) * ch_dim1];
3141 static void radf2(integer_t *ido, integer_t *l1, real_t *cc,
3142 real_t *ch, real_t *wa1)
3145 integer_t ch_dim1, ch_offset, cc_dim1, cc_dim2, cc_offset, i__1, i__2;
3148 integer_t i__, k, ic;
3154 ch_offset = 1 + ch_dim1 * 3;
3158 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
3164 for (k = 1; k <= i__1; ++k) {
3165 ch[((k << 1) + 1) * ch_dim1 + 1] = cc[(k + cc_dim2) * cc_dim1 + 1] +
3166 cc[(k + (cc_dim2 << 1)) * cc_dim1 + 1];
3167 ch[*ido + ((k << 1) + 2) * ch_dim1] = cc[(k + cc_dim2) * cc_dim1 + 1]
3168 - cc[(k + (cc_dim2 << 1)) * cc_dim1 + 1];
3171 if ((i__1 = *ido - 2) < 0) {
3173 }
else if (i__1 == 0) {
3181 for (k = 1; k <= i__1; ++k) {
3183 for (i__ = 3; i__ <= i__2; i__ += 2) {
3185 tr2 = wa1[i__ - 2] * cc[i__ - 1 + (k + (cc_dim2 << 1)) * cc_dim1]
3186 + wa1[i__ - 1] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1];
3187 ti2 = wa1[i__ - 2] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1] -
3188 wa1[i__ - 1] * cc[i__ - 1 + (k + (cc_dim2 << 1)) *
3190 ch[i__ + ((k << 1) + 1) * ch_dim1] = cc[i__ + (k + cc_dim2) *
3192 ch[ic + ((k << 1) + 2) * ch_dim1] = ti2 - cc[i__ + (k + cc_dim2) *
3194 ch[i__ - 1 + ((k << 1) + 1) * ch_dim1] = cc[i__ - 1 + (k +
3195 cc_dim2) * cc_dim1] + tr2;
3196 ch[ic - 1 + ((k << 1) + 2) * ch_dim1] = cc[i__ - 1 + (k + cc_dim2)
3202 if (*ido % 2 == 1) {
3207 for (k = 1; k <= i__1; ++k) {
3208 ch[((k << 1) + 2) * ch_dim1 + 1] = -cc[*ido + (k + (cc_dim2 << 1)) *
3210 ch[*ido + ((k << 1) + 1) * ch_dim1] = cc[*ido + (k + cc_dim2) *
3218 static void radf3(integer_t *ido, integer_t *l1, real_t *cc,
3219 real_t *ch, real_t *wa1, real_t *wa2)
3223 static real_t taur = REAL_CONSTANT(-0.5);
3224 static real_t taui =
3225 REAL_CONSTANT(0.8660254037844386467637231707529361834710262690519031402790348975);
3228 integer_t ch_dim1, ch_offset, cc_dim1, cc_dim2, cc_offset, i__1, i__2;
3231 integer_t i__, k, ic;
3232 real_t ci2, di2, di3, cr2, dr2, dr3, ti2, ti3, tr2, tr3;
3237 ch_offset = 1 + (ch_dim1 << 2);
3241 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
3248 for (k = 1; k <= i__1; ++k) {
3249 cr2 = cc[(k + (cc_dim2 << 1)) * cc_dim1 + 1] + cc[(k + cc_dim2 * 3) *
3251 ch[(k * 3 + 1) * ch_dim1 + 1] = cc[(k + cc_dim2) * cc_dim1 + 1] + cr2;
3252 ch[(k * 3 + 3) * ch_dim1 + 1] = taui * (cc[(k + cc_dim2 * 3) *
3253 cc_dim1 + 1] - cc[(k + (cc_dim2 << 1)) * cc_dim1 + 1]);
3254 ch[*ido + (k * 3 + 2) * ch_dim1] = cc[(k + cc_dim2) * cc_dim1 + 1] +
3263 for (k = 1; k <= i__1; ++k) {
3265 for (i__ = 3; i__ <= i__2; i__ += 2) {
3267 dr2 = wa1[i__ - 2] * cc[i__ - 1 + (k + (cc_dim2 << 1)) * cc_dim1]
3268 + wa1[i__ - 1] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1];
3269 di2 = wa1[i__ - 2] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1] -
3270 wa1[i__ - 1] * cc[i__ - 1 + (k + (cc_dim2 << 1)) *
3272 dr3 = wa2[i__ - 2] * cc[i__ - 1 + (k + cc_dim2 * 3) * cc_dim1] +
3273 wa2[i__ - 1] * cc[i__ + (k + cc_dim2 * 3) * cc_dim1];
3274 di3 = wa2[i__ - 2] * cc[i__ + (k + cc_dim2 * 3) * cc_dim1] - wa2[
3275 i__ - 1] * cc[i__ - 1 + (k + cc_dim2 * 3) * cc_dim1];
3278 ch[i__ - 1 + (k * 3 + 1) * ch_dim1] = cc[i__ - 1 + (k + cc_dim2) *
3280 ch[i__ + (k * 3 + 1) * ch_dim1] = cc[i__ + (k + cc_dim2) *
3282 tr2 = cc[i__ - 1 + (k + cc_dim2) * cc_dim1] + taur * cr2;
3283 ti2 = cc[i__ + (k + cc_dim2) * cc_dim1] + taur * ci2;
3284 tr3 = taui * (di2 - di3);
3285 ti3 = taui * (dr3 - dr2);
3286 ch[i__ - 1 + (k * 3 + 3) * ch_dim1] = tr2 + tr3;
3287 ch[ic - 1 + (k * 3 + 2) * ch_dim1] = tr2 - tr3;
3288 ch[i__ + (k * 3 + 3) * ch_dim1] = ti2 + ti3;
3289 ch[ic + (k * 3 + 2) * ch_dim1] = ti3 - ti2;
3297 static void radf4(integer_t *ido, integer_t *l1, real_t *cc,
3298 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3)
3302 static real_t hsqt2 =
3303 REAL_CONSTANT(0.70710678118654752440084436210484903928483593768474036588339869);
3306 integer_t cc_dim1, cc_dim2, cc_offset, ch_dim1, ch_offset, i__1, i__2;
3309 integer_t i__, k, ic;
3310 real_t ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2,
3316 ch_offset = 1 + ch_dim1 * 5;
3320 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
3328 for (k = 1; k <= i__1; ++k) {
3329 tr1 = cc[(k + (cc_dim2 << 1)) * cc_dim1 + 1] + cc[(k + (cc_dim2 << 2))
3331 tr2 = cc[(k + cc_dim2) * cc_dim1 + 1] + cc[(k + cc_dim2 * 3) *
3333 ch[((k << 2) + 1) * ch_dim1 + 1] = tr1 + tr2;
3334 ch[*ido + ((k << 2) + 4) * ch_dim1] = tr2 - tr1;
3335 ch[*ido + ((k << 2) + 2) * ch_dim1] = cc[(k + cc_dim2) * cc_dim1 + 1]
3336 - cc[(k + cc_dim2 * 3) * cc_dim1 + 1];
3337 ch[((k << 2) + 3) * ch_dim1 + 1] = cc[(k + (cc_dim2 << 2)) * cc_dim1
3338 + 1] - cc[(k + (cc_dim2 << 1)) * cc_dim1 + 1];
3341 if ((i__1 = *ido - 2) < 0) {
3343 }
else if (i__1 == 0) {
3351 for (k = 1; k <= i__1; ++k) {
3353 for (i__ = 3; i__ <= i__2; i__ += 2) {
3355 cr2 = wa1[i__ - 2] * cc[i__ - 1 + (k + (cc_dim2 << 1)) * cc_dim1]
3356 + wa1[i__ - 1] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1];
3357 ci2 = wa1[i__ - 2] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1] -
3358 wa1[i__ - 1] * cc[i__ - 1 + (k + (cc_dim2 << 1)) *
3360 cr3 = wa2[i__ - 2] * cc[i__ - 1 + (k + cc_dim2 * 3) * cc_dim1] +
3361 wa2[i__ - 1] * cc[i__ + (k + cc_dim2 * 3) * cc_dim1];
3362 ci3 = wa2[i__ - 2] * cc[i__ + (k + cc_dim2 * 3) * cc_dim1] - wa2[
3363 i__ - 1] * cc[i__ - 1 + (k + cc_dim2 * 3) * cc_dim1];
3364 cr4 = wa3[i__ - 2] * cc[i__ - 1 + (k + (cc_dim2 << 2)) * cc_dim1]
3365 + wa3[i__ - 1] * cc[i__ + (k + (cc_dim2 << 2)) * cc_dim1];
3366 ci4 = wa3[i__ - 2] * cc[i__ + (k + (cc_dim2 << 2)) * cc_dim1] -
3367 wa3[i__ - 1] * cc[i__ - 1 + (k + (cc_dim2 << 2)) *
3373 ti2 = cc[i__ + (k + cc_dim2) * cc_dim1] + ci3;
3374 ti3 = cc[i__ + (k + cc_dim2) * cc_dim1] - ci3;
3375 tr2 = cc[i__ - 1 + (k + cc_dim2) * cc_dim1] + cr3;
3376 tr3 = cc[i__ - 1 + (k + cc_dim2) * cc_dim1] - cr3;
3377 ch[i__ - 1 + ((k << 2) + 1) * ch_dim1] = tr1 + tr2;
3378 ch[ic - 1 + ((k << 2) + 4) * ch_dim1] = tr2 - tr1;
3379 ch[i__ + ((k << 2) + 1) * ch_dim1] = ti1 + ti2;
3380 ch[ic + ((k << 2) + 4) * ch_dim1] = ti1 - ti2;
3381 ch[i__ - 1 + ((k << 2) + 3) * ch_dim1] = ti4 + tr3;
3382 ch[ic - 1 + ((k << 2) + 2) * ch_dim1] = tr3 - ti4;
3383 ch[i__ + ((k << 2) + 3) * ch_dim1] = tr4 + ti3;
3384 ch[ic + ((k << 2) + 2) * ch_dim1] = tr4 - ti3;
3389 if (*ido % 2 == 1) {
3394 for (k = 1; k <= i__1; ++k) {
3395 ti1 = -hsqt2 * (cc[*ido + (k + (cc_dim2 << 1)) * cc_dim1] + cc[*ido +
3396 (k + (cc_dim2 << 2)) * cc_dim1]);
3397 tr1 = hsqt2 * (cc[*ido + (k + (cc_dim2 << 1)) * cc_dim1] - cc[*ido + (
3398 k + (cc_dim2 << 2)) * cc_dim1]);
3399 ch[*ido + ((k << 2) + 1) * ch_dim1] = tr1 + cc[*ido + (k + cc_dim2) *
3401 ch[*ido + ((k << 2) + 3) * ch_dim1] = cc[*ido + (k + cc_dim2) *
3403 ch[((k << 2) + 2) * ch_dim1 + 1] = ti1 - cc[*ido + (k + cc_dim2 * 3) *
3405 ch[((k << 2) + 4) * ch_dim1 + 1] = ti1 + cc[*ido + (k + cc_dim2 * 3) *
3413 static void radf5(integer_t *ido, integer_t *l1, real_t *cc,
3414 real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3,
3419 static real_t tr11 =
3420 REAL_CONSTANT(0.3090169943749474241022934171828195886015458990288143106772431137);
3421 static real_t ti11 =
3422 REAL_CONSTANT(0.9510565162951535721164393337938214340569863412575022244730564442);
3423 static real_t tr12 =
3424 REAL_CONSTANT(-0.8090169943749474241022934171828190588601545899028814310677431135);
3425 static real_t ti12 =
3426 REAL_CONSTANT(0.5877852522924731291687059546390727685976524376431459107227248076);
3429 integer_t cc_dim1, cc_dim2, cc_offset, ch_dim1, ch_offset, i__1, i__2;
3432 integer_t i__, k, ic;
3433 real_t ci2, di2, ci4, ci5, di3, di4, di5, ci3, cr2, cr3, dr2, dr3,
3434 dr4, dr5, cr5, cr4, ti2, ti3, ti5, ti4, tr2, tr3, tr4, tr5;
3439 ch_offset = 1 + ch_dim1 * 6;
3443 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
3452 for (k = 1; k <= i__1; ++k) {
3453 cr2 = cc[(k + cc_dim2 * 5) * cc_dim1 + 1] + cc[(k + (cc_dim2 << 1)) *
3455 ci5 = cc[(k + cc_dim2 * 5) * cc_dim1 + 1] - cc[(k + (cc_dim2 << 1)) *
3457 cr3 = cc[(k + (cc_dim2 << 2)) * cc_dim1 + 1] + cc[(k + cc_dim2 * 3) *
3459 ci4 = cc[(k + (cc_dim2 << 2)) * cc_dim1 + 1] - cc[(k + cc_dim2 * 3) *
3461 ch[(k * 5 + 1) * ch_dim1 + 1] = cc[(k + cc_dim2) * cc_dim1 + 1] + cr2
3463 ch[*ido + (k * 5 + 2) * ch_dim1] = cc[(k + cc_dim2) * cc_dim1 + 1] +
3464 tr11 * cr2 + tr12 * cr3;
3465 ch[(k * 5 + 3) * ch_dim1 + 1] = ti11 * ci5 + ti12 * ci4;
3466 ch[*ido + (k * 5 + 4) * ch_dim1] = cc[(k + cc_dim2) * cc_dim1 + 1] +
3467 tr12 * cr2 + tr11 * cr3;
3468 ch[(k * 5 + 5) * ch_dim1 + 1] = ti12 * ci5 - ti11 * ci4;
3476 for (k = 1; k <= i__1; ++k) {
3478 for (i__ = 3; i__ <= i__2; i__ += 2) {
3480 dr2 = wa1[i__ - 2] * cc[i__ - 1 + (k + (cc_dim2 << 1)) * cc_dim1]
3481 + wa1[i__ - 1] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1];
3482 di2 = wa1[i__ - 2] * cc[i__ + (k + (cc_dim2 << 1)) * cc_dim1] -
3483 wa1[i__ - 1] * cc[i__ - 1 + (k + (cc_dim2 << 1)) *
3485 dr3 = wa2[i__ - 2] * cc[i__ - 1 + (k + cc_dim2 * 3) * cc_dim1] +
3486 wa2[i__ - 1] * cc[i__ + (k + cc_dim2 * 3) * cc_dim1];
3487 di3 = wa2[i__ - 2] * cc[i__ + (k + cc_dim2 * 3) * cc_dim1] - wa2[
3488 i__ - 1] * cc[i__ - 1 + (k + cc_dim2 * 3) * cc_dim1];
3489 dr4 = wa3[i__ - 2] * cc[i__ - 1 + (k + (cc_dim2 << 2)) * cc_dim1]
3490 + wa3[i__ - 1] * cc[i__ + (k + (cc_dim2 << 2)) * cc_dim1];
3491 di4 = wa3[i__ - 2] * cc[i__ + (k + (cc_dim2 << 2)) * cc_dim1] -
3492 wa3[i__ - 1] * cc[i__ - 1 + (k + (cc_dim2 << 2)) *
3494 dr5 = wa4[i__ - 2] * cc[i__ - 1 + (k + cc_dim2 * 5) * cc_dim1] +
3495 wa4[i__ - 1] * cc[i__ + (k + cc_dim2 * 5) * cc_dim1];
3496 di5 = wa4[i__ - 2] * cc[i__ + (k + cc_dim2 * 5) * cc_dim1] - wa4[
3497 i__ - 1] * cc[i__ - 1 + (k + cc_dim2 * 5) * cc_dim1];
3506 ch[i__ - 1 + (k * 5 + 1) * ch_dim1] = cc[i__ - 1 + (k + cc_dim2) *
3507 cc_dim1] + cr2 + cr3;
3508 ch[i__ + (k * 5 + 1) * ch_dim1] = cc[i__ + (k + cc_dim2) *
3509 cc_dim1] + ci2 + ci3;
3510 tr2 = cc[i__ - 1 + (k + cc_dim2) * cc_dim1] + tr11 * cr2 + tr12 *
3512 ti2 = cc[i__ + (k + cc_dim2) * cc_dim1] + tr11 * ci2 + tr12 * ci3;
3513 tr3 = cc[i__ - 1 + (k + cc_dim2) * cc_dim1] + tr12 * cr2 + tr11 *
3515 ti3 = cc[i__ + (k + cc_dim2) * cc_dim1] + tr12 * ci2 + tr11 * ci3;
3516 tr5 = ti11 * cr5 + ti12 * cr4;
3517 ti5 = ti11 * ci5 + ti12 * ci4;
3518 tr4 = ti12 * cr5 - ti11 * cr4;
3519 ti4 = ti12 * ci5 - ti11 * ci4;
3520 ch[i__ - 1 + (k * 5 + 3) * ch_dim1] = tr2 + tr5;
3521 ch[ic - 1 + (k * 5 + 2) * ch_dim1] = tr2 - tr5;
3522 ch[i__ + (k * 5 + 3) * ch_dim1] = ti2 + ti5;
3523 ch[ic + (k * 5 + 2) * ch_dim1] = ti5 - ti2;
3524 ch[i__ - 1 + (k * 5 + 5) * ch_dim1] = tr3 + tr4;
3525 ch[ic - 1 + (k * 5 + 4) * ch_dim1] = tr3 - tr4;
3526 ch[i__ + (k * 5 + 5) * ch_dim1] = ti3 + ti4;
3527 ch[ic + (k * 5 + 4) * ch_dim1] = ti4 - ti3;
3535 static void radfg(integer_t *ido, integer_t *ip, integer_t *l1, integer_t *
3536 idl1, real_t *cc, real_t *c1, real_t *c2, real_t *ch,
3537 real_t *ch2, real_t *wa)
3542 REAL_CONSTANT(6.283185307179586476925286766559005768394338798750116419498891846);
3545 integer_t ch_dim1, ch_dim2, ch_offset, cc_dim1, cc_dim2, cc_offset, c1_dim1,
3546 c1_dim2, c1_offset, c2_dim1, c2_offset, ch2_dim1, ch2_offset,
3550 integer_t i__, j, k, l, j2, ic, jc, lc, ik, is;
3551 real_t dc2, ai1, ai2, ar1, ar2, ds2;
3553 real_t dcp, arg, dsp, ar1h, ar2h;
3554 integer_t idp2, ipp2, idij, ipph;
3559 ch_offset = 1 + ch_dim1 * (1 + ch_dim2);
3563 c1_offset = 1 + c1_dim1 * (1 + c1_dim2);
3567 cc_offset = 1 + cc_dim1 * (1 + cc_dim2);
3570 ch2_offset = 1 + ch2_dim1;
3573 c2_offset = 1 + c2_dim1;
3578 arg = tpi / (real_t) (*ip);
3581 ipph = (*ip + 1) / 2;
3584 nbd = (*ido - 1) / 2;
3589 for (ik = 1; ik <= i__1; ++ik) {
3590 ch2[ik + ch2_dim1] = c2[ik + c2_dim1];
3594 for (j = 2; j <= i__1; ++j) {
3596 for (k = 1; k <= i__2; ++k) {
3597 ch[(k + j * ch_dim2) * ch_dim1 + 1] = c1[(k + j * c1_dim2) *
3608 for (j = 2; j <= i__1; ++j) {
3612 for (i__ = 3; i__ <= i__2; i__ += 2) {
3615 for (k = 1; k <= i__3; ++k) {
3616 ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1] = wa[idij - 1] * c1[
3617 i__ - 1 + (k + j * c1_dim2) * c1_dim1] + wa[idij] *
3618 c1[i__ + (k + j * c1_dim2) * c1_dim1];
3619 ch[i__ + (k + j * ch_dim2) * ch_dim1] = wa[idij - 1] * c1[i__
3620 + (k + j * c1_dim2) * c1_dim1] - wa[idij] * c1[i__ -
3621 1 + (k + j * c1_dim2) * c1_dim1];
3632 for (j = 2; j <= i__1; ++j) {
3635 for (k = 1; k <= i__2; ++k) {
3638 for (i__ = 3; i__ <= i__3; i__ += 2) {
3640 ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1] = wa[idij - 1] * c1[
3641 i__ - 1 + (k + j * c1_dim2) * c1_dim1] + wa[idij] *
3642 c1[i__ + (k + j * c1_dim2) * c1_dim1];
3643 ch[i__ + (k + j * ch_dim2) * ch_dim1] = wa[idij - 1] * c1[i__
3644 + (k + j * c1_dim2) * c1_dim1] - wa[idij] * c1[i__ -
3645 1 + (k + j * c1_dim2) * c1_dim1];
3657 for (j = 2; j <= i__1; ++j) {
3660 for (k = 1; k <= i__2; ++k) {
3662 for (i__ = 3; i__ <= i__3; i__ += 2) {
3663 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = ch[i__ - 1 + (k +
3664 j * ch_dim2) * ch_dim1] + ch[i__ - 1 + (k + jc *
3665 ch_dim2) * ch_dim1];
3666 c1[i__ - 1 + (k + jc * c1_dim2) * c1_dim1] = ch[i__ + (k + j *
3667 ch_dim2) * ch_dim1] - ch[i__ + (k + jc * ch_dim2) *
3669 c1[i__ + (k + j * c1_dim2) * c1_dim1] = ch[i__ + (k + j *
3670 ch_dim2) * ch_dim1] + ch[i__ + (k + jc * ch_dim2) *
3672 c1[i__ + (k + jc * c1_dim2) * c1_dim1] = ch[i__ - 1 + (k + jc
3673 * ch_dim2) * ch_dim1] - ch[i__ - 1 + (k + j * ch_dim2)
3684 for (j = 2; j <= i__1; ++j) {
3687 for (i__ = 3; i__ <= i__2; i__ += 2) {
3689 for (k = 1; k <= i__3; ++k) {
3690 c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = ch[i__ - 1 + (k +
3691 j * ch_dim2) * ch_dim1] + ch[i__ - 1 + (k + jc *
3692 ch_dim2) * ch_dim1];
3693 c1[i__ - 1 + (k + jc * c1_dim2) * c1_dim1] = ch[i__ + (k + j *
3694 ch_dim2) * ch_dim1] - ch[i__ + (k + jc * ch_dim2) *
3696 c1[i__ + (k + j * c1_dim2) * c1_dim1] = ch[i__ + (k + j *
3697 ch_dim2) * ch_dim1] + ch[i__ + (k + jc * ch_dim2) *
3699 c1[i__ + (k + jc * c1_dim2) * c1_dim1] = ch[i__ - 1 + (k + jc
3700 * ch_dim2) * ch_dim1] - ch[i__ - 1 + (k + j * ch_dim2)
3711 for (ik = 1; ik <= i__1; ++ik) {
3712 c2[ik + c2_dim1] = ch2[ik + ch2_dim1];
3717 for (j = 2; j <= i__1; ++j) {
3720 for (k = 1; k <= i__2; ++k) {
3721 c1[(k + j * c1_dim2) * c1_dim1 + 1] = ch[(k + j * ch_dim2) *
3722 ch_dim1 + 1] + ch[(k + jc * ch_dim2) * ch_dim1 + 1];
3723 c1[(k + jc * c1_dim2) * c1_dim1 + 1] = ch[(k + jc * ch_dim2) *
3724 ch_dim1 + 1] - ch[(k + j * ch_dim2) * ch_dim1 + 1];
3730 ar1 = REAL_CONSTANT(1.0);
3731 ai1 = REAL_CONSTANT(0.0);
3733 for (l = 2; l <= i__1; ++l) {
3735 ar1h = dcp * ar1 - dsp * ai1;
3736 ai1 = dcp * ai1 + dsp * ar1;
3739 for (ik = 1; ik <= i__2; ++ik) {
3740 ch2[ik + l * ch2_dim1] = c2[ik + c2_dim1] + ar1 * c2[ik + (
3742 ch2[ik + lc * ch2_dim1] = ai1 * c2[ik + *ip * c2_dim1];
3750 for (j = 3; j <= i__2; ++j) {
3752 ar2h = dc2 * ar2 - ds2 * ai2;
3753 ai2 = dc2 * ai2 + ds2 * ar2;
3756 for (ik = 1; ik <= i__3; ++ik) {
3757 ch2[ik + l * ch2_dim1] += ar2 * c2[ik + j * c2_dim1];
3758 ch2[ik + lc * ch2_dim1] += ai2 * c2[ik + jc * c2_dim1];
3766 for (j = 2; j <= i__1; ++j) {
3768 for (ik = 1; ik <= i__2; ++ik) {
3769 ch2[ik + ch2_dim1] += c2[ik + j * c2_dim1];
3779 for (k = 1; k <= i__1; ++k) {
3781 for (i__ = 1; i__ <= i__2; ++i__) {
3782 cc[i__ + (k * cc_dim2 + 1) * cc_dim1] = ch[i__ + (k + ch_dim2) *
3791 for (i__ = 1; i__ <= i__1; ++i__) {
3793 for (k = 1; k <= i__2; ++k) {
3794 cc[i__ + (k * cc_dim2 + 1) * cc_dim1] = ch[i__ + (k + ch_dim2) *
3802 for (j = 2; j <= i__1; ++j) {
3806 for (k = 1; k <= i__2; ++k) {
3807 cc[*ido + (j2 - 2 + k * cc_dim2) * cc_dim1] = ch[(k + j * ch_dim2)
3809 cc[(j2 - 1 + k * cc_dim2) * cc_dim1 + 1] = ch[(k + jc * ch_dim2) *
3822 for (j = 2; j <= i__1; ++j) {
3826 for (k = 1; k <= i__2; ++k) {
3828 for (i__ = 3; i__ <= i__3; i__ += 2) {
3830 cc[i__ - 1 + (j2 - 1 + k * cc_dim2) * cc_dim1] = ch[i__ - 1 +
3831 (k + j * ch_dim2) * ch_dim1] + ch[i__ - 1 + (k + jc *
3832 ch_dim2) * ch_dim1];
3833 cc[ic - 1 + (j2 - 2 + k * cc_dim2) * cc_dim1] = ch[i__ - 1 + (
3834 k + j * ch_dim2) * ch_dim1] - ch[i__ - 1 + (k + jc *
3835 ch_dim2) * ch_dim1];
3836 cc[i__ + (j2 - 1 + k * cc_dim2) * cc_dim1] = ch[i__ + (k + j *
3837 ch_dim2) * ch_dim1] + ch[i__ + (k + jc * ch_dim2) *
3839 cc[ic + (j2 - 2 + k * cc_dim2) * cc_dim1] = ch[i__ + (k + jc *
3840 ch_dim2) * ch_dim1] - ch[i__ + (k + j * ch_dim2) *
3851 for (j = 2; j <= i__1; ++j) {
3855 for (i__ = 3; i__ <= i__2; i__ += 2) {
3858 for (k = 1; k <= i__3; ++k) {
3859 cc[i__ - 1 + (j2 - 1 + k * cc_dim2) * cc_dim1] = ch[i__ - 1 +
3860 (k + j * ch_dim2) * ch_dim1] + ch[i__ - 1 + (k + jc *
3861 ch_dim2) * ch_dim1];
3862 cc[ic - 1 + (j2 - 2 + k * cc_dim2) * cc_dim1] = ch[i__ - 1 + (
3863 k + j * ch_dim2) * ch_dim1] - ch[i__ - 1 + (k + jc *
3864 ch_dim2) * ch_dim1];
3865 cc[i__ + (j2 - 1 + k * cc_dim2) * cc_dim1] = ch[i__ + (k + j *
3866 ch_dim2) * ch_dim1] + ch[i__ + (k + jc * ch_dim2) *
3868 cc[ic + (j2 - 2 + k * cc_dim2) * cc_dim1] = ch[i__ + (k + jc *
3869 ch_dim2) * ch_dim1] - ch[i__ + (k + j * ch_dim2) *
3880 void rfftb(integer_t *n, real_t *r__, real_t *wsave,
3892 rfftb1(n, &r__[1], &wsave[1], &wsave[*n + 1], &ifac[1]);
3896 static void rfftb1(integer_t *n, real_t *c__, real_t *ch,
3897 real_t *wa, integer_t *ifac)
3903 integer_t i__, k1, l1, l2, na, nf, ip, iw, ix2, ix3, ix4, ido, idl1;
3917 for (k1 = 1; k1 <= i__1; ++k1) {
3930 radb4(&ido, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3]);
3933 radb4(&ido, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3]);
3944 radb2(&ido, &l1, &c__[1], &ch[1], &wa[iw]);
3947 radb2(&ido, &l1, &ch[1], &c__[1], &wa[iw]);
3959 radb3(&ido, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2]);
3962 radb3(&ido, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2]);
3976 radb5(&ido, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
3980 radb5(&ido, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
3989 radbg(&ido, &ip, &l1, &idl1, &c__[1], &c__[1], &c__[1], &ch[1], &ch[
3993 radbg(&ido, &ip, &l1, &idl1, &ch[1], &ch[1], &ch[1], &c__[1], &c__[1]
4001 iw += (ip - 1) * ido;
4008 for (i__ = 1; i__ <= i__1; ++i__) {
4015 void rfftf(integer_t *n, real_t *r__, real_t *wsave,
4027 rfftf1(n, &r__[1], &wsave[1], &wsave[*n + 1], &ifac[1]);
4031 static void rfftf1(integer_t *n, real_t *c__, real_t *ch,
4032 real_t *wa, integer_t *ifac)
4038 integer_t i__, k1, l1, l2, na, kh, nf, ip, iw, ix2, ix3, ix4, ido, idl1;
4052 for (k1 = 1; k1 <= i__1; ++k1) {
4058 iw -= (ip - 1) * ido;
4068 radf4(&ido, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3]);
4071 radf4(&ido, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3]);
4080 radf2(&ido, &l1, &c__[1], &ch[1], &wa[iw]);
4083 radf2(&ido, &l1, &ch[1], &c__[1], &wa[iw]);
4093 radf3(&ido, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2]);
4096 radf3(&ido, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2]);
4108 radf5(&ido, &l1, &c__[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
4112 radf5(&ido, &l1, &ch[1], &c__[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[
4122 radfg(&ido, &ip, &l1, &idl1, &c__[1], &c__[1], &c__[1], &ch[1], &ch[
4127 radfg(&ido, &ip, &l1, &idl1, &ch[1], &ch[1], &ch[1], &c__[1], &c__[1]
4138 for (i__ = 1; i__ <= i__1; ++i__) {
4145 void rffti(integer_t *n, real_t *wsave, integer_t *ifac)
4155 rffti1(n, &wsave[*n + 1], &ifac[1]);
4159 static void rffti1(integer_t *n, real_t *wa, integer_t *ifac)
4163 static integer_t ntryh[4] = { 4,2,3,5 };
4166 integer_t i__1, i__2, i__3;
4169 integer_t i__, j, k1, l1, l2, ib;
4171 integer_t ld, ii, nf, ip, nl, is, nq, nr;
4196 ntry = ntryh[j - 1];
4202 nr = nl - ntry * nq;
4210 ifac[nf + 2] = ntry;
4219 for (i__ = 2; i__ <= i__1; ++i__) {
4221 ifac[ib + 2] = ifac[ib + 1];
4231 tpi = REAL_CONSTANT(6.283185307179586476925286766559005768394338798750211619498891846);
4232 argh = tpi / (real_t) (*n);
4240 for (k1 = 1; k1 <= i__1; ++k1) {
4247 for (j = 1; j <= i__2; ++j) {
4250 argld = (real_t) ld * argh;
4251 fi = REAL_CONSTANT(0.0);
4253 for (ii = 3; ii <= i__3; ii += 2) {
4255 fi += REAL_CONSTANT(1.0);
4257 wa[i__ - 1] = cos(arg);
4270 void sinqb(integer_t *n, real_t *x, real_t *wsave,
4277 integer_t k, kc, ns2;
4289 x[1] *= REAL_CONSTANT(4.0);
4294 for (k = 2; k <= i__1; k += 2) {
4298 cosqb(n, &x[1], &wsave[1], &ifac[1]);
4300 for (k = 1; k <= i__1; ++k) {
4310 void sinqf(integer_t *n, real_t *x, real_t *wsave,
4317 integer_t k, kc, ns2;
4331 for (k = 1; k <= i__1; ++k) {
4338 cosqf(n, &x[1], &wsave[1], &ifac[1]);
4340 for (k = 2; k <= i__1; k += 2) {
4347 void sinqi(integer_t *n, real_t *wsave, integer_t *ifac)
4354 cosqi(n, &wsave[1], &ifac[1]);
4358 void sint(integer_t *n, real_t *x, real_t *wsave,
4361 integer_t np1, iw1, iw2;
4372 sint1(n, &x[1], &wsave[1], &wsave[iw1], &wsave[iw2], &ifac[1]);
4376 static void sint1(integer_t *n, real_t *war, real_t *was,
4377 real_t *xh, real_t *x, integer_t *ifac)
4381 static real_t sqrt3 =
4382 REAL_CONSTANT(1.732050807568877293527446341505872366942805253803806280558069795);
4390 integer_t kc, np1, ns2, modn;
4402 for (i__ = 1; i__ <= i__1; ++i__) {
4407 if ((i__1 = *n - 2) < 0) {
4409 }
else if (i__1 == 0) {
4418 xhold = sqrt3 * (xh[1] + xh[2]);
4419 xh[2] = sqrt3 * (xh[1] - xh[2]);
4425 x[1] = REAL_CONSTANT(0.0);
4427 for (k = 1; k <= i__1; ++k) {
4429 t1 = xh[k] - xh[kc];
4430 t2 = was[k] * (xh[k] + xh[kc]);
4432 x[kc + 1] = t2 - t1;
4437 x[ns2 + 2] = xh[ns2 + 1] * REAL_CONSTANT(4.0);
4439 rfftf1(&np1, &x[1], &xh[1], &war[1], &ifac[1]);
4440 xh[1] = x[1] * REAL_CONSTANT(0.5);
4442 for (i__ = 3; i__ <= i__1; i__ += 2) {
4443 xh[i__ - 1] = -x[i__];
4444 xh[i__] = xh[i__ - 2] + x[i__ - 1];
4450 xh[*n] = -x[*n + 1];
4453 for (i__ = 1; i__ <= i__1; ++i__) {
4461 void sinti(integer_t *n, real_t *wsave, integer_t *ifac)
4466 REAL_CONSTANT(3.141592653589793238462643383279502884197169399375158209749445923);
4486 dt = pi / (real_t) np1;
4488 for (k = 1; k <= i__1; ++k) {
4489 wsave[k] = sin(k * dt) * REAL_CONSTANT(2.0);
4492 rffti(&np1, &wsave[ns2 + 1], &ifac[1]);