
    YhO                        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 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j,        ej-        ej.        g
          d             Z/ej                            dddg          ej                            dej        ej"        ej(        ej!        ej$        ej,        ej-        g          d                         Z0dS )    N)random)assert_array_almost_equalassert_allclose)raises)is_numpyxp_sizexp_assert_closexp_assert_equalc                    | 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      l/var/www/tools.fuzzalab.pt/emblema-extractor/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$   fft1r7   #   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"   maxlenr4   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   )rB   r   ranger	   r   r   r   r   rC   s         r$   test_identity_extensivezTestFFT.test_identity_extensive4   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   rB   r7   r	   r   sqrtr   rD   r"   r4   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=      rT   r   )rB   r   assert_raisesr    r   )rD   r"   r4   s      r$   
test_fft_nzTestFFT.test_fft_nG   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 )NrO   r<   rP   rS   rU   rQ   )rB   r   r	   r   r   rD   r"   r4   rR   s       r$   	test_ifftzTestFFT.test_ifftL   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rO      r<   r)   r*   r   rP   rQ   rS   X  rT   rU   )rB   r   r   r	   r   rV   r   rW   s       r$   	test_fft2zTestFFT.test_fft2R   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 rd   )rB   r   r   r   r	   r   rV   r   rW   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rO   rf   
   r<   r=   r*   r)   r   rP   rQ   rS   p  rT   rU   )rB   r   r   r	   r   rV   r   rW   s       r$   	test_fftnzTestFFT.test_fftnd   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 )Nrl   r<   r=   r*   r)   r   gHz>)rtolrP   rQ   rS   rn   rT   rU   )rB   r   r   r   r	   r   rV   r   rW   s       r$   
test_ifftnzTestFFT.test_ifftnm   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   rT   r=   )NrP   rS   rU   nrR   r)   rS   )rv   )	rB   r   r   r   r	   r   r   r   rV   )rD   r"   r4   rv   rR   s        r$   	test_rfftzTestFFT.test_rfftz   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 )NrO   r`   rQ   )rB   r   r	   r   r   r   ra   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 	Nre   rT      rP   rQ   rS   rg   rU   )	rB   r   r   r   r   r   r	   r   rV   rW   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 Nre   r`   rQ   )rB   r   r	   r   r   r   ra   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 	Nrl   rT      rP   rQ   rS   rn   rU   )	rB   r   r   r   r   r   r	   r   rV   rW   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 Nrl   r`   rQ   )rB   r   r	   r   r   r   ra   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(   rP   rQ   rS   rO   rT   rU   )r   r-   concatenateconjrB   realr   r	   r   rV   r   )rD   r"   r4   x_hermrX   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(   r`   rQ   )	r   r-   r   r   rB   r	   r   r   r   )rD   r"   r4   r   rR   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   )rB   r   r	   r   r   r   ra   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{   )	rB   r   r   r   r   r   r	   r   rV   rW   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   )rB   r   r	   r   r   r   ra   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   )	rB   r   r   r   r   r   r	   r   rV   rW   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 )Nrl   rT   )r   r)   r=   r   r=   r)   )r)   r   r=   r)   r=   r   )r=   r   r)   )r=   r)   r   axes)r%   rB   r   permute_dimsr	   )	rD   opr"   r#   r4   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   rD   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}|D ]t          	fdt	          	j                  D                       } ||                    	          |d d         d          }|                     |	|d d         d d                             }t          ||           d S )	Nr>         rT   r   r   r   c                 b    g | ]+}|d d         v rdj         |         z  nj         |         ,S Nr=   shape.0axr   r4   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%   rB   r   tuplerL   ndimr   r	   
rD   r   r"   r#   r   r   r   r   r   r4   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   rT   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 )NrO   rT   r=   r`   ru   )rB   r   r   linalgvector_normr   r   r   r   r   r   r   r   r	   )
rD   r"   r4   x_normrv   
func_pairsforwbackrR   tmps
             r$   test_all_1d_norm_preservingz#TestFFT.test_all_1d_norm_preserving  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&   rI   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 )NrO   r   )r   astyper-   float16	complex64
longdoubleclongdoubler   r   r   r   r   r   r   r   r#   result_typefloat32)	rD   r#   r"   r4   
out_dtypes	x_complexres_fftres_rfftres_hffts	            r$   test_dtypes_nonstandardzTestFFT.test_dtypes_nonstandard0  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 )NrO   rT   r   )
rB   r   getattrr   r   r   r   r   r   r	   )rD   r#   r"   r4   r   r   s         r$   test_dtypes_realzTestFFT.test_dtypes_realB  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  rO   rT   )r-   r   default_rngrB   r   r   r   r	   )rD   r#   r"   rngr4   r   s         r$   test_dtypes_complexzTestFFT.test_dtypes_complexL  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	   rB   )rD   r"   r   r4   s       r$   test_array_likezTestFFT.test_array_likeU  so     Cj3*%Cj3*%Cj3*%' 	1rr"**Q--0011111r&   N);__name__
__module____qualname__rH   skip_xp_backendsrM   rY   r^   rb   rh   rj   ro   rr   rw   ry   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$   r9   r9   )   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$; < <* *	< <*H H H. 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&   r9   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   endswithrL   r   extendr    )r#   r   r   r"   r   XYr+   X_resY_resr   r   s               r$   test_fft_with_orderr   g  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   rG   r	  r
  r  s     r$   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s=     + + + V4)<<< + + +r&   c                 6    g | ]}|                                 S r   )startr   r4   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QueuerL   threadsr
   get)	rD   r!   r"   r	  expectedtrG   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 NrT   r  )onesinput_shaper   r  r   rD   r"   r   s      r$   rY   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$   rb   zTestFFTThreadSafe.test_ifft  s;    GGD$d++#(A"-----r&   c                 ~    |                     | j                  }|                     t          j        ||           d S Nr  )r!  r"  r  r   r   r#  s      r$   rw   zTestFFTThreadSafe.test_rfft  s9    GGD$%%#(A"-----r&   c                     |                     | j        d          }|                     t          j        ||           d S r%  )r&  r"  r  r   r   r#  s      r$   ry   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  rY   rb   rw   ry   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   r.  )multiprocessingPoolmaprL   r-   r!  r   )r!   r"   presrX   r4   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=   r>   r       r<   )r   )r-   r   rB   r   r   )rD   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                 "   | t           j        t           j        t           j        fv r|j        }n|j        }|                    g d|          } | |           t          |          r | |d           d S t          t          | |d           d S )Nr[   rT   r=   )workers)
r   r   r   r   r   r   rB   r   r]   r    )r!   r"   r#   r4   s       r$   test_non_standard_paramsr@    s     #)SY///



999E
**ADGGG|| 6Qj$1555555r&   r   r   c                 j    |                     g dt          ||                    } | |           d S )Nr[   rT   )rB   r   )r!   r#   r"   r4   s       r$   test_real_inputrB    s8    
 	

999GB$6$6
77ADGGGGGr&   )1r  r  r0  numpyr-   r   numpy.randomr   numpy.testingr   r   r   r]   	scipy.fftr   scipy._lib._array_apir   r   r	   r
   r   r   r%   r7   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r5  r7  r   r   r   r   r@  rB  r   r&   r$   <module>rH     s                       D D D D D D D D * * * * * *                  ;/   + + +{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&   