
    -ii
Z                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZmZmZ egZej        j        Zd Zd Z G d d	          Zej                            d
ej        ej        ej        ej         ej!        ej"        g          ej                            dddg          ej                            dej        ej#        ej$        ej%        ej&        ej'        g          d                                     Z( ed           G d d                      Z)ej                            dej        ej%        ej*        ej+        g          d             Z, eej-                   G d d                      Z.ej                            d eej                   eej%                   eej*                   eej+                   eej$                   eej'                   eej/                   eej-                   eej0                   eej1                  g
          d             Z2ej                            d
ddg          ej                            d eej                   eej%                   eej+                   eej$                   eej'                   eej-                   eej0                  g          d                         Z3dS )    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                 n    | j         dv r|j        }n#| j         dv r|j        }nt          d|            |S )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      `/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper(      sU    } H H H	Q	Q	Q
8$88999L    c                 4   t          |           }dt          j        z  t          j        |          t	          |          z  z  }t          j        |                              dd          |z  }t          j        | t          j        |          z  d          S )Ny                 axis)lennppiarangefloatreshapesumexp)xLphases      r'   fft1r:   #   ss    AAIry||E!HH,-EIaLL  Q''%/E6!BF5MM/****r)   c                   ,   e Zd Z eej        ej        ej        ej                  d             Z e	dd          d             Z
 eej                  d             Z e	dd          d             Z eej        ej                  d	             Z eej        ej                  d
             Z eej        ej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej         ej                  d             Z! eej         ej"                  d             Z# eej$        ej%                  d             Z& eej                  d             Z' eej(        ej)                  d             Z* eej        ej)                  d             Z+d Z,e-j.        /                    d e0ej                   e0ej                   e0ej                   e0ej                  g          d             Z1e-j.        /                    d e0ej(                   e0ej)                  g          d             Z2e-j.        /                    d e0ej                   e0ej                   e0ej                   e0ej                  g          d             Z3e-j.        /                    d e0ej                   e0ej                   e0ej                   e0ej                   e0ej$                   e0ej%                   e0ej(                   e0ej)                  g          d             Z4 eej        ej        ej"        ej         ej        ej                  d              Z5e-j.        /                    d!e6j7        e6j8        g          d"             Z9 eej        ej                  e-j.        /                    d!d#d$g          d%                         Z: eej        ej                  e-j.        /                    d!d&d'g          d(                         Z;e-j.        /                    dej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej         ej"        ej$        ej%        ej(        ej)        g          d)             Z<d*S )+TestFFTc           
         d}|                     t          |          dt          |          z  z             }|                     t          |                    }dD ]}t          t          j        t          j        |d|                             |d|                    t          t          j        t          j        |d|                   |          |d|                    d S )N                 ?)	r,            r>   5      i  i  r   )asarrayr   r	   r   r   r   r   selfr%   maxlenr7   xris         r'   test_identityzTestFFT.test_identity+   s    JJvf~~6&>>(99::ZZv''8 	F 	FACHSWQqsV__55q1v>>>CIchr!A#w&7&7;;R!WEEEE	F 	Fr)   Tz&significant overhead for some backends)np_onlyreasonc           
         d}|                     t          |          dt          |          z  z             }|                     t          |                    }t          d|          D ]}t          t	          j        t	          j        |d|                             |d|                    t          t	          j        t	          j        |d|                   |          |d|                    d S )Nr>   r?   r,   r   )rE   r   ranger	   r   r   r   r   rF   s         r'   test_identity_extensivezTestFFT.test_identity_extensive5   s    JJvf~~6&>>(99::ZZv''q&!! 	F 	FACHSWQqsV__55q1v>>>CIchr!A#w&7&7;;R!WEEEE	F 	Fr)   c           
      :   t          d          dt          d          z  z   }|                    t          |                    }|                    |          }t          t	          j        |          |           t          t	          j        |d          |           t          t	          j        |d          ||                    |                    d|j                            z             t          t	          j        |d          |dz             d S )N   r?   backwardnormorthor&   forward)r   rE   r:   r	   r   sqrtr"   rG   r%   r7   expects       r'   test_fftzTestFFT.test_fft>   s    2JJF2JJ&DGG$$JJqMM

