
    (phZw                        S SK JrJrJrJrJr  S SKrS SKJr  S SK	J
r
JrJrJrJrJrJr  S SKJrJrJrJrJrJrJrJrJrJr  S SKrS SKrS SKJr  / SQr / SQr!S	/r"S
/r#S r$S r%S r&S r'S r(S r)S r*S r+ " S S5      r, " S S\,5      r- " S S\,5      r. " S S5      r/ " S S5      r0 " S S\05      r1 " S S \05      r2 " S! S"5      r3 " S# S$\35      r4 " S% S&\35      r5 " S' S(5      r6 " S) S*\65      r7 " S+ S,\65      r8 " S- S.5      r9 " S/ S05      r: " S1 S25      r; " S3 S45      r< " S5 S65      r= " S7 S85      r> " S9 S:5      r?\R                  R                  S;\\\/5      S< 5       rBg)=    )assert_assert_equalassert_array_almost_equalassert_array_almost_equal_nulpassert_array_lessN)raises)ifftfftfftnifftnrfftirfftfft2)
arangearrayasarrayzerosdotexppiswapaxesdoublecdoublerand)i    i`  i  )      $   i     c                     SU SU 3n[        [        R                  R                  X-
  5      U[        R                  R                  U 5      -  U5        g )Nzsize: z  rdt: )r   nplinalgnorm)xyrtolsizerdterr_msgs         Q/var/www/html/venv/lib/python3.13/site-packages/scipy/fftpack/tests/test_basic.py_assert_close_in_normr+   #   sA    tfGC5)GbiinnQU+T"))..2C-CWM    c                     [        U 6 $ Nr   )r'   s    r*   randomr/   )   s    ;r,   c                     [        U 5      n [        U 5      n[        U[        S9n[	        U5      * S[
        -  U-  -  n[        U5       H  n[        [        XC-  5      U 5      X$'   M     U$ Ndtype               @	r   lenr   r   r   r   ranger   r   r$   nr%   wis        r*   
direct_dftr<   -   s_    
AAAawA	
BrE!GA1X3qs8Q Hr,   c                     [        U 5      n [        U 5      n[        U[        S9n[	        U5      S[
        -  U-  -  n[        U5       H  n[        [        XC-  5      U 5      U-  X$'   M!     U$ r1   r5   r8   s        r*   direct_idftr>   7   sb    
AAAawAq	2b57A1X3qs8Q! Hr,   c                 x    [        U 5      n [        [        U R                  5      5       H  n[	        XS9n M     U $ N)axis)r   r7   r6   shaper
   r$   rA   s     r*   direct_dftnrD   A   s1    
Ac!''l# $Hr,   c                 x    [        U 5      n [        [        U R                  5      5       H  n[	        XS9n M     U $ r@   )r   r7   r6   rB   r	   rC   s     r*   direct_idftnrF   H   s1    
Ac!''l# $Hr,   c                 r   [        U 5      n [        U 5      n[        U5      * S[        -  U-  -  n[	        U[
        S9n[        US-  S-   5       Hd  n[        [        XB-  5      U 5      nU(       a4  UR                  USU-  S-
  '   SU-  U:  a  UR                  USU-  '   MS  MU  UR                  US'   Mf     U$ )Nr4   r2   r      r   )r   r6   r   r   r   r   r7   r   r   realimag)r$   r9   r:   rr;   r%   s         r*   direct_rdftrL   O   s    
AAA	
BrE!GAavA1a46]AC!vvAac!eHsQw!A#  66AaD  Hr,   c                 `   [        U 5      n [        U 5      n[        U[        S9n[	        US-  S-   5       Ha  nU(       aO  SU-  U:  a7  U SU-  S-
     SU SU-     -  -   X#'   U SU-  S-
     SU SU-     -  -
  X!U-
  '   MJ  U SU-  S-
     X#'   MY  U S   US'   Mc     [        U5      R                  $ )Nr2   r   rH                 ?r   )r   r6   r   r   r7   r>   rI   )r$   r9   x1r;   s       r*   direct_irdftrP   _   s    
AAA	q	 B1a46]sQw!A#a%2a!f9,AaCE(R!A#Y.Q3!A#a%aDBqE  r?r,   c                   2    \ rS rSrS rS rS rS rS rSr	g)	_TestFFTBaseo   c                 ^    S U l         S U l        [        R                  R	                  S5        g N  )cdtr(   r!   r/   seedselfs    r*   setup_method_TestFFTBase.setup_methodp   s     
		tr,   c                 F   [         R                  " / SQU R                  S9n[        U5      n[	        UR
                  U R                  5        [        U5      n[        X#5        [         R                  " / SQU R                  S9n[        [        U5      [        U5      5        g )NrH   r            @      ?rH   r   r_   y      @       @r2   rH   r   r_   y      @           )r!   r   rW   r
   r   r3   r<   r   rZ   r$   r%   y1s       r*   test_definition_TestFFTBase.test_definitionu   si    HH,DHH=FQWWdhh']!!'HH^4884!#a&A7r,   c                 j   [         R                  " / SQU R                  S9n[         R                  " / SQU R                  S9n[        X/SS9n[	        UR
                  U R                  5        [	        UR                  S5        [        US   [        U5      5        [        US   [        U5      5        g NrH   r   r_      r2   rj   r9   r   rj   r   rH   )
r!   r   r(   r
   r   r3   rW   rB   r   r<   rZ   rO   x2r%   s       r*   test_n_argument_real!_TestFFTBase.test_n_argument_real~   s|    XXitxx0XXitxx0!QWWdhh'QWWU#!!A$z"~6!!A$z"~6r,   c                 j   [         R                  " / SQU R                  S9n[         R                  " / SQU R                  S9n[        X/SS9n[	        UR
                  U R                  5        [	        UR                  S5        [        US   [        U5      5        [        US   [        U5      5        g )N)rH   r   r_   r`   r2   rj   rk   rl   r   rH   )	r!   r   rW   r
   r   r3   rB   r   r<   rm   s       r*   _test_n_argument_complex%_TestFFTBase._test_n_argument_complex   s|    XXl$((3XXl$((3!QWWdhh'QWWU#!!A$z"~6!!A$z"~6r,   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g NrH   r   )assert_raises
ValueErrorr
   rY   s    r*   test_invalid_sizes_TestFFTBase.test_invalid_sizes   s(    j#r*j#1qe}b9r,   rW   r(   N)
__name__
__module____qualname____firstlineno__r[   re   ro   rr   ry   __static_attributes__ r,   r*   rR   rR   o   s    
877:r,   rR   c                       \ rS rSrS rSrg)TestDoubleFFT   c                 X    [         R                  U l        [         R                  U l        g r.   r!   
complex128rW   float64r(   rY   s    r*   r[   TestDoubleFFT.setup_method       ==::r,   r{   Nr|   r}   r~   r   r[   r   r   r,   r*   r   r          r,   r   c                   ^    \ rS rSrS rSr\R                  R                  S\S9S 5       r	Sr
g)	TestSingleFFT   c                 X    [         R                  U l        [         R                  U l        g r.   r!   	complex64rW   float32r(   rY   s    r*   r[   TestSingleFFT.setup_method       <<::r,   zusingle-precision FFT implementation is partially disabled, until accuracy issues with large prime powers are resolvedF)runreasonc                     g r.   r   rY   s    r*   test_noticeTestSingleFFT.test_notice   s    r,   r{   N)r|   r}   r~   r   r[   r   pytestmarkxfailr   r   r   r,   r*   r   r      s7    KF [[50 1r,   r   c                        \ rS rSrS rS rSrg)TestFloat16FFT   c                 :   [         R                  " / SQ[         R                  S9n[        USS9n[	        UR
                  [         R                  5        [	        UR                  S5        [        U[        UR                  [         R                  5      5      5        g )Nri   r2   rj   rk   )rj   r!   r   float16r
   r   r3   r   rB   r   r<   astyper   )rZ   rO   r%   s      r*   test_1_argument_real#TestFloat16FFT.test_1_argument_real   s]    XXl"**5aLQWWbll+QWWe$!!Z		"**0E%FGr,   c                    [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[        X/SS9n[	        UR
                  [         R                  5        [	        UR                  S5        [        US   [        UR                  [         R                  5      5      5        [        US   [        UR                  [         R                  5      5      5        g rh   r   rm   s       r*   ro   #TestFloat16FFT.test_n_argument_real   s    XXl"**5XXl"**5AQWWbll+QWWf%!!A$
299RZZ3H(IJ!!A$
299RZZ3H(IJr,   r   N)r|   r}   r~   r   r   ro   r   r   r,   r*   r   r      s    HKr,   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)_TestIFFTBase   c                 B    [         R                  R                  S5        g rU   r!   r/   rX   rY   s    r*   r[   _TestIFFTBase.setup_method       
		tr,   c                 N   [         R                  " / SQU R                  5      n[        U5      n[	        U5      n[        UR                  U R                  5        [        X#5        [         R                  " / SQU R                  5      n[        [        U5      [	        U5      5        g )Nr^   ra   )r!   r   rW   r	   r>   r   r3   r   rc   s       r*   re   _TestIFFTBase.test_definition   si    HH,dhh7G^QWWdhh'!!'HH^TXX.!$q'+a.9r,   c                    [         R                  " / SQU R                  5      n[        U5      n[	        UR
                  U R                  5        [        U5      n[        X#5        [         R                  " / SQU R                  S9n[	        UR
                  U R                  5        [        [        U5      [        U5      5        g )NrH   r   r_   rj   rH   r   r_   rj   rH   r   r_   rj   rb   r2   )	r!   r   r(   r	   r   r3   rW   r>   r   rc   s       r*   test_definition_real"_TestIFFTBase.test_definition_real   s{    HH&1GQWWdhh'^!!'HH[1QWWdhh'!$q'+a.9r,   c                    S H  n[        U/5      R                  U R                  5      n[        U/5      R                  U R                  5      SU-  -   n[        [	        U5      5      n[	        [        U5      5      n[        UR                  U R                  5        [        UR                  U R                  5        [        X25        [        XB5        M     g )N	rH   3   rS   d      @         i   rN   )r/   r   rW   r	   r
   r   r3   r   rZ   r'   r$   rd   y2s        r*   test_random_complex!_TestIFFTBase.test_random_complex   s    6Dv%%dhh/Av%%dhh/"Q$6Ac!fBT!WB488,488,%b,%b, 7r,   c                 \   S H  n[        U/5      R                  U R                  5      n[        [	        U5      5      n[	        [        U5      5      n[        UR                  U R                  5        [        UR                  U R                  5        [        X25        [        XB5        M     g )Nr   )	r/   r   r(   r	   r
   r   r3   rW   r   r   s        r*   test_random_real_TestIFFTBase.test_random_real   st    6Dv%%dhh/Ac!fBT!WB488,488,%b,%b, 7r,   c                 4   U R                   [        R                  :X  a  SnO U R                   [        R                  :X  a  Sn[        [
        -    GHE  n[        R                  R                  S5        [        R                  R                  U5      R                  U R                   5      n[        [        U5      5      n[        X4WX R                   5        [        [        U5      5      n[        X4XU R                   5        US[        R                  R                  U5      -  -   R                  U R                  5      n[        [        U5      5      n[        X4XU R                   5        [        [        U5      5      n[        X4XU R                   5        GMH     g )Nh㈵>绽|=rV   rN   )r(   r!   r   r   LARGE_COMPOSITE_SIZESLARGE_PRIME_SIZESr/   rX   r   r   r	   r
   r+   rW   rZ   r&   r'   r$   r%   s        r*   test_size_accuracy _TestIFFTBase.test_size_accuracy   s   88rzz!DXX#D),==DIINN4 		t$++DHH5ASVA!!dHH=DGA!!DHH=R		t,,,44TXX>ASVA!!DHH=DGA!!DHH= >r,   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g ru   )rw   rx   r	   rY   s    r*   ry    _TestIFFTBase.test_invalid_sizes   (    j$+j$!A!ur:r,   r   N)r|   r}   r~   r   r[   re   r   r   r   r   ry   r   r   r,   r*   r   r      s%    :	:	-->*;r,   r   c                       \ rS rSrS rSrg)TestDoubleIFFTi  c                 X    [         R                  U l        [         R                  U l        g r.   r   rY   s    r*   r[   TestDoubleIFFT.setup_method  r   r,   r{   Nr   r   r,   r*   r   r     r   r,   r   c                       \ rS rSrS rSrg)TestSingleIFFTi	  c                 X    [         R                  U l        [         R                  U l        g r.   r   rY   s    r*   r[   TestSingleIFFT.setup_method
  r   r,   r{   Nr   r   r,   r*   r   r   	  r   r,   r   c                   F    \ rS rSrS rS rS r " S S5      rS rS r	S	r
g
)_TestRFFTBasei  c                 B    [         R                  R                  S5        g rU   r   rY   s    r*   r[   _TestRFFTBase.setup_method  r   r,   c                     / SQ/ SQ4 Hb  n[         R                  " XR                  S9n[        U5      n[	        U5      n[        X45        [        UR                  U R                  5        Md     g )Nr   	rH   r   r_   rj   rH   r   r_   rj   rb   r2   )r!   r   r(   r   rL   r   r   r3   )rZ   tr$   r%   rd   s        r*   re   _TestRFFTBase.test_definition  sQ    *,GHA((+AQAQB%a+$((+ Ir,   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g ru   )rw   rx   r   rY   s    r*   ry    _TestRFFTBase.test_invalid_sizes  r   r,   c                        \ rS rSrS rS rSrg)_TestRFFTBase.MockSeriesi   c                 :    [         R                  " U5      U l        g r.   )r!   r   datarZ   r   s     r*   __init__!_TestRFFTBase.MockSeries.__init__!  s    

4(DIr,   c                 t     [        U R                  U5      $ ! [         a  n[        SU S35      UeS nAff = f)Nz&'MockSeries' object has no attribute '')getattrr   AttributeError)rZ   itemes      r*   __getattr__$_TestRFFTBase.MockSeries.__getattr__$  sO    Ktyy$//! K$ &;;?&&C DIJKKs    
727)r   N)r|   r}   r~   r   r   r   r   r   r,   r*   
MockSeriesr      s    	)	Kr,   r   c                     [         R                  " / SQ5      n[        R                  U5      n/ SQn[	        U5        [        X5        [        UR                  U5        g )N)g      ?g       @g      @g      @g      @r   )r!   r   r   r   r   r   r   )rZ   r$   xsexpecteds       r*   test_non_ndarray_with_dtype)_TestRFFTBase.test_non_ndarray_with_dtype+  sE    HH)*%%a("R 	Q!RWWh'r,   c           	      p    [        [        [        [        R                  " S[        R
                  S95        g Nrj   r2   )rw   	TypeErrorr   r!   r   r   rY   s    r*   test_complex_input _TestRFFTBase.test_complex_input6  s    iryy",,'GHr,   r   N)r|   r}   r~   r   r[   re   ry   r   r   r   r   r   r,   r*   r   r     s(    ,;
	K 	K	(Ir,   r   c                       \ rS rSrS rSrg)TestRFFTDoublei:  c                 X    [         R                  U l        [         R                  U l        g r.   r   rY   s    r*   r[   TestRFFTDouble.setup_method;  r   r,   r{   Nr   r   r,   r*   r   r   :  r   r,   r   c                       \ rS rSrS rSrg)TestRFFTSinglei@  c                 X    [         R                  U l        [         R                  U l        g r.   r   rY   s    r*   r[   TestRFFTSingle.setup_methodA  r   r,   r{   Nr   r   r,   r*   r  r  @  r   r,   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
_TestIRFFTBaseiF  c                 B    [         R                  R                  S5        g rU   r   rY   s    r*   r[   _TestIRFFTBase.setup_methodG  r   r,   c                 R   ^  / SQn/ SQn/ SQn/ SQnU 4S jnU" X5        U" X45        g )Nr   )rH          @      @r`   r
  rj          @            @      r  r   )	rH   r
  r`   r
  y      @      @y      @      r  r  r  c                   > [        [        R                  " U TR                  S95      n[	        U 5      n[        UR                  TR                  5        [        X#TR                  S9  [        U[        U5      TR                  S9  g )Nr2   )decimal)
r   r!   r   r(   rP   r   r3   r   ndecr	   )r$   xrr%   rd   rZ   s       r*   _test-_TestIRFFTBase.test_definition.<locals>._testP  sY    bhhq12AaB$((+%aDII>%aR$))Dr,   r   )rZ   rO   x1_1rn   x2_1r  s   `     r*   re   _TestIRFFTBase.test_definitionJ  s-    2 :	E 	bbr,   c                    S H  n[        U/5      R                  U R                  5      n[        [	        U5      5      n[	        [        U5      5      n[        UR                  U R                  5        [        UR                  U R                  5        [        X2U R                  SU-  S9  [        XBU R                  SU-  S9  M     g )Nr   zsize=%d)r  r)   )	r/   r   r(   r   r   r   r3   r   r  r   s        r*   r   _TestIRFFTBase.test_random_realZ  s    6Dv%%dhh/AtAwBeAhB488,488,%bTYY/84/?A%bTYY/84/?A 7r,   c                    U R                   [        R                  :X  a  SnO U R                   [        R                  :X  a  Sn[        [
        -    H  n[        R                  R                  S5        [        R                  R                  U5      R                  U R                   5      n[        [        U5      5      n[        X4WX R                   5        [        [        U5      5      n[        X4XU R                   5        M     g )Nr   r   rV   )r(   r!   r   r   r   r   r/   rX   r   r   r   r   r+   r   s        r*   r   !_TestIRFFTBase.test_size_accuracyf  s    88rzz!DXX#D),==DIINN4 		t$++DHH5Ad1gA!!dHH=U1XA!!DHH= >r,   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g ru   )rw   rx   r   rY   s    r*   ry   !_TestIRFFTBase.test_invalid_sizesu  s(    j%,j%1Q%1;r,   c           	      p    [        [        [        [        R                  " S[        R
                  S95        g r   )rw   r   r   r!   r   r   rY   s    r*   r   !_TestIRFFTBase.test_complex_inputy  s    i		!2<<(HIr,   r   N)r|   r}   r~   r   r[   re   r   r   ry   r   r   r   r,   r*   r  r  F  s"     
A><Jr,   r  c                       \ rS rSrS rSrg)TestIRFFTDoublei  c                 f    [         R                  U l        [         R                  U l        SU l        g )N   )r!   r   rW   r   r(   r  rY   s    r*   r[   TestIRFFTDouble.setup_method  s    ==::	r,   rW   r  r(   Nr   r   r,   r*   r  r    s    r,   r  c                       \ rS rSrS rSrg)TestIRFFTSinglei  c                 f    [         R                  U l        [         R                  U l        SU l        g )Nrb   )r!   r   rW   r   r(   r  rY   s    r*   r[   TestIRFFTSingle.setup_method  s    <<::	r,   r#  Nr   r   r,   r*   r%  r%    s    r,   r%  c                   &    \ rS rSrS rS rS rSrg)Testfft2i  c                 B    [         R                  R                  S5        g rU   r   rY   s    r*   r[   Testfft2.setup_method  r   r,   c                     [         R                  " S5      n[        USSS9n[         R                  R	                  USSS9n[        X#5        g)z-FFT returns wrong result with axes parameter.rj   rj   r      r/  rB   axes)sr4  N)numpyonesr   r
   r   r   rZ   r$   r%   y_rs       r*   test_regression_244Testfft2.test_regression_244  s@     JJy!&x0iinnQ&xn8!!)r,   c                 h    [        [        [        / /5        [        [        [        SS/SS//S5        g )NrH   r   rj   r1  )rw   rx   r   rY   s    r*   ry   Testfft2.test_invalid_sizes  s+    j$-j$!Q!Q(8'Br,   r   N)r|   r}   r~   r   r[   r:  ry   r   r   r,   r*   r)  r)    s    *Cr,   r)  c                   N   \ rS rSrS rS r\R                  R                  S\	\
-   5      S 5       r\R                  R                  S\\-   5      S 5       rS r\R                  R                  S\	\
-   5      S 5       r\R                  R                  S\\-   5      S	 5       rS
rg)TestFftnSinglei  c                 B    [         R                  R                  S5        g rU   r   rY   s    r*   r[   TestFftnSingle.setup_method  r   r,   c                 2   / SQ/ SQ/ SQ/n[        [        R                  " U[        R                  5      5      n[	        UR
                  [        R                  :H  SS9  [        R                  " [        U5      [        R                  5      n[        X#5        g )NrH   r   r_   rj   rb         r/  	   z-double precision output with single precision)msg)r   r!   r   r   r   r3   r   r   r8  s       r*   re   TestFftnSingle.test_definition  sj     !RZZ()2<<'C	E hhtAw-&q.r,   r'   c                    [         R                  R                  S5      nUR                  X45      SUR                  X45      -  -   n[        UR                  R                  [         R                  5      5      n[        UR                  R                  [         R                  5      5      R                  [         R                  5      n[        UR                  [         R                  5        [        XES5        g )NrV   rN     r!   r/   default_rngr   rI   r   r   r   r   r   r3   r   rZ   r'   rngr$   rd   r   s         r*   test_size_accuracy_small'TestFftnSingle.test_size_accuracy_small  s    ii##D)JJ|$r#**d\*B'BB!&&--

+,!&&--

+,33BLLARXXr||,&rt4r,   c                    [         R                  R                  S5      nUR                  " US45      SUR                  " US45      -  -   n[        UR                  R                  [         R                  5      5      n[        UR                  R                  [         R                  5      5      R                  [         R                  5      n[        UR                  [         R                  5        [        XES5        g )NrV   r_   rN   rM  rN  )rZ   r'   r   r$   rd   r   s         r*   test_size_accuracy_large'TestFftnSingle.test_size_accuracy_large  s    yy$$T*KKq	"RT1I(>%>>!&&--

+,!&&--

+,33BLLARXXr||,&rt4r,   c                 0   / SQ/ SQ/ SQ/n[        [        R                  " U[        R                  5      5      n[	        UR
                  [        R                  5        [        R                  " [        U5      [        R                  5      n[        X#5        g )NrD  rE  rG  )r   r!   r   r   r   r3   r   r   r8  s       r*   test_definition_float16&TestFftnSingle.test_definition_float16  s_     !RZZ()QWWbll+hhtAw-&q.r,   c                    [         R                  R                  S5      nUR                  X45      SUR                  X45      -  -   n[        UR                  R                  [         R                  5      5      n[        UR                  R                  [         R                  5      5      R                  [         R                  5      n[        UR                  [         R                  5        [        XES5        g )NrV   rN   g    Ar!   r/   rO  r   rI   r   r   r   r   r   r3   r   rP  s         r*   test_float16_input_small'TestFftnSingle.test_float16_input_small  s    ii##D)JJ|$rCJJ|,D'DD!&&--

+,!&&--

+,33BLLARXXr||,&rs3r,   c                    [         R                  R                  S5      nUR                  US45      SUR                  US45      -  -   n[        UR                  R                  [         R                  5      5      n[        UR                  R                  [         R                  5      5      R                  [         R                  5      n[        UR                  [         R                  5        [        XES5        g )NrV   r_   rN   g    >Ar[  rP  s         r*   test_float16_input_large'TestFftnSingle.test_float16_input_large  s    ii##D)JJay!Bszz4)'<$<<!&&--

+,!&&--

+,33BLLARXXr||,&rs3r,   r   N)r|   r}   r~   r   r[   re   r   r   parametrizeSMALL_COMPOSITE_SIZESSMALL_PRIME_SIZESrR  r   r   rU  rX  r\  r_  r   r   r,   r*   r@  r@    s    	/ [[V%:=N%NO5 P5 [[V%:=N%NO5 P5/ [[V%:=N%NO4 P4 [[V%:=N%NO4 P4r,   r@  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestFftni  c                 B    [         R                  R                  S5        g rU   r   rY   s    r*   r[   TestFftn.setup_method  r   r,   c                     / SQ/ SQ/ SQ/n[        U5      n[        U[        U5      5        [        S5      n[        [        U5      [        U5      5        [        S5      n[        [        U5      [        U5      5        g )NrD  rE  rG        rb   rj   r_   rj  )r   r   rD   r/   rZ   r$   r%   s      r*   re   TestFftn.test_definition  sc     G!![^48!$q';q>:=!!$q';q>:r,   c                    / SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ S	Q/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ S	Q/n/ S
Q/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n	/ SQ/ SQ/ SQ/n
/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ S
Q/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/nXxU	/nXU/nUUU/nXEU/nXU/n[        XU/5      n[        [        U5      [        USS95        [        [        U5      [        USS95        [        [        USS9[        US S95        [        US!S9n[        [        US"S#5      [        U5      5        [        US$S9n[        [        [        US"S#5      S"S%5      [        U5      5        [        US&S9n[        [        [        US"S#5      S#S%5      [        U5      5        [        US'S9n[        [        US%S#5      [        U5      5        [        US(S9n[        [        US%S"5      [        U5      5        [        US)S9n[        [        U5      US*   5        [        [        U5      US+   5        [        [        U5      US,   5        [        US-S9n[        [        U5      US*   5        [        [        U5      US+   5        [        [        U5      US,   5        [        US.S9n[        [        US S 2S S 2S*4   5      US S 2S S 2S*4   5        [        [        US S 2S S 2S+4   5      US S 2S S 2S+4   5        [        [        US S 2S S 2S,4   5      US S 2S S 2S,4   5        [        US/S9n[        [        US S 2S*S S 24   5      US S 2S*S S 24   5        [        [        US S 2S+S S 24   5      US S 2S+S S 24   5        [        [        US S 2S,S S 24   5      US S 2S,S S 24   5        [        US0S9n[        [        U5      [        US*   S%S"5      5        [        [        U5      [        US+   S%S"5      5        [        [        U5      [        US,   S%S"5      5        [        US1S9n[        [        U5      [        US S 2S*S S 24   S"S%5      5        [        [        U5      [        US S 2S+S S 24   S"S%5      5        [        [        U5      [        US S 2S,S S 24   S"S%5      5        [        US2S9n[        [        U5      [        US S 2S S 2S*4   S"S%5      5        [        [        U5      [        US S 2S S 2S+4   S"S%5      5        [        [        U	5      [        US S 2S S 2S,4   S"S%5      5        [        US3S9n[	        S45       H:  n[	        S45       H(  n[        [        UUUS S 24   5      UUUS S 24   5        M*     M<     [        US5S9n[	        S45       H:  n[	        S45       H(  n[        [        UUS S 2U4   5      UUS S 2U4   5        M*     M<     [        US6S9n[	        S45       H:  n[	        S45       H(  n[        [        US S 2UU4   5      US S 2UU4   5        M*     M<     [        US7S9n[        UU5        g )8NrD  rE  rG  )
         )   r!     )         )   rj     )         )   rk     )rH   rp  rx  )rj   rs  rz  )rH  ru  r}  )r   rq  rj  )rb   r!  r{  )r/  rv  rk  )r_   rr  ry  )rF  rt  r|  )rI  rw  r~  )rH   rj   rH  )rp  rs  ru  )rx  rz  r}  )r   rb   r/  )rq  r!  rv  )rj  r{  rk  )r_   rF  rI  )rr  rt  rw  )ry  r|  r~  )r1  r2  r4  r   rH   r   )r   r   )r   r  )r   rH   r   r  r1  )r   r   rH   r2  )rH   r   r   )rH   r   r   )r   r   rH   r2  r  r   rH   r   rH   r   r0  )r1  r  r  r2  )r  r1  )r2  r1  r  r_   r2  r   r   )r   r   r   r   r7   r
   )rZ   plane1plane2plane3	ki_plane1	ki_plane2	ki_plane3	jk_plane1	jk_plane2	jk_plane3	kj_plane1	kj_plane2	kj_plane3	ij_plane1	ij_plane2	ij_plane3	ik_plane1	ik_plane2	ik_plane3	ijk_space	ikj_space	jik_space	jki_space	kij_spacer$   r%   r;   js                               r*   test_axes_argumentTestFftn.test_axes_argument  sK        !!#	 !!#	 !!#	 !  "	 !  "	 !  "	 !<1	!<1	!<1	 	 "!!#	 "!!#	 !  "	 !  "	 !  "	 95	95		95	95	95	66*+!$q'"&q|"<	>!$q'4	+BC!$qv"6QW8MN#!(1b""5tIG#!(8Ar2+>B"G"&y/	3#!(8Ar2+>B"G"&y/	3#!(1b""5tIG#!(1b""5tIG"!$v,!5!$v,!5!$v,!5 !$v,!5!$v,!5!$v,!5"!$qAqz"2AaAgJ?!$qAqz"2AaAgJ?!$qAqz"2AaAgJ?"!$qAqz"2AaAgJ?!$qAqz"2AaAgJ?!$qAqz"2AaAgJ?"!$y/8AaD"b3IJ!$y/8AaD"b3IJ!$y/8AaD"b3IJ"!$y/"*1Q1W:r2">	@!$y/"*1Q1W:r2">	@!$y/"*1Q1W:r2">	@ "!$y/"*1Q1W:r2">	@!$y/"*1Q1W:r2">	@!$y/"*1Q1W:r2">	@ qA1X)#a1aj/1Q1W:F   qA1X)#a1aj/1Q1W:F   qA1X)#a1aj/1Q1W:F   !!Q'r,   c                     / SQ/ SQ/n/ SQ/ SQ/ SQ/ SQ/n[        USS9n[        U[        U5      5        [        USS9n[        U[        US S	 5      5        g )
NrD  rE  rH   r   r_   r   rj   rb   rF  r   r   r   r   r   rj   rj   rB   )r_   rj   r  )r   r   rZ   small_xlarge_x1r%   s       r*   test_shape_argumentTestFftn.test_shape_argumentx  s_        "
 '!!T(^4'!!T(3B-%89r,   c                     / SQ/ SQ/ SQ/n[        / SQ/ SQ/ SQ/ SQ/5      n[        USS	S
9n[        U[        U5      5        [        USSS
9n[        U[        [        [        USS5      5      SS5      5        g )NrD  rE  rG  r  r  )rH  r/  rI  r   r  r  r  r3  r  r  r2  )r   r   r   r   r  s       r*   test_shape_axes_argument!TestFftn.test_shape_axes_argument  s     ,&&&( ) X6!!T(^4X6!!X(B+,b"&6 	7r,   c           	         [         R                  R                  S5      n[        USSS9n[        U[	        USSS95        [         R                  R                  S5      n[        USSS9n[        U[	        US	SS95        [         R                  R                  S
5      n[        USSS9n[        U[         R                  R                  USSS95        g )N)rp  rb   r_   rH  r  )r/  )r4  rB   r  r/  )rA   r9   r  r2  r-  r0  r.  )r4  r5  )r6  r/   r   r   r
   rm  s      r*   test_shape_axes_argument2"TestFftn.test_shape_axes_argument2  s    LL.d+!!Sq%9: LL.d+!!Sq%9: LL	*0!!"'))..V."L	Nr,   c                 ~    [        S5      n[        [        SS9   [        USS9  S S S 5        g ! , (       d  f       g = f)Nr-  zBwhen given, axes and shape arguments have to be of the same lengthmatch)r/  r/  r   rH   r  )r   rw   rx   r   )rZ   r$   s     r*   test_shape_argument_more!TestFftn.test_shape_argument_more  s7    ):"<= ,'= = =s   .
<c                     [        [        SS9   [        / /5        S S S 5        [        [        SS9   [        SS/SS//S5        S S S 5        g ! , (       d  f       N8= f! , (       d  f       g = fNz4invalid number of data points \(\[1, 0\]\) specifiedr  z5invalid number of data points \(\[4, -3\]\) specifiedrH   r   r=  )rw   rx   r   rY   s    r*   ry   TestFftn.test_invalid_sizes  sk    :"67 "J7
 :"78 1a&1a&!7+8 87 7
8 8   AA
A
A-r   N)r|   r}   r~   r   r[   re   r  r  r  r  r  ry   r   r   r,   r*   re  re    s-    ;D(L:7N"(	,r,   re  c                   V   \ rS rSrSrSrS r\R                  R                  S\
R                  \
R                  S4\
R                  \
R                  S4/5      S 5       r\R                  R                  SSS/5      \R                  R                  S	/ S
Q5      S 5       5       rS rSrg)	TestIfftni  Nc                 B    [         R                  R                  S5        g rU   r   rY   s    r*   r[   TestIfftn.setup_method  r   r,   zdtype,cdtype,maxnlprM  i  c                    [         R                  R                  S5      n[         R                  " / SQ/ SQ/ SQ/US9n[	        U5      n[        UR                  U5        [        U[        U5      U5        UR                  S5      n[        [	        U5      [        U5      U5        UR                  S5      n[        [	        U5      [        U5      U5        g )NrV   rD  rE  rG  r2   ri  rl  )	r!   r/   rO  r   r   r   r3   r   rF   )rZ   r3   cdtypemaxnlprQ  r$   r%   s          r*   re   TestIfftn.test_definition  s     ii##D)HHi!(-/ !HQWWf%&q,q/6BJJx &uQxa&IJJ}%&uQxa&Ir,   r  r'   )rH   r   r       r   \   c                 
   [         R                  R                  S5      nUR                  X"/5      SUR                  X"/5      -  -   n[        [	        [        U5      5      XA5        [        [        [	        U5      5      XA5        g )NrV   rN   )r!   r/   rO  r   r   r   )rZ   r  r'   rQ  r$   s        r*   r   TestIfftn.test_random_complex  sa     ii##D)JJ|$rCJJ|,D'DD&uT!W~qA&tE!H~qAr,   c                     [        [        SS9   [        / /5        S S S 5        [        [        SS9   [        SS/SS//S5        S S S 5        g ! , (       d  f       N8= f! , (       d  f       g = fr  )rw   rx   r   rY   s    r*   ry   TestIfftn.test_invalid_sizes  sk    :"67 2$K7
 :"78 Aq6Aq6"G,8 87 7
8 8r  r   )r|   r}   r~   r   r3   r  r[   r   r   ra  r!   r   r   r   r   re   r   ry   r   r   r,   r*   r  r    s    EF [[2!zz2==$?!zz2<<>@AJAJ [[Xd|4[[V%;<B = 5B	-r,   r  c                       \ rS rSrS rSrg)	FakeArrayi  c                 2    Xl         UR                  U l        g r.   )_data__array_interface__r   s     r*   r   FakeArray.__init__  s    
#'#;#; r,   )r  r  N)r|   r}   r~   r   r   r   r   r,   r*   r  r    s    <r,   r  c                   $    \ rS rSrS rSS jrSrg)
FakeArray2i  c                     Xl         g r.   r  r   s     r*   r   FakeArray2.__init__  s    
r,   Nc                     U R                   $ r.   r  )rZ   r3   copys      r*   	__array__FakeArray2.__array__  s    zzr,   r  )NN)r|   r}   r~   r   r   r  r   r   r,   r*   r  r    s    r,   r  c                   l   \ rS rSrSr\R                  \R                  4r\\R                  \R                  4-   r/ SQrS rS r\R                   R#                  S\5      \R                   R#                  S\5      \R                   R#                  SS	S
/5      \R                   R#                  S/ SQ5      S 5       5       5       5       r\R                   R#                  S\5      \R                   R#                  S\5      \R                   R#                  SS	S
/5      \R                   R#                  S/ SQ5      S 5       5       5       5       rS r\R                   R#                  S\5      \R                   R#                  SS	S
/5      \R                   R#                  S/ SQ5      S 5       5       5       rSrg)TestOverwritei  z4Check input overwrite behavior of the FFT functions.)r/  ru  r  c                     UR                  5       nS [        [        4 H\  nU" U" U5      X4US9  UR                   SUR                   UR
                  < SU< SU< SU< S3nU(       a  MO  [        XaSU 3S	9  M^     g )
Nc                     U $ r.   r   )r$   s    r*   <lambda>&TestOverwrite._check.<locals>.<lambda>  s    qr,   overwrite_x(z, z, axis=z, overwrite_x=)zspurious overwrite in )r)   )r  r  r  r|   r3   rB   r   )	rZ   r$   routinefftsizerA   r  rn   fakesigs	            r*   _checkTestOverwrite._check  s    VVX )Z8DDHgE&&'q	!''Bwk J(.qBC;R.DSE,JK 9r,   c                    [         R                  R                  S5        [         R                  " U[         R                  5      (       a?  [         R                  R
                  " U6 S[         R                  R
                  " U6 -  -   nO[         R                  R
                  " U6 nUR                  U5      nU R                  XXdUS9  g )NrV   rN   r  )r!   r/   rX   
issubdtypecomplexfloatingrandnr   r  )	rZ   r  r3   rB   rA   overwritable_dtypesr  r  r   s	            r*   	_check_1dTestOverwrite._check_1d  s    
		t== 2 23399??E*R		0G-GGD99??E*D{{5!D7 + 	 	-r,   r3   r  r  TFz
shape,axes))ru  r  )ru  r   r   )r   ru  rH   c           	          [         R                  [         R                  4nU R                  [        XXVX#5        U R                  [
        XXVX#5        g r.   )r!   r   r   r  r
   r	   rZ   r3   r  r  rB   r4  overwritables          r*   test_fft_ifftTestOverwrite.test_fft_ifft  s@     r||4sE$	-tU4	-r,   c           	      |    U R                   nU R                  [        XXVX#5        U R                  [        XXVX#5        g r.   )real_dtypesr  r   r   r  s          r*   test_rfft_irfftTestOverwrite.test_rfft_irfft  s9     ''ueD	-tU4	-r,   c           	      d  ^
 [         R                  R                  S5        [         R                  " U[         R                  5      (       a?  [         R                  R
                  " U6 S[         R                  R
                  " U6 -  -   nO[         R                  R
                  " U6 nUR                  U5      nU
4S jm
Uc  UnO[        [         R                  " X45      5      nT
" U5       HB  n	U R                  XqXUS9  UR                  S:  d  M&  U R                  UR                  XUUS9  MD     g )NrV   rN   c              3      >#    [        U 5      S::  a  Sv   g U S   S-  U S   U S   S-  4 H  nT" U SS  5       H  nU4U-   v   M     M     g 7f)Nr   r   r   rH   )r6   )shpr  restfftshape_iters      r*   r   2TestOverwrite._check_nd_one.<locals>.fftshape_iter4  s\     3x1}a&!)SVSVAX6A -c!"g 6 dTk) !7 7s   AAr  rH   )r!   r/   rX   r  r  r  r   tupletaker  ndimT)rZ   r  r3   rB   r4  r  r  r   
part_shapefftshaper   s             @r*   _check_nd_oneTestOverwrite._check_nd_one+  s    
		t== 2 23399??E*R		0G-GGD99??E*D{{5!	* <Jrwwu34J%j1HKKx$/  1yy1}DFFGt(3  5	 2r,   ))r  N)r  r  )r  r  )r  rH   )r/  ru  N)r  r   rH   )r/  ru  r   r  )r  r  )r  r  )r  r
  )r  )r   )r  N)r  r  c                     [         R                  [         R                  4nU R                  [        XXEU5        U R                  [
        XXEU5        g r.   )r!   r   r   r  r   r   )rZ   r3   r  rB   r4  r  s         r*   test_fftn_ifftnTestOverwrite.test_fftn_ifftnH  sD      r||44t&	(5%&	(r,   r   N)r|   r}   r~   r   __doc__r!   r   r   r  r   r   dtypesfftsizesr  r  r   r   ra  r  r  r  r  r   r   r,   r*   r  r    s   >::rzz*KBLL"--88FHL
- [[Wf-[[Y1[[]T5M:[[\ ,: ;-; ; 2 .- [[Wk2[[Y1[[]T5M:[[\ ,: ;-; ; 2 3-5: [[Wf-[[]T5M:[[\ ,E F(F ; .(r,   r  funcc                    [         R                  R                  SS5      nU " USS9nU " U[         R                  " SS/5      S9n[	        X#5        U " USS9nU " U[         R                  " S/5      S9n[	        X#5        U " USS	S
9nU " U[         R                  " SS/5      [         R                  " SS/5      S
9n[	        X#5        g )Nrp  )rb   rb   r  rb   r  r  r  )rj   rH  )rH   r   r3  rj   rH  rH   r   )r!   r/   r   r   r   )r  aexpectactuals       r*   test_shape_axes_ndarrayr  _  s     			r2A!6"F!288QF+,F !% F!"((B5/*F !6/F!288QF+"((Aq62BCF r,   )Cnumpy.testingr   r   r   r   r   r   r   rw   scipy.fftpackr	   r
   r   r   r   r   r   r6  r   r   r   r   r   r   r   r   r   r   r!   	numpy.fftnumpy.randomr   r   rb  r   rc  r+   r/   r<   r>   rD   rF   rL   rP   rR   r   r   r   r   r   r   r   r   r  r  r  r%  r)  r@  re  r  r  r  r  r   ra  r  r   r,   r*   <module>r     s  N N  * C C C. . .    
  	   
N   #: #:LL 
L 
K K&E; E;P] ] (I (IV] ] 4J 4Jtn n C C$>4 >4BU, U,p*- *-Z< < h( h(V $t!45! 6!r,   