| 1394 | #define CC(a,b,c) cc[(a)+ido*((b)+cdim*(c))] |
| 1395 | |
| 1396 | NOINLINE static void radb2(size_t ido, size_t l1, const double * restrict cc, |
| 1397 | double * restrict ch, const double * restrict wa) |
| 1398 | { |
| 1399 | const size_t cdim=2; |
| 1400 | |
| 1401 | for (size_t k=0; k<l1; k++) |
| 1402 | PM (CH(0,k,0),CH(0,k,1),CC(0,0,k),CC(ido-1,1,k)) |
| 1403 | if ((ido&1)==0) |
| 1404 | for (size_t k=0; k<l1; k++) |
| 1405 | { |
| 1406 | CH(ido-1,k,0) = 2.*CC(ido-1,0,k); |
| 1407 | CH(ido-1,k,1) =-2.*CC(0 ,1,k); |
| 1408 | } |
| 1409 | if (ido<=2) return; |
| 1410 | for (size_t k=0; k<l1;++k) |
| 1411 | for (size_t i=2; i<ido; i+=2) |
| 1412 | { |
| 1413 | size_t ic=ido-i; |
| 1414 | double ti2, tr2; |
| 1415 | PM (CH(i-1,k,0),tr2,CC(i-1,0,k),CC(ic-1,1,k)) |
| 1416 | PM (ti2,CH(i ,k,0),CC(i ,0,k),CC(ic ,1,k)) |
| 1417 | MULPM (CH(i,k,1),CH(i-1,k,1),WA(0,i-2),WA(0,i-1),ti2,tr2) |
| 1418 | } |
| 1419 | } |
| 1420 | |
| 1421 | NOINLINE static void radb3(size_t ido, size_t l1, const double * restrict cc, |
| 1422 | double * restrict ch, const double * restrict wa) |