F+++
333V<<<000Bbj)I)I!J!JJ	M 	M 	M	222FRK@@@@@r)   zsome backends allow `n=0`c                     |                     g d|j                  }t          t          t          j        |d           d S )Nr,   r@      rW   r   )rE   r!   assert_raisesr#   r   )rG   r%   r7   s      r'   
test_fft_nzTestFFT.test_fft_nI   s9    JJyyyJ66j#'1a00000r)   c           	      R   |                     t          d          dt          d          z  z             }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S )NrR   r?   rS   rV   rX   rT   )rE   r   r	   r   r   rG   r%   r7   rU   s       r'   	test_ifftzTestFFT.test_ifftN   s    JJvbzzBvbzzM122,,a0004 	K 	KDCHSWQT%:%:%:FFFJJJJ	K 	Kr)   c           
      F   |                     t          d          dt          d          z  z             }t          j        t          j        |d          d          }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d          ||                    |                     d	|j        
                    z             t          t          j        |d          |d	z             d S NrR      r?   r,   r-   r   rS   rT   rV   X  rW   rX   )rE   r   r   r	   r   rY   r"   rZ   s       r'   	test_fft2zTestFFT.test_fft2U   s    JJvh''"VH-=-=*==>>+++!444V,,,444f===111G2:)N)N!O!OO	Q 	Q 	Q333Vw5GHHHHHr)   c           
      F   |                     t          d          dt          d          z  z             }t          j        t          j        |d          d          }t	          t          j        |          |           t	          t          j        |d          |           t	          t          j        |d          ||                    |                     d	|j        
                    z             t	          t          j        |d          |d	z             d S rg   )rE   r   r   r   r	   r   rY   r"   rZ   s       r'   
test_ifft2zTestFFT.test_ifft2_   s    JJvh''"VH-=-=*==>>#(11---A666	!f---	!*555v>>>	!'222G2:)N)N!O!OO	Q 	Q 	Q	!)444f6HIIIIIr)   c           
      n   |                     t          d          dt          d          z  z             }t          j        t          j        t          j        |d          d          d          }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d	          ||                    |                     d
|j                            z             t          t          j        |d          |d
z             d S )NrR   ri   
   r?   r@   r-   r,   r   rS   rT   rV   p  rW   rX   )rE   r   r   r	   r   rY   r"   rZ   s       r'   	test_fftnzTestFFT.test_fftni   s   JJvl++b1E1E.EEFF!3!3!3!<<<1EEEV,,,444f===111L
)S)S!T!TT	V 	V 	V333V|5LMMMMMr)   c           
         |                     t          d          dt          d          z  z             }t          j        t          j        t          j        |d          d          d          }t	          t          j        |          |d           t	          t          j        |d	
          |d           t	          t          j        |d
          t          j        |          |                    |                     d|j                            z             t	          t          j        |d
          |dz  d           d S )Nro   r?   r@   r-   r,   r   gHz>)rtolrS   rT   rV   rq   rW   rX   )rE   r   r   r   r	   r   rY   r"   rZ   s       r'   
test_ifftnzTestFFT.test_ifftns   s1   JJvl++b1E1E.EEFF#(38AA#6#6#6Q???aHHH	!f48888	!*555vDIIIIIag&&&IaLL2772::l"*:#M#MNNN	
 	
 	
 		!)444,/!	# 	# 	# 	# 	# 	#r)   c                 @   |                     t          d          |j                  }t          |          dt          |          z  fD ]}dD ]d}t	          t          j        |||          t          j        |                     ||j                  ||          d |dz  dz                       et	          t          j        ||d          t          j        ||          |                    |                     ||j                            z             d S )	N   rW   r@   )NrS   rV   rX   nrU   r,   rV   )ry   )	rE   r   r"   r   r	   r   r   r!   rY   )rG   r%   r7   ry   rU   s        r'   	test_rfftzTestFFT.test_rfft   s0   JJvbzzJ44!**a

