U
    <c[b                  $   @   s\	  U d dl 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 d d	lmZmZmZ d
Zerzd dlZdZW n ek
r   Y nX G dd deZ dd Z!edddej"j"ej#eej$eej$fese	sdn
ej%ej&f dddd
deddej"j'dej(eej$eej$fesZe	s^dn
ej%ej&f dddd
eej)dej*digdedddej"j+ej,eej$eej$fese	sdn
ej%ej&f dddd
eej)dej*digdedddej"j-ej#eej$eej$fese	sdn
ej%ej&f dddd
d
ee .dd d!ej/ej0fd"fd#ed$d%dernej"j1ndej(eej$eej$fese	sdn
ej%ej&f dddd
d
eeej)d&ej*d&id'd(gee .dd d!fd)ed*d+derej"j2ndej,eej$eej$fese	sdn
ej%ej&f dddd
d
eeej)d&ej*d&id'd(gee .dd d!fd)ed,d-d.ej"j3ej#eej$eej$fese	sdnej%f dddd
dd
d/ed0d1d.ej"j4ej(eej$eej$fese	sdnej%f dddd
d
eej)digd2ed3d4d.ej"j5ej,eej$eej$fes6e	s:dnej%f dddd
d
eej)digd2ed5d6dej"j6ej#dddd
eej$eej$fese	sdn
ej%ej&f d7ed8d9dej"j7ej(dddd
eej$eej$fese	sdn
ej%ej&f eeej)dej*did'd(gd:ed;d<dej"j8ej,dddd
eej$eej$fesJe	sNdn
ej%ej&f eeej)dej*did'd(gd:ed=d>d.ej"j9ej#ddd
eej$eej$fese	sdnej%f dd
d?ed@dAd.erej"j:ndej(dddd
eej$eej$fese	s
dnej%f d
d
ee j;dBdCeeej)d&id'd(ee j;dBdDee j;dBdEfdFedGdHd.erlej"j:ndej,dddd
eej$eej$fese	sdnej%f d
d
ee j;dBdCee j;dBdDeeej)d&id'd(gdFedIdJdej"j<ej#dddd
eej$eej$fese	sdn
ej%ej&f d
dKedLdMdej"j=ej(dddd
eej$eej$fes^e	sbdn
ej%ej&f d
eeej)dej*did'd(gdNedOdPdej"j>ej,dddd
eej$eej$fese	sdn
ej%ej&f d
eeej)dej*did'd(gdNedQeej$ej?ej%ej@e!d
dddRedSeej$ej?ej%ej@e!d
dddRgZAee eBdT< e dUdd
dVe dWd5d
dVe dXd,d
dVe dYdId
dVe dZdd
dVe d[d=d
dVe d\dd
dVe d]d;d
dVe d^d3d
dVe d_dOd
dVe d`d*d
dVe dadGd
dVe dbdd
dVe dcd8d
dVe ddd0d
dVe dedLd
dVe dfd$d
dVe dgd@d
dVedheAdQd
diedjeAdSd
digZCee eBdk< dS )l    N)Listmake_tensor)SM53OrLater)precisionOverride)all_types_andall_types_and_complex_and)
TEST_SCIPYTEST_WITH_ROCM)DecorateInfoOpInfoSampleInputSpectralFuncInfoSpectralFuncType)_find_referenced_opinfo_inherit_constructor_argsPythonRefInfoFTc                       s*   e Zd ZdZdddd fdd
Z  ZS )SpectralFuncPythonRefInfozM
    An OpInfo for a Python reference of an elementwise unary operation.
    N T)optorch_opinfo_variantsupports_nvfuserc          	         sT   || _ t||td| _|| _t| jts,t| jj}t	||||}t
 jf | d S )N)op_db)torch_opinfo_namer   r   Ztorch_opinfor   
isinstancer   AssertionErrorZ_original_spectral_func_argsr   super__init__)	selfnamer   r   r   r   kwargsZ	inheritedZukwargs	__class__ R/tmp/pip-unpacked-wheel-gikjz4vx/torch/testing/_internal/opinfo/definitions/fft.pyr   ,   s      z"SpectralFuncPythonRefInfo.__init__)__name__
__module____qualname____doc__r   __classcell__r#   r#   r!   r$   r   '   s
   r   c                 +   s    fdd}t |dV  t |dtdddV  t |dtd	ddV  t |d
tdddV  t |dtdddV  d S )Nc                    s   t | f d|S )Ndevicedtyperequires_gradr   )shaper    r*   r#   r$   mtE   s      z"sample_inputs_fftshift.<locals>.mt)	   
   )2   r   )Zdim)r    )      )   )r3      )r   r5   )r3   r6      )r   r7   )r   dict)Zop_infor+   r,   r-   r    r/   r#   r*   r$   sample_inputs_fftshiftD   s    r9   zfft.fftZfft_fftZ_fft_c2cr#   )
	aten_namedecomp_aten_namerefndimensionaldtypesdtypesIfCUDAgradcheck_fast_modesupports_forward_adsupports_fwgrad_bwgradcheck_batched_forward_gradzfft.fft2Zfft_fft2g-C6?)r:   r<   r;   r=   r>   r?   r@   rA   rB   rC   
decoratorszfft.fftnZfft_fftn)r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   zfft.hfftZfft_hfftZ_fft_c2rzSkipped!ZTestSchemaCheckModeOpInfoZtest_schema_correctness)r>   )r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   check_batched_gradgradskipsz	fft.hfft2Z	fft_hfft2g-C6*?ZTestFFTZtest_reference_nd)r:   r;   r<   r=   r>   r?   r@   rA   rB   rE   rC   rD   rF   z	fft.hfftnZ	fft_hfftnzfft.rfftZfft_rfftZ_fft_r2c)r:   r;   r<   r=   r>   r?   r@   rA   rB   check_batched_gradrF   rE   z	fft.rfft2Z	fft_rfft2)r:   r;   r<   r=   r>   r?   r@   rA   rB   rG   rE   rD   z	fft.rfftnZ	fft_rfftnzfft.ifftZfft_ifft)
r:   r;   r<   r=   r@   rA   rB   rC   r>   r?   z	fft.ifft2Z	fft_ifft2)r:   r;   r<   r=   r@   rA   rB   rC   r>   r?   rD   z	fft.ifftnZ	fft_ifftnz	fft.ihfftZ	fft_ihfft)r:   r;   r<   r=   rA   rB   rC   r>   r?   rF   rG   z
fft.ihfft2Z
fft_ihfft2Z
TestCommonZtest_out_warningZtest_outZtest_out_warnings)r:   r;   r<   r=   r@   rA   rB   rC   r>   r?   rG   rE   rD   z
fft.ihfftnZ
fft_ihfftnz	fft.irfftZ	fft_irfft)r:   r;   r<   r=   r@   rA   rB   rC   r>   r?   rE   z
fft.irfft2Z
fft_irfft2)r:   r;   r<   r=   r@   rA   rB   rC   r>   r?   rE   rD   z
fft.irfftnZ
fft_irfftnzfft.fftshift)r>   Zsample_inputs_funcZsupports_outrA   rB   zfft.ifftshiftr   z_refs.fft.fft)r   r   z_refs.fft.ifftz_refs.fft.rfftz_refs.fft.irfftz_refs.fft.hfftz_refs.fft.ihfftz_refs.fft.fftnz_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   r   z_refs.fft.ifftshiftpython_ref_db)DZunittesttypingr   ZnumpynpZtorchZtorch.testingr   Z#torch.testing._internal.common_cudar   Z*torch.testing._internal.common_device_typer   Z$torch.testing._internal.common_dtyper   r   Z$torch.testing._internal.common_utilsr	   r
   Z#torch.testing._internal.opinfo.corer   r   r   r   r   Z#torch.testing._internal.opinfo.refsr   r   r   Zhas_scipy_fftZ	scipy.fftZscipyModuleNotFoundErrorr   r9   ZfftZOneDboolZhalfZ	complex32Zfft2ZTwoDfloatZcfloatZfftnZNDZhfftskipZ	complex64Z
complex128Zhfft2ZhfftnZrfftZrfft2ZrfftnZifftZifft2ZifftnZihfftZihfftnZexpectedFailureZirfftZirfft2ZirfftnZbfloat16Zchalfr   __annotations__rH   r#   r#   r#   r$   <module>   s   
	
	
	
	
"
		(
		(

	
	    

 
    
           