| 658 | } |
| 659 | |
| 660 | NOINLINE static void pass7(size_t ido, size_t l1, const cmplx * restrict cc, |
| 661 | cmplx * restrict ch, const cmplx * restrict wa, const int sign) |
| 662 | { |
| 663 | const size_t cdim=7; |
| 664 | const double tw1r= 0.623489801858733530525, |
| 665 | tw1i= sign * 0.7818314824680298087084, |
| 666 | tw2r= -0.222520933956314404289, |
| 667 | tw2i= sign * 0.9749279121818236070181, |
| 668 | tw3r= -0.9009688679024191262361, |
| 669 | tw3i= sign * 0.4338837391175581204758; |
| 670 | |
| 671 | if (ido==1) |
| 672 | for (size_t k=0; k<l1; ++k) |
| 673 | { |
| 674 | PREP7(0) |
| 675 | PARTSTEP7a(1,6,tw1r,tw2r,tw3r,+tw1i,+tw2i,+tw3i) |
| 676 | PARTSTEP7a(2,5,tw2r,tw3r,tw1r,+tw2i,-tw3i,-tw1i) |
| 677 | PARTSTEP7a(3,4,tw3r,tw1r,tw2r,+tw3i,-tw1i,+tw2i) |
| 678 | } |
| 679 | else |
| 680 | for (size_t k=0; k<l1; ++k) |
| 681 | { |
| 682 | { |
| 683 | PREP7(0) |
| 684 | PARTSTEP7a(1,6,tw1r,tw2r,tw3r,+tw1i,+tw2i,+tw3i) |
| 685 | PARTSTEP7a(2,5,tw2r,tw3r,tw1r,+tw2i,-tw3i,-tw1i) |
| 686 | PARTSTEP7a(3,4,tw3r,tw1r,tw2r,+tw3i,-tw1i,+tw2i) |
| 687 | } |
| 688 | for (size_t i=1; i<ido; ++i) |
| 689 | { |
| 690 | PREP7(i) |
| 691 | PARTSTEP7(1,6,tw1r,tw2r,tw3r,+tw1i,+tw2i,+tw3i) |
| 692 | PARTSTEP7(2,5,tw2r,tw3r,tw1r,+tw2i,-tw3i,-tw1i) |
| 693 | PARTSTEP7(3,4,tw3r,tw1r,tw2r,+tw3i,-tw1i,+tw2i) |
| 694 | } |
| 695 | } |
| 696 | } |
| 697 | |
| 698 | #define PREP11(idx) \ |
| 699 | cmplx t1 = CC(idx,0,k), t2, t3, t4, t5, t6, t7, t8, t9, t10, t11; \ |