
    KhZ_                     *   S SK rS SKrS SKJr  S SKJrJrJrJ	r	  S SK
r
S SKrS r " S S5      r " S S5      r\R                  R!                  S	\R"                  \R$                  \R&                  \R(                  /5      \R                  R!                  S
SS/5      \R                  R!                  S\R*                  R*                  \R*                  R,                  \R*                  R.                  \R*                  R0                  \R*                  R2                  \R*                  R4                  /5      S 5       5       5       r\R                  R!                  S
SS/5      \R                  R!                  S/ SQ5      S 5       5       r\R                  R;                  \	SS9 " S S5      5       rS rS r \R                  R!                  S\R*                  R*                  \R*                  R0                  \R*                  RB                  \R*                  RD                  /5      \R                  R!                  S\RF                  " / SQ5      \RH                  " S\RJ                  S9\RH                  " S\RL                  S9/5      S 5       5       r'g)    N)random)assert_array_equalassert_raisesassert_allcloseIS_WASMc                    [        U 5      nS[        R                  -  [        R                  " U5      U-  -  n[        R                  " U5      R	                  SS5      U-  n[        R
                  " U [        R                  " U5      -  SS9$ )Ny                 axis)lennppiarangereshapesumexp)xLphases      P/var/www/html/env/lib/python3.13/site-packages/numpy/fft/tests/test_pocketfft.pyfft1r      sf    AA"%%K299Q<!+,EIIaL  Q'%/E66!BFF5M/**    c                       \ rS rSrS rSrg)TestFFTShift   c                 \    [        [        [        R                  R                  / SQS5        g )N)r
         r   )r   
