
    (phP                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  \\R,                  R/                  S5      /r\R,                  R2                  rS rS	 r " S
 S5      r\" SS9\R,                  R;                  S\R<                  \R>                  \R@                  \RB                  \RD                  \RF                  /5      \R,                  R;                  SSS/5      \R,                  R;                  S\R                  \RH                  \RJ                  \RL                  \RN                  \RP                  /5      S 5       5       5       5       r)\" SS9 " S S5      5       r*\" SS9\R,                  R;                  S\R                  \RL                  \RV                  \RX                  /5      S 5       5       r- " S S5      r.\R,                  R;                  S\R                  \RL                  \RV                  \RX                  \RJ                  \RP                  \R^                  \R`                  \Rb                  \Rd                  /
5      S 5       r3\R,                  R;                  SSS/5      \R,                  R;                  S\R                  \RL                  \RX                  \RJ                  \RP                  \R`                  \Rb                  /5      S 5       5       r4g)    N)random)assert_array_almost_equalassert_allclose)raises)array_api_compatible)array_namespacexp_sizexp_assert_closexp_assert_equalskip_xp_backendsc                    U [         R                   [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  4;   a  UR                  nU$ U [         R                  [         R                  [         R                  [         R                   [         R"                  [         R$                  4;   a  UR&                  nU$ [)        SU  35      e)NzUnknown FFT function: )fftfftnfft2ifftifftnifft2hffthfftnhfft2irfftirfftnirfft2
complex128rfftrfftnrfft2ihfftihfftnihfft2float64
ValueError)funcxpdtypes      M/var/www/html/venv/lib/python3.13/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper'      s    388#))SYY#))SYY		3::szz3 3  L 
#((CIIsyy))SZZ5 
5

 L 1$899    c                 .   [        U 5      nS[        R                  -  [        R                  " U5      [	        U5      -  -  n[        R                  " U5      R                  SS5      U-  n[        R                  " U [        R                  " U5      -  SS9$ )Ny                 axis)lennppiarangefloatreshapesumexp)xLphases      r&   fft1r9   %   sj    AAIryy|E!H,-EIIaL  Q'%/E66!BFF5M/**r(   c                   X   \ rS rSrS r\" SSS9S 5       rS r\" SSS9S	 5       rS
 r	S r
S rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R8                  R;                  S\R>                  \R@                  \RB                  \RD                  /5      S 5       r#\R8                  R;                  S\RH                  \RJ                  /5      S 5       r&\R8                  R;                  S\R>                  \R@                  \RB                  \RD                  /5      S 5       r'\R8                  R;                  S\RP                  \RR                  \RT                  \RV                  \RX                  \RZ                  \RH                  \RJ                  /5      S  5       r.S! r/\" SS"9\R8                  R;                  S#\0Rb                  \0Rd                  /5      S$ 5       5       r3\R8                  R;                  S#S%S&/5      S' 5       r4\R8                  R;                  S#S(S)/5      S* 5       r5\" SS+S9\R8                  R;                  S\R<                  \Rl                  \RP                  \RR                  \R>                  \R@                  \Rn                  \Rp                  \RT                  \RV                  \RB                  \RD                  \Rr                  \Rt                  \RX                  \RZ                  \RH                  \RJ                  /5      S, 5       5       r;S-r<g.)/TestFFT+   c           
         SnUR                  [        U5      S[        U5      -  -   5      nUR                  [        U5      5      nS Hx  n[        [        R                  " [        R                  " USU 5      5      USU 5        [        [        R
                  " [        R                  " USU 5      U5      USU 5        Mz     g )N                 ?)	r+            r>   5      i  i  r   )asarrayr   r
   r   r   r   r   selfr$   maxlenr6   xris         r&   test_identityTestFFT.test_identity-   s    JJvf~6&>(99:ZZv'8ACHHSWWQqV_5q1v>CIIchhr!Aw&7;R!WE 9r(   Tz&significant overhead for some backends)np_onlyreasonc           
         SnUR                  [        U5      S[        U5      -  -   5      nUR                  [        U5      5      n[        SU5       Hx  n[        [        R
                  " [        R                  " USU 5      5      USU 5        [        [        R                  " [        R                  " USU 5      U5      USU 5        Mz     g )Nr>   r?   r+   r   )rE   r   ranger
   r   r   r   r   rF   s         r&   test_identity_extensiveTestFFT.test_identity_extensive6   s    JJvf~6&>(99:ZZv'q&!ACHHSWWQqV_5q1v>CIIchhr!Aw&7;R!WE "r(   c                    [        S5      S[        S5      -  -   nUR                  [        U5      5      nUR                  U5      n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " USS9X1R                  UR                  SUR                  S95      -  5        [        [        R                  " USS9US-  5        g )N   r?   backwardnormorthor%   forward)r   rE   r9   r
   r   sqrtr!   rG   r$   r6   expects       r&   test_fftTestFFT.test_fft?   s    2JF2J&DG$JJqM
F+
3V<0Bbjj)I!JJ	M	2FRK@r(   zsome backends allow `n=0`c                 |    UR                  / SQUR                  S9n[        [        [        R                  US5        g )Nr+   r@      rY   r   )rE   r   assert_raisesr"   r   )rG   r$   r6   s      r&   
test_fft_nTestFFT.test_fft_nI   s*    JJyJ6j#''1a0r(   c           
      2   UR                  [        S5      S[        S5      -  -   5      n[        [        R                  " [        R                  " U5      5      U5        S H4  n[        [        R                  " [        R                  " X#S9US9U5        M6     g )NrT   r?   rU   rX   rZ   rV   )rE   r   r
   r   r   rG   r$   r6   rW   s       r&   	test_ifftTestFFT.test_ifftN   sd    JJvbzBvbzM12,a04DCHHSWWQ%:FJ 5r(   c                    UR                  [        S5      S[        S5      -  -   5      n[        R                  " [        R                  " USS9SS9n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " USS9X1R                  UR                  S	UR                  S
95      -  5        [        [        R                  " USS9US	-  5        g NrT      r?   r+   r,   r   rU   rV   rX   X  rY   rZ   )rE   r   r   r
   r   r[   r!   r\   s       r&   	test_fft2TestFFT.test_fft2T   s    JJvh'"VH-=*==>+!4V,4f=1G2::)N!OO	Q3Vw5GHr(   c                    UR                  [        S5      S[        S5      -  -   5      n[        R                  " [        R                  " USS9SS9n[	        [        R
                  " U5      U5        [	        [        R
                  " USS9U5        [	        [        R
                  " USS9X1R                  UR                  S	UR                  S
95      -  5        [	        [        R
                  " USS9US	-  5        g rl   )rE   r   r   r   r
   r   r[   r!   r\   s       r&   
test_ifft2TestFFT.test_ifft2]   s    JJvh'"VH-=*==>#((11-A6		!f-		!*5v>		!'2G2::)N!OO	Q		!)4f6HIr(   c                    UR                  [        S5      S[        S5      -  -   5      n[        R                  " [        R                  " [        R                  " USS9SS9SS9n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " US	S9X1R                  UR                  S
UR                  S95      -  5        [        [        R                  " USS9US
-  5        g )NrT   rn   
   r?   r@   r,   r+   r   rU   rV   rX   p  rY   rZ   )rE   r   r   r
   r   r[   r!   r\   s       r&   	test_fftnTestFFT.test_fftnf   s    JJvl+b1E.EEF!3!<1EV,4f=1L

)S!TT	V3V|5LMr(   c                 B   UR                  [        S5      S[        S5      -  -   5      n[        R                  " [        R                  " [        R                  " USS9SS9SS9n[	        [        R
                  " U5      USS9  [	        [        R
                  " US	S
9USS9  [	        [        R
                  " USS
9[        R
                  " U5      UR                  UR                  SUR                  S95      -  5        [	        [        R
                  " USS
9US-  SS9  g )Nrv   r?   r@   r,   r+   r   gHz>)rtolrU   rV   rX   rx   rY   rZ   )rE   r   r   r   r
   r   r[   r!   r\   s       r&   
test_ifftnTestFFT.test_ifftno   s    JJvl+b1E.EEF#((388AA#6Q?aH		!f48		!*5vDIIIag&IIaL2772::l"**:#MNN	
 			!)4,/!	#r(   c                    UR                  [        S5      UR                  S9n[        U5      S[        U5      -  4 H  nS HU  n[	        [
        R                  " X#US9[
        R
                  " UR                  X!R                  S9X4S9S US-  S-    5        MW     [	        [
        R                  " X#SS9[
        R                  " X#S9UR                  UR                  X1R                  S95      -  5        M     g )	N   rY   r@   )NrU   rX   rZ   nrW   r+   rX   )r   )	rE   r   r!   r	   r
   r   r   r   r[   )rG   r$   r6   r   rW   s        r&   	test_rfftTestFFT.test_rfft|   s    JJvbzJ4!*a
l+A>d ; #

1MM
(J*+!88C!Q$(!EF ? g. 2772::azz:+J#KK ,r(   c           
         UR                  [        S5      5      n[        [        R                  " [        R
                  " U5      5      U5        S H4  n[        [        R                  " [        R
                  " X#S9US9U5        M6     g )NrT   rg   rV   )rE   r   r
   r   r   r   rh   s       r&   
test_irfftTestFFT.test_irfft   sW    JJvbz"		#((1+.24DCIIchhq&<4H!L 5r(   c                    UR                  [        S5      UR                  S9n[        R                  " UR                  X!R
                  S95      S S 2S S24   n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " USS9X1R                  UR                  SUR                  S95      -  5        [        [        R                  " USS9US-  5        g 	Nrm   rY      rU   rV   rX   ro   rZ   )	rE   r   r!   r   r   r   r
   r   r[   r\   s       r&   
test_rfft2TestFFT.test_rfft2   s    JJvh'rzzJ:"**Qmm*<=a"fE		!f-		!*5v>		!'2G2::)N!OO	Q		!)4f6HIr(   c           
         UR                  [        S5      5      n[        [        R                  " [        R
                  " U5      5      U5        S H4  n[        [        R                  " [        R
                  " X#S9US9U5        M6     g Nrm   rg   rV   )rE   r   r
   r   r   r   rh   s       r&   test_irfft2TestFFT.test_irfft2   sX    JJvh'(

399Q<0!44DCJJsyy'>TJAN 5r(   c                    UR                  [        S5      UR                  S9n[        R                  " UR                  X!R
                  S95      S S 2S S 2S S24   n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " USS9X1R                  UR                  SUR                  S95      -  5        [        [        R                  " USS9US-  5        g 	Nrv   rY      rU   rV   rX   rx   rZ   )	rE   r   r!   r   r   r   r
   r   r[   r\   s       r&   
test_rfftnTestFFT.test_rfftn   s    JJvl+2::J>"**Qmm*<=aBQBhG		!f-		!*5v>		!'2L

)S!TT	V		!)4f6MNr(   c           
         UR                  [        S5      5      n[        [        R                  " [        R
                  " U5      5      U5        S H4  n[        [        R                  " [        R
                  " X#S9US9U5        M6     g Nrv   rg   rV   )rE   r   r
   r   r   r   rh   s       r&   test_irfftnTestFFT.test_irfftn   sX    JJvl+,

399Q<0!44DCJJsyy'>TJAN 5r(   c                    [        S5      S[        S5      -  -   n[        R                  " [        S5      U[        S5      45      n[        R                  " X2S S S2   R                  5       45      nUR	                  U5      nUR	                  U5      nUR                  [        R                  " U5      5      n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " USS9XAR                  UR	                  SUR                  S	95      -  5        [        [        R                  " US
S9US-  5        g )N   r?   r+   r*   rU   rV   rX   rT   rY   rZ   )r   r/   concatenateconjrE   realr   r
   r   r[   r!   )rG   r$   r6   x_hermr]   s        r&   	test_hfftTestFFT.test_hfft   s    2JF2J&Avay 9:NNFddGLLN34JJqMF#$(&1j96Bg6Bbjj)I!JJ	Li8&2+Fr(   c           
         [        S5      S[        S5      -  -   n[        R                  " [        S5      U[        S5      45      n[        R                  " X2S S S2   R                  5       45      nUR	                  U5      nUR	                  U5      n[        [        R                  " [        R                  " U5      5      U5        S H4  n[        [        R                  " [        R                  " X4S9US9U5        M6     g )Nr   r?   r+   r*   rg   rV   )	r   r/   r   r   rE   r
   r   r   r   )rG   r$   r6   r   rW   s        r&   
test_ihfftTestFFT.test_ihfft   s    2JF2J&Avay 9:NNFddGLLN34JJqMF#		#((6"23V<4DCIIchhv&AMvV 5r(   c           
         UR                  [        S5      5      n[        [        R                  " [        R
                  " U5      5      U5        S H4  n[        [        R                  " [        R
                  " X#S9US9U5        M6     g r   )rE   r   r
   r   r   r    rh   s       r&   
test_hfft2TestFFT.test_hfft2   sX    JJvh'(		#**Q-0!44DCIIcjj&>TJAN 5r(   c                    UR                  [        S5      UR                  S9n[        R                  " UR                  X!R
                  S95      S S 2S S24   n[        [        R                  " U5      U5        [        [        R                  " USS9U5        [        [        R                  " USS9X1R                  UR                  SUR                  S95      -  5        [        [        R                  " USS9US-  5        g r   )	rE   r   r!   r   r   r   r
   r    r[   r\   s       r&   test_ihfft2TestFFT.test_ihfft2   s    JJvh'rzzJ:2::a}}:=>q#2#vF

1v.

1:6?JJqw'WWRZZrzzZBCC	
 	

195v7IJr(   c           
         UR                  [        S5      5      n[        [        R                  " [        R
                  " U5      5      U5        S H4  n[        [        R                  " [        R
                  " X#S9US9U5        M6     g r   )rE   r   r
   r   r   r   rh   s       r&   
test_hfftnTestFFT.test_hfftn   sX    JJvl+,		#**Q-0!44DCIIcjj&>TJAN 5r(   c                    UR                  [        S5      UR                  S9n[        R                  " UR                  X!R
                  S95      S S 2S S 2S S24   n[        U[        R                  " U5      5        [        U[        R                  " USS95        [        [        R                  " USS9X1R                  UR                  SUR                  S95      -  5        [        [        R                  " USS9US-  5        g r   )	rE   r   r!   r   r   r   r
   r   r[   r\   s       r&   test_ihfftnTestFFT.test_ihfftn   s    JJvl+2::J>2::a}}:=>q!RaRxH

1.

1: >?JJqw'WWRZZBJJZGHH	
 	

195v7NOr(   c                     [        X5      nUR                  [        S5      US9n/ SQn[        U5      nU H7  nU" UR	                  XGS95      nUR	                  U" XGS9US9n	[        X5        M9     g )Nrv   rY   )r   r+   r@   r   r@   r+   )r+   r   r@   r+   r@   r   )r@   r   r+   )r@   r+   r   axes)r'   rE   r   r   permute_dimsr
   )
rG   opr$   r%   r6   r   xp_testaop_trtr_ops
             r&   _check_axesTestFFT._check_axes   su    (0JJvl+5J9Q!!$Aw++A+67E((AQ(?EE) r(   r   c                 &    U R                  X5        g Nr   rG   r   r$   s      r&   test_axes_standardTestFFT.test_axes_standard        r(   c                 &    U R                  X5        g r   r   r   s      r&   test_axes_non_standardTestFFT.test_axes_non_standard   r   r(   c           
         [        X5      nUR                  [        S5      US9n/ SQn[        U5      nU H  n[	        [        UR                  5       Vs/ s H,  nXS S ;   a  SUR                  U   -  OUR                  U   PM.     sn5      n	U" UR                  XGS9U	S S SS9n
UR                  U" XIS S US S S9US9n[        X5        M     g s  snf N)rA         rY   )r   r   r   r@   r   r   r+   )sr   
r'   rE   r   r   tuplerP   ndimshaper   r
   rG   r   r$   r%   r6   r   r   r   axr   r   r   s               r&   $test_axes_subset_with_shape_standard,TestFFT.test_axes_subset_with_shape_standard   s     )0JJvj)J70!!$A%*166]4%2r -/BQ%K1QWWR[=QWWR[H%24 5E w++A+6r1E((Ar2A)G./ ) 1EE) 4   3C
c           
         [        X5      nUR                  [        S5      US9n/ SQn[        U5      nU H  n[	        [        UR                  5       Vs/ s H,  nXS S ;   a  SUR                  U   -  OUR                  U   PM.     sn5      n	U" UR                  XGS9U	S S SS9n
UR                  U" XIS S US S S9US9n[        X5        M     g s  snf r   r   r   s               r&   (test_axes_subset_with_shape_non_standard0TestFFT.test_axes_subset_with_shape_non_standard	  s    
 )0JJvj)J70!!$A%*166]4%2r -/BQ%K1QWWR[=QWWR[H%24 5E w++A+6%)&QE((Ar2A)Ga(PEE) 4r   c           	         UR                  [        S5      UR                  S9n[        U5      nUR                  R                  U5      n[        U5      S-  n[        R                  [        R                  4[        R                  [        R                  4[        R                  [        R                  4/nU H  u  pxU[        R                  :X  a4  UR                  X!R                  S9nUR                  R                  U5      n[        U5      S[        U5      -  4 H?  nS H6  n	U" X%U	S9n
U" XU	S9n
[        UR                  R                  U
5      U5        M8     MA     M     g )NrT   rY   r@   rg   r   )rE   r   r!   r   linalgvector_normr	   r   r   r   r   r   r   r   r
   )rG   r$   r6   r   x_normr   
func_pairsforwbackrW   tmps              r&   test_all_1d_norm_preserving#TestFFT.test_all_1d_norm_preserving  s   JJvbzJ4!!$++A.AJNxx+ yy#((+ww)
 %JDswwJJqJ6 33A6aj!GAJ,/<DqD1Csd3C#GNN$>$>s$CVL = 0	 %r(   rM   r%   c                 h   [        S5      R                  U5      n[        R                  [        R                  [        R
                  [        R                  0nUR                  X1   5      n[        R                  " [        R                  " U5      5      n[        R                  " [        R                  " U5      5      n[        R                  " [        R                  " U5      UR                  S   5      n[        XT5        [        Xb5        [        Xr5        UR                  UR                  :X  d   eUR                  [        R                   " [        R"                  UR                  5      :X  d   eUR                  [        R                   " [        R"                  UR                  5      :X  d   eg )NrT   r   )r   astyper/   float16	complex64
longdoubleclongdoubler   r   r   r   r   r   r   r   r%   result_typefloat32)rG   r%   r6   
out_dtypes	x_complexres_fftres_rfftres_hffts           r&   test_dtypes_nonstandardTestFFT.test_dtypes_nonstandard2  s    2Je$jj",,r~~N
HHZ./	((3771:&99SXXa[)88CIIaL!''!*5!'5!(.!(.}}	///~~

AGG!DDDD~~

AGG!DDDDr(   r   r!   c                 8   UR                  [        S5      [        X!5      S9n[        R                  " [        R
                  " U5      5      n[        R                  " [        R                  " U5      UR                  S   5      n[        XC5        [        XS5        g )NrT   rY   r   )
rE   r   getattrr   r   r   r   r   r   r
   )rG   r%   r$   r6   r   r   s         r&   test_dtypes_realTestFFT.test_dtypes_realD  sc    JJvbz);J<99SXXa[)88CIIaL!''!*5$$r(   r   r   c                     [         R                  R                  S5      nUR                  UR                  S5      [	        X!5      S9n[
        R                  " [
        R
                  " U5      5      n[        XT5        g )Ni  rT   rY   )r/   r   default_rngrE   r   r   r   r
   )rG   r%   r$   rngr6   r   s         r&   test_dtypes_complexTestFFT.test_dtypes_complexN  sS    ii##D)JJszz"~WR-?J@((3771:&#r(   z,array-likes only supported for NumPy backendc                     SS/SS//SS/SS//SS/SS///n[        U" U5      U" UR                  U5      5      5        g )Ng      ?)r
   rE   )rG   r$   r   r6   s       r&   test_array_likeTestFFT.test_array_likeW  sX     Cj3*%Cj3*%Cj3*%' 	1r"**Q-01r(    N)=__name__
__module____qualname____firstlineno__rK   r   rQ   r^   rd   ri   rp   rs   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   pytestmarkparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r/   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r  r(   r&   r;   r;   +   s   F d+STF UFA d+FG1 H1KIJN#
MJOOOGWO	KO	P* [[TCHHciiCJJ#OP! Q! [[TCIIszz#:;! <! [[TCHHcii$'IIszz$; <*<*  [[TCHHcii$'IIszz$'IIszz$'IIszz$; <*	<*M. d#[[Wrzz2==&ABE C $E  [[Wy)&<=% >% [[W{L&AB$ C$ dKM[[TCGGSXX$'HHcii$'HHcii$'HHcii$'IIszz$'IIszz$'HHcii$'IIszz$'IIszz$< =2=M2r(   r;   Tr   r%   orderFznon-contiguousr   c                    [         R                  R                  S5      nUR                  SSS5      R	                  U SS9nUS:X  a  [         R
                  " U5      nO$US S S2   n[         R                  " US S S2   5      nUR                  R                  S	5      (       a*  [        S
5       H  nU" XFS9nU" XVS9n[        Xx5        M     g UR                  R                  S5      (       aX  / SQn	UR                  R                  S5      (       a  U	R                  / SQ5        U	 H  n
U" XJS9nU" XZS9n[        Xx5        M     g [        e)N*   r         F)copyr  r*   r   rb   r,   )r   r   )r   )r+   r@   )r   r@   r   ))r   )r+   )r@   Nr   )r/   r   RandomStaterandr   asfortranarrayascontiguousarrayr  endswithrP   r   extendr"   )r%   r
  r   r   XYr-   X_resY_resr   r   s              r&   test_fft_with_orderr  i  s"    ))


#CAr!!%e!4A|a  ddG  4R4)
||U##!HD%E%E%e3  
		/	0	0'<<  ((KK01BOEOE%e3 
 r(   )cpu_onlyc                   N    \ rS rSrSrSrSS.S jrS rS rS	 r	S
 r
S rS rSrg)TestFFTThreadSafei  rA   )i      Nr$   c                  ^ U4S jn[         R                  " 5       nT" U6 n[        U R                  5       Vs/ s H  n[        R
                  " XCU4S9PM     nnU V	s/ s H  oR                  5       PM       n	U V	s/ s H  oR                  5       PM       n	[        U R                  5       H  n[        UR                  SS9USS9  M     g s  snf s  sn	f s  sn	f )Nc                 .   > UR                  T" U 6 5        g r   )put)argsqr#   s     r&   worker.TestFFTThreadSafe._test_mtsame.<locals>.worker  s    EE$+r(   )targetr$     )timeoutz6Function returned wrong value in multithreaded context)err_msg)
queueQueuerP   threads	threadingThreadstartjoinr   get)
rG   r#   r$   r$  r&  r%  expectedrJ   tr6   s
    `        r&   _test_mtsameTestFFTThreadSafe._test_mtsame  s    	 KKM; DLL)+) V)<) 	
 +AqA1a1 t||$Aa (P %+s    CC>Cc                     UR                  U R                  UR                  S9nU R                  [        R                  X!S9  g NrY   r   )onesinput_shaper   r6  r   rG   r$   r   s      r&   r^   TestFFTThreadSafe.test_fft  s5    GGD$$BMMG:#''1,r(   c                 x    UR                  U R                  S5      nU R                  [        R                  X!S9  g Ny      ?        r   )fullr;  r6  r   r   r<  s      r&   ri   TestFFTThreadSafe.test_ifft  s/    GGD$$d+#((A-r(   c                 v    UR                  U R                  5      nU R                  [        R                  X!S9  g Nr   )r:  r;  r6  r   r   r<  s      r&   r   TestFFTThreadSafe.test_rfft  s-    GGD$$%#((A-r(   c                 x    UR                  U R                  S5      nU R                  [        R                  X!S9  g r?  )r@  r;  r6  r   r   r<  s      r&   r   TestFFTThreadSafe.test_irfft  s/    GGD$$d+#))Q.r(   c                     UR                  U R                  UR                  S9nU R                  [        R
                  X!S9  g r9  )r:  r;  r   r6  r   r   r<  s      r&   r   TestFFTThreadSafe.test_hfft  s5    GGD$$BLLG9#((A-r(   c                 v    UR                  U R                  5      nU R                  [        R                  X!S9  g rC  )r:  r;  r6  r   r   r<  s      r&   r   TestFFTThreadSafe.test_ihfft  s-    GGD$$%#))Q.r(   r  )r  r  r  r  r.  r;  r6  r^   ri   r   r   r   r   r	  r  r(   r&   r  r    s2    GK+/ *-.././r(   r  r#   c           
      N   [         R                  " S5       nUR                  U [        S5       Vs/ s H  n[        R
                  " S5      PM     sn5      nS S S 5        U " [        R
                  " S5      5      nW H  n[        XT5        M     g s  snf ! , (       d  f       ND= f)Nr@   r   d   )multiprocessingPoolmaprP   r/   r:  r   )r#   p_resr]   r6   s         r&   test_multiprocessrS    sx    
 
		a	 AeeDq:A2773<:; 
! "''#,F"  ; 
!	 s   B BBB
B$c                       \ rS rSrS rSrg)
TestIRFFTNi  c                     [         R                  R                  S5      u  p#USU-  -   nUR                  U5      nSn[        R                  " XES9  g )N)r@   rA   r       r?   )r   )r/   r   rE   r   r   )rG   r$   arair   r   s         r&   test_not_last_axis_success%TestIRFFTN.test_not_last_axis_success  sE    !!.1BJJJqM 	

1 r(   r  N)r  r  r  r  r[  r	  r  r(   r&   rU  rU    s    !r(   rU  c                    U [         R                  [         R                  [         R                  4;   a  UR                  nOUR
                  nUR                  S:w  a*  UR                  / SQUS9nU " U5        [        [        XSS9  g g )Nnumpyra   rY   r@   )workers)
r   r   r   r   r!   r   r  rE   rc   r"   )r#   r$   r%   r6   s       r&   test_non_standard_paramsr`    sg     #))SYY//

	{{gJJyJ.Qj$15	 r(   r   r!   c                 J    UR                  / SQ[        X!5      S9nU " U5        g )Nra   rY   )rE   r   )r#   r%   r$   r6   s       r&   test_real_inputrb    s"    
 	

9GB$6
7AGr(   )5r,  r/  rM  r^  r/   r  numpy.randomr   numpy.testingr   r   r   rc   	scipy.fftr   scipy.conftestr   scipy._lib._array_apir   r	   r
   r   r  usefixtures
pytestmarkr   r'   r9   r;   r  r   r!   r   r   r   r   r   r   r   r   r   r  r  r   r   rS  rU  r   r   r   r   r`  rb  r  r(   r&   <module>rj     s         D *  /  #FKK$;$;<N$OP
;;// +{2 {2|	 $	RZZ	r}}bnn	67 3(8"9:	#((CHH	399cii	)*	* ;	7  : 4 // // !//d $#''388SXXsyy!IJ# K  #
! 
! #''388SXXsyy"%((CII"%))SZZ399"N O
6O
6 9i"89#''388SYY"%((CII"%**chh"9 :: :r(   