| 1500 | } |
| 1501 | |
| 1502 | NOINLINE static void radb5(size_t ido, size_t l1, const double * restrict cc, |
| 1503 | double * restrict ch, const double * restrict wa) |
| 1504 | { |
| 1505 | const size_t cdim=5; |
| 1506 | static const double tr11= 0.3090169943749474241, ti11=0.95105651629515357212, |
| 1507 | tr12=-0.8090169943749474241, ti12=0.58778525229247312917; |
| 1508 | |
| 1509 | for (size_t k=0; k<l1; k++) |
| 1510 | { |
| 1511 | double ti5=CC(0,2,k)+CC(0,2,k); |
| 1512 | double ti4=CC(0,4,k)+CC(0,4,k); |
| 1513 | double tr2=CC(ido-1,1,k)+CC(ido-1,1,k); |
| 1514 | double tr3=CC(ido-1,3,k)+CC(ido-1,3,k); |
| 1515 | CH(0,k,0)=CC(0,0,k)+tr2+tr3; |
| 1516 | double cr2=CC(0,0,k)+tr11*tr2+tr12*tr3; |
| 1517 | double cr3=CC(0,0,k)+tr12*tr2+tr11*tr3; |
| 1518 | double ci4, ci5; |
| 1519 | MULPM(ci5,ci4,ti5,ti4,ti11,ti12) |
| 1520 | PM(CH(0,k,4),CH(0,k,1),cr2,ci5) |
| 1521 | PM(CH(0,k,3),CH(0,k,2),cr3,ci4) |
| 1522 | } |
| 1523 | if (ido==1) return; |
| 1524 | for (size_t k=0; k<l1;++k) |
| 1525 | for (size_t i=2; i<ido; i+=2) |
| 1526 | { |
| 1527 | size_t ic=ido-i; |
| 1528 | double tr2, tr3, tr4, tr5, ti2, ti3, ti4, ti5; |
| 1529 | PM(tr2,tr5,CC(i-1,2,k),CC(ic-1,1,k)) |
| 1530 | PM(ti5,ti2,CC(i ,2,k),CC(ic ,1,k)) |
| 1531 | PM(tr3,tr4,CC(i-1,4,k),CC(ic-1,3,k)) |
| 1532 | PM(ti4,ti3,CC(i ,4,k),CC(ic ,3,k)) |
| 1533 | CH(i-1,k,0)=CC(i-1,0,k)+tr2+tr3; |
| 1534 | CH(i ,k,0)=CC(i ,0,k)+ti2+ti3; |
| 1535 | double cr2=CC(i-1,0,k)+tr11*tr2+tr12*tr3; |
| 1536 | double ci2=CC(i ,0,k)+tr11*ti2+tr12*ti3; |
| 1537 | double cr3=CC(i-1,0,k)+tr12*tr2+tr11*tr3; |
| 1538 | double ci3=CC(i ,0,k)+tr12*ti2+tr11*ti3; |
| 1539 | double ci4, ci5, cr5, cr4; |
| 1540 | MULPM(cr5,cr4,tr5,tr4,ti11,ti12) |
| 1541 | MULPM(ci5,ci4,ti5,ti4,ti11,ti12) |
| 1542 | double dr2, dr3, dr4, dr5, di2, di3, di4, di5; |
| 1543 | PM(dr4,dr3,cr3,ci4) |
| 1544 | PM(di3,di4,ci3,cr4) |
| 1545 | PM(dr5,dr2,cr2,ci5) |
| 1546 | PM(di2,di5,ci2,cr5) |
| 1547 | MULPM(CH(i,k,1),CH(i-1,k,1),WA(0,i-2),WA(0,i-1),di2,dr2) |
| 1548 | MULPM(CH(i,k,2),CH(i-1,k,2),WA(1,i-2),WA(1,i-1),di3,dr3) |
| 1549 | MULPM(CH(i,k,3),CH(i-1,k,3),WA(2,i-2),WA(2,i-1),di4,dr4) |
| 1550 | MULPM(CH(i,k,4),CH(i-1,k,4),WA(3,i-2),WA(3,i-1),di5,dr5) |
| 1551 | } |
| 1552 | } |
| 1553 | |
| 1554 | #undef CC |
| 1555 | #undef CH |