
    -i1                     .   S SK Jr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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   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 r0S r1S r2 " S S5      r3 " S S\35      r4 " S S\35      r5 " S S\35      r6 " S S5      r7 " S S 5      r8\Rr                  Ru                  \!Rv                  \!Rx                  L S!S"9 " S# S$\85      5       r= " S% S&\85      r> " S' S(\85      r? " S) S*5      r@\Rr                  Ru                  \!Rv                  \!Rx                  L S!S"9 " S+ S,\@5      5       rA " S- S.\@5      rB " S/ S0\@5      rC " S1 S25      rD\Rr                  Ru                  \!Rv                  \!Rx                  L S!S"9 " S3 S4\D5      5       rE " S5 S6\D5      rF " S7 S8\D5      rG " S9 S:5      rH " S; S<5      rI " S= S>5      rJ " S? S@5      rK " SA SB5      rL " SC SD5      rM " SE SF5      rN\Rr                  R                  SG\\\\\\\\/5      SH 5       rP\Rr                  R                  SG\\\\\\\\/5      SI 5       rQ\Rr                  R                  SG\\\\/5      SJ 5       rRg)K    )assert_assert_equalassert_array_almost_equalassert_array_almost_equal_nulpassert_array_lessassert_allcloseN)raises)ifftfftfftnifftnrfftirfftrfftnirfftnhfftihffthfftnihfftn)	arangearrayasarrayzerosdotexppiswapaxes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         X/var/www/html/venv/lib/python3.13/site-packages/scipy/fft/_pocketfft/tests/test_basic.py_assert_close_in_normr0   &   sA    tfGC5)GbiinnQU+T"))..2C-CWM    c                     [        U 6 $ Nr   )r,   s    r/   randomr4   ,   s    ;r1   c                 Z    U R                   R                  S5      nU R                  U5      $ )z-Returns the same array with swapped byteorderS)dtypenewbyteorderastype)arrr7   s     r/   swap_byteorderr;   /   s%    II""3'E::er1   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r7                  @	r   lenr   r   r   r   ranger   r   r)   nr*   wis        r/   
