Ë
    L²j3F  ã                   ó  — 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j2                  j4                  j6                  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!	 dDd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jR                  «       e«       	 	 	 dEdededz  dededef
d"„«       «       Z* eejV                  «       e«       	 	 	 dEdededz  dededef
d#„«       «       Z, eejZ                  «       e«       	 	 	 dEdededz  dededef
d$„«       «       Z. eej^                  «       e«       	 	 	 dEdededz  dededef
d%„«       «       Z0 eejb                  «       e«       	 	 	 dEdededz  dededef
d&„«       «       Z2 eejf                  «       e«       	 	 	 dEd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-„Z7d.e%ded*e#edf   de#edf   dededefd/„Z8 eejr                  «       e«       	 	 	 dFded0edz  dedz  dedef
d1„«       «       Z: eejv                  «       e«       	 	 	 dFded0edz  dedz  dedef
d2„«       «       Z< eejz                  «       e«       	 	 	 dFded0edz  dedz  dedef
d3„«       «       Z> eej~                  «       e«       	 	 	 dFded0edz  dedz  dedef
d4„«       «       Z@ G d5„ d6e«      ZAd7e%ded0edz  dedz  deAf
d8„ZB eej†                  «       e«       	 	 	 dFded0edz  dedz  dedef
d9„«       «       ZD eejŠ                  «       e«       	 	 	 dFded0edz  dedz  dedef
d:„«       «       ZF eejŽ                  «       e«       	 	 	 dGded0edz  dedz  dedef
d;„«       «       ZH eej’                  «       e«       	 	 	 dGded0edz  dedz  dedef
d<„«       «       ZJ eej–                  «       e«       	 	 	 dGded0edz  dedz  dedef
d=„«       «       ZL eejš                  «       e«       	 	 	 dGded0edz  dedz  dedef
d>„«       «       ZN eejž                  «       e«       	 	 	 dGded0edz  dedz  dedef
d?„«       «       ZP eej¢                  «       e«       	 	 	 dGded0edz  dedz  dedef
d@„«       «       ZRdedz  d
edeSe   fdA„ZT eejª                  «      dHdededz  defdB„«       ZV eej®                  «      dHdededz  defdC„«       ZXy)Ié    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 | xr ‰du xs ‰dk(  xs	 |xr ‰dk(  }|r| d|z  z  S | S )z3Apply normalization to the un-normalized FFT resultc                  ó   •— d‰ › �S )NzInvalid normalization mode: © )r%   s   €úN/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_refs/fft.pyú<lambda>z_apply_norm.<locals>.<lambda>/   s   ø€ Ð1MÈdÈVÐ/T€ ó    r#   é   Nr"   r!   )ÚtorchÚ_checkÚ_NORM_VALUESÚmathÚsqrt)r$   r%   r&   r!   Ú	normalizes    `   r+   Ú_apply_normr5   +   s�   ø€ ô 
‡L�L�œÐ%Ó'TÔUàˆw‚Ø�AœŸ	™	 ,Ó/Ñ/Ñ0Ð0à�ÒE $¨$ ,Ò"D°$¸*Ñ2Dò ØÒ%�D˜IÑ%ð ñ &/ˆ1��LÑ Ñ!Ð5°AÐ5r-   ÚdtypeÚrequire_complexÚdevicec                 óf  ‡ — ‰ j                   r‰ S ‰ j                  st        j                  «       Š t        j                  t        j
                  g}|j                  dv }|r|j                  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   ø€ Ð3EÀeÀWÐ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¡MÐ2€MØŸ™Ð(?Ð?ÐáØ×ÑœUŸ]™]Ô+Ü	‡L�L�˜-Ð'Ó)MÔNáÜ×1Ñ1°%Ó8ˆà€Lr-   Ú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‰w€HÜ  ¨?¸A¿H¹HÓE€HÜ" 1 hÓ/Ð/r-   Údims.Úsizesc                 óî  — t        |«      t        |«      k7  r#t        dt        |«      › dt        |«      › �«      ‚d}| j                  }dgt        |«      z  dz  }t        t        |«      «      D ]k  }||   dk(  rŒ|||      ||   k  r*d}t        |«      d||   z  z
  dz
  }||   |||      z
  ||<   |||      ||   kD  sŒS| j	                  ||   d||   «      } Œm |rt        j                  | |«      S | 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   [   s!  € ô ˆ4ƒy”C˜“JÒÜØ<¼SÀ»Y¸KÀuÌSÐQVËZÈLÐYó
ð 	
ð €IØ�g‰g€GØ�”s˜7“|Ñ# aÑ'€JÜ”3�t“9Óò /ˆØ�‰8�rŠ>Øà�4˜‘7Ñ˜e A™hÒ&ØˆIÜ˜*“o¨¨D°©G©Ñ3°aÑ7ˆGà"'¨¡(¨W°T¸!±WÑ-=Ñ"=ˆJ�wÑà�4˜‘7Ñ˜e A™hÓ&Ø—‘˜˜a™ ! U¨1¡XÓ.‰Að/ñ 4=Œ5× Ñ   JÓ/ÐCÀ!ÐCr-   Ú	func_nameÚinputÚnÚdimc                 óx  ‡— 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_scalarrT   r.   c                  ó   •— d‰ › d�S ©NzInvalid number of data points (z) specifiedr*   ©Úlast_dim_sizes   €r+   r,   z_fft_c2r.<locals>.<lambda>‡   ó   ø€ Ð1°-°ÀÐ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€EÜ×"Ñ" 5§:¡:¨sÀÔFÐH€DØ˜‘A¨A°·±¸SÑ1AÀAÑ1EÑ,F€MÜ	‡L�LØ˜ÑÛLôð
 	€}Ü! %¨d¸=ÈAÑ;MÐPQÑ;QÐ:SÔTˆáÜ—
‘
˜5Ó!ˆä�]‰]˜5 d¸-ÔH€FÜ�v D°}ÈgÔ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|S 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�+ÐMÈeÏkÉkÈ]Ð[€ r-   Frh   r.   c                  ó   •— d‰ › d�S rk   r*   ©Údim_sizes   €r+   r,   z_fft_r2c.<locals>.<lambda>¦   ó   ø€ Ð!@ÀÀ
È+Ð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�LØ�K‰K×"Ñ"Ð"Ü[ôô & eÓ,€EÜ×"Ñ" 5§:¡:¨sÀÔFÐH€DØ�M‰q u§{¡{°3Ñ'7€HÜ	‡L�LØ�A‰ÓVôð 	€}Ü! %¨°¨tÓ4ˆä
�-‰-˜ 4°(Ô
;€CÜ
�c˜4 ¨7Ó
3€CÙˆ3Ð.œuŸz™z¨#›Ð.r-   c                 ót  ‡ ‡‡— 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�+ÐFÀuÇ{Á{ÀmÐT€ r-   Frh   r.   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�LØ�‰×ÑÜTôô ×"Ñ" 5§:¡:¨sÀÔFÐH€DØ�M‰q u§{¡{°3Ñ'7€HÜ	‡L�LØ�A‰ÓVôð 	€}Ü! %¨°¨tÓ4ˆä
�-‰-˜ 4°Ô
9€CÜ�s˜D (¨GÓ4Ð4r-   c           	      ót   — | 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   Ë   s=   € ð ‡{�{×ÒÜ˜˜u a¨¨d¸DÔAÐAä˜˜u a¨¨d¸DÈ5ÔQÐQr-   c           	      ót   — | j                   j                  rt        d| |||d¬«      S t        d| |||dd¬«      S )Nr   FrŒ   r�   rŽ   r�   s       r+   r   r   Ù   s=   € ð ‡{�{×ÒÜ˜  q¨#¨t¸UÔCÐCä˜  q¨#¨t¸UÈUÔSÐSr-   c           	      ó&   — t        d| |||dd¬«      S )Nr   Tr�   ©rƒ   r�   s       r+   r   r   ç   s   € ô �F˜E 1 c¨4¸ÈÔ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ÐOr-   c                   ó6   — e Zd ZU eedf   ed<   eedf   ed<   y)Ú_ShapeAndDims.rX   rQ   N©Ú__name__Ú
__module__Ú__qualname__ÚtupleÚintÚ__annotations__r*   r-   r+   r˜   r˜     s   … Ø��c�‰?ÓØ
��S�‰/Ôr-   r˜   rX   c                 ó  ‡‡‡‡— | j                   Š| j                  Š|�`t        |t        «      s|f}t	        j
                  ‰|d¬«      }t        j                  t        t        |«      «      t        |«      k(  d„ «       |�¦t        |t        «      s|f}t        j                  |du xs t        |«      t        |«      k(  d„ «       t        |«      Št        j                  ‰‰k  ˆˆfd„«       |€t        t        ‰‰z
  ‰«      «      }t        ˆfd„t        |«      D «       «      }n6|€ t        t        ‰«      «      }t        ‰«      }nt        ˆfd„D «       «      }|D ]  Št        j                  ‰d	kD  ˆfd
„«       Œ  t        ||¬«      S )zTConvert the shape and dim arguments into a canonical form where neither are optionalNFrh   c                   ó   — y)NzFFT dims must be uniquer*   r*   r-   r+   r,   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>&  ó   � r-   c                   ó   — y)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  r¢   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   ø€ �o nÐ%5ð 6Ø!�{ ,ð0€ r-   c              3   ó<   •K  — | ]  \  }}|d k7  r|n‰|   –— Œ y­w)rU   Nr*   )Ú.0ÚsÚdÚinput_sizess      €r+   ú	<genexpr>z7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>?  s,   øè ø€ ò 
á��Að �b’‰A˜k¨!™nÓ,ñ
ùó   ƒc              3   ó(   •K  — | ]	  }‰|   –— Œ y ­w©Nr*   )r¨   rª   r«   s     €r+   r¬   z7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>I  s   øè ø€ Ò;¨Q˜+ a�.Ñ;ùs   ƒr   c                  ó   •— d‰ › d�S rk   r*   )rd   s   €r+   r,   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>L  s   ø€ Ð&EÀaÀSÈÐ$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·     sp  û€ ð —
‘
€IØ—+‘+€Kà
€Ü˜#œxÔ(Ø�&ˆCÜ×*Ñ*¨9°cÀuÔMˆô 	�‰Ü”�H“Ó¤# h£-Ñ/Ñ1Rô	
ð ÐÜ˜%¤Ô*Ø�HˆEô 	�‰Ø�4ˆKÒ1œ3˜s›8¤s¨5£zÑ1ÙSô	
ô ˜U›ˆä�‰Ø˜iÑ'ô0ô	
ð ˆ;ÜœU 9¨~Ñ#=¸yÓIÓJˆHô ó 
ä˜e XÓ.ô
ó 
‰	ð 
ˆäœ˜yÓ)Ó*ˆÜ˜+Ó&‰	ô Ó;°(Ô;Ó;ˆ	àò VˆÜ�‰�Q˜‘UÓTÕUðVô ˜y¨xÔ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  sZ   ù€ ô 
‡L�LØ�‰×Ñô	!ôô
 	˜%  eÓ,€AÜ�]‰]˜1 #¨wÔ7€FÜ�v D´u¸U³|ÈWÔUÐUr-   r©   c                 ó^   — t        | ||«      \  }}t        | d¬«      }t        d||||d¬«      S )NTrg   r   rŒ   ©r·   rP   r¿   ©rc   r©   re   r%   rX   r$   s         r+   r   r   l  s7   € ô 8¸¸qÀ#ÓF�L€UˆCÜ! %¸Ô>€AÜ�V˜Q  s¨D¸$Ô?Ð?r-   c                 ó^   — t        | ||«      \  }}t        | d¬«      }t        d||||d¬«      S )NTrg   r   FrŒ   rÁ   rÂ   s         r+   r   r   y  s7   € ô 8¸¸qÀ#ÓF�L€UˆCÜ! %¸Ô>€AÜ�W˜a ¨¨T¸5Ô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   ø€ ÐDÀUÇ[Á[ÀMÐ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   †  sy   ø€ ô 
‡L�LØ�K‰K×"Ñ"Ð"ÛRôô 6°e¸QÀÓD�J€Eˆ3Ü% e¸UÔC€EÜ˜e S¨%Ó0€EÜ
�-‰-˜ 3°Ô
6€CÜ�s ´E¸%³LÈ$ÔOÐOr-   c                 ó*  ‡ — t        j                  ‰ j                  j                   ˆ fd„«       t	        ‰ ||«      \  }}t        j                  t        |«      dkD  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   ø€ ÐEÀeÇkÁkÀ]ÐS€ r-   r   c                   ó   — y)Nz'ihfftn must transform at least one axisr*   r*   r-   r+   r,   zihfftn.<locals>.<lambda>¦  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�LØ�K‰K×"Ñ"Ð"ÛSôô 6°e¸QÀÓD�J€Eˆ3Ü	‡L�L”�U“˜a‘Ñ!RÔSÜ% e¸UÔC€EÜ˜e S¨%Ó0€Eä
�-‰-˜ 3 r s 8°dÔ
;€Cä
ˆ3ƒx�1‚}Ü˜# D°u¸Q±xÈÔOˆÜ�z‰z˜#‹Ðä
×
Ñ
˜cÓ
"€CÜ
�-‰-˜  S b °5Ô
9€CÜ�s ´E¸%³LÈ%ÔPÐPr-   c                   ó@   — e Zd ZU eedf   ed<   eedf   ed<   eed<   y)Ú_CanonicalizeC2rReturn.rX   re   rm   Nr™   r*   r-   r+   rÎ   rÎ   µ  s$   … Ø��c�‰?ÓØ	ˆs�Cˆx‰ÓØÔr-   rÎ   Úfnamec                 óR  ‡ ‡— t        |||«      \  }}t        j                  t        |«      dkD  ˆ 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¨7Ð2SÐ)T€ r-   rU   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�L€UˆCÜ	‡L�L”�U“˜a‘Ó!TÔUà€y�A�b‘E˜R’KØ˜UŸ[™[¨¨R©Ñ1°AÑ5Ñ6‰à˜b™	ˆä	‡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   ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr¯   )rX   )r¨   rª   rÇ   s     €r+   r¬   zirfftn.<locals>.<genexpr>å  s   øè ø€ Ò'B¸¨¯	©	°!­Ñ'Bùr­   FrŒ   )rÕ   rP   ra   rt   ru   r5   r»   )rc   r©   re   r%   rX   rm   rÇ   s         @r+   r   r   ×  sj   ø€ ô !IØ�%˜˜Có!Ñ€Eˆ3�ô & e¸TÔB€EÜ˜e S¨%Ó0€EÜ
�-‰-˜ 3°mÔ
D€CÜ�s˜D¤%Ó'B¸cÔ'BÓ"BÈEÔRÐRr-   c           	      ód  — t        d| ||«      \  }}}t        | d¬«      } t        | ||«      } t        |«      dkD  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€EÜ˜e S¨%Ó0€Eä>AÀ#»hÈºlŒ%�-‰-˜ 3 s¨ 8°TÕ
:ÐPU€CÜ
�c˜4¤ u¨S¨b zÓ!2¸DÔ
A€CÜ
×
Ñ
˜cÓ
"€CÜ
�-‰-˜  R S ¸Ô
G€CÜ�s˜D -¸Ô>Ð>r-   c                 óH   — t         j                  j                  | |||¬«      S ©N)r©   re   r%   )r/   r   r   ©rc   r©   re   r%   s       r+   r   r   ý  s   € ô �9‰9�>‰>˜% 1¨#°Dˆ>Ó9Ð9r-   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r/   r   r   rÛ   s       r+   r   r     ó   € ô �9‰9�?‰?˜5 A¨3°Tˆ?Ó:Ð:r-   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r/   r   r   rÛ   s       r+   r   r     rÝ   r-   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r/   r   r   rÛ   s       r+   r   r     ó"   € ô �9‰9×Ñ˜E Q¨C°dÐÓ;Ð;r-   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r/   r   r   rÛ   s       r+   r   r   )  rÝ   r-   c                 óH   — t         j                  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ä   ?  s5   € à
€{Ü”E˜!Ÿ&™&“MÓ"Ð"Ü˜œXÔ&Øˆuˆä�C‹yÐr-   c                 ó�   — t        || «      }|D �cg c]  }| j                  |   dz  ‘Œ }}t        j                  | ||«      S c c}w )NrT   ©rä   rX   r/   Úroll©rc   re   rQ   rª   Úshifts        r+   r   r   I  sF   € ä˜C Ó'€DØ*.Ö/ QˆU�[‰[˜‰^˜qÓ Ð/€EÐ/Ü�:‰:�e˜U DÓ)Ð)ùò 0s   ‘Ac                 ó–   — t        || «      }|D �cg c]  }| j                  |   dz   dz  ‘Œ }}t        j                  | ||«      S c c}w )Nr.   rT   ræ   rè   s        r+   r    r    P  sK   € ä˜C Ó'€DØ04Ö5¨1ˆe�k‰k˜!‰n˜qÑ  QÓ&Ð5€EÐ5Ü�:‰:�e˜U DÓ)Ð)ùò 6s   ‘A)F)NrU   N)NNN)N)éþÿÿÿrU   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ß CÑ Cß Mò€ð2 �'Ð8Ñ9Ñ9€Ú5€Ø‡z�z‡~�~×Ñ€ð6Øð6Ø%ð6Ø58ð6ØCGð6àó6ðØ�;‰;ðØ)-ðØ7<·|±|ðà
‡[�[óð2 05ñ0Øð0Ø(,ð0àó0ðDØðDØ" 3¨ 8™_ðDØ5:¸3À¸8±_ðDàóDð<WØðWàðWð ˆT�zðWð 
ð	Wð
 ðWð ðWð óWð6/Øð/àð/ð ˆT�zð/ð 
ð	/ð
 ð/ð ð/ð ð/ð ó/ð:5Øð5àð5ð ˆT�zð5ð 
ð	5ð
 ð5ð ð5ð ó5ñ4 ˜Ÿ™Ó%Ùƒð ØØñ		RØð	Rà
ˆT�zð	Rð 
ð	Rð ð		Rð
 ò	Ró ó &ð	Rñ ˜Ÿ™Ó&Ùƒð ØØñ		TØð	Tà
ˆT�zð	Tð 
ð	Tð ð		Tð
 ò	Tó ó 'ð	Tñ ˜Ÿ™Ó&Ùƒð ØØñ	NØðNà
ˆT�zðNð 
ðNð ð	Nð
 òNó ó 'ðNñ ˜Ÿ™Ó'Ùƒð ØØñ	AØðAà
ˆT�zðAð 
ðAð ð	Að
 òAó ó (ðAñ ˜Ÿ™Ó&Ùƒð ØØñ	?Øð?à
ˆT�zð?ð 
ð?ð ð	?ð
 ò?ó ó 'ð?ñ ˜Ÿ™Ó'Ùƒð ØØñ	PØðPà
ˆT�zðPð 
ðPð ð	Pð
 òPó ó (ðPô�Jô ð
69Øð69Ø"+¨dÑ"2ð69Ø9AÀD¹ð69àó69ðrˆh�s‰mð  ó ðVØðVàðVð ��c�‰?ðVð 
ˆs�Cˆx‰ð	Vð
 ðVð ðVð óVñ& ˜Ÿ™Ó&Ùƒð ØØñ	@Øð@à�4Ñð@ð 
�D‰ð@ð ð	@ð
 ò@ó ó 'ð@ñ ˜Ÿ™Ó'Ùƒð ØØñ	BØðBà�4ÑðBð 
�D‰ðBð ð	Bð
 òBó ó (ðBñ ˜Ÿ™Ó'Ùƒð ØØñ	PØðPà�4ÑðPð 
�D‰ðPð ð	Pð
 òPó ó (ðPñ" ˜Ÿ™Ó(Ùƒð ØØñ	QØðQà�4ÑðQð 
�D‰ðQð ð	Qð
 òQó ó )ðQô4˜Zô ðØðàðð �4Ñðð 
�D‰ð	ð
 óñ8 ˜Ÿ™Ó(Ùƒð ØØñ	SØðSà�4ÑðSð 
�D‰ð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-   