
    Phx              )       V   U d dl Z d dlmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZmZmZmZmZmZmZ d d
lmZmZmZ dZ er	 d dl!Z"dZ  G d de      Z$d Z%d Z&	 dvdZ'd Z( edddejR                  jR                  ejT                   eejV                         eejV                  gesesdnejX                  ejZ                  f  ee'd      e%dddd       eddejR                  j\                  dej^                   eejV                         eejV                  gesesdnejX                  ejZ                  f  ee'd      e&dddd eej`                  dejb                  di      g       edd dejR                  jd                  ejf                   eejV                         eejV                  gesesdnejX                  ejZ                  f  ee'd      e&dddd eej`                  dejb                  di      g!       ed"d#d$ejR                  jh                  ejT                   eejV                         eejV                  gesesdnejX                  ejZ                  f  ee'd%      e%ddddd e e jj                  d&      d'd(ejl                  ejn                  f)      f*       e	 dwd,d$e re"jR                  jp                  ndej^                   eejV                         eejV                  gesesdnejX                  ejZ                  f  ee'd-      e&ddddd e eej`                  d.ejb                  d.i      d/d0      g e e jj                  d&      d'd(      fd1 e	 dxd3d$e re"jR                  jr                  ndejf                   eejV                         eejV                  gesesdnejX                  ejZ                  f  ee'd-      e&ddddd e eej`                  d.ejb                  d.i      d/d0      g e e jj                  d&      d'd(      fd1 ed4d5d6ejR                  jt                  ejT                   eejV                         eejV                  gesesdnejX                  f  ee'd      e%dddddd7       ed8d9d6ejR                  jv                  ej^                   eejV                         eejV                  gesesdnejX                  f  ee'd      e&ddddd eej`                  di      g:       ed;d<d6ejR                  jx                  ejf                   eejV                         eejV                  gesesdnejX                  f  ee'd      e&ddddd eej`                  di      g:       ed=d>dejR                  jz                  ejT                   ee'd      e%dddd eejV                         eejV                  gesesdnejX                  ejZ                  f ?       ed@dAdejR                  j|                  ej^                   ee'd      e&dddd eejV                         eejV                  gesesdnejX                  ejZ                  f  e eej`                  dejb                  di      d/d0      gB       edCdDdejR                  j~                  ejf                   ee'd      e&dddd eejV                         eejV                  gesesdnejX                  ejZ                  f  e eej`                  dejb                  di      d/d0      gB       edEdFd6ejR                  j                  ejT                   ee'd      e%ddd eejV                         eejV                  gesesdnejX                  f ddG       e	 dydId6e re"jR                  j                  ndej^                   ee'd      e&dddd eejV                         eejV                  gesesdnejX                  f dd ee j                  dJdK       e eej`                  d.i      d/d0       ee j                  dJdL       ee j                  dJdM      fdN e	 dzdPd6e re"jR                  j                  ndejf                   ee'd      e&dddd eejV                         eejV                  gesesdnejX                  f dd ee j                  dJdK       ee j                  dJdL       e eej`                  d.i      d/d0      gdN edQdRd$ejR                  j                  ejT                   ee'dS      e%dddd eejV                         eejV                  gesesdnejX                  ejZ                  f dT       edUdVd$ejR                  j                  ej^                   ee'dS      e&dddd eejV                         eejV                  gesesdnejX                  ejZ                  f d e eej`                  dejb                  di      d/d0      gW       edXdYd$ejR                  j                  ejf                   ee'dS      e&dddd eejV                         eejV                  gesesdnejX                  ejZ                  f d e eej`                  dejb                  di      d/d0      gW       edZ eejV                  ej                  ejX                  ej                        e(ddd[       ed\ eejV                  ej                  ejX                  ej                        e(ddd[      gZHee   eId]<    e$d^d_       e$d`d=_       e$dad4_       e$dbdQ_       e$dcd"_       e$dddE_       e$ded e eej`                  dejb                  di      d/d0      gf       e$dgdC e eej`                  dejb                  di      d/d0      gf       e$dhd;_       e$didX e eej`                  dejb                  di      d/d0      gf       e$djd2 e eej`                  d.ejb                  d.i      d/d0      gf       e$dkdO e eej`                  d.i      d/d0      gf       e$dld_       e$dmd@ e eej`                  dejb                  di      d/d0      gf       e$dnd8_       e$dodU e eej`                  dejb                  di      d/d0      gf       e$dpd+ e eej`                  d.ejb                  d.i      d/d0      gf       e$dqdH e eej`                  d.i      d/d0      gf       edreHdZs       edteHd\s      gZJee   eIdu<   y# e#$ r Y Dw xY w){    N)partial)Listmake_tensor)SM53OrLater)precisionOverride)all_types_andall_types_and_complex_and)
TEST_SCIPYTEST_WITH_ROCM)DecorateInfo
ErrorInputOpInfosample_inputs_spectral_opsSampleInputSpectralFuncInfoSpectralFuncType)_find_referenced_opinfo_inherit_constructor_argsPythonRefInfoFTc                   *     e Zd ZdZddd fd
Z xZS )SpectralFuncPythonRefInfozM
    An OpInfo for a Python reference of an elementwise unary operation.
    N )optorch_opinfo_variantc                    || _         t        ||t              | _        t	        | j                  t
              sJ | j                  j                  }t        ||||      }t        | $  di | y )N)op_db )