direct_dftrG   4   s_    
AAAawA	
BrE!GA1X3qs8Q Hr1   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$ r=   r@   rC   s        r/   direct_idftrI   >   sb    
AAAawAq	2b57A1X3qs8Q! Hr1   c                 f    [        U 5      n [        U R                  5       H  n[        XS9n M     U $ N)axis)r   rB   ndimr   r)   rL   s     r/   direct_dftnrO   H   s,    
Aaff Hr1   c                 f    [        U 5      n [        U R                  5       H  n[        XS9n M     U $ rK   )r   rB   rM   r
   rN   s     r/   direct_idftnrQ   O   s,    
Aaff Hr1   c                     [        U 5      n [        U 5      n[        U5      * S[        -  U-  -  n[	        US-  S-   [
        S9n[        US-  S-   5       H  n[        [        XB-  5      U 5      X4'   M     U$ )Nr?   r!      r>   )	r   rA   r   r   r   r   rB   r   r   )r)   rD   rE   r*   rF   s        r/   direct_rdftrT   V   so    
AAA	
BrE!GAad1fG$A1a46]3qs8Q Hr1   c                     [        U 5      n [        U[        S9n[        US-  S-   5       H9  nX   X#'   US:  d  M  SU-  U:  d  M  [        R
                  " X   5      X!U-
  '   M;     [        U5      R                  $ )Nr>   r!   rS   r   )r   r   r   rB   r&   conjrI   real)r)   rD   x1rF   s       r/   direct_irdftrY   `   sn    
A	q	 B1a46]q5QqS1WggadmBsG  r?r1   c                 T    [        [        U 5      [        U R                  S-
  5      S9$ )NrS   axes)r   r   rB   rM   r)   s    r/   direct_rdftnr^   j   s     QeAFFQJ/00r1   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
_TestFFTBasen   c                 ^    S U l         S U l        [        R                  R	                  S5        g N  )cdtr-   r&   r4   seedselfs    r/   setup_method_TestFFTBase.setup_methodo   s     
		tr1   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rS   r!            @      ?rS   r!   rm   y      @       @r>   rS   r!   rm   y      @           )r&   r   re   r   r   r7   rG   r   rh   r)   r*   y1s       r/   test_definition_TestFFTBase.test_definitiont   si    HH,DHH=FQWWdhh']!!'HH^4884!#a&A7r1   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rS   r!   rm      r>   rx   rD   r!   rx   r   rS   )
r&   r   r-   r   r   r7   re   shaper   rG   rh   rX   x2r*   s       r/   test_n_argument_real!_TestFFTBase.test_n_argument_real}   s|    XXitxx0XXitxx0!QWWdhh'QWWU#!!A$z"~6!!A$z"~6r1   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)rS   r!   rm   rn   r>   rx   ry   rz   r   rS   )	r&   r   re   r   r   r7   r{   r   rG   r|   s       r/   _test_n_argument_complex%_TestFFTBase._test_n_argument_complex   s|    XXl$((3XXl$((3!QWWdhh'QWWU#!!A$z"~6!!A$z"~6r1   c                    [        SS5       H|  nSU-  n[        R                  " U5      n[        UR	                  [
        5      5      n[        R                  R                  U5      n[        XE5        [        U5      n[        XE5        M~     g Nr!      )rB   r&   r   r   r9   complexnumpyr   rh   rF   rD   r)   r*   y2s         r/   test_djbfft_TestFFTBase.test_djbfft   sf    qA1A		!AAHHW%&Aq!B%a+AA%a+ r1   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g NrS   r!   )assert_raises
ValueErrorr   rg   s    r/   test_invalid_sizes_TestFFTBase.test_invalid_sizes   s(    j#r*j#1qe}b9r1   re   r-   N)__name__
__module____qualname____firstlineno__ri   rs   r~   r   r   r   __static_attributes__ r1   r/   r`   r`   n   s     
877,:r1   r`   c                       \ rS rSrS rSrg)TestLongDoubleFFT   c                 X    [         R                  U l        [         R                  U l        g r3   r&   clongdoublere   
longdoubler-   rg   s    r/   ri   TestLongDoubleFFT.setup_method       >>==r1   r   Nr   r   r   r   ri   r   r   r1   r/   r   r      s    !r1   r   c                       \ rS rSrS rSrg)TestDoubleFFT   c                 X    [         R                  U l        [         R                  U l        g r3   )r&   r   re   float64r-   rg   s    r/   ri   TestDoubleFFT.setup_method   s    ::::r1   r   Nr   r   r1   r/   r   r          r1   r   c                       \ rS rSrS rSrg)TestSingleFFT   c                 X    [         R                  U l        [         R                  U l        g r3   r&   	complex64re   float32r-   rg   s    r/   ri   TestSingleFFT.setup_method       <<::r1   r   Nr   r   r1   r/   r   r      r   r1   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 )Nrw   r>   rx   ry   )rx   r&   r   float16r   r   r7   r   r{   r   rG   r9   r   )rh   rX   r*   s      r/   test_1_argument_real#TestFloat16FFT.test_1_argument_real   s]    XXl"**5aLQWWbll+QWWe$!!Z		"**0E%FGr1   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 rv   r   r|   s       r/   r~   #TestFloat16FFT.test_n_argument_real   s    XXl"**5XXl"**5AQWWbll+QWWf%!!A$
299RZZ3H(IJ!!A$
299RZZ3H(IJr1   r   N)r   r   r   r   r   r~   r   r   r1   r/   r   r      s    HKr1   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)_TestIFFTBase   c                 B    [         R                  R                  S5        g rc   r&   r4   rf   rg   s    r/   ri   _TestIFFTBase.setup_method       
		tr1   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 )Nrl   ro   )r&   r   re   r
   rI   r   r7   r   rq   s       r/   rs   _TestIFFTBase.test_definition   si    HH,dhh7G^QWWdhh'!!'HH^TXX.!$q'+a.9r1   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rS   r!   rm   rx   rS   r!   rm   rx   rS   r!   rm   rx   rp   r>   )	r&   r   r-   r
   r   r7   re   rI   r   rq   s       r/   test_definition_real"_TestIFFTBase.test_definition_real   s{    HH&1GQWWdhh'^!!'HH[1QWWdhh'!$q'+a.9r1   c                    [        SS5       H  nSU-  n[        R                  " U5      n[        UR	                  U R
                  5      5      n[        R                  R                  UR	                  U R
                  5      5      n[        XEU R                  U R                  S9  [        U5      n[        XEU R                  U R                  S9  M     g )Nr!   r   )r+   atol)rB   r&   r   r
   r9   re   r   r   r   r+   r   r   s         r/   r   _TestIFFTBase.test_djbfft   s    qA1A		!AQXXdhh'(A 23BAtyytyyAQAAtyytyyA r1   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	rS   3   o   d      @         i                 ?)r4   r9   re   r
   r   r   r7   r   rh   r,   r)   rr   r   s        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, 7r1   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   )	r4   r9   r-   r
   r   r   r7   re   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, 7r1   c                    [         [        -    GHm  n[        R                  R	                  S5        [        R                  R                  U5      R                  U R                  5      n[        [        U5      5      n[        X#U R                  XR                  5        [        [        U5      5      n[        X#U R                  XR                  5        US[        R                  R                  U5      -  -   R                  U R                  5      n[        [        U5      5      n[        X#U R                  XR                  5        [        [        U5      5      n[        X#U R                  XR                  5        GMp     g Nrd   r   )LARGE_COMPOSITE_SIZESLARGE_PRIME_SIZESr&   r4   rf   r    r9   r-   r
   r   r0   r+   re   )rh   r,   r)   r*   s       r/   test_size_accuracy _TestIFFTBase.test_size_accuracy   s    ),==DIINN4 		t$++DHH5ASVA!!		4BDGA!!		4BR		t,,,44TXX>ASVA!!		4BDGA!!		4B >r1   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g r   )r   r   r
   rg   s    r/   r    _TestIFFTBase.test_invalid_sizes  (    j$+j$!A!ur:r1   r   N)r   r   r   r   ri   rs   r   r   r   r   r   r   r   r   r1   r/   r   r      s,    :	:B	--C ;r1   r   z Long double is aliased to double)reasonc                       \ rS rSrS rSrg)TestLongDoubleIFFTi  c                 t    [         R                  U l        [         R                  U l        SU l        SU l        g N绽|=)r&   r   re   r   r-   r+   r   rg   s    r/   ri   TestLongDoubleIFFT.setup_method  s&    >>==		r1   r   re   r-   r+   Nr   r   r1   r/   r   r     s    r1   r   c                       \ rS rSrS rSrg)TestDoubleIFFTi  c                 t    [         R                  U l        [         R                  U l        SU l        SU l        g r   )r&   
complex128re   r   r-   r+   r   rg   s    r/   ri   TestDoubleIFFT.setup_method  s&    ==::		r1   r   Nr   r   r1   r/   r   r     s    r1   r   c                       \ rS rSrS rSrg)TestSingleIFFTi"  c                 t    [         R                  U l        [         R                  U l        SU l        SU l        g )Nh㈵>g-C6?)r&   r   re   r   r-   r+   r   rg   s    r/   ri   TestSingleIFFT.setup_method#  s&    <<::		r1   r   Nr   r   r1   r/   r   r   "  s    r1   r   c                   L    \ rS rSrS rS rS rS rS r " S S5      r	S	 r
S
rg)_TestRFFTBasei*  c                 B    [         R                  R                  S5        g rc   r   rg   s    r/   ri   _TestRFFTBase.setup_method+  r   r1   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   )	rS   r!   rm   rx   rS   r!   rm   rx   rp   r>   )	r&   r   r-   r   rT   r   r   r7   re   )rh   tr)   r*   rr   s        r/   rs   _TestRFFTBase.test_definition.  sQ    *,GHA((+AQAQB%a+$((+ Ir1   c                     [        SS5       HS  nSU-  n[        R                  " U5      n[        R                  R	                  U5      n[	        U5      n[        XT5        MU     g r   )rB   r&   r   r   r   r   rh   rF   rD   r)   rr   r*   s         r/   r   _TestRFFTBase.test_djbfft6  sJ    qA1A		!AQBQA%a+ r1   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g r   )r   r   r   rg   s    r/   r    _TestRFFTBase.test_invalid_sizes>  r   r1   c                     [         R                  " SU R                  S9n[        [        SS9   [        U5        S S S 5        g ! , (       d  f       g = f)N
   r>   x must be a real sequencematch)r&   r   re   r   	TypeErrorr   rh   r)   s     r/   test_complex_input _TestRFFTBase.test_complex_inputB  s5    HHRtxx(9,GHG IHHs   A
Ac                        \ rS rSrS rS rSrg)_TestRFFTBase.MockSeriesiH  c                 :    [         R                  " U5      U l        g r3   )r&   r   datarh   r  s     r/   __init__!_TestRFFTBase.MockSeries.__init__I  s    

4(DIr1   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)rh   itemes      r/   __getattr__$_TestRFFTBase.MockSeries.__getattr__L  sO    Ktyy$//! K$ &;;?&&C DIJKKs    
727)r  N)r   r   r   r   r  r  r   r   r1   r/   
MockSeriesr  H  s    	)	Kr1   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  )rh   r)   xsexpecteds       r/   test_non_ndarray_with_dtype)_TestRFFTBase.test_non_ndarray_with_dtypeS  sE    HH)*%%a("R 	Q!RWWh'r1   r   N)r   r   r   r   ri   rs   r   r   r  r  r"  r   r   r1   r/   r   r   *  s,    ,,;	K 	K	(r1   r   c                       \ rS rSrS rSrg)TestRFFTLongDoublei^  c                 X    [         R                  U l        [         R                  U l        g r3   r   rg   s    r/   ri   TestRFFTLongDouble.setup_methoda  r   r1   r   Nr   r   r1   r/   r%  r%  ^  s    !r1   r%  c                       \ rS rSrS rSrg)TestRFFTDoubleif  c                 X    [         R                  U l        [         R                  U l        g r3   )r&   r   re   r   r-   rg   s    r/   ri   TestRFFTDouble.setup_methodg  s    ==::r1   r   Nr   r   r1   r/   r)  r)  f  r   r1   r)  c                       \ rS rSrS rSrg)TestRFFTSingleil  c                 X    [         R                  U l        [         R                  U l        g r3   r   rg   s    r/   ri   TestRFFTSingle.setup_methodm  r   r1   r   Nr   r   r1   r/   r-  r-  l  r   r1   r-  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
_TestIRFFTBaseir  c                 B    [         R                  R                  S5        g rc   r   rg   s    r/   ri   _TestIRFFTBase.setup_methods  r   r1   c                 ^   ^  / SQn/ SQnUS S n/ SQnUS S nU 4S jnU" X5        U" XC5        g )N)rS          @      @rn   y      ?       @y      @      @)rS   r5  rn   r5  rx          @            @      r6  rp   )	rS   r5  rn   r5  y      @      @y      @      r6  r7  r6  c                 4  > [        [        R                  " U TR                  S9[	        U5      S9n[        U [	        U5      5      n[        UR                  TR                  5        [        X#TR                  S9  [        U[        U5      TR                  S9  g )Nr>   ry   )decimal)r   r&   r   re   rA   rY   r   r7   r-   r   ndecr
   )r)   xrr*   rr   rh   s       r/   _test-_TestIRFFTBase.test_definition.<locals>._test}  sf    bhhq1SW=AaR)B$((+%aDII>%aR$))Dr1   r   )rh   rX   x1_1x2_1r}   r<  s   `     r/   rs   _TestIRFFTBase.test_definitionv  s>    $2"1X:"1X	E 	bbr1   c                 `   [        SS5       H  nSU-  n[        R                  " SUS5      S[        R                  " SUS-   S5      -  -   nSUS'   US-  S:X  a  [        R                  " US   5      US'   [        R                  R                  U5      n[        U5      n[        XT5        M     g )Nr!   r   r   r   rS   )rB   r&   r   rW   r   r   r   r  s         r/   r   _TestIRFFTBase.test_djbfft  s    qA1A		"a#b299Q!Q+?&??AAaD1uz""aBaA%a+ r1   c                    S H  n[        U/5      R                  U R                  5      n[        [	        U5      US9n[	        [        X!S-  S-
  S95      n[        UR                  U R                  5        [        UR                  U R                  5        [        X2U R                  SU 3S9  [        XBU R                  SU 3S9  M     g )Nr   ry   r!   rS   zsize=)r9  r.   )
r4   r9   r-   r   r   r   r7   re   r   r:  r   s        r/   r   _TestIRFFTBase.test_random_real  s    6Dv%%dhh/AtAw$'BeAq&(,-B488,488,%bTYY%PTvW%bTYY%PTvW 7r1   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      [        U5      5      n[        X4WX R                   5        [        [        US[        U5      -  S-
  5      5      n[        X4XU R                   5        M     g )Nr   r   rd   r!   rS   )r-   r&   r   r   r   r   r4   rf   r    r9   r   r   rA   r0   )rh   r+   r,   r)   r*   s        r/   r   !_TestIRFFTBase.test_size_accuracy  s    88rzz!DXX#D),==DIINN4 		t$++DHH5Ad1gs1v&A!!dHH=U1a#a&j1n-.A!!DHH= >r1   c                 f    [        [        [        / 5        [        [        [        SS/SS//S5        g r   )r   r   r   rg   s    r/   r   !_TestIRFFTBase.test_invalid_sizes  s(    j%,j%1Q%1;r1   r   N)r   r   r   r   ri   rs   r   r   r   r   r   r   r1   r/   r1  r1  r  s!    "	,X><r1   r1  c                       \ rS rSrS rSrg)TestIRFFTLongDoublei  c                 f    [         R                  U l        [         R                  U l        SU l        g Nr   r&   r   re   r   r-   r:  rg   s    r/   ri    TestIRFFTLongDouble.setup_method      ==::	r1   re   r:  r-   Nr   r   r1   r/   rK  rK    s    r1   rK  c                       \ rS rSrS rSrg)TestIRFFTDoublei  c                 f    [         R                  U l        [         R                  U l        SU l        g rM  rN  rg   s    r/   ri   TestIRFFTDouble.setup_method  rP  r1   rQ  Nr   r   r1   r/   rS  rS    s    r1   rS  c                       \ rS rSrS rSrg)TestIRFFTSinglei  c                 f    [         R                  U l        [         R                  U l        SU l        g )Nrp   )r&   r   re   r   r-   r:  rg   s    r/   ri   TestIRFFTSingle.setup_method  s    <<::	r1   rQ  Nr   r   r1   r/   rW  rW    s    r1   rW  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 rc   r   rg   s    r/   ri   TestFftnSingle.setup_method  r   r1   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rS   r!   rm   rx   rp            	   z-double precision output with single precision)msg)r   r&   r   r   r   r7   r   r   rh   r)   r*   y_rs       r/   rs   TestFftnSingle.test_definition  sj     !RZZ()2<<'C	E hhtAw-&q.r1   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 )Nrd   r     r&   r4   default_rngr   rW   r9   r   r   r   r   r7   r   rh   r,   rngr)   rr   r   s         r/   test_size_accuracy_small'TestFftnSingle.test_size_accuracy_small  s    ii##D)JJ|$rCJJ|,D'DD!&&--

+,!&&--

+,33BLLARXXr||,&rt4r1   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 )Nrd   rm   r   rk  rl  rn  s         r/   test_size_accuracy_large'TestFftnSingle.test_size_accuracy_large  s    ii##D)JJay!BT1I)>$>>!&&--

+,!&&--

+,33BLLARXXr||,&rt4r1   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 )Nr_  r`  rb  )r   r&   r   r   r   r7   r   r   rg  s       r/   test_definition_float16&TestFftnSingle.test_definition_float16  s_     !RZZ()QWWbll+hhtAw-&q.r1   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 )Nrd   r   g    Ar&   r4   rm  r   rW   r9   r   r   r   r   r7   r   rn  s         r/   test_float16_input_small'TestFftnSingle.test_float16_input_small  s    ii##D)JJ|$r#**d\*B'BB!&&--

+,!&&--

+,33BLLARXXr||,&rs3r1   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 )Nrd   rm   r   g    >Ary  rn  s         r/   test_float16_input_large'TestFftnSingle.test_float16_input_large   s    ii##D)JJay!Bszz4)'<$<<!&&--

+,!&&--

+,33BLLARXXr||,&rs3r1   r   N)r   r   r   r   ri   rs   pytestmarkparametrizeSMALL_COMPOSITE_SIZESSMALL_PRIME_SIZESrp  r   r   rs  rv  rz  r}  r   r   r1   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4r1   r[  c                   P    \ 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g)TestFftni  c                 B    [         R                  R                  S5        g rc   r   rg   s    r/   ri   TestFftn.setup_method  r   r1   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 )Nr_  r`  rb        rp   rx   rm   r  )r   r   rO   r4   rh   r)   r*   s      r/   rs   TestFftn.test_definition  sc     G!![^48!$q';q>:=!!$q';q>:r1   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 )8Nr_  r`  rb  )r        )   r      )         )   r     )         )   r     )rS   r  r  )rx   r  r  )rc  r  r  )r!   r  r  )rp   r   r  )rd  r  r  )rm   r  r  )ra  r  r  )re  r  r  )rS   rx   rc  )r  r  r  )r  r  r  )r!   rp   rd  )r  r   r  )r  r  r  )rm   ra  re  )r  r  r  )r  r  r  )rB  r[   r   rS   r!   )r   r!   )r   rB  )r!   rS   r   rB  r  )r!   r   rS   r  )rS   r!   r   )rS   r   r!   )r   r!   rS   r  rB  r   rS   r!   rS   r!   r  r  )r  rB  rB  r  )rB  r  )r  r  rB  rm   r  r   r   )r   r   r   r   rB   r   )rh   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*   rF   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'r1   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 )
Nr_  r`  rS   r!   rm   r   rx   rp   ra  r   r   r   r   r   rx   rx   s)rm   rx   rB  )r   r   rh   small_xlarge_x1r*   s       r/   test_shape_argumentTestFftn.test_shape_argument  s_        "
 F#!!T(^4F#!!T(3B-%89r1   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 )Nr_  r`  rb  r  r  )rc  rd  re  r   r  r  r  r  r\   r  rB  r  )r   r   r   r   r  s       r/   test_shape_axes_argument!TestFftn.test_shape_axes_argument  s     ,&&&( ) F2!!T(^4F2!!X(B+,b"&6 	7r1   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)r  rp   rm   rc  r  )rd  )r\   r  rB  rd  )rL   rD   r  r  rx   rx   r!   r  rd  rd  )r   r4   r   r   r   r  s      r/   test_shape_axes_argument2"TestFftn.test_shape_axes_argument2  s    LL.$'!!Sq%9: LL.$'!!Sq%9: LL	*V,!!"'))..V."L	Nr1   c                 ~    [        S5      n[        [        SS9   [        USS9  S S S 5        g ! , (       d  f       g = f)Nr  z)shape requires more axes than are presentr	  )rd  rd  r!   rS   r  )r   r   r   r   r  s     r/   test_shape_argument_more!TestFftn.test_shape_argument_more  s7    ):!LNl#N N N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\]\) specifiedrS   r!   )rx   r  )r   r   r   rg   s    r/   r   TestFftn.test_invalid_sizes  sk    :"67 "J7
 :"78 1a&1a&!7+8 87 7
8 8   AA
A
A-c                 h    [         R                  R                  S5      n[        [        U/ S9USS9  g N)r!   r!   r!   r[   gHz>r   )r   r4   r   r   r  s     r/   test_no_axesTestFftn.test_no_axes  s)    LL(QR(!$7r1   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.r  r  r  r  N)r   onesr   r   r   rg  s       r/   test_regression_244TestFftn.test_regression_244  s@     JJy!f8,iinnQ&xn8r1   r   N)r   r   r   r   ri   rs   r  r  r  r  r  r   r  r  r   r   r1   r/   r  r    s7    ;D(L:7N"$	,8 r1   r  c                   \   \ 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Srg)	TestIfftni  Nc                 B    [         R                  R                  S5        g rc   r   rg   s    r/   ri   TestIfftn.setup_method  r   r1   dtype,cdtype,maxnlprk    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 Nrd   r_  r`  rb  r>   r  r  )	r&   r4   rm  r   r   r   r7   r   rQ   rh   r7   cdtypemaxnlpro  r)   r*   s          r/   rs   TestIfftn.test_definition       ii##D)HHi!(-/ !HQWWf%&q,q/6BJJx &uQxa&IJJ}%&uQxa&Ir1   r  r,   rS   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 r   )r&   r4   rm  r   r   r   )rh   r  r,   ro  r)   s        r/   r   TestIfftn.test_random_complex  sa     ii##D)JJ|$rCJJ|,D'DD&uT!W~qA&tE!H~qAr1   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  )r   r   r   rg   s    r/   r   TestIfftn.test_invalid_sizes  sk    :"67 2$K7
 :"78 Aq6Aq6"G,8 87 7
8 8r  c                 h    [         R                  R                  S5      n[        [        U/ S9USS9  g r  )r   r4   r   r   r  s     r/   r  TestIfftn.test_no_axes  s)    LL(ab)148r1   r   )r   r   r   r   r7   r  ri   r  r  r  r&   r   r   r   r   rs   r   r   r  r   r   r1   r/   r  r    s    EF [[2!zz2==$?!zz2<<>@AJAJ [[Xd|4[[V%;<B = 5B	-9r1   r  c                      \ 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	Q5      S
 5       r\R                  R                  S\\/5      S 5       r\R                  R                  S\\/5      S 5       rS rSrg)	TestRfftni  Nc                 B    [         R                  R                  S5        g rc   r   rg   s    r/   ri   TestRfftn.setup_method"  r   r1   r  rk  r  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 r  )	r&   r4   rm  r   r   r   r7   r   r^   r  s          r/   rs   TestRfftn.test_definition%  r  r1   r,   r  c                     [         R                  R                  S5      nUR                  X/5      n[        [	        [        U5      UR                  5      USS9  g )Nrd   r   r  )r&   r4   rm  r   r   r   r{   )rh   r,   ro  r)   s       r/   test_randomTestRfftn.test_random7  sA    ii##D)JJ|$uQx115Ar1   funcc                     [        [        SS9   U" / /5        S S S 5        [        [        SS9   U" SS/SS//S5        S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = fr  r   r   rh   r  s     r/   r   TestRfftn.test_invalid_sizes=  sk    :"67 "J7
 :"78 1a&1a&!7+8 87 7
8 8s   
AA
A
A'c                 b    [        [        SS9   U" / / S9  S S S 5        g ! , (       d  f       g = f)Nz#at least 1 axis must be transformedr	  r[   r  r	  s     r/   r  TestRfftn.test_no_axesI  s-    :!FH"H H Hs    
.c                     [        [        SS9   [        [        R                  " S[        R
                  S95        S S S 5        g ! , (       d  f       g = f)Nr  r	  r  r>   )r   r  r   r&   r   r   rg   s    r/   r  TestRfftn.test_complex_inputO  s1    9,GH"((2R\\23 IHHs   -A
Ar   )r   r   r   r   r7   r  ri   r  r  r  r&   r   r   r   r   rs   r  r   r   r   r  r  r   r   r1   r/   r  r    s    EF [[2!zz2==$?!zz2<<>@AJAJ [[V%;<B =B
 [[VeV_5	, 6	, [[VeV_5 6
4r1   r  c                       \ rS rSrS rSrg)	FakeArrayiT  c                 2    Xl         UR                  U l        g r3   )_data__array_interface__r  s     r/   r  FakeArray.__init__U  s    
#'#;#; r1   )r  r  N)r   r   r   r   r  r   r   r1   r/   r  r  T  s    <r1   r  c                   $    \ rS rSrS rSS jrSrg)
FakeArray2iZ  c                     Xl         g r3   r  r  s     r/   r  FakeArray2.__init__[  s    
r1   Nc                     U R                   $ r3   r  )rh   r7   copys      r/   	__array__FakeArray2.__array__^  s    zzr1   r  )NN)r   r   r   r   r  r  r   r   r1   r/   r  r  Z  s    r1   r  c                      \ rS rSrSr\R                  \R                  \R                  /r	\	\R                  \R                  \R                  /-   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)TestOverwriteic  z4Check input overwrite behavior of the FFT functions.)rd  r  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  [        XqSU	 3S	9  M^     g )
Nc                     U $ r3   r   r]   s    r/   <lambda>&TestOverwrite._check.<locals>.<lambda>l  s    qr1   )overwrite_x(z, z, axis=z, overwrite_x=)zspurious overwrite in )r.   )r  r  r  r   r7   r{   r   )
rh   r)   routinefftsizerL   r$  should_overwriter}   fakesigs
             r/   _checkTestOverwrite._checkj  s    VVX )Z8DDHgE&&'q	!''Bwk J(.qBC##R.DSE,JK 9r1   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=(       a    X%;   =(       a    XcU   :*  n	U R                  XXdUU	S9  g )Nrd   r   r$  r)  )r&   r4   rf   
issubdtypecomplexfloatingrandnr9   r,  )
rh   r'  r7   r{   rL   overwritable_dtypesr(  r$  r  r)  s
             r/   	_check_1dTestOverwrite._check_1dt  s    
		t== 2 23399??E*R		0G-GGD99??E*D{{5!' 7 % <7 '; 6 	 	D7 +%5 	 	7r1   r7   r(  r$  TFz
shape,axes))r  rB  )r  r!   r   )r!   r  rS   c           	          [         R                  [         R                  [         R                  4nU R	                  [
        XXVX#5        U R	                  [        XXVX#5        g r3   )r&   r   r   r   r4  r   r
   rh   r7   r(  r$  r{   r\   overwritables          r/   test_fft_ifftTestOverwrite.test_fft_ifft  sF     r||DsE$	-tU4	-r1   c           	      |    U R                   nU R                  [        XXVX#5        U R                  [        XXVX#5        g r3   )real_dtypesr4  r   r   r:  s          r/   test_rfft_irfftTestOverwrite.test_rfft_irfft  s9     ''ueD	-tU4	-r1   c                 z  ^^^^
^ [         R                  R                  S5        [         R                  " T[         R                  5      (       a?  [         R                  R
                  " U6 S[         R                  R
                  " U6 -  -   nO[         R                  R
                  " U6 nUR                  T5      nU
4S jm
S mUUUU4S jnT
" T" X45      5       H\  n	U R                  XqXTU" XyU5      S9  UR                  S:  d  M.  U R                  UR                  XUTU" UR                  X5      S9  M^     g )Nrd   r   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!   rS   )rA   )shpr  restfftshape_iters      r/   rF  2TestOverwrite._check_nd_one.<locals>.fftshape_iter  s\     3x1}a&!)SVSVAX6A -c!"g 6 dTk) !7 7s   AAc                 J    Uc  U $ [        [        R                  " X5      5      $ r3   )tupler&   take)r{   r\   s     r/   
part_shape/TestOverwrite._check_nd_one.<locals>.part_shape  s     |RWWU122r1   c                    > T" U R                   U5      nT=(       a9    [        R                  " U5      [        R                  " U5      :*  =(       a    TT;   $ r3   )r{   r&   prod)r  r{   r\   r  r7   r3  r$  rK  s       r/   r)  5TestOverwrite._check_nd_one.<locals>.should_overwrite  sF    4::t,A 5GGENbggaj05!446r1   r/  rS   )
r&   r4   rf   r0  r1  r2  r9   r,  rM   T)rh   r'  r7   r{   r\   r3  r$  r  r)  fftshaperF  rK  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!	*	3	6 	6 &j&=>HKKx$/)9$$)O  Q yy1}DFFGt(3-= $.8  9 ?r1   ))r6  N)r6  r  )r7  r  )r8  rS   )rd  r  N)rU  r   rS   )rd  r  r!   rV  )rW  r  )rW  r  )rW  rT  )rW  )r!   )rW  N)rW  r  c                     [         R                  [         R                  [         R                  4nU R	                  [
        XXEU5        U R	                  [        XXEU5        g r3   )r&   r   r   r   rR  r   r   )rh   r7   r$  r{   r\   r;  s         r/   test_fftn_ifftnTestOverwrite.test_fftn_ifftn  sJ      r||D4t&	(5%&	(r1   r   N)r   r   r   r   __doc__r&   r   r   r   r?  r   r   r   dtypesfftsizesr,  r4  r  r  r  r<  r@  rR  rY  r   r   r1   r/   r  r  c  s   >::rzz2==9KBLL"--HHFHL7  [[Wf-[[Y1[[]T5M:[[\ ,: ;-; ; 2 .- [[Wk2[[Y1[[]T5M:[[\ ,: ;-; ; 2 3-&9P [[Wf-[[]T5M:[[\ ,E F(F ; .(r1   r  r  c                     [         R                  " S[        S9n[        [        SS9   U " USS9  S S S 5        g ! , (       d  f       g = f)Nr  r>   zBInvalid norm value 'o', should be "backward", "ortho" or "forward"r	  o)r(   )r&   r   floatr   r   )r  r)   s     r/   test_invalid_normra    sD     			"E"A	zA
B 	QS
B 
B 
Bs	   9
Ac                     [         R                  R                  S5      nUR                  S5      SUR                  S5      -  -   n[	        U " [        U5      5      U " U5      5        g )Nrd   r  r   r&   r4   RandomStater    r   r;   r  ro  r)   s      r/   test_swapped_byte_order_complexrf    sO     ))


%CrCHHRL((AD*+T!W5r1   c                     [         R                  R                  S5      nUR                  S5      n[	        U " [        U5      5      U " U5      5        g )Nrd   r  rc  re  s      r/   test_swapped_byte_order_realrh    s;    
))


%CAD*+T!W5r1   )Snumpy.testingr   r   r   r   r   r   r  r	   r   scipy.fft._pocketfftr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   	numpy.fftnumpy.randomr    r   r  r   r  r0   r4   r;   rG   rI   rO   rQ   rT   rY   r^   r`   r   r   r   r   r   r  skipifr   r   r   r   r   r   r%  r)  r-  r1  rK  rS  rW  r[  r  r  r  r  r  r  r  ra  rf  rh  r   r1   r/   <module>rn     s  , ,  *> > > >& & &    
  	   
N
 1-: -:`! !L L K K&J; J;Z BMMRZZ/=  ? ?] ] 2( 2(h BMMRZZ/=  ?! !?!] ] ;< ;<B BMMRZZ/=  ?. ?n n >4 >4B`  ` F.9 .9`34 34l< < w( w(t #tT5!%ueV"= >> #tT5#(&$"? @6@6 %u!=>6 ?6r1   