
    doi
Z                        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JrJrJrJrJr  \/r\R.                  R0                  rS rS r " S S	5      r\R.                  R9                  S
\R:                  \R<                  \R>                  \R@                  \RB                  \RD                  /5      \R.                  R9                  SSS/5      \R.                  R9                  S\R                  \RF                  \RH                  \RJ                  \RL                  \RN                  /5      S 5       5       5       r(\" SS9 " S S5      5       r)\R.                  R9                  S\R                  \RJ                  \RT                  \RV                  /5      S 5       r,\" \RZ                  5       " S S5      5       r.\R.                  R9                  S\" \R                  5      \" \RJ                  5      \" \RT                  5      \" \RV                  5      \" \RH                  5      \" \RN                  5      \" \R^                  5      \" \RZ                  5      \" \R`                  5      \" \Rb                  5      /
5      S 5       r2\R.                  R9                  S
SS/5      \R.                  R9                  S\" \R                  5      \" \RJ                  5      \" \RV                  5      \" \RH                  5      \" \RN                  5      \" \RZ                  5      \" \R`                  5      /5      S 5       5       r3g)    N)random)assert_array_almost_equalassert_allclose)raises)is_numpyxp_sizexp_assert_closexp_assert_equalmake_xp_test_casemake_xp_pytest_paramc                     U R                   S;   a  UR                  nU$ U R                   S;   a  UR                  nU$ [        SU  35      e)N)fftfftnfft2ifftifftnifft2hffthfftnhfft2irfftirfftnirfft2)rfftrfftnrfft2ihfftihfftnihfft2zUnknown FFT function: )__name__
complex128float64
ValueError)funcxpdtypes      V/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper(      sY    }} H H L 
Q	Q

 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'   fft1r:   #   sj    AAIryy|E!H,-EIIaL  Q'%/E66!BFF5M/**r)   c                      \ rS rSr\" \R                  \R
                  \R                  \R                  5      S 5       r	\
" SSS9S 5       r\" \R
                  5      S 5       r\
" SSS9S	 5       r\" \R
                  \R                  5      S
 5       r\" \R
                  \R                  5      S 5       r\" \R                  \R"                  5      S 5       r\" \R
                  \R&                  5      S 5       r\" \R                  \R*                  5      S 5       r\" \R
                  \R                  5      S 5       r\" \R                  \R                  5      S 5       r\" \R2                  5      S 5       r\" \R2                  \R6                  5      S 5       r\" \R&                  \R:                  5      S 5       r\" \R>                  \R:                  5      S 5       r \" \RB                  \R
                  5      S 5       r"\" \RB                  \RF                  5      S 5       r$\" \RJ                  \RL                  5      S 5       r'\" \R"                  5      S 5       r(\" \RR                  \RT                  5      S 5       r+\" \R*                  \RT                  5      S 5       r,S r-\.R^                  Ra                  S\1" \R&                  5      \1" \R*                  5      \1" \R:                  5      \1" \R>                  5      /5      S 5       r2\.R^                  Ra                  S\1" \RR                  5      \1" \RT                  5      /5      S 5       r3\.R^                  Ra                  S\1" \R&                  5      \1" \R*                  5      \1" \R:                  5      \1" \R>                  5      /5      S 5       r4\.R^                  Ra                  S\1" \R                  5      \1" \R"                  5      \1" \R2                  5      \1" \R6                  5      \1" \RJ                  5      \1" \RL                  5      \1" \RR                  5      \1" \RT                  5      /5      S  5       r5\" \R                  \R                  \RF                  \RB                  \R
                  \R                  5      S! 5       r6\.R^                  Ra                  S"\7Rp                  \7Rr                  /5      S# 5       r:\" \R                  \R                  5      \.R^                  Ra                  S"S$S%/5      S& 5       5       r;\" \R
                  \R                  5      \.R^                  Ra                  S"S'S(/5      S) 5       5       r<\.R^                  Ra                  S\R
                  \R                  \R                  \R"                  \R&                  \R*                  \R                  \R                  \R2                  \R6                  \R:                  \R>                  \RB                  \RF                  \RJ                  \RL                  \RR                  \RT                  /5      S* 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%   maxlenr7   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   )rF   r   ranger	   r   r   r   r   rG   s         r'   test_identity_extensiveTestFFT.test_identity_extensive5   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   rF   r:   r	   r   sqrtr"   rH   r%   r7   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,   rA      rZ   r   )rF   r!   assert_raisesr#   r   )rH   r%   r7   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 )NrU   r@   rV   rY   r[   rW   )rF   r   r	   r   r   rH   r%   r7   rX   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rU      r@   r,   r-   r   rV   rW   rY   X  rZ   r[   )rF   r   r   r	   r   r\   r"   r]   s       r'   	test_fft2TestFFT.test_fft2U   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 rm   )rF   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rU   ro   
   r@   rA   r-   r,   r   rV   rW   rY   p  rZ   r[   )rF   r   r   r	   r   r\   r"   r]   s       r'   	test_fftnTestFFT.test_fftni   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 )Nrw   r@   rA   r-   r,   r   gHz>)rtolrV   rW   rY   ry   rZ   r[   )rF   r   r   r   r	   r   r\   r"   r]   s       r'   
test_ifftnTestFFT.test_ifftns   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   rZ   rA   )NrV   rY   r[   nrX   r,   rY   )r   )	rF   r   r"   r   r	   r   r   r!   r\   )rH   r%   r7   r   rX   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 )NrU   rh   rW   )rF   r   r	   r   r   r   ri   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 	Nrn   rZ      rV   rW   rY   rp   r[   )	rF   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 Nrn   rh   rW   )rF   r   r	   r   r   r   ri   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 	Nrw   rZ      rV   rW   rY   ry   r[   )	rF   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 Nrw   rh   rW   )rF   r   r	   r   r   r   ri   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+   rV   rW   rY   rU   rZ   r[   )r   r0   concatenateconjrF   realr   r	   r   r\   r"   )rH   r%   r7   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+   rh   rW   )	r   r0   r   r   rF   r	   r   r   r   )rH   r%   r7   r   rX   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   )rF   r   r	   r   r   r   ri   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   )	rF   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   )rF   r   r	   r   r   r   ri   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   )	rF   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 H7  nU" UR                  XFS95      nUR                  U" XFS9US9n[	        Xx5        M9     g )Nrw   rZ   )r   r,   rA   r   rA   r,   )r,   r   rA   r,   rA   r   )rA   r   r,   )rA   r,   r   axes)r(   rF   r   permute_dimsr	   )	rH   opr%   r&   r7   r   aop_trtr_ops	            r'   _check_axesTestFFT._check_axes   se    (0JJvl+5J9QArq12EOOBqMO:EE) r)   r   c                 &    U R                  X5        g Nr   rH   r   r%   s      r'   test_axes_standardTestFFT.test_axes_standard   s    
 	 r)   c                 &    U R                  X5        g r   r   r   s      r'   test_axes_non_standardTestFFT.test_axes_non_standard  s     	 r)   c           
         [        X5      nUR                  [        S5      US9n/ SQnU H  n[        [	        UR
                  5       Vs/ s H,  nXvS S ;   a  SUR                  U   -  OUR                  U   PM.     sn5      nU" UR                  XFS9US S SS9n	UR                  U" XHS S US S S9US9n
[        X5        M     g s  snf N)rB         rZ   )r   r   r   rA   r   r   r,   )sr   	r(   rF   r   tuplerQ   ndimshaper   r	   rH   r   r%   r&   r7   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 rq1r1EOOBq"1IAbqE$B./ $ 1EE) 4   
3C
c           
         [        X5      nUR                  [        S5      US9n/ SQnU H  n[        [	        UR
                  5       Vs/ s H,  nXvS S ;   a  SUR                  U   -  OUR                  U   PM.     sn5      nU" UR                  XFS9US S SS9n	UR                  U" XHS 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 rq1U2AYVLEOOBq"1IAbqE$BOKEE) 4r   c           	         UR                  [        S5      UR                  S9nUR                  R	                  U5      n[        U5      S-  n[        R                  [        R                  4[        R                  [        R                  4[        R                  [        R                  4/nU H  u  pgU[        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 )NrU   rZ   rA   rh   r   )rF   r   r"   linalgvector_normr   r   r   r   r   r   r   r!   r	   )
rH   r%   r7   x_normr   
func_pairsforwbackrX   tmps
             r'   test_all_1d_norm_preserving#TestFFT.test_all_1d_norm_preserving6  s    JJvbzJ4&&q)AJNxx+ yy#((+ww)
 %JDswwJJqJ6..q1aj!GAJ,/<DqD1Csd3C#BII$9$9#$>G = 0	 %r)   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 )NrU   r   )r   astyper0   float16	complex64
longdoubleclongdoubler   r   r   r   r   r   r   r   r&   result_typefloat32)rH   r&   r7   
out_dtypes	x_complexres_fftres_rfftres_hffts           r'   test_dtypes_nonstandardTestFFT.test_dtypes_nonstandardN  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 )NrU   rZ   r   )
rF   r   getattrr   r   r   r   r   r   r	   )rH   r&   r%   r7   r   r   s         r'   test_dtypes_realTestFFT.test_dtypes_real_  se     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  rU   rZ   )r0   r   default_rngrF   r   r   r   r	   )rH   r&   r%   rngr7   r   s         r'   test_dtypes_complexTestFFT.test_dtypes_complexj  sU     ii##D)JJszz"~WR-?J@((3771:&#r)   c                     SS/SS//SS/SS//SS/SS///n[        U" U5      U" [        R                  " U5      5      5        g )Ng      ?)r	   r0   rF   )rH   r   r7   s      r'   test_array_likeTestFFT.test_array_liket  sX     Cj3*%Cj3*%Cj3*%' 	1r"**Q-01r)    N)?r    
__module____qualname____firstlineno__r   r   r   r   r   rL   skip_xp_backendsrR   r_   re   rj   r   rq   r   rt   r   rz   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   pytestmarkparametrizer   r   r   r   r   r   r0   r   r   r   r   r   r   __static_attributes__r   r)   r'   r<   r<   *   s   sxx#((CII>F ?F d+STF UF swwA  A d+FG1 H1 sww)K *K sww)I *I sxx+J ,J sww)N *N sxx+# ,# sww)
 *
 syy#((+M ,M syy!J "J syy#**-O .O sxx+O ,O szz399-O .O sxx)G *G sxx+W ,W syy#**-O .O syy!	K "	K syy#**-O .O syy#**-	P .	P* [[T$8$B$8$C$8$C$8$D$F G!	G! [[T$8$C$8$D$F G!G! [[T$8$B$8$C$8$C$8$D$F G*	G*  [[T$8$B$8$C$8$C$8$D$8$C$8$D$8$C$8$D$F G*G* sxxCIIsxx#((SH TH. [[Wrzz2==&ABE CE  syy#((+[[Wy)&<=% > ,% sww)[[W{L&AB$ C *$ [[TCGGSXX$'HHcii$'HHcii$'HHcii$'IIszz$'IIszz$'HHcii$'IIszz$'IIszz$< =2=2r)   r<   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)Nr=   r         F)copyr	  r+   r   rc   r-   )r   r   )r   )r,   rA   )r   rA   r   ))r   )r,   )rA   Nr   )r0   r   RandomStaterandr   asfortranarrayascontiguousarrayr    endswithrQ   r   extendr#   )r&   r  r   r   XYr.   X_resY_resr   r   s              r'   test_fft_with_orderr    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)   T)cpu_onlyc                   J   \ rS rSrSrSrSS.S jr\" \R                  5      S 5       r	\" \R                  5      S 5       r\" \R                  5      S	 5       r\" \R                  5      S
 5       r\" \R                   5      S 5       r\" \R$                  5      S 5       rSrg)TestFFTThreadSafei  rB   )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QueuerQ   threads	threadingThreadstartjoinr
   get)
rH   r$   r%   r!  r#  r"  expectedrK   tr7   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 NrZ   r  )onesinput_shaper!   r3  r   rH   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  )fullr8  r3  r   r   r9  s      r'   rj   TestFFTThreadSafe.test_ifft  s/    GGD$$d+#((A-r)   c                 v    UR                  U R                  5      nU R                  [        R                  X!S9  g Nr  )r7  r8  r3  r   r   r9  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=  r8  r3  r   r   r9  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 r6  )r7  r8  r   r3  r   r   r9  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 r@  )r7  r8  r3  r   r   r9  s      r'   r   TestFFTThreadSafe.test_ihfft  s-    GGD$$%#))Q.r)   r   )r    r   r  r  r+  r8  r3  r   r   r_   r   rj   r   r   r   r   r   r   r   r   r  r   r)   r'   r  r    s    GK+/ * sww-  - sxx . !. sxx . !. syy!/ "/ sxx . !. syy!/ "/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)NrA   r   d   )multiprocessingPoolmaprQ   r0   r7  r   )r$   p_resr^   r7   s         r'   test_multiprocessrP    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)rA   rB   r       r@   )r   )r0   r   rF   r   r   )rH   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  rX  r  r   r)   r'   rR  rR    s    !r)   rR  c                     U R                   S;   a  UR                  nOUR                  nUR                  / SQUS9nU " U5        [	        U5      (       a  U " USS9  g [        [        XSS9  g )N)r   r   r   rb   rZ   rA   )workers)r    r"   r!   rF   r   rd   r#   )r$   r%   r&   r7   s       r'   test_non_standard_paramsr\    s[     }}22




9E
*AG||Qj$15r)   r   r"   c                 J    UR                  / SQ[        X!5      S9nU " U5        g )Nrb   rZ   )rF   r   )r$   r&   r%   r7   s       r'   test_real_inputr^    s"     	

9GB$6
7AGr)   )4r)  r,  rJ  numpyr0   r  numpy.randomr   numpy.testingr   r   r   rd   	scipy.fftr   scipy._lib._array_apir   r   r	   r
   r   r   lazy_xp_modulesr  r  r(   r:   r<   r  r   r"   r   r   r!   r   r   r   r   r   r   r  r  r   r   rP  r   rR  r   r   r   r\  r^  r   r)   r'   <module>re     s         D *  
 %;;// 
+W2 W2t
 	RZZ	r}}bnn	67 3(8"9:	#((CHHchh		399EGG ;	7: 4 5/ 5/ !5/p #''388SXXsyy!IJ# K# 3::
! 
! 
! "6sww"?"6sxx"@"6sxx"@"6syy"A"6sxx"@"6syy"A"6syy"A"6szz"B"6sxx"@"6syy"A	"C 	D6	D6( 9i"89"6sww"?"6sxx"@"6syy"A"6sxx"@"6syy"A"6szz"B"6sxx"@"B CC :r)   