ValueErrorr   fft)selfs    r   
test_fft_nTestFFTShift.test_fft_n   s    j"&&**i;r    N)__name__
__module____qualname____firstlineno__r#   __static_attributes__r%   r   r   r   r      s    <r   r   c            	       J	   \ rS rSrS r\R                  R                  S\R                  \R                  \R                  /5      S 5       r\R                  R                  S\R                  \R                  \R                  /5      S 5       rS r\R                  R                  SS5      \R                  R                  S\\45      \R                  R                  S	S
5      S 5       5       5       r\R                  R                  SSS/5      S 5       rS r\R                  R                  SS5      S 5       rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"\R                  R                  S!\RF                  RH                  \RF                  RJ                  \RF                  RL                  \RF                  RN                  /5      S" 5       r(\R                  R                  S!\RF                  RH                  \RF                  RJ                  \RF                  RR                  \RF                  RT                  /5      S# 5       r+\R                  R                  S!\RF                  RH                  \RF                  RJ                  \RF                  RL                  \RF                  RN                  /5      S$ 5       r,\R                  R                  S!\RF                  RR                  \RF                  RT                  /5      S% 5       r-\R                  R                  S!\RF                  RH                  \RF                  RJ                  \RF                  RL                  \RF                  RN                  \RF                  RR                  \RF                  RT                  /5      S& 5       r.S' r/\R                  R                  S(/ S)Q5      \R                  R                  S\\45      \R                  R                  S	S
5      S* 5       5       5       r0\R                  R                  S+\RF                  RH                  \RF                  RJ                  \RF                  RL                  /5      S, 5       r1\R                  R                  S-S.S//5      S0 5       r2S1r3g2)3	TestFFT1D   c           
         Sn[        U5      S[        U5      -  -   n[        U5      n[        SU5       H  n[        [        R                  R                  [        R                  R	                  USU 5      5      USU SS9  [        [        R                  R                  [        R                  R                  USU 5      U5      USU SS9  M     g )Ni                 ?r
   r   g-q=atol)r   ranger   r   r!   ifftirfftrfft)r"   maxlenr   xris        r   test_identityTestFFT1D.test_identity   s    6NRv..F^q&!ABFFKK

1Qq6(:;QqV!&(BFFLLR!W)=qAqG%1 "r   dtypec                 X   SnS[         R                  " [         R                  " SUS95      -  n[        U5      R	                  U5      S[        U5      R	                  U5      -  -   n[         R
                  " U[         R                  " U5      /5      n[        U5      R	                  U5      n[         R
                  " U[         R                  " U5      /5      n[        SUS-  5       H  n[         R                  R                  [         R                  R                  XHS9US9n	U	R                  R                  U:X  d   e[        XS	U US	S
9  [         R                  R                  [         R                  R                  XhS9US9n
U
R                  U:X  d   e[        XS	U US	S
9  M     g N            ?r;   r/   r
   r   nr   r1   rtol)r   spacingarrayr   astypeconcatenate
zeros_liker2   r!   r3   realr;   r   r4   r5   )r"   r;   r6   r1   r   xxr7   xxrr8   check_ccheck_rs              r   test_identity_long_short"TestFFT1D.test_identity_long_short$   sM    2::bhhr7886N!!%(2fVn.C.CE.J+JJ^^Qa 012F^""5)nnb"--"345q&(#Affkk"&&**Q*"4k:G<<%%...G!W4a@ffll266;;r;#71l=G==E)))G1XDqA $r   c                    SnS[         R                  " [         R                  " SUS95      -  n[        U5      R	                  U5      S[        U5      R	                  U5      -  -   n[         R
                  " U[         R                  " U5      /5      n[        SUS-  5       GH8  n[         R                  R                  [         R                  R                  XFS9US9nUR                  UR                  :X  d   e[        XuS	U US	S
9  UR                  5       nUS-  S-   n	S	UR                  S	'   US-  S	:X  a  S	UR                  U	S-
  S & [         R
                  " U[         R                  " U5      /5      n
[         R                  R                  [         R                  R                  XFS9US9nUR                  UR                  :X  d   e[        XS	U	 US	S
9  GM;     g r=   )r   rF   rG   r   rH   rI   rJ   r2   r!   r3   r;   r   copyimagr5   r4   )r"   r;   r6   r1   r   rL   r8   check_via_cyrC   yycheck_via_rs               r   !test_identity_long_short_reversed+TestFFT1D.test_identity_long_short_reversed6   s    2::bhhr7886N!!%(2fVn.C.CE.J+JJ^^Qa 012q&(#A&&**RVV[[[%8A*>K$$///KAat!D AQ
AAFF1I1uz qstBMM!$4 56B&&++bffll1l&:a+@K$$///KAat!D $r   c                    [        S5      S[        S5      -  -   n[        [        U5      [        R                  R	                  U5      SS9  [        [        U5      [        R                  R	                  USS9SS9  [        [        U5      [        R
                  " S5      -  [        R                  R	                  USS9SS9  [        [        U5      S-  [        R                  R	                  US	S9SS9  g )
N   r/   ư>r0   backwardnormortho      >@forward)r   r   r   r   r!   sqrtr"   r   s     r   test_fftTestFFT1D.test_fftN   s    2JF2J&QAT:QAJ!?dKQ"''"+-

17
3$	@Q#

19
5D	Br   r   r   r
   	transpose)TFc                   ^ U4S jnU[         L aN  [        S5      S[        S5      -  -   n[        R                  R                  [        R                  R                  pvO>[        S5      n[        R                  R
                  [        R                  R                  pvU" XSS9nU" U5      n	U" XYUS9n
XL d   e[        X5        U" XS9nU[         L a  U	OU" U5      nU" XUS9nXL d   e[        X5        g )Nc                    > T(       a*  [         R                  " U R                  5      R                  $ [         R                  " U 5      $ Nr   rJ   Tr   ri   s    r   rJ   3TestFFT1D.test_fft_out_argument.<locals>.zeros_like[   .    }}QSS)+++}}Q''r   )
      r/   r   )outr   )complexr   r   r!   r3   r5   r4   r   )r"   r;   ri   r   rJ   rV   r!   r3   expectedrt   result	expected2out2result2s     `           r   test_fft_out_argumentTestFFT1D.test_fft_out_argumentW   s    	( Gx 2fX&6#66A

BFFKKx ARVV\\q$"Qd+}}6,-	w&sJy,As407.r   r   r
   c                 
   [        S5      S[        S5      -  -   nUR                  5       n[        R                  R                  X1S9n[        R                  R                  X1US9nXSL d   e[	        XT5        UR                  5       nUS:X  a  US S O
US S 2S S24   n[        R                  R                  USUS9n[        R                  R                  USXS9n	XL d   e[	        X5        US:X  a  [	        USS  USS  5        O[	        US S 2SS 24   US S 2SS 24   5        UR                  5       n
US:X  a  U
S	S  O
U
S S 2S	S 24   nUS:X  a  U
S	S
 O
U
S S 2S	S
24   n[        R                  R                  USUS9n[        R                  R                  USXS9nXL d   e[	        X5        US:X  a%  [	        U
S S	 US S	 5        [	        U
S
S  US
S  5        O<[	        U
S S 2S S	24   US S 2S S	24   5        [	        U
S S 2S
S 24   US S 2S
S 24   5        UR                  5       nUS:X  a  US S O
US S 2S S24   nUS:X  a  US S
 O
US S 2S S
24   n[        R                  R                  US
US9n[        R                  R                  US
UUS9nUUL d   e[	        UU5        US:X  a  [	        US
S  US
S  5        O[	        US S 2S
S 24   US S 2S
S 24   5        UR                  5       nUR
                  n[        R                  R                  UUUS9nUUL d   e[	        UU5        UR                  5       nUS:X  a  US S S2   OUS S 2S S S24   n[        R                  R                  UUUS9nUUL d   e[	        UU5        g )N)rs   rs   r/   r   )r   rt   r   rr   )rC   r   )rC   r   rt   r?      r	   )r   rS   r   r!   r   rn   )r"   r   rV   y1	expected1result1y2ry   rx   rz   y3y3_selout3	expected3result3y4y4_selout4	expected4result4y5out5result5y6out6result6s                             r   test_fft_inplace_outTestFFT1D.test_fft_inplace_outu   so    8r&"222VVXFFJJrJ-	&&**R*3}}7.VVX!)r#2wAssFFFJJrRdJ3	&&**R2D*;7.19r"#w"#/r!RS&z1QV95VVX19AB"QU)19r!Bx"Q"W+FFJJv$J7	&&**Vr*?7.19r"1vq!u-r"#w"#/r!RaR%y!ArrE(3r!RS&z1QV95VVX AICR2a"f:!)r#2wAssFFFJJv$J7	&&**Vr$*?$7I.19r"#w"#/r!RS&z1QV95VVXtt&&**Rd*5$7I.VVX19r$B$x"Q"W+&&**Rd*5$7I.r   c           	         [         R                  " S5      n[        R                  " [        SS9   [         R
                  R                  USS9  S S S 5        [        R                  " [        SS9   [         R
                  R                  U[         R                  " U5      R                  SS5      S9  S S S 5        [        R                  " [        S	S9   [         R
                  R                  U[         R                  " U[        S
9S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nw= f! , (       d  f       g = f)Nrb   zmust be of ArrayTypematch )rt   has wrong shaper?   r	   zCannot castrA   )
r   r   pytestraises	TypeErrorr!   r    rJ   r   floatre   s     r   test_fft_bad_outTestFFT1D.test_fft_bad_out   s    IIcN]]9,BCFFJJqbJ! D]]:->?FFJJqbmmA.66q"=J> @]]9M:FFJJqbmmAU;J< ;:	 DC??::s$   D0AD$6D5
D!$
D25
Er`   Nr^   ra   rc   c           
      ^   [        S5      S[        S5      -  -   n[        U[        R                  R	                  [        R                  R                  X!S9US9SS9  [
        R                  " [        SS9   [        R                  R	                  / US9  S S S 5        g ! , (       d  f       g = f)Nr\   r/   r_   r]   r0   z!Invalid number of FFT data pointsr   )r   r   r   r!   r3   r   r   r    )r"   r`   r   s      r   	test_ifftTestFFT1D.test_ifft   s    2JF2J&rvv{{266::a:3${?	 ]]:!DFFFKKK&F F Fs   6B
B,c           	         [        S5      S[        S5      -  -   n[        [        R                  R                  [        R                  R                  USS9SS9[        R                  R	                  U5      SS9  [        [        R                  R	                  U5      [        R                  R	                  USS	9SS9  [        [        R                  R	                  U5      [        R
                  " S
5      -  [        R                  R	                  USS	9SS9  [        [        R                  R	                  U5      S-  [        R                  R	                  USS	9SS9  g Nr\   rs   r/   r
   r   r   r]   r0   r^   r_   X  ra        @rc   )r   r   r   r!   fft2rd   re   s     r   	test_fft2TestFFT1D.test_fft2   s    8r&"222

266::aa:#8q
AAT	3AAJ7d	DA)99AG44	AA)4AI6T	Cr   c           	         [        S5      S[        S5      -  -   n[        [        R                  R	                  [        R                  R	                  USS9SS9[        R                  R                  U5      SS9  [        [        R                  R                  U5      [        R                  R                  USS	9SS9  [        [        R                  R                  U5      [        R                  " S
5      -  [        R                  R                  USS	9SS9  [        [        R                  R                  U5      S-  [        R                  R                  USS	9SS9  g r   )r   r   r   r!   r3   ifft2rd   re   s     r   
test_ifft2TestFFT1D.test_ifft2   s    8r&"222BFFKKK$:CQd	4QQZ8t	EQ"'''*::QW5D	BQ95QY7d	Dr   c                    [        S5      S[        S5      -  -   n[        [        R                  R                  [        R                  R                  [        R                  R                  USS9SS9SS9[        R                  R	                  U5      SS9  [        [        R                  R	                  U5      [        R                  R	                  US	S
9SS9  [        [        R                  R	                  U5      [        R
                  " S5      -  [        R                  R	                  USS
9SS9  [        [        R                  R	                  U5      S-  [        R                  R	                  USS
9SS9  g Nr\   rs   rr   r/   r   r   r
   r   r]   r0   r^   r_   p  ra        p@rc   )r   r   r   r!   fftnrd   re   s     r   	test_fftnTestFFT1D.test_fftn   s   < 2f\&:#::FFJJrvvzz"&&**QQ*"7az@qJIFFKKN	' 	AAJ7d	DA)>>AG44	AA/:AI6T	Cr   c                    [        S5      S[        S5      -  -   n[        [        R                  R	                  [        R                  R	                  [        R                  R	                  USS9SS9SS9[        R                  R                  U5      SS9  [        [        R                  R                  U5      [        R                  R                  US	S
9SS9  [        [        R                  R                  U5      [        R                  " S5      -  [        R                  R                  USS
9SS9  [        [        R                  R                  U5      S-  [        R                  R                  USS
9SS9  g r   )r   r   r   r!   r3   ifftnrd   re   s     r   
test_ifftnTestFFT1D.test_ifftn   s   < 2f\&:#::FFKKBFFKKK$:C!KLFFLLO$	( 	QQZ8t	EQ"'',*??QW5D	BQ?;QY7d	Dr   c                    [        S5      nUR                  SUR                  -  4 GH9  nS HO  n[        [        R                  R	                  XUS9S US-  S-    [        R                  R                  XUS9SS9  MQ     [        [        R                  R                  XS9[        R                  R                  XS	S9SS9  [        [        R                  R                  XS9[        R                  " U5      -  [        R                  R                  XS
S9SS9  [        [        R                  R                  XS9U-  [        R                  R                  XSS9SS9  GM<     g )Nr\   r   r   rC   r`   r
   r]   r0   rB   r^   ra   rc   )r   sizer   r   r!   r5   rd   )r"   r   rC   r`   s       r   	test_rfftTestFFT1D.test_rfft   s   2J&&!AFF(#A>FFJJqDJ1+AqD1H>FFKKTK2? ? A#A44A A#bggaj0A1> A#a'A3$@ $r   c                     [         R                  " S5      nSn[         R                  R                  X5      n[	        U[         R                  R                  US U 5      S US-  S-    SS9  g )N      r   r
   +=rE   )r   r   r!   r5   r   )r"   r   rC   rV   s       r   test_rfft_evenTestFFT1D.test_rfft_even  sT    IIaLFFKK266::ae,YadQh7eDr   c                     [         R                  " / SQ5      n[         R                  R                  U5      n[	        U[         R                  R                  U5      S S SS9  g )N)r
   r   r   r   r   r   r   )r   rG   r!   r5   r   )r"   r   rV   s      r   test_rfft_oddTestFFT1D.test_rfft_odd
  sA    HH%&FFKKN266::a=!,59r   c           
      6   [        S5      n[        U[        R                  R	                  [        R                  R                  U5      5      SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  g )Nr\   r]   r0   r^   r_   ra   rc   )r   r   r   r!   r4   r5   re   s     r   
test_irfftTestFFT1D.test_irfft  s    2J266<<A7dC266<<AJ(G' ( )/3	5266<<AG(D$ ( &,0	2266<<AI(F& ( (.2	4r   c                    [        S5      n[        [        R                  R	                  U5      S S 2S S24   [        R                  R                  U5      SS9  [        [        R                  R                  U5      [        R                  R                  USS9SS9  [        [        R                  R                  U5      [        R                  " S5      -  [        R                  R                  USS9SS9  [        [        R                  R                  U5      S	-  [        R                  R                  US
S9SS9  g )Nr      r]   r0   r^   r_   r   ra   r   rc   )r   r   r   r!   r   rfft2rd   re   s     r   
test_rfft2TestFFT1D.test_rfft2  s    8Aq#2#v.QdKQQZ8t	EQ"'''*::QW5D	BQ95QY7d	Dr   c           
      6   [        S5      n[        U[        R                  R	                  [        R                  R                  U5      5      SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  g )Nr   r]   r0   r^   r_   ra   rc   )r   r   r   r!   irfft2r   re   s     r   test_irfft2TestFFT1D.test_irfft2#  s    8266==a9E266==aj)I' ) )/3	5266==ag)F$ ) &,0	2266==ai)H& ) (.2	4r   c           
          [        S5      n[        [        R                  R	                  U5      S S 2S S 2S S24   [        R                  R                  U5      SS9  [        [        R                  R                  U5      [        R                  R                  USS9SS9  [        [        R                  R                  U5      [        R                  " S5      -  [        R                  R                  USS9SS9  [        [        R                  R                  U5      S	-  [        R                  R                  US
S9SS9  [        R                  " S5      n[        R                  R                  USSS9nUR                  S:X  d   e[        R                  R                  [        R                  R                  [        R                  R                  USSS9SSS9SSS9nUR                  S:X  d   e[        X#SS9  g )Nr      r]   r0   r^   r_   r   ra   r   rc   )r   r   )r   r   r
   )rr   rs   (   )axess)rr      r
   r   )r   rC   r   rs   rr   )
r   r   r   r!   r   rfftnrd   onesshaper5   )r"   r   rw   rv   s       r   
test_rfftnTestFFT1D.test_rfftn-  sx   < Aq!RaRx0"&&,,q/MQQZ8t	EQ"'',*??QW5D	BQ?;QY7d	D GGFOai<@||x'''66::bffjjQQ")E!"b ) *01R  9~~)))t4r   c           
      6   [        S5      n[        U[        R                  R	                  [        R                  R                  U5      5      SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  [        U[        R                  R	                  [        R                  R                  USS9SS9SS9  g )Nr   r]   r0   r^   r_   ra   rc   )r   r   r   r!   irfftnr   re   s     r   test_irfftnTestFFT1D.test_irfftn?  s    < 266==a9E266==aj)I' ) )/3	5266==ag)F$ ) &,0	2266==ai)H& ) (.2	4r   c                 :   [        S5      S[        S5      -  -   n[        R                  " [        S5      U[        S5      45      n[        R                  " X!S S S2   R                  5       45      n[	        [        R
                  R                  U5      [        R
                  R                  U5      SS9  [	        [        R
                  R                  U5      [        R
                  R                  USS9SS9  [	        [        R
                  R                  U5      [        R                  " S	5      -  [        R
                  R                  US
S9SS9  [	        [        R
                  R                  U5      S-  [        R
                  R                  USS9SS9  g )N   r/   r
   r	   r]   r0   r^   r_   r\   ra   rb   rc   )r   r   rI   conjr   r!   hfftrd   r"   r   x_herms      r   	test_hfftTestFFT1D.test_hfftI  s   2JF2J&Avay 9:NNFddGLLN34

1rvv{{6':FF+F<4	IF+bggbk9F9	FF+c1F;$	Hr   c           
          [        S5      S[        S5      -  -   n[        R                  " [        S5      U[        S5      45      n[        R                  " X!S S S2   R                  5       45      n[	        U[        R
                  R                  [        R
                  R                  U5      5      SS9  [	        U[        R
                  R                  [        R
                  R                  USS9SS9SS9  [	        U[        R
                  R                  [        R
                  R                  US	S9S	S9SS9  [	        U[        R
                  R                  [        R
                  R                  US
S9S
S9SS9  g )Nr   r/   r
   r	   r]   r0   r^   r_   ra   rc   )r   r   rI   r   r   r!   ihfftr   r   s      r   
test_ihfftTestFFT1D.test_ihfftU  s4   2JF2J&Avay 9:NNFddGLLN34RVV[[-@ AMRVV[[' .9 .)/9 !- !;AE	GRVV[[$ .9 .&,3 !- !5;?	ARVV[[& .9 .(.7 !- !9?C	Er   opc                     [        S5      n/ SQnU HD  nU" [        R                  " X$5      5      n[        R                  " U" X$S9U5      n[        XVSS9  MF     g )Nr   )r   r
   r   )r   r   r
   )r
   r   r   )r
   r   r   )r   r   r
   )r   r
   r   r   r]   r0   )r   r   ri   r   )r"   r   r   r   aop_trtr_ops          r   	test_axesTestFFT1D.test_axesa  sN     < QAr||A)*ELLA2EEt4 r   c                     [         R                  " S5      R                  SS5      nU" USSS9R                  S:X  d   eg )Nd   rr   r	   r?   rh   r   r   )rr   r?   )r   r   r   r   r"   r   r   s      r   test_s_negative_1TestFFT1D.test_s_negative_1k  s;     IIcN""2r*!wV,22g===r   c                     [         R                  " S5      R                  SS5      n[        R                  " SS9   U" USS9  S S S 5        g ! , (       d  f       g = f)Nr   rr   "`axes` should not be `None` if `s`r   r   )r   r   r   r   r   warnsr   s      r   test_s_axes_noneTestFFT1D.test_s_axes_noner  sB     IIcN""2r*\\ DEqG FEEs   A
Ac                     [         R                  " S5      R                  SS5      n[        R                  " SS9   U" USS S9  S S S 5        g ! , (       d  f       g = f)Nr   rr   r  r   r   r   r  r   s      r   test_s_axes_none_2DTestFFT1D.test_s_axes_none_2Dy  sB    IIcN""2r*\\ DEqG$' FEEs   	A
Ac                     [        S5      n[        R                  " SS9   U" USSS9  S S S 5        g ! , (       d  f       g = f)Nr   z%array containing `None` values to `s`r   )rr   Nrr   r   r   )r   r   r  r   s      r   test_s_contains_noneTestFFT1D.test_s_contains_none  s4     < \\ GHqN3 IHHs	   	2
A c           	         [        S5      n[        R                  R                  U5      nUR                  S-  n[        R
                  R
                  [        R
                  R                  4[        R
                  R                  [        R
                  R                  4[        R
                  R                  [        R
                  R                  4/nU Hf  u  pVUR                  SUR                  -  4 HB  nS H9  nU" XUS9nU" XUS9n[        U[        R                  R                  U5      SS9  M;     MD     Mh     g )Nr\   r   r   r   r]   r0   )r   r   linalgr`   r   r!   r3   r5   r4   r   r   r   )	r"   r   x_normrC   
func_pairsforwbackr`   tmps	            r   test_all_1d_norm_preserving%TestFFT1D.test_all_1d_norm_preserving  s    2J"FFQJvvzz266;;/vv{{BFFLL1 vv||RVV[[1	
 %JDffah'BDqD1Csd3C#F$&IINN3$7dD C ( %r   r   )rh   r   r   Nc                   ^ U4S jnU[         L aN  [        S5      S[        S5      -  -   n[        R                  R                  [        R                  R
                  pvO>[        S5      n[        R                  R                  [        R                  R                  pvU" XSS9nU" U5      n	U" XYUS9n
XL d   e[        X5        U" XS9nU[         L a  U	OU" U5      nU" XUS9nXL d   e[        X5        g )Nc                    > T(       a*  [         R                  " U R                  5      R                  $ [         R                  " U 5      $ rl   rm   ro   s    r   rJ   4TestFFT1D.test_fftn_out_argument.<locals>.zeros_like  rq   r   rr   r?   r   r/   r   )rt   r   )	ru   r   r   r!   r   r   r   r   r   )r"   r;   ri   r   rJ   r   r!   r3   rv   rt   rw   rx   ry   rz   s     `           r   test_fftn_out_argument TestFFT1D.test_fftn_out_argument  s    	( Gz"Rz(:%::ARVV\\z"Abffmmq$"Qd+}}6,-	w&sJy,As407.r   r!   c                    U[         R                  R                  L a  [        S5      nO[        S5      S[        S5      -  -   n[        R
                  " [        SS9   U" U[         R                  " U5      SSS9  S S S 5        SnU" X#SS	9n[         R                  " U5      nU" X#SUS
9nXeL d   e[        Xd5        g ! , (       d  f       NG= f)Nr  r/   r   r   r   r   r   r   )rt   r   r   )rr   r?   r?   r   r   r   rt   )	r   r!   r   r   r   r   r    rJ   r   )r"   r!   r   r   rv   rt   rw   s          r   test_fftn_out_and_s_interaction)TestFFT1D.test_fftn_out_and_s_interaction  s     "&&,,z"Az"Rz(:%::A]]:->?r}}Q'99E @ qI.mmH%Q)5}}6, @?s   B<<
C
r   )	   r?   r?   r   c                     [        S5      S[        S5      -  -   n[        R                  R                  X!SS9n[        R                  " U5      n[        R                  R                  X!SUS9nXTL d   e[        XS5        g )N)r$  r?   r   r   r/   r   r   r!  )r   r   r!   r   rJ   r   )r"   r   r   rv   rt   rw   s         r   !test_irfftn_out_and_s_interaction+TestFFT1D.test_irfftn_out_and_s_interaction  sk     < 2f\&:#::66==i=8mmH%qI3?}}6,r   r%   N)4r&   r'   r(   r)   r9   r   markparametrizer   singledouble
longdoublerP   rY   rf   ru   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r  r  r
  r  r  r  r"  r&  r*   r%   r   r   r,   r,      s   1 [[Wryy"))R]]&KLB MB" [[Wryy"))R]]&KLE ME.B [[VV,[[Ww&67[[[-8/ 9 8 -/6 [[VaV,9/ -9/v= [[V%KL' M'	C	D
C
D@"E:
4D45$4
H
E [[TBFFKK$&FFLL"&&--$A B5B5 [[TBFFKK$&FFKK$? @>@>
 [[TBFFKK$&FFLL"&&--$A BB
 [[TBFFKK#>?( @(
 [[TBFFKK$&FFLL"&&--$&FFKK$? @4@4
D& [[V%;<[[Ww&67[[[-8/ 9 8 =/6 [[URVV[["&&,,$MN- O-  [[S9i"89- :-r   r,   r;   orderFznon-contiguousr!   c                 T   [         R                  R                  S5      nUR                  SSS5      R	                  U SS9nS[         R
                  " [         R                  " UR                  5      5      -  [         R                  " UR                  5      R                  -  nUS:X  a  [         R                  " U5      nO$US S S	2   n[         R                  " US S S	2   5      nUR                  R                  S
5      (       a)  [        S5       H  nU" XGS9nU" XgS9n	[!        XXUS9  M     g UR                  R                  S5      (       aW  / SQn
UR                  R                  S5      (       a  U
R#                  / SQ5        U
 H  nU" XKS9nU" XkS9n	[!        XXUS9  M     g [$        e)N*   r         F)rS   g       @r.  r	   r!   r   r   rD   )r   r   )rh   )r
   r   r  r   ))r   )r
   )r   Nr   )r   r   RandomStaterandrH   rd   log2r   finfor;   epsasfortranarrayascontiguousarrayr&   endswithr2   r   extendr    )r;   r-  r!   rngX_tolYr   X_resY_resr   axs               r   test_fft_with_orderrC    s]    ))


#CAr!!%e!4A))BHHQWW,=,A,AAD|a  ddG  4R4)
||U##!HD%E%EEt?  
		/	0	0'<<  ((KK01BOEOEEt? 
 r   CrC   )Nr1     c                    [         R                  R                  S5      nUR                  S5      n[         R                  " U[         R
                  U S9n[         R                  R                  X1S9nUR                  R                  UR                  R                  :X  d   eUR                  R                  UR                  R                  :X  d   eg )Nr0  rr   )r;   r-  rB   )
r   r   r3  r4  asarray	complex64r!   flagsc_contiguousf_contiguous)r-  rC   r<  r   ress        r   test_fft_output_orderrM    s     ))


#CA


1BLL6A
&&**Q*
C99!!QWW%9%999999!!QWW%9%9999r   zCannot start thread)reasonc                   :    \ rS rSrSrSrS rS rS rS r	S r
S	rg
)TestFFTThreadSafei  r>   )i      c                   ^ U4S jn[         R                  " 5       nT" U6 n[        U R                  5       Vs/ s H  n[        R
                  " X2U4S9PM     nnU Vs/ s H  oR                  5       PM       nU Vs/ s H  oR                  5       PM       n[        U R                  5       H  n[        UR                  SS9US5        M     g s  snf s  snf s  snf )Nc                 .   > UR                  T" U 6 5        g rl   )put)argsqfuncs     r   worker.TestFFTThreadSafe._test_mtsame.<locals>.worker  s    EE$+r   )targetrU  r?   )timeoutz6Function returned wrong value in multithreaded context)
queueQueuer2   threads	threadingThreadstartjoinr   get)	r"   rW  rU  rX  rV  rv   r8   tr   s	    `       r   _test_mtsameTestFFTThreadSafe._test_mtsame  s    	 KKM; DLL)+) V)<) 	
 +AqA1a1t||$AquuQu/HJ %+s    CC>Cc                     [         R                  " U R                  5      S-  S-   nU R                  [         R                  R                  U5        g Nr
   y                )r   r   input_shapere  r!   r"   r   s     r   rf   TestFFTThreadSafe.test_fft  s8    GGD$$%)","&&**a(r   c                     [         R                  " U R                  5      S-  S-   nU R                  [         R                  R
                  U5        g rh  )r   r   ri  re  r!   r3   rj  s     r   r   TestFFTThreadSafe.test_ifft!  s8    GGD$$%)","&&++q)r   c                     [         R                  " U R                  5      nU R                  [         R                  R
                  U5        g rl   )r   r   ri  re  r!   r5   rj  s     r   r   TestFFTThreadSafe.test_rfft%  s.    GGD$$%"&&++q)r   c                     [         R                  " U R                  5      S-  S-   nU R                  [         R                  R
                  U5        g rh  )r   r   ri  re  r!   r4   rj  s     r   r   TestFFTThreadSafe.test_irfft)  s8    GGD$$%)","&&,,*r   r%   N)r&   r'   r(   r)   r^  ri  re  rf   r   r   r   r*   r%   r   r   rP  rP    s&    GKJ$)**+r   rP  c                     [         R                  " S5      n [         R                  R                  U SS9  [         R                  R	                  U SS9  [         R                  R                  [         R
                  " S/[        5      SS9  g )Nrr   r
   rB   r   )r   r   r!   r4   r   rG   ru   )r   s    r   test_irfft_with_n_1_regressionrs  .  sX    
		"AFFLLaLFFKKQKFFLL1#w'2L.r   c                      [         R                  " S5      S-  n [         R                  R                  U SS9n[         R                  " / SQ5      n[        X5        g )Nr?   y      ?      ?rr   rB   )
g      4@gk "#@g'g$ pn]k@grg      @gG& gdƍĿgt=M?g@L>M4)r   r   r!   r   rG   r   )r   rw   rv   s      r   "test_irfft_with_n_large_regressionru  6  sG    
		!AVV[[b[!Fxx 2 3H F%r   data)FTFrr   rA   r?   c                     U" U 5      nU R                  [        R                  " U S5      5      nU" U5      n[        X$5        g )Nr@   )rH   r   result_typer   )rv  r!   rw   
float_datarv   s        r   #test_fft_with_integer_or_bool_inputrz  @  s7     YFR^^D"56J:Hv(r   )(numpyr   r   numpy.randomr   numpy.testingr   r   r   r   r_  r\  r   r   r,   r(  r)  float32float64rH  
complex128r!   r   r   r3   r   r   rC  rM  skipifrP  rs  ru  r5   r4   rG   r   uint8int16rz  r%   r   r   <module>r     s     
 
  +< <z- z-z 	RZZr}}=? 3(8"9:	RVV[["&&++	bffllBFFLL	23	3 ;?> 3*-m,: - .: G$9:$+ $+ ;$+N/& FFJJRVV[["&&,,!  HH!"IIb!IIarxx " 
))r   