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

Function pass_all

numpy/fft/_pocketfft.c:883–941  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

881#undef CX
882
883NOINLINE WARN_UNUSED_RESULT static int pass_all(cfftp_plan plan, cmplx c[], double fct,
884 const int sign)
885 {
886 if (plan->length==1) return 0;
887 size_t len=plan->length;
888 size_t l1=1, nf=plan->nfct;
889 cmplx *ch = RALLOC(cmplx, len);
890 if (!ch) return -1;
891 cmplx *p1=c, *p2=ch;
892
893 for(size_t k1=0; k1<nf; k1++)
894 {
895 size_t ip=plan->fct[k1].fct;
896 size_t l2=ip*l1;
897 size_t ido = len/l2;
898 if (ip==4)
899 sign>0 ? pass4b (ido, l1, p1, p2, plan->fct[k1].tw)
900 : pass4f (ido, l1, p1, p2, plan->fct[k1].tw);
901 else if(ip==2)
902 sign>0 ? pass2b (ido, l1, p1, p2, plan->fct[k1].tw)
903 : pass2f (ido, l1, p1, p2, plan->fct[k1].tw);
904 else if(ip==3)
905 sign>0 ? pass3b (ido, l1, p1, p2, plan->fct[k1].tw)
906 : pass3f (ido, l1, p1, p2, plan->fct[k1].tw);
907 else if(ip==5)
908 sign>0 ? pass5b (ido, l1, p1, p2, plan->fct[k1].tw)
909 : pass5f (ido, l1, p1, p2, plan->fct[k1].tw);
910 else if(ip==7) pass7 (ido, l1, p1, p2, plan->fct[k1].tw, sign);
911 else if(ip==11) pass11(ido, l1, p1, p2, plan->fct[k1].tw, sign);
912 else
913 {
914 if (passg(ido, ip, l1, p1, p2, plan->fct[k1].tw, plan->fct[k1].tws, sign))
915 { DEALLOC(ch); return -1; }
916 SWAP(p1,p2,cmplx *);
917 }
918 SWAP(p1,p2,cmplx *);
919 l1=l2;
920 }
921 if (p1!=c)
922 {
923 if (fct!=1.)
924 for (size_t i=0; i<len; ++i)
925 {
926 c[i].r = ch[i].r*fct;
927 c[i].i = ch[i].i*fct;
928 }
929 else
930 memcpy (c,p1,len*sizeof(cmplx));
931 }
932 else
933 if (fct!=1.)
934 for (size_t i=0; i<len; ++i)
935 {
936 c[i].r *= fct;
937 c[i].i *= fct;
938 }
939 DEALLOC(ch);
940 return 0;

Callers 2

cfftp_forwardFunction · 0.85
cfftp_backwardFunction · 0.85

Calls 11

pass4bFunction · 0.85
pass4fFunction · 0.85
pass2bFunction · 0.85
pass2fFunction · 0.85
pass3bFunction · 0.85
pass3fFunction · 0.85
pass5bFunction · 0.85
pass5fFunction · 0.85
pass7Function · 0.85
pass11Function · 0.85
passgFunction · 0.85

Tested by

no test coverage detected