MCPcopy Create free account
hub / github.com/numpy/numpy / radfg

Function radfg

numpy/fft/_pocketfft.c:1251–1386  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1249#define CC(a,b,c) cc[(a)+ido*((b)+cdim*(c))]
1250#define CH(a,b,c) ch[(a)+ido*((b)+l1*(c))]
1251NOINLINE 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

Callers 1

rfftp_forwardFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected