1 /* from fftpkg package in cmlib and netlib -- translated by f2c and modified */
10 * cfft computes the forward or backward complex discrete fourier transform.
14 * n The length of the complex sequence c. The method is
15 * more efficient when n is the product of small primes.
17 * c A complex array of length n which contains the sequence
19 * wsave a real work array which must be dimensioned at least 4n+15
20 * in the program that calls cfft.
21 * isign 1 for transform, -1 for inverse transform.
22 * A call of cfft with isign = 1 followed by a call of cfft with
23 * isign = -1 will multiply the sequence by n.
29 * c(j)=the sum from k=1,...,n of
31 * c(k)*exp(-isign*i*(j-1)*(k-1)*2*pi/n)
36 int cfft(n
, c
, wsave
, isign
)
43 /* Parameter adjustments */
51 cffti1_(&n
, &wsave
[iw1
], &wsave
[iw2
]);
52 cfft1_(&n
, &c
[1], &wsave
[1], &wsave
[iw1
], &wsave
[iw2
], &isign
);
61 static int cfft1_(n
, c
, ch
, wa
, ifac
, isign
)
67 /* System generated locals */
72 int i
, k1
, l1
, l2
, n2
, na
, nf
, ip
, iw
, ix2
, ix3
, ix4
, nac
, ido
, idl1
;
74 /* Parameter adjustments */
86 for (k1
= 1; k1
<= i_1
; ++k1
) {
96 pass4_(&idot
, &l1
, &c
[1], &ch
[1], &wa
[iw
], &wa
[ix2
], &wa
[ix3
], isign
);
99 pass4_(&idot
, &l1
, &ch
[1], &c
[1], &wa
[iw
], &wa
[ix2
], &wa
[ix3
], isign
);
105 pass2_(&idot
, &l1
, &c
[1], &ch
[1], &wa
[iw
], isign
);
108 pass2_(&idot
, &l1
, &ch
[1], &c
[1], &wa
[iw
], isign
);
115 pass3_(&idot
, &l1
, &c
[1], &ch
[1], &wa
[iw
], &wa
[ix2
], isign
);
118 pass3_(&idot
, &l1
, &ch
[1], &c
[1], &wa
[iw
], &wa
[ix2
], isign
);
127 pass5_(&idot
, &l1
, &c
[1], &ch
[1], &wa
[iw
], &wa
[ix2
], &wa
[ix3
],
131 pass5_(&idot
, &l1
, &ch
[1], &c
[1], &wa
[iw
], &wa
[ix2
], &wa
[ix3
],
138 pass_(&nac
, &idot
, &ip
, &l1
, &idl1
, &c
[1], &c
[1], &c
[1], &ch
[1],
139 &ch
[1], &wa
[iw
], isign
);
142 pass_(&nac
, &idot
, &ip
, &l1
, &idl1
, &ch
[1], &ch
[1], &ch
[1], &c
[1],
143 &c
[1], &wa
[iw
], isign
);
150 iw
+= (ip
- 1) * idot
;
155 for (i
= 1; i
<= i_1
; ++i
) {
162 static int cffti1_(n
, wa
, ifac
)
167 /* Initialized data */
168 static int ntryh
[4] = { 3,4,2,5 };
170 /* System generated locals */
173 /* Local variables */
175 int idot
, ntry
, i
, j
;
177 int i1
, k1
, l1
, l2
, ib
;
179 int ld
, ii
, nf
, ip
, nl
, nq
, nr
;
184 /* Parameter adjustments */
195 if (j
- 4 <= 0) ntry
= ntryh
[j
- 1];
200 if (nr
!= 0) goto L101
;
204 if (ntry
== 2 && nf
!= 1) {
206 for (i
= 2; i
<= i_1
; ++i
) {
208 ifac
[ib
+ 2] = ifac
[ib
+ 1];
212 if (nl
!= 1) goto L104
;
216 tpi
= 6.28318530717959;
217 argh
= tpi
/ (double) (*n
);
221 for (k1
= 1; k1
<= i_1
; ++k1
) {
226 idot
= ido
+ ido
+ 2;
229 for (j
= 1; j
<= i_2
; ++j
) {
235 argld
= (double) ld
* argh
;
237 for (ii
= 4; ii
<= i_3
; ii
+= 2) {
241 wa
[i
- 1] = cos(arg
);
245 wa
[i1
- 1] = wa
[i
- 1];
254 static int pass_(nac
, ido
, ip
, l1
, idl1
, cc
, c1
, c2
, ch
, ch2
, wa
, isign
)
256 int *ido
, *ip
, *l1
, *idl1
;
257 double *cc
, *c1
, *c2
, *ch
, *ch2
, *wa
;
260 /* System generated locals */
261 int ch_dim1
, ch_dim2
, ch_offset
, cc_dim1
, cc_dim2
, cc_offset
, c1_dim1
,
262 c1_dim2
, c1_offset
, c2_dim1
, c2_offset
, ch2_dim1
, ch2_offset
,
265 /* Local variables */
266 int idij
, idlj
, idot
, ipph
, i
, j
, k
, l
, jc
, lc
, ik
, idj
, idl
, inc
, idp
;
270 /* Parameter adjustments */
273 cc_offset
= cc_dim1
* (cc_dim2
+ 1) + 1;
277 c1_offset
= c1_dim1
* (c1_dim2
+ 1) + 1;
280 c2_offset
= c2_dim1
+ 1;
284 ch_offset
= ch_dim1
* (ch_dim2
+ 1) + 1;
287 ch2_offset
= ch2_dim1
+ 1;
294 ipph
= (*ip
+ 1) / 2;
299 for (j
= 2; j
<= i_1
; ++j
) {
302 for (k
= 1; k
<= i_2
; ++k
) {
304 for (i
= 1; i
<= i_3
; ++i
) {
305 ch
[i
+ (k
+ j
* ch_dim2
) * ch_dim1
] =
306 cc
[i
+ (j
+ k
* cc_dim2
) * cc_dim1
]
307 + cc
[i
+ (jc
+ k
* cc_dim2
) * cc_dim1
];
308 ch
[i
+ (k
+ jc
* ch_dim2
) * ch_dim1
] =
309 cc
[i
+ (j
+ k
* cc_dim2
) * cc_dim1
]
310 - cc
[i
+ (jc
+ k
* cc_dim2
) * cc_dim1
];
315 for (k
= 1; k
<= i_1
; ++k
) {
317 for (i
= 1; i
<= i_2
; ++i
) {
318 ch
[i
+ (k
+ ch_dim2
) * ch_dim1
] = cc
[i
+ (k
* cc_dim2
+ 1) * cc_dim1
];
324 for (j
= 2; j
<= i_1
; ++j
) {
327 for (i
= 1; i
<= i_2
; ++i
) {
329 for (k
= 1; k
<= i_3
; ++k
) {
330 ch
[i
+ (k
+ j
* ch_dim2
) * ch_dim1
] =
331 cc
[i
+ (j
+ k
* cc_dim2
) * cc_dim1
]
332 + cc
[i
+ (jc
+ k
* cc_dim2
) * cc_dim1
];
333 ch
[i
+ (k
+ jc
* ch_dim2
) * ch_dim1
] =
334 cc
[i
+ (j
+ k
* cc_dim2
) * cc_dim1
]
335 - cc
[i
+ (jc
+ k
* cc_dim2
) * cc_dim1
];
340 for (i
= 1; i
<= i_1
; ++i
) {
342 for (k
= 1; k
<= i_2
; ++k
) {
343 ch
[i
+ (k
+ ch_dim2
) * ch_dim1
] = cc
[i
+ (k
* cc_dim2
+ 1) * cc_dim1
];
350 for (l
= 2; l
<= i_1
; ++l
) {
354 for (ik
= 1; ik
<= i_2
; ++ik
) {
355 c2
[ik
+ l
* c2_dim1
] = ch2
[ik
+ ch2_dim1
] + wa
[idl
- 1]
356 * ch2
[ik
+ (ch2_dim1
<< 1)];
357 c2
[ik
+ lc
* c2_dim1
] = - *isign
* wa
[idl
] * ch2
[ik
+ *ip
* ch2_dim1
];
362 for (j
= 3; j
<= i_2
; ++j
) {
371 for (ik
= 1; ik
<= i_3
; ++ik
) {
372 c2
[ik
+ l
* c2_dim1
] += war
* ch2
[ik
+ j
* ch2_dim1
];
373 c2
[ik
+ lc
* c2_dim1
] -= *isign
* wai
* ch2
[ik
+ jc
* ch2_dim1
];
378 for (j
= 2; j
<= i_1
; ++j
) {
380 for (ik
= 1; ik
<= i_2
; ++ik
) {
381 ch2
[ik
+ ch2_dim1
] += ch2
[ik
+ j
* ch2_dim1
];
385 for (j
= 2; j
<= i_1
; ++j
) {
388 for (ik
= 2; ik
<= i_2
; ik
+= 2) {
389 ch2
[ik
- 1 + j
* ch2_dim1
] = c2
[ik
- 1 + j
* c2_dim1
]
390 - c2
[ik
+ jc
* c2_dim1
];
391 ch2
[ik
- 1 + jc
* ch2_dim1
] = c2
[ik
- 1 + j
* c2_dim1
]
392 + c2
[ik
+ jc
* c2_dim1
];
393 ch2
[ik
+ j
* ch2_dim1
] = c2
[ik
+ j
* c2_dim1
]
394 + c2
[ik
- 1 + jc
* c2_dim1
];
395 ch2
[ik
+ jc
* ch2_dim1
] = c2
[ik
+ j
* c2_dim1
]
396 - c2
[ik
- 1 + jc
* c2_dim1
];
403 for (ik
= 1; ik
<= i_1
; ++ik
) {
404 c2
[ik
+ c2_dim1
] = ch2
[ik
+ ch2_dim1
];
407 for (j
= 2; j
<= i_1
; ++j
) {
409 for (k
= 1; k
<= i_2
; ++k
) {
410 c1
[(k
+ j
* c1_dim2
) * c1_dim1
+ 1] =
411 ch
[(k
+ j
* ch_dim2
) * ch_dim1
+ 1];
412 c1
[(k
+ j
* c1_dim2
) * c1_dim1
+ 2] =
413 ch
[(k
+ j
* ch_dim2
) * ch_dim1
+ 2];
419 for (j
= 2; j
<= i_1
; ++j
) {
422 for (i
= 4; i
<= i_2
; i
+= 2) {
425 for (k
= 1; k
<= i_3
; ++k
) {
426 c1
[i
- 1 + (k
+ j
* c1_dim2
) * c1_dim1
] = wa
[idij
- 1]
427 * ch
[i
- 1 + (k
+ j
* ch_dim2
) * ch_dim1
] + *isign
* wa
[idij
]
428 * ch
[i
+ (k
+ j
* ch_dim2
) * ch_dim1
];
429 c1
[i
+ (k
+ j
* c1_dim2
) * c1_dim1
] = wa
[idij
- 1]
430 * ch
[i
+ (k
+ j
* ch_dim2
) * ch_dim1
] - *isign
* wa
[idij
]
431 * ch
[i
- 1 + (k
+ j
* ch_dim2
) * ch_dim1
];
439 for (j
= 2; j
<= i_1
; ++j
) {
442 for (k
= 1; k
<= i_2
; ++k
) {
445 for (i
= 4; i
<= i_3
; i
+= 2) {
447 c1
[i
- 1 + (k
+ j
* c1_dim2
) * c1_dim1
] = wa
[idij
- 1]
448 * ch
[i
- 1 + (k
+ j
* ch_dim2
) * ch_dim1
]
449 + *isign
* wa
[idij
] * ch
[i
+ (k
+ j
* ch_dim2
) * ch_dim1
];
450 c1
[i
+ (k
+ j
* c1_dim2
) * c1_dim1
] = wa
[idij
- 1]
451 * ch
[i
+ (k
+ j
* ch_dim2
) * ch_dim1
] - *isign
* wa
[idij
]
452 * ch
[i
- 1 + (k
+ j
* ch_dim2
) * ch_dim1
];
461 static int pass2_(ido
, l1
, cc
, ch
, wa1
, isign
)
463 double *cc
, *ch
, *wa1
;
466 /* System generated locals */
467 int cc_dim1
, cc_offset
, ch_dim1
, ch_dim2
, ch_offset
, i_1
, i_2
;
469 /* Local variables */
473 /* Parameter adjustments */
475 cc_offset
= cc_dim1
* 3 + 1;
479 ch_offset
= ch_dim1
* (ch_dim2
+ 1) + 1;
486 for (k
= 1; k
<= i_1
; ++k
) {
487 ch
[(k
+ ch_dim2
) * ch_dim1
+ 1] = cc
[((k
<< 1) + 1) * cc_dim1
+ 1]
488 + cc
[((k
<< 1) + 2) * cc_dim1
+ 1];
489 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 1] = cc
[((k
<< 1) + 1) * cc_dim1
+ 1]
490 - cc
[((k
<< 1) + 2) * cc_dim1
+ 1];
491 ch
[(k
+ ch_dim2
) * ch_dim1
+ 2] = cc
[((k
<< 1) + 1) * cc_dim1
+ 2]
492 + cc
[((k
<< 1) + 2) * cc_dim1
+ 2];
493 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 2] = cc
[((k
<< 1) + 1) * cc_dim1
+ 2]
494 - cc
[((k
<< 1) + 2) * cc_dim1
+ 2];
499 for (k
= 1; k
<= i_1
; ++k
) {
501 for (i
= 2; i
<= i_2
; i
+= 2) {
502 ch
[i
- 1 + (k
+ ch_dim2
) * ch_dim1
]
503 = cc
[i
- 1 + ((k
<< 1) + 1) * cc_dim1
]
504 + cc
[i
- 1 + ((k
<< 1) + 2) * cc_dim1
];
505 tr2
= cc
[i
- 1 + ((k
<< 1) + 1) * cc_dim1
]
506 - cc
[i
- 1 + ((k
<< 1) + 2) * cc_dim1
];
507 ch
[i
+ (k
+ ch_dim2
) * ch_dim1
] = cc
[i
+ ((k
<< 1) + 1) * cc_dim1
]
508 + cc
[i
+ ((k
<< 1) + 2) * cc_dim1
];
509 ti2
= cc
[i
+ ((k
<< 1) + 1) * cc_dim1
]
510 - cc
[i
+ ((k
<< 1) + 2) * cc_dim1
];
511 ch
[i
+ (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * ti2
512 - *isign
* wa1
[i
] * tr2
;
513 ch
[i
- 1 + (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * tr2
514 + *isign
* wa1
[i
] * ti2
;
521 static int pass3_(ido
, l1
, cc
, ch
, wa1
, wa2
, isign
)
523 double *cc
, *ch
, *wa1
, *wa2
;
526 /* System generated locals */
527 int cc_dim1
, cc_offset
, ch_dim1
, ch_dim2
, ch_offset
, i_1
, i_2
;
529 /* Local variables */
532 double ci2
, ci3
, di2
, di3
, cr2
, cr3
, dr2
, dr3
, ti2
, tr2
;
534 /* Parameter adjustments */
536 cc_offset
= (cc_dim1
<< 2) + 1;
540 ch_offset
= ch_dim1
* (ch_dim2
+ 1) + 1;
547 taui
= -(*isign
) * .866025403784439;
550 for (k
= 1; k
<= i_1
; ++k
) {
551 tr2
= cc
[(k
* 3 + 2) * cc_dim1
+ 1] + cc
[(k
* 3 + 3) * cc_dim1
+ 1];
552 cr2
= cc
[(k
* 3 + 1) * cc_dim1
+ 1] + taur
* tr2
;
553 ch
[(k
+ ch_dim2
) * ch_dim1
+ 1] = cc
[(k
* 3 + 1) * cc_dim1
+ 1] + tr2
;
554 ti2
= cc
[(k
* 3 + 2) * cc_dim1
+ 2] + cc
[(k
* 3 + 3) * cc_dim1
+ 2];
555 ci2
= cc
[(k
* 3 + 1) * cc_dim1
+ 2] + taur
* ti2
;
556 ch
[(k
+ ch_dim2
) * ch_dim1
+ 2] = cc
[(k
* 3 + 1) * cc_dim1
+ 2] + ti2
;
557 cr3
= taui
* (cc
[(k
* 3 + 2) * cc_dim1
+ 1]
558 - cc
[(k
* 3 + 3) * cc_dim1
+ 1]);
559 ci3
= taui
* (cc
[(k
* 3 + 2) * cc_dim1
+ 2]
560 - cc
[(k
* 3 + 3) * cc_dim1
+ 2]);
561 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 1] = cr2
- ci3
;
562 ch
[(k
+ ch_dim2
* 3) * ch_dim1
+ 1] = cr2
+ ci3
;
563 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 2] = ci2
+ cr3
;
564 ch
[(k
+ ch_dim2
* 3) * ch_dim1
+ 2] = ci2
- cr3
;
569 for (k
= 1; k
<= i_1
; ++k
) {
571 for (i
= 2; i
<= i_2
; i
+= 2) {
572 tr2
= cc
[i
- 1 + (k
* 3 + 2) * cc_dim1
]
573 + cc
[i
- 1 + (k
* 3 + 3) * cc_dim1
];
574 cr2
= cc
[i
- 1 + (k
* 3 + 1) * cc_dim1
] + taur
* tr2
;
575 ch
[i
- 1 + (k
+ ch_dim2
) * ch_dim1
] = cc
[i
- 1 + (k
* 3 + 1)
577 ti2
= cc
[i
+ (k
* 3 + 2) * cc_dim1
] + cc
[i
+ (k
* 3 + 3) * cc_dim1
];
578 ci2
= cc
[i
+ (k
* 3 + 1) * cc_dim1
] + taur
* ti2
;
579 ch
[i
+ (k
+ ch_dim2
) * ch_dim1
] = cc
[i
+ (k
* 3 + 1) * cc_dim1
] + ti2
;
580 cr3
= taui
* (cc
[i
- 1 + (k
* 3 + 2) * cc_dim1
]
581 - cc
[i
- 1 + (k
* 3 + 3) * cc_dim1
]);
582 ci3
= taui
* (cc
[i
+ (k
* 3 + 2) * cc_dim1
]
583 - cc
[i
+ (k
* 3 + 3) * cc_dim1
]);
588 ch
[i
+ (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * di2
589 - *isign
* wa1
[i
] * dr2
;
590 ch
[i
- 1 + (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * dr2
591 + *isign
* wa1
[i
] * di2
;
592 ch
[i
+ (k
+ ch_dim2
* 3) * ch_dim1
] = wa2
[i
- 1] * di3
593 - *isign
* wa2
[i
] * dr3
;
594 ch
[i
- 1 + (k
+ ch_dim2
* 3) * ch_dim1
] = wa2
[i
- 1] * dr3
595 + *isign
* wa2
[i
] * di3
;
602 static int pass4_(ido
, l1
, cc
, ch
, wa1
, wa2
, wa3
, isign
)
604 double *cc
, *ch
, *wa1
, *wa2
, *wa3
;
607 /* System generated locals */
608 int cc_dim1
, cc_offset
, ch_dim1
, ch_dim2
, ch_offset
, i_1
, i_2
;
610 /* Local variables */
612 double ci2
, ci3
, ci4
, cr2
, cr3
, cr4
, ti1
, ti2
, ti3
, ti4
, tr1
, tr2
, tr3
, tr4
;
614 /* Parameter adjustments */
616 cc_offset
= cc_dim1
* 5 + 1;
620 ch_offset
= ch_dim1
* (ch_dim2
+ 1) + 1;
629 for (k
= 1; k
<= i_1
; ++k
) {
630 ti1
= cc
[((k
<< 2) + 1) * cc_dim1
+ 2]
631 - cc
[((k
<< 2) + 3) * cc_dim1
+ 2];
632 ti2
= cc
[((k
<< 2) + 1) * cc_dim1
+ 2]
633 + cc
[((k
<< 2) + 3) * cc_dim1
+ 2];
634 tr4
= *isign
* (cc
[((k
<< 2) + 2) * cc_dim1
+ 2]
635 - cc
[((k
<< 2) + 4) * cc_dim1
+ 2]);
636 ti3
= cc
[((k
<< 2) + 2) * cc_dim1
+ 2]
637 + cc
[((k
<< 2) + 4) * cc_dim1
+ 2];
638 tr1
= cc
[((k
<< 2) + 1) * cc_dim1
+ 1]
639 - cc
[((k
<< 2) + 3) * cc_dim1
+ 1];
640 tr2
= cc
[((k
<< 2) + 1) * cc_dim1
+ 1]
641 + cc
[((k
<< 2) + 3) * cc_dim1
+ 1];
642 ti4
= *isign
* (cc
[((k
<< 2) + 4) * cc_dim1
+ 1]
643 - cc
[((k
<< 2) + 2) * cc_dim1
+ 1]);
644 tr3
= cc
[((k
<< 2) + 2) * cc_dim1
+ 1]
645 + cc
[((k
<< 2) + 4) * cc_dim1
+ 1];
646 ch
[(k
+ ch_dim2
) * ch_dim1
+ 1] = tr2
+ tr3
;
647 ch
[(k
+ ch_dim2
* 3) * ch_dim1
+ 1] = tr2
- tr3
;
648 ch
[(k
+ ch_dim2
) * ch_dim1
+ 2] = ti2
+ ti3
;
649 ch
[(k
+ ch_dim2
* 3) * ch_dim1
+ 2] = ti2
- ti3
;
650 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 1] = tr1
+ tr4
;
651 ch
[(k
+ (ch_dim2
<< 2)) * ch_dim1
+ 1] = tr1
- tr4
;
652 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 2] = ti1
+ ti4
;
653 ch
[(k
+ (ch_dim2
<< 2)) * ch_dim1
+ 2] = ti1
- ti4
;
658 for (k
= 1; k
<= i_1
; ++k
) {
660 for (i
= 2; i
<= i_2
; i
+= 2) {
661 ti1
= cc
[i
+ ((k
<< 2) + 1) * cc_dim1
]
662 - cc
[i
+ ((k
<< 2) + 3) * cc_dim1
];
663 ti2
= cc
[i
+ ((k
<< 2) + 1) * cc_dim1
]
664 + cc
[i
+ ((k
<< 2) + 3) * cc_dim1
];
665 ti3
= cc
[i
+ ((k
<< 2) + 2) * cc_dim1
]
666 + cc
[i
+ ((k
<< 2) + 4) * cc_dim1
];
667 tr4
= *isign
* (cc
[i
+ ((k
<< 2) + 2) * cc_dim1
]
668 - cc
[i
+ ((k
<< 2) + 4) * cc_dim1
]);
669 tr1
= cc
[i
- 1 + ((k
<< 2) + 1) * cc_dim1
]
670 - cc
[i
- 1 + ((k
<< 2) + 3) * cc_dim1
];
671 tr2
= cc
[i
- 1 + ((k
<< 2) + 1) * cc_dim1
]
672 + cc
[i
- 1 + ((k
<< 2) + 3) * cc_dim1
];
673 ti4
= *isign
* (cc
[i
- 1 + ((k
<< 2) + 4) * cc_dim1
]
674 - cc
[i
- 1 + ((k
<< 2) + 2) * cc_dim1
]);
675 tr3
= cc
[i
- 1 + ((k
<< 2) + 2) * cc_dim1
]
676 + cc
[i
- 1 + ((k
<< 2) + 4) * cc_dim1
];
677 ch
[i
- 1 + (k
+ ch_dim2
) * ch_dim1
] = tr2
+ tr3
;
679 ch
[i
+ (k
+ ch_dim2
) * ch_dim1
] = ti2
+ ti3
;
685 ch
[i
- 1 + (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * cr2
686 + *isign
* wa1
[i
] * ci2
;
687 ch
[i
+ (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * ci2
688 - *isign
* wa1
[i
] * cr2
;
689 ch
[i
- 1 + (k
+ ch_dim2
* 3) * ch_dim1
] = wa2
[i
- 1] * cr3
690 + *isign
* wa2
[i
] * ci3
;
691 ch
[i
+ (k
+ ch_dim2
* 3) * ch_dim1
] = wa2
[i
- 1] * ci3
692 - *isign
* wa2
[i
] * cr3
;
693 ch
[i
- 1 + (k
+ (ch_dim2
<< 2)) * ch_dim1
] = wa3
[i
- 1] * cr4
694 + *isign
* wa3
[i
] * ci4
;
695 ch
[i
+ (k
+ (ch_dim2
<< 2)) * ch_dim1
] = wa3
[i
- 1] * ci4
696 - *isign
* wa3
[i
] * cr4
;
703 static int pass5_(ido
, l1
, cc
, ch
, wa1
, wa2
, wa3
, wa4
, isign
)
705 double *cc
, *ch
, *wa1
, *wa2
, *wa3
, *wa4
;
708 /* System generated locals */
709 int cc_dim1
, cc_offset
, ch_dim1
, ch_dim2
, ch_offset
, i_1
, i_2
;
711 /* Local variables */
713 double ci2
, ci3
, ci4
, ci5
, di3
, di4
, di5
, di2
, cr2
, cr3
, cr5
, cr4
, ti2
, ti3
,
714 ti4
, ti5
, dr3
, dr4
, dr5
, dr2
, tr2
, tr3
, tr4
, tr5
, ti11
, ti12
, tr11
,
717 /* Parameter adjustments */
719 cc_offset
= cc_dim1
* 6 + 1;
723 ch_offset
= ch_dim1
* (ch_dim2
+ 1) + 1;
731 tr11
= .309016994374947;
732 ti11
= -(*isign
) * .951056516295154;
733 tr12
= -.809016994374947;
734 ti12
= -(*isign
) * .587785252292473;
737 for (k
= 1; k
<= i_1
; ++k
) {
738 ti5
= cc
[(k
* 5 + 2) * cc_dim1
+ 2] - cc
[(k
* 5 + 5) * cc_dim1
+ 2];
739 ti2
= cc
[(k
* 5 + 2) * cc_dim1
+ 2] + cc
[(k
* 5 + 5) * cc_dim1
+ 2];
740 ti4
= cc
[(k
* 5 + 3) * cc_dim1
+ 2] - cc
[(k
* 5 + 4) * cc_dim1
+ 2];
741 ti3
= cc
[(k
* 5 + 3) * cc_dim1
+ 2] + cc
[(k
* 5 + 4) * cc_dim1
+ 2];
742 tr5
= cc
[(k
* 5 + 2) * cc_dim1
+ 1] - cc
[(k
* 5 + 5) * cc_dim1
+ 1];
743 tr2
= cc
[(k
* 5 + 2) * cc_dim1
+ 1] + cc
[(k
* 5 + 5) * cc_dim1
+ 1];
744 tr4
= cc
[(k
* 5 + 3) * cc_dim1
+ 1] - cc
[(k
* 5 + 4) * cc_dim1
+ 1];
745 tr3
= cc
[(k
* 5 + 3) * cc_dim1
+ 1] + cc
[(k
* 5 + 4) * cc_dim1
+ 1];
746 ch
[(k
+ ch_dim2
) * ch_dim1
+ 1] = cc
[(k
* 5 + 1) * cc_dim1
+ 1]
748 ch
[(k
+ ch_dim2
) * ch_dim1
+ 2] = cc
[(k
* 5 + 1) * cc_dim1
+ 2]
750 cr2
= cc
[(k
* 5 + 1) * cc_dim1
+ 1] + tr11
* tr2
+ tr12
* tr3
;
751 ci2
= cc
[(k
* 5 + 1) * cc_dim1
+ 2] + tr11
* ti2
+ tr12
* ti3
;
752 cr3
= cc
[(k
* 5 + 1) * cc_dim1
+ 1] + tr12
* tr2
+ tr11
* tr3
;
753 ci3
= cc
[(k
* 5 + 1) * cc_dim1
+ 2] + tr12
* ti2
+ tr11
* ti3
;
754 cr5
= ti11
* tr5
+ ti12
* tr4
;
755 ci5
= ti11
* ti5
+ ti12
* ti4
;
756 cr4
= ti12
* tr5
- ti11
* tr4
;
757 ci4
= ti12
* ti5
- ti11
* ti4
;
758 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 1] = cr2
- ci5
;
759 ch
[(k
+ ch_dim2
* 5) * ch_dim1
+ 1] = cr2
+ ci5
;
760 ch
[(k
+ (ch_dim2
<< 1)) * ch_dim1
+ 2] = ci2
+ cr5
;
761 ch
[(k
+ ch_dim2
* 3) * ch_dim1
+ 2] = ci3
+ cr4
;
762 ch
[(k
+ ch_dim2
* 3) * ch_dim1
+ 1] = cr3
- ci4
;
763 ch
[(k
+ (ch_dim2
<< 2)) * ch_dim1
+ 1] = cr3
+ ci4
;
764 ch
[(k
+ (ch_dim2
<< 2)) * ch_dim1
+ 2] = ci3
- cr4
;
765 ch
[(k
+ ch_dim2
* 5) * ch_dim1
+ 2] = ci2
- cr5
;
770 for (k
= 1; k
<= i_1
; ++k
) {
772 for (i
= 2; i
<= i_2
; i
+= 2) {
773 ti5
= cc
[i
+ (k
* 5 + 2) * cc_dim1
] - cc
[i
+ (k
* 5 + 5) * cc_dim1
];
774 ti2
= cc
[i
+ (k
* 5 + 2) * cc_dim1
] + cc
[i
+ (k
* 5 + 5) * cc_dim1
];
775 ti4
= cc
[i
+ (k
* 5 + 3) * cc_dim1
] - cc
[i
+ (k
* 5 + 4) * cc_dim1
];
776 ti3
= cc
[i
+ (k
* 5 + 3) * cc_dim1
] + cc
[i
+ (k
* 5 + 4) * cc_dim1
];
777 tr5
= cc
[i
- 1 + (k
* 5 + 2) * cc_dim1
]
778 - cc
[i
- 1 + (k
* 5 + 5) * cc_dim1
];
779 tr2
= cc
[i
- 1 + (k
* 5 + 2) * cc_dim1
]
780 + cc
[i
- 1 + (k
* 5 + 5) * cc_dim1
];
781 tr4
= cc
[i
- 1 + (k
* 5 + 3) * cc_dim1
]
782 - cc
[i
- 1 + (k
* 5 + 4) * cc_dim1
];
783 tr3
= cc
[i
- 1 + (k
* 5 + 3) * cc_dim1
]
784 + cc
[i
- 1 + (k
* 5 + 4) * cc_dim1
];
785 ch
[i
- 1 + (k
+ ch_dim2
) * ch_dim1
] = cc
[i
- 1 + (k
* 5 + 1)
786 * cc_dim1
] + tr2
+ tr3
;
787 ch
[i
+ (k
+ ch_dim2
) * ch_dim1
] = cc
[i
+ (k
* 5 + 1)
788 * cc_dim1
] + ti2
+ ti3
;
789 cr2
= cc
[i
- 1 + (k
* 5 + 1) * cc_dim1
] + tr11
* tr2
+ tr12
* tr3
;
790 ci2
= cc
[i
+ (k
* 5 + 1) * cc_dim1
] + tr11
* ti2
+ tr12
* ti3
;
792 cr3
= cc
[i
- 1 + (k
* 5 + 1) * cc_dim1
] + tr12
* tr2
+ tr11
* tr3
;
793 ci3
= cc
[i
+ (k
* 5 + 1) * cc_dim1
] + tr12
* ti2
+ tr11
* ti3
;
795 cr5
= ti11
* tr5
+ ti12
* tr4
;
796 ci5
= ti11
* ti5
+ ti12
* ti4
;
797 cr4
= ti12
* tr5
- ti11
* tr4
;
798 ci4
= ti12
* ti5
- ti11
* ti4
;
807 ch
[i
- 1 + (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * dr2
808 + *isign
* wa1
[i
] * di2
;
809 ch
[i
+ (k
+ (ch_dim2
<< 1)) * ch_dim1
] = wa1
[i
- 1] * di2
810 - *isign
* wa1
[i
] * dr2
;
811 ch
[i
- 1 + (k
+ ch_dim2
* 3) * ch_dim1
] = wa2
[i
- 1] * dr3
812 + *isign
* wa2
[i
] * di3
;
813 ch
[i
+ (k
+ ch_dim2
* 3) * ch_dim1
] = wa2
[i
- 1] * di3
814 - *isign
* wa2
[i
] * dr3
;
815 ch
[i
- 1 + (k
+ (ch_dim2
<< 2)) * ch_dim1
] = wa3
[i
- 1] * dr4
816 + *isign
* wa3
[i
] * di4
;
817 ch
[i
+ (k
+ (ch_dim2
<< 2)) * ch_dim1
] = wa3
[i
- 1] * di4
818 - *isign
* wa3
[i
] * dr4
;
819 ch
[i
- 1 + (k
+ ch_dim2
* 5) * ch_dim1
] = wa4
[i
- 1] * dr5
820 + *isign
* wa4
[i
] * di5
;
821 ch
[i
+ (k
+ ch_dim2
* 5) * ch_dim1
] = wa4
[i
- 1] * di5
822 - *isign
* wa4
[i
] * dr5
;