
    _MhP                        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 d dlmZmZmZmZ eej                            d          gZej        j        Zd Zd	 Z G d
 d          Z ed          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d          ej                            dej        ej&        ej+        ej,        g          d                         Z- G d d          Z.ej                            dej        ej&        ej+        ej,        ej%        ej(        ej/        ej0        ej1        ej2        g
          d             Z3ej                            dddg          ej                            dej        ej&        ej,        ej%        ej(        ej0        ej1        g          d                         Z4dS )    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                    | t           j         t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        t           j
        t           j        fv r|j        }n`| t           j        t           j        t           j        t           j        t           j        t           j        fv r|j        }nt)          d|            |S )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      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper'      s    38#)SY#)SY	3:sz3 3 3 	#(CIsy)SZ5 
5 
5
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&   fft1r9   %   ss    AAIry||E!HH,-EIaLL  Q''%/E6!BF5MM/****r(   c                   >   e Zd Zd Z edd          d             Zd Z edd          d             Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dej        ej        ej         ej!        g          d             Z"ej                            dej#        ej$        g          d             Z%ej                            dej        ej        ej         ej!        g          d             Z&ej                            dej'        ej(        ej)        ej*        ej+        ej,        ej#        ej$        g          d             Z-d  Z. ed!          ej                            d"e/j0        e/j1        g          d#                         Z2ej                            d"d$d%g          d&             Z3ej                            d"d'd(g          d)             Z4 edd*          ej                            dej        ej5        ej'        ej(        ej        ej        ej6        ej7        ej)        ej*        ej         ej!        ej8        ej9        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$   maxlenr6   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   )rD   r   ranger
   r   r   r   r   rE   s         r&   test_identity_extensivezTestFFT.test_identity_extensive6   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   rD   r9   r
   r   sqrtr!   rF   r$   r6   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?      rV   r   )rD   r   assert_raisesr"   r   )rF   r$   r6   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 )NrQ   r>   rR   rU   rW   rS   )rD   r   r
   r   r   rF   r$   r6   rT   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rQ      r>   r+   r,   r   rR   rS   rU   X  rV   rW   )rD   r   r   r
   r   rX   r!   rY   s       r&   	test_fft2zTestFFT.test_fft2T   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 rf   )rD   r   r   r   r
   r   rX   r!   rY   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rQ   rh   
   r>   r?   r,   r+   r   rR   rS   rU   p  rV   rW   )rD   r   r   r
   r   rX   r!   rY   s       r&   	test_fftnzTestFFT.test_fftnf   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 )Nrn   r>   r?   r,   r+   r   gHz>)rtolrR   rS   rU   rp   rV   rW   )rD   r   r   r   r
   r   rX   r!   rY   s       r&   
test_ifftnzTestFFT.test_ifftno   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   rV   r?   )NrR   rU   rW   nrT   r+   rU   )rx   )	rD   r   r!   r	   r
   r   r   r   rX   )rF   r$   r6   rx   rT   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 )NrQ   rb   rS   )rD   r   r
   r   r   r   rc   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 	Nrg   rV      rR   rS   rU   ri   rW   )	rD   r   r!   r   r   r   r
   r   rX   rY   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 Nrg   rb   rS   )rD   r   r
   r   r   r   rc   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 	Nrn   rV      rR   rS   rU   rp   rW   )	rD   r   r!   r   r   r   r
   r   rX   rY   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 Nrn   rb   rS   )rD   r   r
   r   r   r   rc   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*   rR   rS   rU   rQ   rV   rW   )r   r/   concatenateconjrD   realr   r
   r   rX   r!   )rF   r$   r6   x_hermrZ   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*   rb   rS   )	r   r/   r   r   rD   r
   r   r   r   )rF   r$   r6   r   rT   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   )rD   r   r
   r   r   r    rc   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}   )	rD   r   r!   r   r   r   r
   r    rX   rY   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   )rD   r   r
   r   r   r   rc   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   )	rD   r   r!   r   r   r   r
   r   rX   rY   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                 B   t          ||          }|                    t          d          |          }g d}t          |          }|D ]T} ||                    ||                    }|                     |||          |          }	t          ||	           Ud S )Nrn   rV   )r   r+   r?   r   r?   r+   )r+   r   r?   r+   r?   r   )r?   r   r+   )r?   r+   r   axes)r'   rD   r   r   permute_dimsr
   )
rF   opr$   r%   r6   r   xp_testaop_trtr_ops
             r&   _check_axeszTestFFT._check_axes   s    (R00JJvl++5J99QQQ!!$$ 	* 	*ABw++AA+6677E((AAQ(??EE5))))	* 	*r(   r   c                 2    |                      ||           d S Nr   rF   r   r$   s      r&   test_axes_standardzTestFFT.test_axes_standard       R     r(   c                 2    |                      ||           d S r   r   r   s      r&   test_axes_non_standardzTestFFT.test_axes_non_standard   r   r(   c           
        	
 t          ||          }|                    t          d          |          
g d}t          
          }|D ]	t	          	
fdt          
j                  D                       } ||                    
	          |d d         d          }|                     |
|d d         	d d                   	          }t          ||           d S )	Nr@         rV   r   r   r   c                 b    g | ]+}|d d         v rdj         |         z  nj         |         ,S Nr?   shape.0axr   r6   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'   rD   r   r   tuplerN   ndimr   r
   rF   r   r$   r%   r   r   r   r   r   r   r6   s            @@r&   $test_axes_subset_with_shape_standardz,TestFFT.test_axes_subset_with_shape_standard   s2    )R00JJvj))J77000!!$$ 		* 		*A 4 4 4 4 4%*16]]4 4 4 5 5E Bw++AA+66rr1 1 1E((Arr2A2)G)G)G./ ) 1 1EE5))))		* 		*r(   c           
        	
 t          ||          }|                    t          d          |          
g d}t          
          }|D ]	t	          	
fdt          
j                  D                       } ||                    
	          |d d         d          }|                     |
|d d         	d d                   	          }t          ||           d S )	Nr   rV   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 Bw++AA+66%)&QQQE((Arr2A2)G)G)Ga(PPEE5))))	* 	*r(   c                    |                     t          d          |j                  }t          |          }|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 )NrQ   rV   r?   rb   rw   )rD   r   r!   r   linalgvector_normr	   r   r   r   r   r   r   r   r
   )rF   r$   r6   r   x_normrx   
func_pairsforwbackrT   tmps              r&   test_all_1d_norm_preservingz#TestFFT.test_all_1d_norm_preserving  si   JJvbzzJ44!!$$++A..AJJNx+ y#(+w)
 % 	M 	MJD$swJJqJ66 33A66ajj!GAJJ,/ M M< M MD$qAD111C$sad333C#GN$>$>s$C$CVLLLLMM		M 	Mr(   rK   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 )NrQ   r   )r   astyper/   float16	complex64
longdoubleclongdoubler   r   r   r   r   r   r   r   r%   result_typefloat32)rF   r%   r6   
out_dtypes	x_complexres_fftres_rfftres_hffts           r&   test_dtypes_nonstandardzTestFFT.test_dtypes_nonstandard2  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 )NrQ   rV   r   )
rD   r   getattrr   r   r   r   r   r   r
   )rF   r%   r$   r6   r   r   s         r&   test_dtypes_realzTestFFT.test_dtypes_realD  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  rQ   rV   )r/   r   default_rngrD   r   r   r   r
   )rF   r%   r$   rngr6   r   s         r&   test_dtypes_complexzTestFFT.test_dtypes_complexN  sm    i##D))JJszz"~~WR-?-?J@@(371::&&#####r(   z,array-likes only supported for NumPy backendc                     ddgddggddgddggddgddggg}t           ||           ||                    |                               d S )Ng      ?)r
   rD   )rF   r$   r   r6   s       r&   test_array_likezTestFFT.test_array_likeW  so     Cj3*%Cj3*%Cj3*%' 	1rr"**Q--0011111r(   N);__name__
__module____qualname__rJ   r   rO   r[   r`   rd   rj   rl   rq   rt   ry   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    r(   r&   r;   r;   +   sh       F F F d+STTTF F UTFA A A d+FGGG1 1 HG1K K KI I IJ J JN N N# # #
 
 
M M MJ J JO O OO O OO O OG G GW W WO O O	K 	K 	KO O O	P 	P 	P* * * [TCHciCJ#OPP! ! QP! [TCIsz#:;;! ! <;! [TCHci$'Isz$; < <* *< <*  [TCHci$'Isz$'Isz$'Isz$; < <* *	< <*M M M. d###[Wrz2=&ABBE E CB $#E  [Wy)&<==% % >=% [W{L&ABB$ $ CB$ dKM M M[TCGSX$'Hci$'Hci$'Hci$'Isz$'Isz$'Hci$'Isz$'Isz$< = =2 2= =M M2 2 2r(   r;   Tr   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   )r/   r   RandomStaterandr   asfortranarrayascontiguousarrayr   endswithrN   r   extendr"   )r%   r   r   r   XYr-   X_resY_resr   r   s              r&   test_fft_with_orderr  i  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(   )cpu_onlyc                   F    e Zd ZdZdZdddZd Zd Zd Zd	 Z	d
 Z
d ZdS )TestFFTThreadSafer@   )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   rI   r  r  r  s     r&   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s=     + + + V4)<<< + + +r(   c                 6    g | ]}|                                 S r   )startr   r6   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QueuerN   threadsr   get)	rF   r#   r$   r  expectedtrI   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 NrV   r  )onesinput_shaper   r   r   rF   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&   rd   zTestFFTThreadSafe.test_ifft  s;    GGD$d++#(A"-----r(   c                 ~    |                     | j                  }|                     t          j        ||           d S Nr  )r#  r$  r   r   r   r%  s      r&   ry   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[   rd   ry   r{   r   r   r   r(   r&   r  r    s        GK+/     *- - -. . .. . ./ / /. . ./ / / / /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   )r/   r#  )r   _s     r&   r   z%test_multiprocess.<locals>.<listcomp>  s     :::A273<<:::r(   r   r0  )multiprocessingPoolmaprN   r/   r#  r   )r#   presrZ   r6   s        r&   test_multiprocessr7    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?   r@   r       r>   )r   )r/   r   rD   r   r   )rF   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&   r9  r9    s#        ! ! ! ! !r(   r9  c                     | t           j        t           j        t           j        fv r|j        }n|j        }|j        dk    r>|                    g d|          } | |           t          t          | |d           d S d S )Nnumpyr]   rV   r?   )workers)
r   r   r   r   r!   r   r   rD   r_   r"   )r#   r$   r%   r6   s       r&   test_non_standard_paramsrC    s     #)SY///
	{gJJyyyJ..Qj$1555555	 r(   r   r!   c                 j    |                     g dt          ||                    } | |           d S )Nr]   rV   )rD   r   )r#   r%   r$   r6   s       r&   test_real_inputrE    s8    
 	

999GB$6$6
77ADGGGGGr(   )5r  r  r2  rA  r/   r   numpy.randomr   numpy.testingr   r   r   r_   	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   r7  r9  r   r   r   r   rC  rE  r   r(   r&   <module>rM     s                       D D D D D D D D * * * * * *       / / / / / /            #FK$;$;<N$O$OP
;/   + + +{2 {2 {2 {2 {2 {2 {2 {2|	 $	RZ	r}bn	67 7 3(8"9::	#(CH	39ci	)* * 	* * ;:	7 7  : 4   // // // // // // // ! //d $#'38SXsy!IJJ# # KJ  #
! 
! 
! 
! 
! 
! 
! 
! #'38SXsy"%(CI"%)SZ39"N O O
6 
6O O
6 9i"899#'38SY"%(CI"%*ch"9 : : : : :9  r(   