torch_opinfo_namer   r   torch_opinfo
isinstancer   _original_spectral_func_argsr   super__init__)	selfnamer   r   r   kwargs	inheritedukwargs	__class__s	           yC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/testing/_internal/opinfo/definitions/fft.pyr$   z"SpectralFuncPythonRefInfo.__init__/   sl     "3335
 $++-=>>>%%BB	+D"iH#7#    )__name__
__module____qualname____doc__r$   __classcell__)r*   s   @r+   r   r   *   s     $ $r,   r   c              +      K   t        t        |t        j                        }t	        t         |             t        d       y w)Ndevicedtypez6Dimension specified as -1 but tensor has no dimensions
error_typeerror_regexr   r   torchfloat32r   r   
IndexErrorop_infor4   r'   make_args       r+   error_inputs_fftr@   D   s5     {6GH
HJL s   AAc              +      K   t        t        |t        j                        }t	        t         |       d      t        d       y w)Nr3   )r   dimz5Dimension specified as 0 but tensor has no dimensionsr6   r9   r=   s       r+   error_inputs_fftnrD   N   s7     {6GH
HJD)K s   AAc             +      K   t        | |||fi |E d {    t        ry t        ||||      }t        |       y 7 (w)N)r5   r4   requires_grad)r   r   r   r   )r>   r4   r5   rF   min_sizer'   as          r+   sample_inputs_fft_with_minrI   X   sT      *17    	HE&VA
a.s   A >)A c              +   >  K   fd}t         |d             t         |d      t        d             t         |d      t        d             t         |d	      t        d
             t         |d      t        d             y w)Nc                 $    t        | fd|S )N)r4   r5   rF   r   )shaper'   r4   r5   rF   s     r+   mtz"sample_inputs_fftshift.<locals>.mti   s'    
 ]
NT
 	
