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

Function pass4f

numpy/fft/_pocketfft.c:486–527  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

484 }
485 }
486NOINLINE static void pass4f (size_t ido, size_t l1, const cmplx * restrict cc,
487 cmplx * restrict ch, const cmplx * restrict wa)
488 {
489 const size_t cdim=4;
490
491 if (ido==1)
492 for (size_t k=0; k<l1; ++k)
493 {
494 cmplx t1, t2, t3, t4;
495 PMC(t2,t1,CC(0,0,k),CC(0,2,k))
496 PMC(t3,t4,CC(0,1,k),CC(0,3,k))
497 ROTM90(t4)
498 PMC(CH(0,k,0),CH(0,k,2),t2,t3)
499 PMC(CH(0,k,1),CH(0,k,3),t1,t4)
500 }
501 else
502 for (size_t k=0; k<l1; ++k)
503 {
504 {
505 cmplx t1, t2, t3, t4;
506 PMC(t2,t1,CC(0,0,k),CC(0,2,k))
507 PMC(t3,t4,CC(0,1,k),CC(0,3,k))
508 ROTM90(t4)
509 PMC(CH(0,k,0),CH(0,k,2),t2,t3)
510 PMC (CH(0,k,1),CH(0,k,3),t1,t4)
511 }
512 for (size_t i=1; i<ido; ++i)
513 {
514 cmplx c2, c3, c4, t1, t2, t3, t4;
515 cmplx cc0=CC(i,0,k), cc1=CC(i,1,k),cc2=CC(i,2,k),cc3=CC(i,3,k);
516 PMC(t2,t1,cc0,cc2)
517 PMC(t3,t4,cc1,cc3)
518 ROTM90(t4)
519 cmplx wa0=WA(0,i), wa1=WA(1,i),wa2=WA(2,i);
520 PMC(CH(i,k,0),c3,t2,t3)
521 PMC(c2,c4,t1,t4)
522 A_EQ_CB_MUL_C (CH(i,k,1),wa0,c2)
523 A_EQ_CB_MUL_C (CH(i,k,2),wa1,c3)
524 A_EQ_CB_MUL_C (CH(i,k,3),wa2,c4)
525 }
526 }
527 }
528
529#define PREP5(idx) \
530 cmplx t0 = CC(idx,0,k), t1, t2, t3, t4; \

Callers 1

pass_allFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected