§
    ŠŠtj3F  ã                   ó  — d dl Z d dlmZmZ d dlmZm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mZ d dlmZmZ g d¢Zded         z  Zh d	£Zej        j        j        Zd
ededededef
d„Zdej        dedej         dej        fd„Z!	 dGdededefd„Z"d
ede#edf         de#edf         defd„Z$de%dededz  dedededefd„Z&de%dededz  dededed edefd!„Z'de%dededz  dedededefd"„Z( eej)        ¦  «         e¦   «         	 	 	 dHdededz  dededef
d$„¦   «         ¦   «         Z* eej+        ¦  «         e¦   «         	 	 	 dHdededz  dededef
d%„¦   «         ¦   «         Z, eej-        ¦  «         e¦   «         	 	 	 dHdededz  dededef
d&„¦   «         ¦   «         Z. eej/        ¦  «         e¦   «         	 	 	 dHdededz  dededef
d'„¦   «         ¦   «         Z0 eej1        ¦  «         e¦   «         	 	 	 dHdededz  dededef
d(„¦   «         ¦   «         Z2 eej3        ¦  «         e¦   «         	 	 	 dHdededz  dededef
d)„¦   «         ¦   «         Z4 G d*„ d+e¦  «        Z5ded,edz  dedz  de5fd-„Z6d.ee         defd/„Z7d0e%ded,e#edf         de#edf         dededefd1„Z8 eej9        ¦  «         e¦   «         	 	 	 dIded2edz  dedz  dedef
d3„¦   «         ¦   «         Z: eej;        ¦  «         e¦   «         	 	 	 dIded2edz  dedz  dedef
d4„¦   «         ¦   «         Z< eej=        ¦  «         e¦   «         	 	 	 dIded2edz  dedz  dedef
d5„¦   «         ¦   «         Z> eej?        ¦  «         e¦   «         	 	 	 dIded2edz  dedz  dedef
d6„¦   «         ¦   «         Z@ G d7„ d8e¦  «        ZAd9e%ded2edz  dedz  deAf
d:„ZB eejC        ¦  «         e¦   «         	 	 	 dIded2edz  dedz  dedef
d;„¦   «         ¦   «         ZD eejE        ¦  «         e¦   «         	 	 	 dIded2edz  dedz  dedef
d<„¦   «         ¦   «         ZF eejG        ¦  «         e¦   «         	 	 	 dJded2edz  dedz  dedef
d>„¦   «         ¦   «         ZH eejI        ¦  «         e¦   «         	 	 	 dJded2edz  dedz  dedef
d?„¦   «         ¦   «         ZJ eejK        ¦  «         e¦   «         	 	 	 dJded2edz  dedz  dedef
d@„¦   «         ¦   «         ZL eejM        ¦  «         e¦   «         	 	 	 dJded2edz  dedz  dedef
dA„¦   «         ¦   «         ZN eejO        ¦  «         e¦   «         	 	 	 dJded2edz  dedz  dedef
dB„¦   «         ¦   «         ZP eejQ        ¦  «         e¦   «         	 	 	 dJded2edz  dedz  dedef
dC„¦   «         ¦   «         ZRdedz  d
edeSe         fdD„ZT eejU        ¦  «        dKdededz  defdE„¦   «         ZV eejW        ¦  «        dKdededz  defdF„¦   «         ZXdS )Lé    N)ÚIterableÚSequence)ÚLiteralÚ
NamedTuple)Úregister_decomposition)ÚDimsTypeÚ	ShapeTypeÚTensorLikeType)Ú_maybe_convert_to_dtypeÚout_wrapper)ÚfftÚfft2ÚfftnÚhfftÚhfft2ÚhfftnÚrfftÚrfft2ÚrfftnÚifftÚifft2ÚifftnÚihfftÚihfft2ÚihfftnÚirfftÚirfft2ÚirfftnÚfftshiftÚ	ifftshift)ÚforwardÚbackwardÚortho>   Nr#   r!   r"   ÚxÚnormÚsignal_numelr!   Úreturnc                 óÄ   ‡— t          j        ‰t          v ˆfd„¦  «         ‰dk    r| dt          j        |¦  «        z  z  S | r
‰du p‰dk    p|o‰dk    }|r| d|z  z  n| S )z3Apply normalization to the un-normalized FFT resultc                  ó   •— d‰ › �S )NzInvalid normalization mode: © )r%   s   €úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_refs/fft.pyú<lambda>z_apply_norm.<locals>.<lambda>/   s   ø€ Ð/TÈdÐ/TÐ/T€ ó    r#   é   Nr"   r!   )ÚtorchÚ_checkÚ_NORM_VALUESÚmathÚsqrt)r$   r%   r&   r!   Ú	normalizes    `   r+   Ú_apply_normr5   +   s”   ø€ õ 
„L��Ð%Ð'TÐ'TÐ'TÐ'TÑUÔUÐUàˆw‚€Ø�A�œ	 ,Ñ/Ô/Ñ/Ñ0Ð0à�ÐE $¨$ ,Ð"D°$¸*Ò2Dð ØÐ%�D˜IÒ%ð ð &/Ð5ˆ1��LÑ Ñ!Ð!°AÐ5r-   ÚdtypeÚrequire_complexÚdevicec                 ó2  ‡ — ‰ j         r‰ S ‰ j        st          j        ¦   «         Š t          j        t          j        g}|j        dv }|r|                     t          j        ¦  «         t          j	        ‰ |v ˆ fd„¦  «         |rt          j        ‰ ¦  «        Š ‰ S )z@Helper to promote a dtype to one supported by the FFT primitives)ÚcudaÚmetaÚxpuc                  ó   •— d‰ › �S )NzUnsupported dtype r*   ©r6   s   €r+   r,   z#_promote_type_fft.<locals>.<lambda>J   s   ø€ Ð1MÀeÐ1MÐ1M€ r-   )Ú
is_complexÚis_floating_pointr/   Úget_default_dtypeÚfloat32Úfloat64ÚtypeÚappendÚfloat16r0   ÚutilsÚcorresponding_complex_dtype)r6   r7   r8   Úallowed_typesÚmaybe_support_halfs   `    r+   Ú_promote_type_fftrK   :   s¨   ø€ ð Ôð Øˆð Ô"ð *ÝÔ'Ñ)Ô)ˆå”]¥E¤MÐ2€MØœÐ(?Ð?Ðàð ,Ø×Ò�Uœ]Ñ+Ô+Ð+Ý	„L�˜-Ð'Ð)MÐ)MÐ)MÐ)MÑNÔNÐNàð 9ÝÔ1°%Ñ8Ô8ˆà€Lr-   FÚtc                 ó\   — | j         }t          ||| j        ¦  «        }t          | |¦  «        S )zEHelper to promote a tensor to a dtype supported by the FFT primitives)r6   rK   r8   r   )rL   r7   Úcur_typeÚnew_types       r+   Ú_maybe_promote_tensor_fftrP   R   s.   € ð Œw€HÝ  ¨?¸A¼HÑEÔE€HÝ" 1 hÑ/Ô/Ð/r-   Údims.Úsizesc                 ó‚  — t          |¦  «        t          |¦  «        k    r/t          dt          |¦  «        › dt          |¦  «        › �¦  «        ‚d}| j        }dgt          |¦  «        z  dz  }t          t          |¦  «        ¦  «        D ]œ}||         dk    rŒ|||                  ||         k     r:d}t          |¦  «        d||         z  z
  dz
  }||         |||                  z
  ||<   |||                  ||         k    r#|                      ||         d||         ¦  «        } Œ�|rt          j        | |¦  «        n| S )	z‚
    Fixes the shape of x such that x.size(dims[i]) == sizes[i],
    either by zero-padding, or by slicing x starting from 0.
    z.dims and sizes must have the same length, got z and Fr   é   éÿÿÿÿTr.   )ÚlenÚAssertionErrorÚshapeÚrangeÚnarrowr/   Úconstant_pad_nd)r$   rQ   rR   Ú	must_copyÚx_sizesÚ
pad_amountÚiÚpad_idxs           r+   Ú_resize_fft_inputra   [   sH  € õ ˆ4�y„y•C˜‘J”JÒÐÝØY½SÀ¹Y¼YÐYÐYÍSÐQVÉZÌZÐYÐYñ
ô 
ð 	
ð €IØŒg€GØ�•s˜7‘|”|Ñ# aÑ'€JÝ•3�t‘9”9ÑÔð /ð /ˆØ�Œ8�rŠ>ˆ>Øà�4˜”7Ô˜e AœhÒ&Ð&ØˆIÝ˜*‘o”o¨¨D°¬G©Ñ3°aÑ7ˆGà"'¨¤(¨W°T¸!´WÔ-=Ñ"=ˆJ�wÑà�4˜”7Ô˜e AœhÒ&Ð&Ø—’˜˜aœ ! U¨1¤XÑ.Ô.ˆAøà3<ÐC�5Ô   JÑ/Ô/Ð/À!ÐCr-   Ú	func_nameÚinputÚnÚdimc                 ó|  ‡— t          |d¬¦  «        }t          j        |j        |d¬¦  «        f}|�|nd|j        |         dz
  z  Št          j        ‰dk    ˆfd„¦  «         |�t          ||‰dz  dz   f¬	¦  «        }|rt          j        |¦  «        }t          j
        ||‰¬
¦  «        }t          ||‰|¬¦  «        S )zBCommon code for performing any complex to real FFT (irfft or hfft)T©r7   F©Úwrap_scalarNrT   r.   c                  ó   •— d‰ › d�S ©NzInvalid number of data points (z) specifiedr*   ©Úlast_dim_sizes   €r+   r,   z_fft_c2r.<locals>.<lambda>‡   ó   ø€ ÐL°-ÐLÐLÐL€ r-   )rQ   rR   ©re   rm   ©r%   r&   r!   )rP   rG   Úcanonicalize_dimÚndimrX   r/   r0   ra   ÚconjÚprimsÚfft_c2rr5   )	rb   rc   rd   re   r%   r!   rQ   Úoutputrm   s	           @r+   Ú_fft_c2rrw   y   sæ   ø€ õ & e¸TÐBÑBÔB€EÝÔ" 5¤:¨sÀÐFÑFÔFÐH€DØ˜�A�A¨A°´¸SÔ1AÀAÑ1EÑ,F€MÝ	„LØ˜ÒØLÐLÐLÐLñô ð ð
 	€}Ý! %¨d¸=ÈAÑ;MÐPQÑ;QÐ:SÐTÑTÔTˆàð "Ý”
˜5Ñ!Ô!ˆåŒ]˜5 d¸-ÐHÑHÔH€FÝ�v D°}ÈgÐVÑVÔVÐVr-   Úonesidedc                 ó¬  ‡ ‡‡	— t          j        ‰j        j         ˆ ˆfd„¦  «         t	          ‰¦  «        Št          j        ‰j        |d¬¦  «        f}|�|n‰j        |         Š	t          j        ‰	dk    ˆ	fd„¦  «         |�t          ‰||f¦  «        Št          j        ‰||¬¦  «        }t          ||‰	|¦  «        }|r|nt          j        |¦  «        S )zBCommon code for performing any real to complex FFT (rfft or ihfft)c                  ó   •— ‰ › d‰j         › �S )Nz0 expects a floating point input tensor, but got r>   ©rb   rc   s   €€r+   r,   z_fft_r2c.<locals>.<lambda>    s   ø€ �9Ð[Ð[ÈeÌkÐ[Ð[€ r-   Frh   Nr.   c                  ó   •— d‰ › d�S rk   r*   ©Údim_sizes   €r+   r,   z_fft_r2c.<locals>.<lambda>¦   ó   ø€ ÐVÀÐVÐVÐV€ r-   ©re   rx   )r/   r0   r6   r?   rP   rG   rq   rr   rX   ra   rt   Úfft_r2cr5   rs   )
rb   rc   rd   re   r%   r!   rx   rQ   Úretr~   s
   ``       @r+   Ú_fft_r2crƒ   ”   sõ   øøø€ õ 
„LØŒKÔ"Ð"Ø[Ð[Ð[Ð[Ð[ñô ð õ & eÑ,Ô,€EÝÔ" 5¤:¨sÀÐFÑFÔFÐH€DØ�Mˆqˆq u¤{°3Ô'7€HÝ	„LØ�AŠÐVÐVÐVÐVñô ð ð 	€}Ý! %¨°¨tÑ4Ô4ˆå
Œ-˜ 4°(Ð
;Ñ
;Ô
;€CÝ
�c˜4 ¨7Ñ
3Ô
3€CØÐ.ˆ3ˆ3�uœz¨#™œÐ.r-   c                 ó\  ‡ ‡‡— t          j        ‰j        j        ˆ ˆfd„¦  «         t	          j        ‰j        |d¬¦  «        f}|�|n‰j        |         Št          j        ‰dk    ˆfd„¦  «         |�t          ‰||f¦  «        Št          j
        ‰||¬¦  «        }t          ||‰|¦  «        S )zCCommon code for performing any complex to complex FFT (fft or ifft)c                  ó   •— ‰ › d‰j         › �S ©Nz) expects a complex input tensor, but got r>   r{   s   €€r+   r,   z_fft_c2c.<locals>.<lambda>¼   s   ø€ �9ÐTÐTÀuÄ{ÐTÐT€ r-   Frh   Nr.   c                  ó   •— d‰ › d�S rk   r*   r}   s   €r+   r,   z_fft_c2c.<locals>.<lambda>Á   r   r-   ©re   r!   )r/   r0   r6   r?   rG   rq   rr   rX   ra   rt   Úfft_c2cr5   )	rb   rc   rd   re   r%   r!   rQ   r‚   r~   s	   ``      @r+   Ú_fft_c2crŠ   ±   sÏ   øøø€ õ 
„LØŒÔØTÐTÐTÐTÐTñô ð õ Ô" 5¤:¨sÀÐFÑFÔFÐH€DØ�Mˆqˆq u¤{°3Ô'7€HÝ	„LØ�AŠÐVÐVÐVÐVñô ð ð 	€}Ý! %¨°¨tÑ4Ô4ˆå
Œ-˜ 4°Ð
9Ñ
9Ô
9€CÝ�s˜D (¨GÑ4Ô4Ð4r-   rU   c           	      óp   — | j         j        rt          d| |||d¬¦  «        S t          d| |||dd¬¦  «        S )Nr   T©r!   F©r!   rx   ©r6   r?   rŠ   rƒ   ©rc   rd   re   r%   s       r+   r   r   Ë   sJ   € ð „{Ôð RÝ˜˜u a¨¨d¸DÐAÑAÔAÐAå˜˜u a¨¨d¸DÈ5ÐQÑQÔQÐQr-   c           	      óp   — | j         j        rt          d| |||d¬¦  «        S t          d| |||dd¬¦  «        S )Nr   FrŒ   r�   rŽ   r�   s       r+   r   r   Ù   sJ   € ð „{Ôð TÝ˜  q¨#¨t¸UÐCÑCÔCÐCå˜  q¨#¨t¸UÈUÐSÑSÔSÐSr-   c           	      ó.   — t          d| |||dd¬¦  «        S )Nr   Tr�   ©rƒ   r�   s       r+   r   r   ç   s!   € õ �F˜E 1 c¨4¸ÈÐMÑMÔMÐMr-   c                 ó,   — t          d| |||d¬¦  «        S )Nr   FrŒ   ©rw   r�   s       r+   r   r   ò   s   € õ �G˜U A s¨D¸%Ð@Ñ@Ô@Ð@r-   c                 ó,   — t          d| |||d¬¦  «        S )Nr   TrŒ   r”   r�   s       r+   r   r   ý   s   € õ �F˜E 1 c¨4¸Ð>Ñ>Ô>Ð>r-   c           	      ó.   — t          d| |||dd¬¦  «        S )Nr   FTr�   r’   r�   s       r+   r   r     s!   € õ �G˜U A s¨D¸%È$ÐOÑOÔOÐOr-   c                   óD   — e Zd ZU eedf         ed<   eedf         ed<   dS )Ú_ShapeAndDims.rX   rQ   N©Ú__name__Ú
__module__Ú__qualname__ÚtupleÚintÚ__annotations__r*   r-   r+   r˜   r˜     s:   € € € € € € Ø��c�Œ?ÐÐÑØ
��S�Œ/ÐÐÑÐÐr-   r˜   rX   c                 ó”  ‡‡‡‡— | j         Š| j        Š|�pt          |t          ¦  «        s|f}t	          j        ‰|d¬¦  «        }t          j        t          t          |¦  «        ¦  «        t          |¦  «        k    d„ ¦  «         |�Èt          |t          ¦  «        s|f}t          j        |du pt          |¦  «        t          |¦  «        k    d„ ¦  «         t          |¦  «        Št          j        ‰‰k    ˆˆfd„¦  «         |€ t          t          ‰‰z
  ‰¦  «        ¦  «        }t          ˆfd„t          ||¦  «        D ¦   «         ¦  «        }nI|€,t          t          ‰¦  «        ¦  «        }t          ‰¦  «        }nt          ˆfd„|D ¦   «         ¦  «        }|D ]Št          j        ‰d	k    ˆfd
„¦  «         Œt          ||¬¦  «        S )zTConvert the shape and dim arguments into a canonical form where neither are optionalNFrh   c                  ó   — dS )NzFFT dims must be uniquer*   r*   r-   r+   r,   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>&  s   € Ð9R€ r-   c                  ó   — dS )Nz=When given, dim and shape arguments must have the same lengthr*   r*   r-   r+   r,   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>0  s   € ÐS€ r-   c                  ó   •— d‰› d‰ › d�S )NzGot shape with z" values but input tensor only has z dimensions.r*   )Ú	input_dimÚtransform_ndims   €€r+   r,   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>6  s(   ø€ ð 0 nð 0ð 0Ø!ð0ð 0ð 0€ r-   c              3   ó>   •K  — | ]\  }}|d k    r|n‰|         V — ŒdS )rU   Nr*   )Ú.0ÚsÚdÚinput_sizess      €r+   ú	<genexpr>z7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>?  sK   øè è € ð 
ð 
á��Að �b’�ˆAˆA˜k¨!œnð
ð 
ð 
ð 
ð 
ð 
r-   c              3   ó(   •K  — | ]}‰|         V — Œd S ©Nr*   )r§   r©   rª   s     €r+   r«   z7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>I  s'   øè è € Ð;Ð;¨Q˜+ aœ.Ð;Ð;Ð;Ð;Ð;Ð;r-   r   c                  ó   •— d‰ › d�S rk   r*   )rd   s   €r+   r,   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>L  s   ø€ Ð$TÀaÐ$TÐ$TÐ$T€ r-   )rX   rQ   )rr   rX   Ú
isinstancer   rG   Úcanonicalize_dimsr/   r0   rV   Úsetr�   rY   Úzipr˜   )	rc   rX   re   Úret_dimsÚ	ret_shaper¤   rª   rd   r¥   s	        @@@@r+   Ú$_canonicalize_fft_shape_and_dim_argsrµ     s  øøøø€ ð ”
€IØ”+€Kà
€Ý˜#�xÑ(Ô(ð 	Ø�&ˆCÝÔ*¨9°cÀuÐMÑMÔMˆõ 	ŒÝ•�H‘”ÑÔ¥# h¡-¤-Ò/Ð1RÐ1Rñ	
ô 	
ð 	
ð ÐÝ˜%¥Ñ*Ô*ð 	Ø�HˆEõ 	ŒØ�4ˆKÐ1�3˜s™8œ8¥s¨5¡z¤zÒ1ØSÐSñ	
ô 	
ð 	
õ ˜U™œˆåŒØ˜iÒ'ð0ð 0ð 0ð 0ð 0ñ	
ô 	
ð 	
ð ˆ;Ý�U 9¨~Ñ#=¸yÑIÔIÑJÔJˆHõ ð 
ð 
ð 
ð 
å˜e XÑ.Ô.ð
ñ 
ô 
ñ 
ô 
ˆ	ˆ	ð 
ˆå�˜yÑ)Ô)Ñ*Ô*ˆÝ˜+Ñ&Ô&ˆ	ˆ	õ Ð;Ð;Ð;Ð;°(Ð;Ñ;Ô;Ñ;Ô;ˆ	àð Vð VˆÝŒ�Q˜’UÐTÐTÐTÐTÑUÔUÐUÐUå˜y¨xÐ8Ñ8Ô8Ð8r-   Úxsc                 ó   — d}| D ]}||z  }Œ|S )zCompute product of a listr.   r*   )r¶   Úprodr$   s      r+   Ú_prodr¹   Q  s&   € à€DØð ð ˆØ�‰	ˆˆØ€Kr-   Úfunction_namec                 óÜ   ‡ ‡— t          j        ‰j        j        ˆ ˆfd„¦  «         t	          ‰||¦  «        }t          j        |||¬¦  «        }t          ||t          |¦  «        |¬¦  «        S )zECommon code for n-dimensional complex to complex FFTs (fftn or ifftn)c                  ó   •— ‰ › d‰j         › �S r†   r>   )rº   rc   s   €€r+   r,   z_fftn_c2c.<locals>.<lambda>d  s    ø€ �=ð !ð !Ø”;ð!ð !€ r-   rˆ   rp   )	r/   r0   r6   r?   ra   rt   r‰   r5   r¹   )rº   rc   rX   re   r%   r!   r$   rv   s   ``      r+   Ú	_fftn_c2cr½   Y  s�   øø€ õ 
„LØŒÔð	!ð 	!ð 	!ð 	!ð 	!ñô ð õ
 	˜%  eÑ,Ô,€AÝŒ]˜1 #¨wÐ7Ñ7Ô7€FÝ�v Dµu¸U±|´|ÈWÐUÑUÔUÐUr-   r¨   c                 óv   — t          | ||¦  «        \  }}t          | d¬¦  «        }t          d||||d¬¦  «        S )NTrg   r   rŒ   ©rµ   rP   r½   ©rc   r¨   re   r%   rX   r$   s         r+   r   r   l  sF   € õ 8¸¸qÀ#ÑFÔF�L€UˆCÝ! %¸Ð>Ñ>Ô>€AÝ�V˜Q  s¨D¸$Ð?Ñ?Ô?Ð?r-   c                 óv   — t          | ||¦  «        \  }}t          | d¬¦  «        }t          d||||d¬¦  «        S )NTrg   r   FrŒ   r¿   rÀ   s         r+   r   r   y  sF   € õ 8¸¸qÀ#ÑFÔF�L€UˆCÝ! %¸Ð>Ñ>Ô>€AÝ�W˜a ¨¨T¸5ÐAÑAÔAÐAr-   c                 ó$  ‡ — t          j        ‰ j        j         ˆ fd„¦  «         t	          ‰ ||¦  «        \  }}t          ‰ d¬¦  «        Š t          ‰ ||¦  «        Š t          j        ‰ |d¬¦  «        }t          ||t          |¦  «        d¬¦  «        S )Nc                  ó   •— d‰ j         › �S )Nz2rfftn expects a real-valued input tensor, but got r>   ©rc   s   €r+   r,   zrfftn.<locals>.<lambda>�  s   ø€ ÐRÀUÄ[ÐRÐR€ r-   Frg   Tr€   rp   )r/   r0   r6   r?   rµ   rP   ra   rt   r�   r5   r¹   )rc   r¨   re   r%   rX   Úouts   `     r+   r   r   †  s�   ø€ õ 
„LØŒKÔ"Ð"ØRÐRÐRÐRñô ð õ 6°e¸QÀÑDÔD�J€Eˆ3Ý% e¸UÐCÑCÔC€EÝ˜e S¨%Ñ0Ô0€EÝ
Œ-˜ 3°Ð
6Ñ
6Ô
6€CÝ�s µE¸%±L´LÈ$ÐOÑOÔOÐOr-   c                 óh  ‡ — t          j        ‰ j        j         ˆ fd„¦  «         t	          ‰ ||¦  «        \  }}t          j        t          |¦  «        dk    d„ ¦  «         t          ‰ d¬¦  «        Š t          ‰ ||¦  «        Š t          j	        ‰ |dd …         d¬¦  «        }t          |¦  «        d	k    r-t          |||d         d¬
¦  «        }t          j        |¦  «        S t          j        |¦  «        }t          j        ||d d…         d¬¦  «        }t          ||t          |¦  «        d¬
¦  «        S )Nc                  ó   •— d‰ j         › �S )Nz3ihfftn expects a real-valued input tensor, but got r>   rÄ   s   €r+   r,   zihfftn.<locals>.<lambda>£  s   ø€ ÐSÀeÄkÐSÐS€ r-   r   c                  ó   — dS )Nz'ihfftn must transform at least one axisr*   r*   r-   r+   r,   zihfftn.<locals>.<lambda>¦  s   € Ð)R€ r-   Frg   rU   Tr€   r.   rp   rˆ   )r/   r0   r6   r?   rµ   rV   rP   ra   rt   r�   r5   rs   Úconj_physicalr‰   r¹   )rc   r¨   re   r%   rX   Útmps   `     r+   r   r   ™  s*  ø€ õ 
„LØŒKÔ"Ð"ØSÐSÐSÐSñô ð õ 6°e¸QÀÑDÔD�J€Eˆ3Ý	„L•�U‘”˜a’Ð!RÐ!RÑSÔSÐSÝ% e¸UÐCÑCÔC€EÝ˜e S¨%Ñ0Ô0€Eå
Œ-˜ 3 r s s¤8°dÐ
;Ñ
;Ô
;€Cå
ˆ3�x„x�1‚}€}Ý˜# D°u¸Q´xÈÐOÑOÔOˆÝŒz˜#‰ŒÐå
Ô
˜cÑ
"Ô
"€CÝ
Œ-˜  S b S¤°5Ð
9Ñ
9Ô
9€CÝ�s µE¸%±L´LÈ%ÐPÑPÔPÐPr-   c                   óN   — e Zd ZU eedf         ed<   eedf         ed<   eed<   dS )Ú_CanonicalizeC2rReturn.rX   re   rm   Nr™   r*   r-   r+   rÌ   rÌ   µ  sF   € € € € € € Ø��c�Œ?ÐÐÑØ	ˆs�CˆxŒÐÐÑØÐÐÑÐÐr-   rÌ   Úfnamec                 óŠ  ‡ ‡— t          |||¦  «        \  }}t          j        t          |¦  «        dk    ˆ fd„¦  «         |�|d         dk    rd|j        |d                  dz
  z  Šn|d         Št          j        ‰dk    ˆfd„¦  «         t          |¦  «        }‰dz  dz   |d<   t          t          |¦  «        |‰¬¦  «        S )	zšCanonicalize shape and dim arguments for n-dimensional c2r transforms,
    as well as calculating the last_dim_size which is shape[dim[-1]] for the outputr   c                  ó   •— ‰ › d�S )Nz! must transform at least one axisr*   )rÍ   s   €r+   r,   z:_canonicalize_fft_c2r_shape_and_dim_args.<locals>.<lambda>Ä  s   ø€ ¨EÐ)TÐ)TÐ)T€ r-   NrU   rT   r.   c                  ó   •— d‰ › d�S rk   r*   rl   s   €r+   r,   z:_canonicalize_fft_c2r_shape_and_dim_args.<locals>.<lambda>Í  rn   r-   )rX   re   rm   )rµ   r/   r0   rV   rX   ÚlistrÌ   r�   )rÍ   rc   r¨   re   rX   Ú
shape_listrm   s   `     @r+   Ú(_canonicalize_fft_c2r_shape_and_dim_argsrÓ   »  så   øø€ õ 8¸¸qÀ#ÑFÔF�L€UˆCÝ	„L•�U‘”˜a’Ð!TÐ!TÐ!TÐ!TÑUÔUÐUà€y�A�b”E˜R’K�KØ˜Uœ[¨¨R¬Ô1°AÑ5Ñ6ˆˆà˜bœ	ˆå	„LØ˜ÒØLÐLÐLÐLñô ð õ
 �e‘”€JØ" aÑ'¨!Ñ+€Jˆr�NÝ!Ý�JÑÔ S¸ðñ ô ð r-   c                 óú   ‡— t          d| ||¦  «        \  }}}t          | d¬¦  «        } t          | ||¦  «        } t          j        | ||¬¦  «        Št          ‰|t          ˆfd„|D ¦   «         ¦  «        d¬¦  «        S )Nr   Trg   ro   c              3   ó2   •K  — | ]}‰j         |         V — Œd S r­   ©rX   )r§   r©   rÅ   s     €r+   r«   zirfftn.<locals>.<genexpr>å  s)   øè è € Ð'BÐ'B¸¨¬	°!¬Ð'BÐ'BÐ'BÐ'BÐ'BÐ'Br-   FrŒ   )rÓ   rP   ra   rt   ru   r5   r¹   )rc   r¨   re   r%   rX   rm   rÅ   s         @r+   r   r   ×  s”   ø€ õ !IØ�%˜˜Cñ!ô !Ñ€Eˆ3�õ & e¸TÐBÑBÔB€EÝ˜e S¨%Ñ0Ô0€EÝ
Œ-˜ 3°mÐ
DÑ
DÔ
D€CÝ�s˜D¥%Ð'BÐ'BÐ'BÐ'B¸cÐ'BÑ'BÔ'BÑ"BÔ"BÈEÐRÑRÔRÐRr-   c           	      ó¶  — t          d| ||¦  «        \  }}}t          | d¬¦  «        } t          | ||¦  «        } t          |¦  «        dk    rt	          j        | |d d…         d¬¦  «        n| }t          ||t          |d d…         ¦  «        d¬¦  «        }t	          j        |¦  «        }t	          j	        ||dd …         |¬¦  «        }t          |||d¬¦  «        S )	Nr   Trg   r.   rU   rˆ   rŒ   ro   )
rÓ   rP   ra   rV   rt   r‰   r5   r¹   rÉ   ru   )rc   r¨   re   r%   rX   rm   rÊ   rÅ   s           r+   r   r   è  sæ   € õ !IØ�˜˜3ñ!ô !Ñ€Eˆ3�õ & e¸TÐBÑBÔB€EÝ˜e S¨%Ñ0Ô0€Eå>AÀ#¹h¼hÈºl¸l�%Œ-˜ 3 s¨ s¤8°TÐ
:Ñ
:Ô
:Ð
:ÐPU€CÝ
�c˜4¥ u¨S¨b¨S¤zÑ!2Ô!2¸DÐ
AÑ
AÔ
A€CÝ
Ô
˜cÑ
"Ô
"€CÝ
Œ-˜  R S S¤¸Ð
GÑ
GÔ
G€CÝ�s˜D -¸Ð>Ñ>Ô>Ð>r-   ©éþÿÿÿrU   c                 óH   — t           j                             | |||¬¦  «        S ©N)r¨   re   r%   )r/   r   r   ©rc   r¨   re   r%   s       r+   r   r   ý  s    € õ Œ9�>Š>˜% 1¨#°Dˆ>Ñ9Ô9Ð9r-   c                 óH   — t           j                             | |||¬¦  «        S rÛ   )r/   r   r   rÜ   s       r+   r   r     ó    € õ Œ9�?Š?˜5 A¨3°Tˆ?Ñ:Ô:Ð:r-   c                 óH   — t           j                             | |||¬¦  «        S rÛ   )r/   r   r   rÜ   s       r+   r   r     rÞ   r-   c                 óH   — t           j                             | |||¬¦  «        S rÛ   )r/   r   r   rÜ   s       r+   r   r     ó#   € õ Œ9×Ò˜E Q¨C°dÐÑ;Ô;Ð;r-   c                 óH   — t           j                             | |||¬¦  «        S rÛ   )r/   r   r   rÜ   s       r+   r   r   )  rÞ   r-   c                 óH   — t           j                             | |||¬¦  «        S rÛ   )r/   r   r   rÜ   s       r+   r   r   4  rá   r-   c                 ó–   — | €!t          t          |j        ¦  «        ¦  «        S t          | t          ¦  «        s| gS t          | ¦  «        S )zIConvert Optional[DimsType] to a simple list, defaulting to all dimensions)rÑ   rY   rr   r¯   r   )re   r$   s     r+   Ú_default_alldimsrå   ?  sB   € à
€{Ý•E˜!œ&‘M”MÑ"Ô"Ð"Ý˜�XÑ&Ô&ð Øˆuˆå�C‰yŒyÐr-   c                 ól   ‡ — t          |‰ ¦  «        }ˆ fd„|D ¦   «         }t          j        ‰ ||¦  «        S )Nc                 ó0   •— g | ]}‰j         |         d z  ‘ŒS )rT   rÖ   ©r§   r©   rc   s     €r+   ú
<listcomp>zfftshift.<locals>.<listcomp>L  s$   ø€ Ð/Ð/Ð/ QˆUŒ[˜Œ^˜qÑ Ð/Ð/Ð/r-   ©rå   r/   Úroll©rc   re   rQ   Úshifts   `   r+   r   r   I  s?   ø€ å˜C Ñ'Ô'€DØ/Ð/Ð/Ð/¨$Ð/Ñ/Ô/€EÝŒ:�e˜U DÑ)Ô)Ð)r-   c                 ól   ‡ — t          |‰ ¦  «        }ˆ fd„|D ¦   «         }t          j        ‰ ||¦  «        S )Nc                 ó6   •— g | ]}‰j         |         d z   dz  ‘ŒS )r.   rT   rÖ   rè   s     €r+   ré   zifftshift.<locals>.<listcomp>S  s)   ø€ Ð5Ð5Ð5¨1ˆeŒk˜!Œn˜qÑ  QÑ&Ð5Ð5Ð5r-   rê   rì   s   `   r+   r    r    P  s?   ø€ å˜C Ñ'Ô'€DØ5Ð5Ð5Ð5°Ð5Ñ5Ô5€EÝŒ:�e˜U DÑ)Ô)Ð)r-   )F)NrU   N)NNN)NrØ   Nr­   )Yr2   Úcollections.abcr   r   Útypingr   r   r/   Útorch._primsÚ_primsrt   Útorch._prims_commonÚ_prims_commonrG   Útorch._decompr   r   r	   r
   Útorch._prims_common.wrappersr   r   Ú__all__ÚNormTyper1   Ú_opsÚopsÚatenrž   Úboolr5   r6   r8   rK   rP   r�   ra   Ústrrw   rƒ   rŠ   Úfft_fftr   Úfft_ifftr   Úfft_rfftr   Ú	fft_irfftr   Úfft_hfftr   Ú	fft_ihfftr   r˜   rµ   r¹   r½   Úfft_fftnr   Ú	fft_ifftnr   Ú	fft_rfftnr   Ú
fft_ihfftnr   rÌ   rÓ   Ú
fft_irfftnr   Ú	fft_hfftnr   Úfft_fft2r   Ú	fft_ifft2r   Ú	fft_rfft2r   Ú
fft_irfft2r   Ú	fft_hfft2r   Ú
fft_ihfft2r   rÑ   rå   Úfft_fftshiftr   Úfft_ifftshiftr    r*   r-   r+   ú<module>r     sñ  ðØ €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à €€€Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mðð ð €ð2 �'Ð8Ô9Ñ9€Ø5Ð5Ð5€Ø„z„~Ô€ð6Øð6Ø%ð6Ø58ð6ØCGð6àð6ð 6ð 6ð 6ðØŒ;ðØ)-ðØ7<´|ðà
„[ðð ð ð ð2 05ð0ð 0Øð0Ø(,ð0àð0ð 0ð 0ð 0ðDØðDØ" 3¨ 8œ_ðDØ5:¸3À¸8´_ðDàðDð Dð Dð Dð<WØðWàðWð ˆT�zðWð 
ð	Wð
 ðWð ðWð ðWð Wð Wð Wð6/Øð/àð/ð ˆT�zð/ð 
ð	/ð
 ð/ð ð/ð ð/ð ð/ð /ð /ð /ð:5Øð5àð5ð ˆT�zð5ð 
ð	5ð
 ð5ð ð5ð ð5ð 5ð 5ð 5ð4 Ð˜œÑ%Ô%Ø€�„ð ØØð		Rð 	RØð	Rà
ˆT�zð	Rð 
ð	Rð ð		Rð
 ð	Rð 	Rð 	Rñ „ñ &Ô%ð	Rð Ð˜œÑ&Ô&Ø€�„ð ØØð		Tð 	TØð	Tà
ˆT�zð	Tð 
ð	Tð ð		Tð
 ð	Tð 	Tð 	Tñ „ñ 'Ô&ð	Tð Ð˜œÑ&Ô&Ø€�„ð ØØð	Nð NØðNà
ˆT�zðNð 
ðNð ð	Nð
 ðNð Nð Nñ „ñ 'Ô&ðNð Ð˜œÑ'Ô'Ø€�„ð ØØð	Að AØðAà
ˆT�zðAð 
ðAð ð	Að
 ðAð Að Añ „ñ (Ô'ðAð Ð˜œÑ&Ô&Ø€�„ð ØØð	?ð ?Øð?à
ˆT�zð?ð 
ð?ð ð	?ð
 ð?ð ?ð ?ñ „ñ 'Ô&ð?ð Ð˜œÑ'Ô'Ø€�„ð ØØð	Pð PØðPà
ˆT�zðPð 
ðPð ð	Pð
 ðPð Pð Pñ „ñ (Ô'ðPðð ð ð ð �Jñ ô ð ð
69Øð69Ø"+¨dÑ"2ð69Ø9AÀD¹ð69àð69ð 69ð 69ð 69ðrˆh�sŒmð  ð ð ð ð ðVØðVàðVð ��c�Œ?ðVð 
ˆs�CˆxŒð	Vð
 ðVð ðVð ðVð Vð Vð Vð& Ð˜œÑ&Ô&Ø€�„ð ØØð	@ð @Øð@à�4Ñð@ð 
�D‰ð@ð ð	@ð
 ð@ð @ð @ñ „ñ 'Ô&ð@ð Ð˜œÑ'Ô'Ø€�„ð ØØð	Bð BØðBà�4ÑðBð 
�D‰ðBð ð	Bð
 ðBð Bð Bñ „ñ (Ô'ðBð Ð˜œÑ'Ô'Ø€�„ð ØØð	Pð PØðPà�4ÑðPð 
�D‰ðPð ð	Pð
 ðPð Pð Pñ „ñ (Ô'ðPð" Ð˜œÑ(Ô(Ø€�„ð ØØð	Qð QØðQà�4ÑðQð 
�D‰ðQð ð	Qð
 ðQð Qð Qñ „ñ )Ô(ðQð4ð ð ð ð ˜Zñ ô ð ðØðàðð �4Ñðð 
�D‰ð	ð
 ðð ð ð ð8 Ð˜œÑ(Ô(Ø€�„ð ØØð	Sð SØðSà�4ÑðSð 
�D‰ðSð ð	Sð
 ðSð Sð Sñ „ñ )Ô(ðSð Ð˜œÑ'Ô'Ø€�„ð ØØð	?ð ?Øð?à�4Ñð?ð 
�D‰ð?ð ð	?ð
 ð?ð ?ð ?ñ „ñ (Ô'ð?ð& Ð˜œÑ&Ô&Ø€�„ð Ø#Øð	:ð :Øð:à�4Ñð:ð 
�D‰ð:ð ð	:ð
 ð:ð :ð :ñ „ñ 'Ô&ð:ð Ð˜œÑ'Ô'Ø€�„ð Ø#Øð	;ð ;Øð;à�4Ñð;ð 
�D‰ð;ð ð	;ð
 ð;ð ;ð ;ñ „ñ (Ô'ð;ð Ð˜œÑ'Ô'Ø€�„ð Ø#Øð	;ð ;Øð;à�4Ñð;ð 
�D‰ð;ð ð	;ð
 ð;ð ;ð ;ñ „ñ (Ô'ð;ð Ð˜œÑ(Ô(Ø€�„ð Ø#Øð	<ð <Øð<à�4Ñð<ð 
�D‰ð<ð ð	<ð
 ð<ð <ð <ñ „ñ )Ô(ð<ð Ð˜œÑ'Ô'Ø€�„ð Ø#Øð	;ð ;Øð;à�4Ñð;ð 
�D‰ð;ð ð	;ð
 ð;ð ;ð ;ñ „ñ (Ô'ð;ð Ð˜œÑ(Ô(Ø€�„ð Ø#Øð	<ð <Øð<à�4Ñð<ð 
�D‰ð<ð ð	<ð
 ð<ð <ð <ñ „ñ )Ô(ð<ð˜( T™/ð ¨nð ÀÀcÄð ð ð ð ð Ð˜Ô)Ñ*Ô*ð*ð *�Nð *¨°D©ð *ÀNð *ð *ð *ñ +Ô*ð*ð Ð˜Ô*Ñ+Ô+ð*ð *�^ð *¨(°T©/ð *À^ð *ð *ð *ñ ,Ô+ð*ð *ð *r-   