| 1249 | #define CC(a,b,c) cc[(a)+ido*((b)+cdim*(c))] |
| 1250 | #define CH(a,b,c) ch[(a)+ido*((b)+l1*(c))] |
| 1251 | NOINLINE static void radfg(size_t ido, size_t ip, size_t l1, |
| 1252 | double * restrict cc, double * restrict ch, const double * restrict wa, |
| 1253 | const double * restrict csarr) |
| 1254 | { |
| 1255 | const size_t cdim=ip; |
| 1256 | size_t ipph=(ip+1)/2; |
| 1257 | size_t idl1 = ido*l1; |
| 1258 | |
| 1259 | if (ido>1) |
| 1260 | { |
| 1261 | for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 114 |
| 1262 | { |
| 1263 | size_t is=(j-1)*(ido-1), |
| 1264 | is2=(jc-1)*(ido-1); |
| 1265 | for (size_t k=0; k<l1; ++k) // 113 |
| 1266 | { |
| 1267 | size_t idij=is; |
| 1268 | size_t idij2=is2; |
| 1269 | for (size_t i=1; i<=ido-2; i+=2) // 112 |
| 1270 | { |
| 1271 | double t1=C1(i,k,j ), t2=C1(i+1,k,j ), |
| 1272 | t3=C1(i,k,jc), t4=C1(i+1,k,jc); |
| 1273 | double x1=wa[idij]*t1 + wa[idij+1]*t2, |
| 1274 | x2=wa[idij]*t2 - wa[idij+1]*t1, |
| 1275 | x3=wa[idij2]*t3 + wa[idij2+1]*t4, |
| 1276 | x4=wa[idij2]*t4 - wa[idij2+1]*t3; |
| 1277 | C1(i ,k,j ) = x1+x3; |
| 1278 | C1(i ,k,jc) = x2-x4; |
| 1279 | C1(i+1,k,j ) = x2+x4; |
| 1280 | C1(i+1,k,jc) = x3-x1; |
| 1281 | idij+=2; |
| 1282 | idij2+=2; |
| 1283 | } |
| 1284 | } |
| 1285 | } |
| 1286 | } |
| 1287 | |
| 1288 | for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 123 |
| 1289 | for (size_t k=0; k<l1; ++k) // 122 |
| 1290 | { |
| 1291 | double t1=C1(0,k,j), t2=C1(0,k,jc); |
| 1292 | C1(0,k,j ) = t1+t2; |
| 1293 | C1(0,k,jc) = t2-t1; |
| 1294 | } |
| 1295 | |
| 1296 | //everything in C |
| 1297 | //memset(ch,0,ip*l1*ido*sizeof(double)); |
| 1298 | |
| 1299 | for (size_t l=1,lc=ip-1; l<ipph; ++l,--lc) // 127 |
| 1300 | { |
| 1301 | for (size_t ik=0; ik<idl1; ++ik) // 124 |
| 1302 | { |
| 1303 | CH2(ik,l ) = C2(ik,0)+csarr[2*l]*C2(ik,1)+csarr[4*l]*C2(ik,2); |
| 1304 | CH2(ik,lc) = csarr[2*l+1]*C2(ik,ip-1)+csarr[4*l+1]*C2(ik,ip-2); |
| 1305 | } |
| 1306 | size_t iang = 2*l; |
| 1307 | size_t j=3, jc=ip-3; |
| 1308 | for (; j<ipph-3; j+=4,jc-=4) // 126 |