r,   )	   
   )2   r   rB   )r'   )      )   )rQ      )r   rS   )rQ   rT      )r   rU   )r   dict)r>   r4   r5   rF   r'   rM   s    ```  r+   sample_inputs_fftshiftrW   h   ss     

 bk
""
bi
44
bk$4.
99
bj&)9
::
bmDV,<
==s   BBzfft.fftfft_fft_fft_c2cr   rS   )rG   )	aten_namedecomp_aten_namerefndimensionaldtypesdtypesIfCUDAsample_inputs_funcerror_inputs_funcgradcheck_fast_modesupports_forward_adsupports_fwgrad_bwgradcheck_batched_forward_gradzfft.fft2fft_fft2)rS   rS   g-C6?)rZ   r\   r[   r]   r^   r_   r`   ra   rb   rc   rd   re   
decoratorszfft.fftnfft_fftn)rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rg   zfft.hfftfft_hfft_fft_c2rrU   zSkipped!TestSchemaCheckModeOpInfotest_schema_correctness)r^   )rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   check_batched_gradgradskips	fft.hfft2	fft_hfft2)rU   rU   g-C6*?TestFFTtest_reference_nd)rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rm   re   rg   rn   	fft.hfftn	fft_hfftnzfft.rfftfft_rfft_fft_r2c)rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   check_batched_gradrn   rm   z	fft.rfft2	fft_rfft2)rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rw   rm   rg   z	fft.rfftn	fft_rfftnzfft.ifftfft_ifft)rZ   r[   r\   r]   r`   ra   rb   rc   rd   re   r^   r_   z	fft.ifft2	fft_ifft2)rZ   r[   r\   r]   r`   ra   rb   rc   rd   re   r^   r_   rg   z	fft.ifftn	fft_ifftnz	fft.ihfft	fft_ihfft)rZ   r[   r\   r]   r`   ra   rc   rd   re   r^   r_   rn   rw   
fft.ihfft2
fft_ihfft2
TestCommontest_out_warningtest_outtest_out_warnings)rZ   r[   r\   r]   r`   ra   rb   rc   rd   re   r^   r_   rw   rm   rg   
fft.ihfftn
fft_ihfftnz	fft.irfft	fft_irfft)rS   rU   )rZ   r[   r\   r]   r`   ra   rb   rc   rd   re   r^   r_   rm   z
fft.irfft2
fft_irfft2)rZ   r[   r\   r]   r`   ra   rb   rc   rd   re   r^   r_   rm   rg   z
fft.irfftn
fft_irfftnzfft.fftshift)r^   r`   supports_outrc   rd   zfft.ifftshiftr   z_refs.fft.fft)r   z_refs.fft.ifftz_refs.fft.rfftz_refs.fft.irfftz_refs.fft.hfftz_refs.fft.ihfftz_refs.fft.fftn)r   rg   z_refs.fft.ifftnz_refs.fft.rfftnz_refs.fft.irfftnz_refs.fft.hfftnz_refs.fft.ihfftnz_refs.fft.fft2z_refs.fft.ifft2z_refs.fft.rfft2z_refs.fft.irfft2z_refs.fft.hfft2z_refs.fft.ihfft2z_refs.fft.fftshift)r   r   z_refs.fft.ifftshiftpython_ref_db)F)ro   )rs   )r~   )r   )Kunittest	functoolsr   typingr   numpynpr:   torch.testingr   #torch.testing._internal.common_cudar   *torch.testing._internal.common_device_typer   $torch.testing._internal.common_dtyper	   r
   $torch.testing._internal.common_utilsr   r   #torch.testing._internal.opinfo.corer   r   r   r   r   r   r   #torch.testing._internal.opinfo.refsr   r   r   has_scipy_fft	scipy.fftscipyModuleNotFoundErrorr   r@   rD   rI   rW   fftOneDboolhalf	complex32fft2TwoDfloatcfloatfftnNDhfftskip	complex64
complex128hfft2hfftnrfftrfft2rfftnifftifft2ifftnihfftihfftnexpectedFailureirfftirfft2irfftnbfloat16chalfr   __annotations__r   r   r,   r+   <module>r      s        % ; H L    
$ 0 $4 +0 
> #FFJJ%**(4 /JJ
 #+ jj%//2
 ##=J*  ##(14 FFKK#%**(4 /JJ
 #+ jj%//2
 ##=O+  ##(%u{{D%,,&MNO36 #FFKK%(((4 /JJ
 #+ jj%//2
 ##=O+  ##(%u{{D%,,&MNO36 #FFKK%**(4 /JJ
 #+ jj%//2
 ##=J*  ##($ j)+))9)9:	
5#H )#,EIIOO$%**(4 /JJ
 #+ jj%//2
 ##=O+  #$#(!5;;ellD"IJ#
 j)+)
C)T )#,EIIOO$%(((4 /JJ
 #+ jj%//2
 ##=O+  #$#(!5;;ellD"IJ#
 j)+)
C)T #FFKK%**UZZ( #JJ
!/{"%**
 ##=J*  # $), #FFLL%**UZZ( #JJ
!/{"%**
 ##=O+  # $u{{D12
)0 #FFLL%((UZZ( #JJ
!/{"%**
 ##=O+  # $u{{D12
)0 #FFKK%**"#=J*  ##((4 /JJ
 #+ jj%//2
#4 #FFLL%**"#=O+  ##((4 /JJ
 #+ jj%//2
 !5;;ellD"IJ#
3 B #FFLL%(("#=O+  ##((4 /JJ
 #+ jj%//2
 !5;;ellD"IJ#
3 B #FFLL%**"#=O* ##(UZZ( #JJ
!/{"%**
  '*  # -EII4%**"#=O+  ##(UZZ( #JJ
!/{"%**
 !$ 11<AST!5;;"56	CV 11<L11<ATU	
- B # -EII4%(("#=O+  ##(UZZ( #JJ
!/{"%**
 !$ 11<AST11<L!5;;"56	CV
-@ #FFLL%**"#=O*  ##((4 /JJ
 #+ jj%//2
  %36 #FFMM%**"#=O+  ##((4 /JJ
 #+ jj%//2
  %!5;;ellD"IJ#
5!D #FFMM%(("#=O+  ##((4 /JJ
 #+ jj%//2
  %!5;;ellD"IJ#
5!D (JJ

EKK
 2 #	 (JJ

EKK
 2 #	UttF| tn # $ $ % $ % $!5;;ellD"IJ#

 %!5;;ellD"IJ#

 % &!5;;ellD"IJ#

 %!5;;ellD"IJ#

 &!5;;"56#

 $ %!5;;ellD"IJ#

 % &!5;;ellD"IJ#

 %!5;;ellD"IJ#

 &!5;;"56#

 (
 )[RtF| RM  s   v v('v(