l+ 	 	A> F Fad ; ; ; #

1BM
(J(J*+$!8 !8 !88C!Q$(!EF F F F ag...a   2772::arz:+J+J#K#KK   	 	r)   c           	      ,   |                     t          d                    }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S )NrR   rc   rT   )rE   r   r	   r   r   r   rd   s       r'   
test_irfftzTestFFT.test_irfft   s    JJvbzz""	#(1++..2224 	M 	MDCIchqt&<&<&<4HHH!LLLL	M 	Mr)   c           
      N   |                     t          d          |j                  }t          j        |                     ||j                            d d d df         }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d          ||                    |                     d|j                            z             t          t          j        |d          |dz             d S 	Nrh   rW      rS   rT   rV   rj   rX   )	rE   r   r"   r   r   r!   r	   r   rY   rZ   s       r'   
test_rfft2zTestFFT.test_rfft2   s    JJvh''rzJ::"**Qbm*<<==aaa"fE	!f---	!*555v>>>	!'222G2:)N)N!O!OO	Q 	Q 	Q	!)444f6HIIIIIr)   c           	      ,   |                     t          d                    }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S Nrh   rc   rT   )rE   r   r	   r   r   r   rd   s       r'   test_irfft2zTestFFT.test_irfft2   s    JJvh''((
39Q<<00!4444 	O 	ODCJsy'>'>'>TJJJANNNN	O 	Or)   c           
      T   |                     t          d          |j                  }t          j        |                     ||j                            d d d d d df         }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d          ||                    |                     d|j                            z             t          t          j        |d          |dz             d S 	Nro   rW      rS   rT   rV   rq   rX   )	rE   r   r"   r   r   r!   r	   r   rY   rZ   s       r'   
test_rfftnzTestFFT.test_rfftn   s   JJvl++2:J>>"**Qbm*<<==aaaBQBhG	!f---	!*555v>>>	!'222L
)S)S!T!TT	V 	V 	V	!)444f6MNNNNNr)   c           	      ,   |                     t          d                    }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S Nro   rc   rT   )rE   r   r	   r   r   r   rd   s       r'   test_irfftnzTestFFT.test_irfftn   s    JJvl++,,
39Q<<00!4444 	O 	ODCJsy'>'>'>TJJJANNNN	O 	Or)   c           
      2   t          d          dt          d          z  z   }t          j        t          d          |t          d          f          }t          j        ||d d d                                         f          }|                    |          }|                    |          }|                    t          j        |                    }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d          ||	                    |                    d|j
        	                    z             t          t          j        |d
          |dz             d S )N   r?   r,   r+   rS   rT   rV   rR   rW   rX   )r   r0   concatenateconjrE   realr   r	   r   rY   r"   )rG   r%   r7   x_hermr[   s        r'   	test_hfftzTestFFT.test_hfft   sK   2JJF2JJ&Avayy 9::NFAdddGLLNN344JJqMMF##$$((&111j9996BBBg666Bbj)I)I!J!JJ	L 	L 	Li888&2+FFFFFr)   c           	      D   t          d          dt          d          z  z   }t          j        t          d          |t          d          f          }t          j        ||d d d                                         f          }|                    |          }|                    |          }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S )Nr   r?   r,   r+   rc   rT   )	r   r0   r   r   rE   r	   r   r   r   )rG   r%   r7   r   rU   s        r'   
test_ihfftzTestFFT.test_ihfft   s    2JJF2JJ&Avayy 9::NFAdddGLLNN344JJqMMF##	#(6"2"233V<<<4 	W 	WDCIchvD&A&A&AMMMvVVVV	W 	Wr)   c           	      ,   |                     t          d                    }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S r   )rE   r   r	   r   r   r   rd   s       r'   
test_hfft2zTestFFT.test_hfft2   s    JJvh''((	#*Q--00!4444 	O 	ODCIcj&>&>&>TJJJANNNN	O 	Or)   c           
      N   |                     t          d          |j                  }t          j        |                     ||j                            d d d df         }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d          ||                    |                     d|j                            z             t          t          j        |d          |dz             d S r~   )	rE   r   r"   r   r   r!   r	   r   rY   rZ   s       r'   test_ihfft2zTestFFT.test_ihfft2   s    JJvh''rzJ::2::ar}:==>>qqq#2#vF
