| 484 | } |
| 485 | } |
| 486 | NOINLINE static void pass4f (size_t ido, size_t l1, const cmplx * restrict cc, |
| 487 | cmplx * restrict ch, const cmplx * restrict wa) |
| 488 | { |
| 489 | const size_t cdim=4; |
| 490 | |
| 491 | if (ido==1) |
| 492 | for (size_t k=0; k<l1; ++k) |
| 493 | { |
| 494 | cmplx t1, t2, t3, t4; |
| 495 | PMC(t2,t1,CC(0,0,k),CC(0,2,k)) |
| 496 | PMC(t3,t4,CC(0,1,k),CC(0,3,k)) |
| 497 | ROTM90(t4) |
| 498 | PMC(CH(0,k,0),CH(0,k,2),t2,t3) |
| 499 | PMC(CH(0,k,1),CH(0,k,3),t1,t4) |
| 500 | } |
| 501 | else |
| 502 | for (size_t k=0; k<l1; ++k) |
| 503 | { |
| 504 | { |
| 505 | cmplx t1, t2, t3, t4; |
| 506 | PMC(t2,t1,CC(0,0,k),CC(0,2,k)) |
| 507 | PMC(t3,t4,CC(0,1,k),CC(0,3,k)) |
| 508 | ROTM90(t4) |
| 509 | PMC(CH(0,k,0),CH(0,k,2),t2,t3) |
| 510 | PMC (CH(0,k,1),CH(0,k,3),t1,t4) |
| 511 | } |
| 512 | for (size_t i=1; i<ido; ++i) |
| 513 | { |
| 514 | cmplx c2, c3, c4, t1, t2, t3, t4; |
| 515 | cmplx cc0=CC(i,0,k), cc1=CC(i,1,k),cc2=CC(i,2,k),cc3=CC(i,3,k); |
| 516 | PMC(t2,t1,cc0,cc2) |
| 517 | PMC(t3,t4,cc1,cc3) |
| 518 | ROTM90(t4) |
| 519 | cmplx wa0=WA(0,i), wa1=WA(1,i),wa2=WA(2,i); |
| 520 | PMC(CH(i,k,0),c3,t2,t3) |
| 521 | PMC(c2,c4,t1,t4) |
| 522 | A_EQ_CB_MUL_C (CH(i,k,1),wa0,c2) |
| 523 | A_EQ_CB_MUL_C (CH(i,k,2),wa1,c3) |
| 524 | A_EQ_CB_MUL_C (CH(i,k,3),wa2,c4) |
| 525 | } |
| 526 | } |
| 527 | } |
| 528 | |
| 529 | #define PREP5(idx) \ |
| 530 | cmplx t0 = CC(idx,0,k), t1, t2, t3, t4; \ |