| 442 | } |
| 443 | |
| 444 | NOINLINE static void pass4b (size_t ido, size_t l1, const cmplx * restrict cc, |
| 445 | cmplx * restrict ch, const cmplx * restrict wa) |
| 446 | { |
| 447 | const size_t cdim=4; |
| 448 | |
| 449 | if (ido==1) |
| 450 | for (size_t k=0; k<l1; ++k) |
| 451 | { |
| 452 | cmplx t1, t2, t3, t4; |
| 453 | PMC(t2,t1,CC(0,0,k),CC(0,2,k)) |
| 454 | PMC(t3,t4,CC(0,1,k),CC(0,3,k)) |
| 455 | ROT90(t4) |
| 456 | PMC(CH(0,k,0),CH(0,k,2),t2,t3) |
| 457 | PMC(CH(0,k,1),CH(0,k,3),t1,t4) |
| 458 | } |
| 459 | else |
| 460 | for (size_t k=0; k<l1; ++k) |
| 461 | { |
| 462 | { |
| 463 | cmplx t1, t2, t3, t4; |
| 464 | PMC(t2,t1,CC(0,0,k),CC(0,2,k)) |
| 465 | PMC(t3,t4,CC(0,1,k),CC(0,3,k)) |
| 466 | ROT90(t4) |
| 467 | PMC(CH(0,k,0),CH(0,k,2),t2,t3) |
| 468 | PMC(CH(0,k,1),CH(0,k,3),t1,t4) |
| 469 | } |
| 470 | for (size_t i=1; i<ido; ++i) |
| 471 | { |
| 472 | cmplx c2, c3, c4, t1, t2, t3, t4; |
| 473 | cmplx cc0=CC(i,0,k), cc1=CC(i,1,k),cc2=CC(i,2,k),cc3=CC(i,3,k); |
| 474 | PMC(t2,t1,cc0,cc2) |
| 475 | PMC(t3,t4,cc1,cc3) |
| 476 | ROT90(t4) |
| 477 | cmplx wa0=WA(0,i), wa1=WA(1,i),wa2=WA(2,i); |
| 478 | PMC(CH(i,k,0),c3,t2,t3) |
| 479 | PMC(c2,c4,t1,t4) |
| 480 | A_EQ_B_MUL_C (CH(i,k,1),wa0,c2) |
| 481 | A_EQ_B_MUL_C (CH(i,k,2),wa1,c3) |
| 482 | A_EQ_B_MUL_C (CH(i,k,3),wa2,c4) |
| 483 | } |
| 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 | { |