1v...
1:666???Jqw'''RWWRZZrzZBBCCC	
 	
 	
 	
19555v7IJJJJJr)   c           	      ,   |                     t          d                    }t          t          j        t          j        |                    |           dD ]:}t          t          j        t          j        ||          |          |           ;d S r   )rE   r   r	   r   r   r   rd   s       r'   
test_hfftnzTestFFT.test_hfftn   s    JJvl++,,	#*Q--00!4444 	O 	ODCIcj&>&>&>TJJJANNNN	O 	Or)   c           
      T   |                     t          d          |j                  }t          j        |                     ||j                            d d d d d df         }t          |t          j        |                     t          |t          j        |d                     t          t          j        |d          ||                    |                     d|j                            z             t          t          j        |d          |dz             d S r   )	rE   r   r"   r   r   r!   r	   r   rY   rZ   s       r'   test_ihfftnzTestFFT.test_ihfftn   s   JJvl++2:J>>2::ar}:==>>qqq!!!RaRxH
1...
1: > > >???Jqw'''RWWRZZBJZGGHHH	
 	
 	
 	
19555v7NOOOOOr)   c                 $   t          ||          }|                    t          d          |          }g d}|D ]T} ||                    ||                    }|                     |||          |          }t	          ||           Ud S )Nro   rW   )r   r,   r@   r   r@   r,   )r,   r   r@   r,   r@   r   )r@   r   r,   )r@   r,   r   axes)r(   rE   r   permute_dimsr	   )	rG   opr%   r&   r7   r   aop_trtr_ops	            r'   _check_axeszTestFFT._check_axes   s    (R00JJvl++5J99QQQ 	* 	*ABrqq1122EOOBBqqMMMO::EE5))))	* 	*r)   r   c                 2    |                      ||           d S Nr   rG   r   r%   s      r'   test_axes_standardzTestFFT.test_axes_standard   s     
 	R     r)   c                 2    |                      ||           d S r   r   r   s      r'   test_axes_non_standardzTestFFT.test_axes_non_standard  s      	R     r)   c           
        	 t          ||          }|                    t          d          |          	g d}|D ]t          	fdt	          	j                  D                       } ||                    	          |d d         d          }|                     |	|d d         d d                             }t          ||           d S )	NrA         rW   r   r   r   c                 b    g | ]+}|d d         v rdj         |         z  nj         |         ,S Nr@   shape.0axr   r7   s     r'   
<listcomp>z@TestFFT.test_axes_subset_with_shape_standard.<locals>.<listcomp>  M     4 4 4! -/!BQB%KK1QWR[==QWR[ 4 4 4r)   r   r@   r   r,   sr   r(   rE   r   tuplerO   ndimr   r	   
rG   r   r%   r&   r   r   r   r   r   r7   s
           @@r'   $test_axes_subset_with_shape_standardz,TestFFT.test_axes_subset_with_shape_standard  s    
 )R00JJvj))J77000 		* 		*A 4 4 4 4 4%*16]]4 4 4 5 5E Brqq11rr1 1 1EOOBBqE"1"IAbqbE$B$B$B./ $ 1 1EE5))))		* 		*r)   c           
        	 t          ||          }|                    t          d          |          	g d}|D ]t          	fdt	          	j                  D                       } ||                    	          |d d         d          }|                     |	|d d         d d                             }t          ||           d S )	Nr   rW   r   c                 b    g | ]+}|d d         v rdj         |         z  nj         |         ,S r   r   r   s     r'   r   zDTestFFT.test_axes_subset_with_shape_non_standard.<locals>.<listcomp>/  r   r)   r   r@   r   r   r   r   s
           @@r'   (test_axes_subset_with_shape_non_standardz0TestFFT.test_axes_subset_with_shape_non_standard   s    )R00JJvj))J77000 	* 	*A 4 4 4 4 4%*16]]4 4 4 5 5E Brqq11U2A2YVLLLEOOBBqE"1"IAbqbE$B$B$BOKKEE5))))	* 	*r)   c                    |                     t          d          |j                  }|j                            |          }t          |          dz  }t          j        t          j        ft          j	        t          j
        ft          j        t          j        fg}|D ]\  }}|t          j        k    r6|                     ||j                  }|j                            |          }t          |          dt          |          z  fD ]K}dD ]F} ||||          }	 ||	||          }	t          |j                            |	          |           GLd S )NrR   rW   r@   rc   rx   )rE   r   r"   linalgvector_normr   r   r   r   r   r   r   r!   r	   )
