| 1153 | } |
| 1154 | |
| 1155 | NOINLINE static void radf4(size_t ido, size_t l1, const double * restrict cc, |
| 1156 | double * restrict ch, const double * restrict wa) |
| 1157 | { |
| 1158 | const size_t cdim=4; |
| 1159 | static const double hsqt2=0.70710678118654752440; |
| 1160 | |
| 1161 | for (size_t k=0; k<l1; k++) |
| 1162 | { |
| 1163 | double tr1,tr2; |
| 1164 | PM (tr1,CH(0,2,k),CC(0,k,3),CC(0,k,1)) |
| 1165 | PM (tr2,CH(ido-1,1,k),CC(0,k,0),CC(0,k,2)) |
| 1166 | PM (CH(0,0,k),CH(ido-1,3,k),tr2,tr1) |
| 1167 | } |
| 1168 | if ((ido&1)==0) |
| 1169 | for (size_t k=0; k<l1; k++) |
| 1170 | { |
| 1171 | double ti1=-hsqt2*(CC(ido-1,k,1)+CC(ido-1,k,3)); |
| 1172 | double tr1= hsqt2*(CC(ido-1,k,1)-CC(ido-1,k,3)); |
| 1173 | PM (CH(ido-1,0,k),CH(ido-1,2,k),CC(ido-1,k,0),tr1) |
| 1174 | PM (CH( 0,3,k),CH( 0,1,k),ti1,CC(ido-1,k,2)) |
| 1175 | } |
| 1176 | if (ido<=2) return; |
| 1177 | for (size_t k=0; k<l1; k++) |
| 1178 | for (size_t i=2; i<ido; i+=2) |
| 1179 | { |
| 1180 | size_t ic=ido-i; |
| 1181 | double ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4; |
| 1182 | MULPM(cr2,ci2,WA(0,i-2),WA(0,i-1),CC(i-1,k,1),CC(i,k,1)) |
| 1183 | MULPM(cr3,ci3,WA(1,i-2),WA(1,i-1),CC(i-1,k,2),CC(i,k,2)) |
| 1184 | MULPM(cr4,ci4,WA(2,i-2),WA(2,i-1),CC(i-1,k,3),CC(i,k,3)) |
| 1185 | PM(tr1,tr4,cr4,cr2) |
| 1186 | PM(ti1,ti4,ci2,ci4) |
| 1187 | PM(tr2,tr3,CC(i-1,k,0),cr3) |
| 1188 | PM(ti2,ti3,CC(i ,k,0),ci3) |
| 1189 | PM(CH(i-1,0,k),CH(ic-1,3,k),tr2,tr1) |
| 1190 | PM(CH(i ,0,k),CH(ic ,3,k),ti1,ti2) |
| 1191 | PM(CH(i-1,2,k),CH(ic-1,1,k),tr3,ti4) |
| 1192 | PM(CH(i ,2,k),CH(ic ,1,k),tr4,ti3) |
| 1193 | } |
| 1194 | } |
| 1195 | |
| 1196 | NOINLINE static void radf5(size_t ido, size_t l1, const double * restrict cc, |
| 1197 | double * restrict ch, const double * restrict wa) |