
    bi
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.                  j0                  Zd Zd Z G d d	      Zej.                  j9                  d
ej:                  ej<                  ej>                  ej@                  ejB                  ejD                  g      ej.                  j9                  dddg      ej.                  j9                  dej                  ejF                  ejH                  ejJ                  ejL                  ejN                  g      d                      Z( ed       G d d             Z)ej.                  j9                  dej                  ejJ                  ejT                  ejV                  g      d        Z, eejZ                         G d d             Z.ej.                  j9                  d eej                         eejJ                         eejT                         eejV                         eejH                         eejN                         eej^                         eejZ                         eej`                         eejb                        g
      d        Z2ej.                  j9                  d
ddg      ej.                  j9                  d eej                         eejJ                         eejV                         eejH                         eejN                         eejZ                         eej`                        g      d               Z3y)    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                     | j                   dv r|j                  }|S | j                   dv r|j                  }|S t        d|        )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      U/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper(      sY    }} H H L 
Q	Q

 L 1$899    c                 ,   t        |       }dt        j                  z  t        j                  |      t	        |      z  z  }t        j                  |      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:   #   sj    AAIryy|E!H,-EIIaL  Q'%/E66!BFF5M/**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j0                        d        Z eej0                  ej4                        d        Z eej$                  ej8                        d        Z eej<                  ej8                        d        Z eej@                  ej                        d        Z! eej@                  ejD                        d        Z# eejH                  ejJ                        d        Z& eej                         d        Z' eejP                  ejR                        d        Z* eej(                  ejR                        d        Z+d Z,e-j\                  j_                  d e0ej$                         e0ej(                         e0ej8                         e0ej<                        g      d        Z1e-j\                  j_                  d e0ejP                         e0ejR                        g      d        Z2e-j\                  j_                  d e0ej$                         e0ej(                         e0ej8                         e0ej<                        g      d        Z3e-j\                  j_                  d e0ej                         e0ej                          e0ej0                         e0ej4                         e0ejH                         e0ejJ                         e0ejP                         e0ejR                        g      d        Z4 eej                  ej                  ejD                  ej@                  ej                  ej
                        d         Z5e-j\                  j_                  d!e6jn                  e6jp                  g      d"        Z9 eej                  ej                        e-j\                  j_                  d!d#d$g      d%               Z: eej                  ej
                        e-j\                  j_                  d!d&d'g      d(               Z;e-j\                  j_                  dej                  ej
                  ej                  ej                   ej$                  ej(                  ej                  ej                  ej0                  ej4                  ej8                  ej<                  ej@                  ejD                  ejH                  ejJ                  ejP                  ejR                  g      d)        Z<y*)+TestFFTc           
      ~   d}|j                  t        |      dt        |      z  z         }|j                  t        |            }dD ]s  }t        t        j                  t        j                  |d|             |d|        t        t        j
                  t        j                  |d|       |      |d|        u y )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ACHHSWWQqV_5q1v>CIIchhr!Aw&7;R!WE	Fr)   Tz&significant overhead for some backends)np_onlyreasonc           
         d}|j                  t        |      dt        |      z  z         }|j                  t        |            }t        d|      D ]s  }t        t	        j
                  t	        j                  |d|             |d|        t        t	        j                  t	        j                  |d|       |      |d|        u y )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ACHHSWWQqV_5q1v>CIIchhr!Aw&7;R!WE	Fr)   c           
         t        d      dt        d      z  z   }|j                  t        |            }|j                  |      }t        t	        j                  |      |       t        t	        j                  |d      |       t        t	        j                  |d      ||j                  |j                  d|j                              z         t        t	        j                  |d      |dz         y )N   r?   backwardnormorthor&   forward)r   rE   r:   r	   r   sqrtr"   rG   r%   r7   expects       r'   test_fftzTestFFT.test_fft>   s    2JF2J&DG$JJqM
F+
3V<0Bbjj)I!JJ	M	2FRK@r)   zsome backends allow `n=0`c                     |j                  g d|j                        }t        t        t        j                  |d       y )Nr,   r@      rW   r   )rE   r!   assert_raisesr#   r   )rG   r%   r7   s      r'   
test_fft_nzTestFFT.test_fft_nI   s*    JJyJ6j#''1a0r)   c           	      4   |j                  t        d      dt        d      z  z         }t        t        j                  t        j                  |            |       dD ]8  }t        t        j                  t        j                  ||      |      |       : y )NrR   r?   rS   rV   rX   rT   )rE   r   r	   r   r   rG   r%   r7   rU   s       r'   	test_ifftzTestFFT.test_ifftN   sm    JJvbzBvbzM12,a04 	KDCHHSWWQT%:FJ	Kr)   c           
         |j                  t        d      dt        d      z  z         }t        j                  t        j                  |d      d      }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d	|j                  
            z         t        t        j                  |d      |d	z         y 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V,4f=1G2::)N!OO	Q3Vw5GHr)   c           
         |j                  t        d      dt        d      z  z         }t        j                  t        j                  |d      d      }t	        t        j
                  |      |       t	        t        j
                  |d      |       t	        t        j
                  |d      ||j                  |j                  d	|j                  
            z         t	        t        j
                  |d      |d	z         y rg   )rE   r   r   r   r	   r   rY   r"   rZ   s       r'   
test_ifft2zTestFFT.test_ifft2_   s    JJvh'"VH-=*==>#((11-A6		!f-		!*5v>		!'2G2::)N!OO	Q		!)4f6HIr)   c           
      <   |j                  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	      ||j                  |j                  d
|j                              z         t        t        j                  |d      |d
z         y )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1E.EEF!3!<1EV,4f=1L

)S!TT	V3V|5LMr)   c           
      n   |j                  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
                  |      |j                  |j                  d|j                              z         t	        t        j
                  |d
      |dz  d       y )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   s    JJvl+b1E.EEF#((388AA#6Q?aH		!f48		!*5vDIIIag&IIaL2772::l"**:#MNN	
 			!)4,/!	#r)   c                    |j                  t        d      |j                        }t        |      dt        |      z  fD ]  }dD ]^  }t	        t        j                  |||      t        j
                  |j                  ||j                        ||      d |dz  dz           ` t	        t        j                  ||d      t        j                  ||      |j                  |j                  ||j                              z          y )	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   s    JJvbzJ4!*a
l+ 	A> Fad ; #

1BMM
(J*+$!88C!Q$(!EFF ag.a 2772::arzz:+J#KK	r)   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y )NrR   rc   rT   )rE   r   r	   r   r   r   rd   s       r'   
test_irfftzTestFFT.test_irfft   s`    JJvbz"		#((1+.24 	MDCIIchhqt&<4H!L	Mr)   c           
      &   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d df   }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y 	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'rzzJ:"**Qbmm*<=a"fE		!f-		!*5v>		!'2G2::)N!OO	Q		!)4f6HIr)   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y Nrh   rc   rT   )rE   r   r	   r   r   r   rd   s       r'   test_irfft2zTestFFT.test_irfft2   sa    JJvh'(

399Q<0!44 	ODCJJsyy'>TJAN	Or)   c           
      ,   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d d d df   }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y 	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>"**Qbmm*<=aBQBhG		!f-		!*5v>		!'2L

)S!TT	V		!)4f6MNr)   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y Nro   rc   rT   )rE   r   r	   r   r   r   rd   s       r'   test_irfftnzTestFFT.test_irfftn   sa    JJvl+,

399Q<0!44 	ODCJJsyy'>TJAN	Or)   c           
         t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }|j	                  |      }|j	                  |      }|j                  t        j                  |            }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j	                  d|j                  	            z         t        t        j                  |d
      |dz         y )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   s    2JF2J&Avay 9:NNFAddGLLN34JJqMF#$(&1j96Bg6Bbjj)I!JJ	Li8&2+Fr)   c           	         t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }|j	                  |      }|j	                  |      }t        t        j                  t        j                  |            |       dD ]8  }t        t        j                  t        j                  ||      |      |       : y )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    2JF2J&Avay 9:NNFAddGLLN34JJqMF#		#((6"23V<4 	WDCIIchhvD&AMvV	Wr)   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y r   )rE   r   r	   r   r   r   rd   s       r'   
test_hfft2zTestFFT.test_hfft2   sa    JJvh'(		#**Q-0!44 	ODCIIcjj&>TJAN	Or)   c           
      &   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d df   }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y r~   )	rE   r   r"   r   r   r!   r	   r   rY   rZ   s       r'   test_ihfft2zTestFFT.test_ihfft2   s    JJvh'rzzJ:2::ar}}:=>q#2#vF

1v.

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

195v7IJr)   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y r   )rE   r   r	   r   r   r   rd   s       r'   
test_hfftnzTestFFT.test_hfftn   sa    JJvl+,		#**Q-0!44 	ODCIIcjj&>TJAN	Or)   c           
      ,   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d d d df   }t        |t        j                  |             t        |t        j                  |d             t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y r   )	rE   r   r"   r   r   r!   r	   r   rY   rZ   s       r'   test_ihfftnzTestFFT.test_ihfftn   s    JJvl+2::J>2::ar}}:=>q!RaRxH

1.

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

195v7NOr)   c                     t        ||      }|j                  t        d      |      }g d}|D ]B  } ||j                  ||            }|j                   |||      |      }t	        ||       D y )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   sr    (R0JJvl+5J9Q 	*Arqq12EOOBqqMO:EE5)	*r)   r   c                 (    | j                  ||       y Nr   rG   r   r%   s      r'   test_axes_standardzTestFFT.test_axes_standard   s    
 	R r)   c                 (    | j                  ||       y r   r   r   s      r'   test_axes_non_standardzTestFFT.test_axes_non_standard  s     	R r)   c           
         t        ||      }|j                  t        d      |      }g d}|D ]  }t        t	        |j
                        D cg c]*  }||d d v rd|j                  |   z  n|j                  |   , c}      } ||j                  ||      |d d d      }	|j                   |||d d |d d       |      }
t        |	|
        y c c}w N)rA         rW   )r   r   r   r@   r   r   r,   )sr   	r(   rE   r   tuplerO   ndimshaper   r	   rG   r   r%   r&   r7   r   r   axr   r   r   s              r'   $test_axes_subset_with_shape_standardz,TestFFT.test_axes_subset_with_shape_standard  s    
 )R0JJvj)J70 		*A%*166]4! -/!BQ%K1QWWR[=QWWR[H 4 5E rqq1r1EOOBqE"1IAbqE$B./ $ 1EE5)		*4   /C
c           
         t        ||      }|j                  t        d      |      }g d}|D ]  }t        t	        |j
                        D cg c]*  }||d d v rd|j                  |   z  n|j                  |   , c}      } ||j                  ||      |d d d      }	|j                   |||d d |d d       |      }
t        |	|
        y c c}w r   r   r   s              r'   (test_axes_subset_with_shape_non_standardz0TestFFT.test_axes_subset_with_shape_non_standard   s     )R0JJvj)J70 	*A%*166]4! -/!BQ%K1QWWR[=QWWR[H 4 5E rqq1U2AYVLEOOBqE"1IAbqE$BOKEE5)	*4r   c                    |j                  t        d      |j                        }|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(  r8|j                  ||j                        }|j                  j	                  |      }t        |      dt        |      z  fD ]D  }dD ]=  } ||||      }	 ||	||      }	t        |j                  j	                  |	      |       ? F  y )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,    JJvbzJ4&&q)AJNxx+ yy#((+ww)
 % 	HJD$swwJJqJ6..q1aj!GAJ,/ H< HDqAD1Csad3C#BII$9$9#$>GHH		Hr)   r&   c                 Z   t        d      j                  |      }t        j                  t        j                  t        j
                  t        j                  i}|j                  ||         }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 y )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   2Je$jj",,r~~N
HHZ./	((3771:&99SXXa[)88CIIaL!''!*5!'95!(A.!(A.}}	///~~

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

AGG!DDDDr)   r   r"   c                 <   |j                  t        d      t        ||            }t        j                  t        j
                  |            }t        j                  t        j                  |      |j                  d         }t        ||       t        ||       y )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_  sk     JJvbzU);J<99SXXa[)88CIIaL!''!*5!$!$r)   r   r!   c                    t         j                  j                  d      }|j                  |j                  d      t	        ||            }t        j                  t        j
                  |            }t        ||       y )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  sY     ii##D)JJszz"~WR-?J@((3771:&#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                  |                   y )Ng      ?)r	   r0   rE   )rG   r   r7   s      r'   test_array_likezTestFFT.test_array_liket  sX     Cj3*%Cj3*%Cj3*%' 	1r"**Q-0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   sxx#((CII>F ?F d+STF UF swwA  A d+FG1 H1 sww)K *K sww)I *I sxx+J ,J sww)N *N sxx+# ,# sww)
 *
 syy#((+M ,M syy!J "J syy#**-O .O sxx+O ,O szz399-O .O sxx)G *G sxx+W ,W syy#**-O .O syy!	K "	K syy#**-O .O syy#**-	P .	P* [[T$8$B$8$C$8$C$8$D$F G!	G! [[T$8$C$8$D$F G!G! [[T$8$B$8$C$8$C$8$D$F G*	G*  [[T$8$B$8$C$8$C$8$D$8$C$8$D$8$C$8$D$F G*G* sxxCIIsxx#((SH TH. [[Wrzz2==&ABE CE  syy#((+[[Wy)&<=% > ,% sww)[[W{L&AB$ C *$ [[TCGGSXX$'HHcii$'HHcii$'HHcii$'IIszz$'IIszz$'HHcii$'IIszz$'IIszz$< =2=2r)   r<   r&   orderFznon-contiguousr   c                    t         j                  j                  d      }|j                  ddd      j	                  | d      }|dk(  rt        j
                  |      }n#|d d d   }t        j                  |d d d         }|j                  j                  d	      r1t        d
      D ]"  } |||      } |||      }t        ||       $ y |j                  j                  d      rZg d}	|j                  j                  d      r|	j                  g d       |	D ]"  }
 |||
      } |||
      }t        ||       $ y 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!4A|a  ddG  4R4)
||U#!H 	4D%E%E%eU3	4 
		/	0'<<  (KK01 	4BOEOE%eU3	4
 r)   T)cpu_onlyc                   @   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y)TestFFTThreadSaferA   )i      Nr%   c                   fd}t        j                         } | }t        | j                        D cg c]  }t	        j
                  |||f       }}|D 	cg c]  }	|	j                          c}	 |D 	cg c]  }	|	j                          c}	 t        | j                        D ]   }t        |j                  d      |d       " y c c}w c c}	w c c}	w )Nc                 .    |j                   |         y r   )put)argsqr$   s     r'   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s    EE$+r)   )targetr      )timeoutz6Function returned wrong value in multithreaded context)err_msg)
queueQueuerO   threads	threadingThreadstartjoinr
   get)
rG   r$   r%   r   r  r  expectedrJ   tr7   s
    `        r'   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 KKM; DLL)+ V4)< + +qa t||$ 	Aa (P	+s    CC;Cc                     |j                  | j                  |j                        }| j                  t        j                  ||       y NrW   r   )onesinput_shaper!   r  r   rG   r%   r   s      r'   r\   zTestFFTThreadSafe.test_fft  s7    GGD$$BMMG:#''1,r)   c                     |j                  | j                  d      }| j                  t        j                  ||       y Ny      ?        r   )fullr  r  r   r   r  s      r'   re   zTestFFTThreadSafe.test_ifft  s1    GGD$$d+#((A"-r)   c                 ~    |j                  | j                        }| j                  t        j                  ||       y Nr   )r  r  r  r   r   r  s      r'   rz   zTestFFTThreadSafe.test_rfft  s/    GGD$$%#((A"-r)   c                     |j                  | j                  d      }| j                  t        j                  ||       y r  )r  r  r  r   r   r  s      r'   r|   zTestFFTThreadSafe.test_irfft  s1    GGD$$d+#))Q2.r)   c                     |j                  | j                  |j                        }| j                  t        j
                  ||       y r  )r  r  r   r  r   r   r  s      r'   r   zTestFFTThreadSafe.test_hfft  s7    GGD$$BLLG9#((A"-r)   c                 ~    |j                  | j                        }| j                  t        j                  ||       y r  )r  r  r  r   r   r  s      r'   r   zTestFFTThreadSafe.test_ihfft  s/    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     s    GK+/ * sww-  - sxx . !. sxx . !. syy!/ "/ sxx . !. syy!/ "/r)   r   r$   c           
      6   t        j                  d      5 }|j                  | t        d      D cg c]  }t	        j
                  d       c}      }d d d         | t	        j
                  d            }D ]  }t        ||        y c c}w # 1 sw Y   =xY w)Nr@   r   d   )multiprocessingPoolmaprO   r0   r  r   )r$   p_resr[   r7   s         r'   test_multiprocessr'    s     
		a	  <AeeDq:A2773<:;< "''#,F #6"# ;< <s   BB
B
BBc                       e Zd Zd Zy)
TestIRFFTNc                     t         j                  j                  d      \  }}|d|z  z   }|j                  |      }d}t        j                  ||       y )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  sI    !!.1BBJJJqM 	

14 r)   N)r    r   r   r/  r   r)   r'   r)  r)    s    !r)   r)  c                     | j                   dv r|j                  }n|j                  }|j                  g d|      } | |       t	        |      r | |d       y t        t        | |d       y )N)r   r   r   r^   rW   r@   )workers)r    r"   r!   rE   r   r`   r#   )r$   r%   r&   r7   s       r'   test_non_standard_paramsr2    s[     }}22




9E
*AG|Qj$15r)   r   r"   c                 R    |j                  g dt        ||            } | |       y )Nr^   rW   )rE   r   )r$   r&   r%   r7   s       r'   test_real_inputr4    s$     	

9GB$6
7AGr)   )4r  r
  r!  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   r'  r   r)  r   r   r   r2  r4  r   r)   r'   <module>r;     s         D *  
 %;;// 
+W2 W2t
 	RZZ	r}}bnn	67 3(8"9:	#((CHHchh		399EGG ;	7: 4 5/ 5/ !5/p #''388SXXsyy!IJ# K# 3::
! 
! 
! "6sww"?"6sxx"@"6sxx"@"6syy"A"6sxx"@"6syy"A"6syy"A"6szz"B"6sxx"@"6syy"A	"C 	D6	D6( 9i"89"6sww"?"6sxx"@"6syy"A"6sxx"@"6syy"A"6szz"B"6sxx"@"B CC :r)   