rG   r%   r7   x_normry   
func_pairsforwbackrU   tmps
             r'   test_all_1d_norm_preservingz#TestFFT.test_all_1d_norm_preserving6  s^    JJvbzzJ44&&q))AJJNx+ y#(+w)
 % 	H 	HJD$swJJqJ66..q11ajj!GAJJ,/ H H< H HD$qAD111C$sad333C#BI$9$9#$>$>GGGGHH		H 	Hr)   r&   c                    t          d                              |          }t          j        t          j        t          j        t          j        i}|                    ||                   }t          j        t          j        |                    }t          j	        t          j
        |                    }t          j        t          j        |          |j        d                   }t          ||           t          ||           t          ||           |j        |j        k    sJ |j        t          j        t          j        |j                  k    sJ |j        t          j        t          j        |j                  k    sJ d S )NrR   r   )r   astyper0   float16	complex64
longdoubleclongdoubler   r   r   r   r   r   r   r   r&   result_typefloat32)rG   r&   r7   
out_dtypes	x_complexres_fftres_rfftres_hffts           r'   test_dtypes_nonstandardzTestFFT.test_dtypes_nonstandardN  s%   2JJe$$j",r~N
HHZ.//	(371::&&9SXa[[))8CIaLL!'!*55!'9555!(A...!(A...}	////~
AG!D!DDDDD~
AG!D!DDDDDDDr)   r   r"   c                 Z   |                     t          d          t          ||                    }t          j        t          j        |                    }t          j        t          j        |          |j        d                   }t          ||           t          ||           d S )NrR   rW   r   )
rE   r   getattrr   r   r   r   r   r   r	   )rG   r&   r%   r7   r   r   s         r'   test_dtypes_realzTestFFT.test_dtypes_real_  s     JJvbzzU););J<<9SXa[[))8CIaLL!'!*55!$$$!$$$$$r)   r   r!   c                     t           j                            d          }|                    |                    d          t	          ||                    }t          j        t          j        |                    }t          ||           d S )Ni  rR   rW   )r0   r   default_rngrE   r   r   r   r	   )rG   r&   r%   rngr7   r   s         r'   test_dtypes_complexzTestFFT.test_dtypes_complexj  so     i##D))JJszz"~~WR-?-?J@@(371::&&#####r)   c                     ddgddggddgddggddgddggg}t           ||           |t          j        |                               d S )Ng      ?)r	   r0   rE   )rG   r   r7   s      r'   test_array_likezTestFFT.test_array_liket  sm     Cj3*%Cj3*%Cj3*%' 	1rr"*Q--0011111r)   N)=r    
__module____qualname__r   r   r   r   r   rK   skip_xp_backendsrP   r\   ra   re   r   rk   r   rm   r   rr   r   ru   rz   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    r)   r'   r<   r<   *   s       sx#(CI>>F F ?>F d+STTTF F UTF swA A  A d+FGGG1 1 HG1 sw))K K *)K sw))I I *)I sx++J J ,+J sw))N N *)N sx++# # ,+# sw))
 
 *)
 sy#(++M M ,+M sy!!J J "!J sy#*--O O .-O sx++O O ,+O sz39--O O .-O sx))G G *)G sx++W W ,+W sy#*--O O .-O sy!!	K 	K "!	K sy#*--O O .-O sy#*--	P 	P .-	P* * * [T$8$8$B$B$8$8$C$C$8$8$C$C$8$8$D$D$F G G! !	G G! [T$8$8$C$C$8$8$D$D$F G G! !G G! [T$8$8$B$B$8$8$C$C$8$8$C$C$8$8$D$D$F G G* *	G G*  [T$8$8$B$B$8$8$C$C$8$8$C$C$8$8$D$D$8$8$C$C$8$8$D$D$8$8$C$C$8$8$D$D$F G G* *G G* sxCIsx#(SSH H TSH. [Wrz2=&ABBE E CBE  sy#(++[Wy)&<==% % >= ,+% sw))[W{L&ABB$ $ CB *)$ [TCGSX$'Hci$'Hci$'Hci$'Isz$'Isz$'Hci$'Isz$'Isz$< = =2 2= =2 2 2r)   r<   r&   orderFznon-contiguousr   c                    t           j                            d          }|                    ddd                              | d          }|dk    rt          j        |          }n(|d d d         }t          j        |d d d                   }|j                            d	          r>t          d
          D ],} |||          } |||          }t          ||           -d S |j                            d          rfg d}	|j                            d          r|	                    g d           |	D ],}
 |||
          } |||
          }t          ||           -d S t          )N*   r         F)copyr   r+   r   r_   r-   )r   r   )r   )r,   r@   )r   r@   r   ))r   )r,   )r@   Nr   )r0   r   RandomStaterandr   asfortranarrayascontiguousarrayr    endswithrO   r   extendr#   )r&   r   r   r   XYr.   X_resY_resr   r   s              r'   test_fft_with_orderr     s    )


#
#CAr!!%e!44A||a   dddG 44R4))
|U## !HH 	4 	4DC%%%EC%%%E%eU3333	4 	4 
		/	0	0 	'''<  (( 	2KK000111 	4 	4BCOOOECOOOE%eU3333	4 	4
 r)   T)cpu_onlyc                   N   e Zd ZdZdZdddZ eej                  d             Z eej	                  d             Z
 eej                  d             Z eej                  d	             Z eej                  d
             Z eej                  d             ZdS )TestFFTThreadSaferA   )i      Nr%   c                6   fdt          j                      }fdt          | j                  D             }d |D              d |D              t          | j                  D ](}t	                              d          |d           )d S )	Nc                 8    |                      |             d S r   )put)argsqr$   s     r'   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s!    EE$$+r)   c                 @    g | ]}t          j        f           S ))targetr	  )	threadingThread)r   rJ   r	  r
  r  s     r'   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s=     + + + V4)<<< + + +r)   c                 6    g | ]}|                                 S r   )startr   r7   s     r'   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s     qr)   c                 6    g | ]}|                                 S r   )joinr  s     r'   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s     ar)      )timeoutz6Function returned wrong value in multithreaded context)err_msg)queueQueuerO   threadsr
   get)	rG   r$   r%   r	  expectedtrJ   r
  r  s	    ` `   @@r'   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 	 	 	 	 KMM4;+ + + + + +DL))+ + +A1 t|$$ 	 	Aa  (P    	 	r)   c                     |                     | j        |j                  }|                     t          j        ||           d S NrW   r  )onesinput_shaper!   r  r   rG   r%   r   s      r'   r\   zTestFFTThreadSafe.test_fft  s?    GGD$BMG::#'1,,,,,r)   c                     |                     | j        d          }|                     t          j        ||           d S Ny      ?        r  )fullr"  r  r   r   r#  s      r'   re   zTestFFTThreadSafe.test_ifft  s;    GGD$d++#(A"-----r)   c                 ~    |                     | j                  }|                     t          j        ||           d S Nr  )r!  r"  r  r   r   r#  s      r'   rz   zTestFFTThreadSafe.test_rfft  s9    GGD$%%#(A"-----r)   c                     |                     | j        d          }|                     t          j        ||           d S r%  )r&  r"  r  r   r   r#  s      r'   r|   zTestFFTThreadSafe.test_irfft  s;    GGD$d++#)Q2.....r)   c                     |                     | j        |j                  }|                     t          j        ||           d S r   )r!  r"  r   r  r   r   r#  s      r'   r   zTestFFTThreadSafe.test_hfft  s?    GGD$BLG99#(A"-----r)   c                 ~    |                     | j                  }|                     t          j        ||           d S r(  )r!  r"  r  r   r   r#  s      r'   r   zTestFFTThreadSafe.test_ihfft  s9    GGD$%%#)Q2.....r)   )r    r   r   r  r"  r  r   r   r\   r   re   r   rz   r   r|   r   r   r   r   r   r)   r'   r  r    s0       GK+/     * sw- -  - sx  . . ! . sx  . . ! . sy!!/ / "!/ sx  . . ! . sy!!/ / "!/ / /r)   r  r$   c                    t          j        d          5 }|                    | d t          d          D                       }d d d            n# 1 swxY w Y    | t	          j        d                    }|D ]}t          ||           d S )Nr@   c                 6    g | ]}t          j        d           S )d   )r0   r!  )r   _s     r'   r   z%test_multiprocess.<locals>.<listcomp>  s     :::A273<<:::r)   r   r.  )multiprocessingPoolmaprO   r0   r!  r   )r$   presr[   r7   s        r'   test_multiprocessr5    s     
	a	 	  <AeeD::q:::;;< < < < < < < < < < < < < < < T"'#,,F # #6""""# #s   .AAAc                       e Zd Zd ZdS )
TestIRFFTNc                     t           j                            d          \  }}|d|z  z   }|                    |          }d}t          j        ||           d S )N)r@   rA   r       r?   )r   )r0   r   rE   r   r   )rG   r%   arair   r   s         r'   test_not_last_axis_successz%TestIRFFTN.test_not_last_axis_success  sY    !!.11BBJJJqMM 	
14      r)   N)r    r   r   r=  r   r)   r'   r7  r7    s#        ! ! ! ! !r)   r7  c                     | j         dv r|j        }n|j        }|                    g d|          } | |           t	          |          r | |d           d S t          t          | |d           d S )N)r   r   r   r^   rW   r@   )workers)r    r"   r!   rE   r   r`   r#   )r$   r%   r&   r7   s       r'   test_non_standard_paramsr@    s     }222



999E
**ADGGG|| 6Qj$1555555r)   r   r"   c                 j    |                     g dt          ||                    } | |           d S )Nr^   rW   )rE   r   )r$   r&   r%   r7   s       r'   test_real_inputrB    s8     	

999GB$6$6
77ADGGGGGr)   )4r  r  r0  numpyr0   r   numpy.randomr   numpy.testingr   r   r   r`   	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   r5  r   r7  r   r   r   r@  rB  r   r)   r'   <module>rI     so                       D D D D D D D D * * * * * *                     
 %;/ 
 
 
+ + +W2 W2 W2 W2 W2 W2 W2 W2t
 	RZ	r}bn	67 7 3(8"9::	#(CHch	39EG G G G ;:	7 7: 4   5/ 5/ 5/ 5/ 5/ 5/ 5/ ! 5/p #'38SXsy!IJJ# # KJ# 3:
! 
! 
! 
! 
! 
! 
! 
! "6"6sw"?"?"6"6sx"@"@"6"6sx"@"@"6"6sy"A"A"6"6sx"@"@"6"6sy"A"A"6"6sy"A"A"6"6sz"B"B"6"6sx"@"@"6"6sy"A"A	"C 	D 	D6 6	D 	D6( 9i"899"6"6sw"?"?"6"6sx"@"@"6"6sy"A"A"6"6sx"@"@"6"6sy"A"A"6"6sz"B"B"6"6sx"@"@"B C C C C :9  r)   