Ë
    g^(h/F  ã                   ó(  — d dl Z d dlmZmZ d dlmZmZ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eded   f   Zh d	£Ze	j6                  j8                  j:                  Zd
ededededef
d„Z de	jB                  dede	jD                  de	jB                  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e   dedededefd„Z(de'dedee   dededededefd „Z)de'dedee   dedededefd!„Z* eejV                  «       e«       	 	 	 dEdedee   dededef
d"„«       «       Z, eejZ                  «       e«       	 	 	 dEdedee   dededef
d#„«       «       Z. eej^                  «       e«       	 	 	 dEdedee   dededef
d$„«       «       Z0 eejb                  «       e«       	 	 	 dEdedee   dededef
d%„«       «       Z2 eejf                  «       e«       	 	 	 dEdedee   dededef
d&„«       «       Z4 eejj                  «       e«       	 	 	 dEdedee   dededef
d'„«       «       Z6 G d(„ d)e«      Z7ded*ee   dee   de7fd+„Z8d,ee   defd-„Z9d.e'ded*e%edf   de%edf   dededefd/„Z: eejv                  «       e«       	 	 	 dFded0ee   dee   dedef
d1„«       «       Z< eejz                  «       e«       	 	 	 dFded0ee   dee   dedef
d2„«       «       Z> eej~                  «       e«       	 	 	 dFded0ee   dee   dedef
d3„«       «       Z@ eej‚                  «       e«       	 	 	 dFded0ee   dee   dedef
d4„«       «       ZB G d5„ d6e«      ZCd7e'ded0ee   dee   deCf
d8„ZD eejŠ                  «       e«       	 	 	 dFded0ee   dee   dedef
d9„«       «       ZF eejŽ                  «       e«       	 	 	 dFded0ee   dee   dedef
d:„«       «       ZH eej’                  «       e«       	 	 	 dGded0ee   dee   dedef
d;„«       «       ZJ eej–                  «       e«       	 	 	 dGded0ee   dee   dedef
d<„«       «       ZL eejš                  «       e«       	 	 	 dGded0ee   dee   dedef
d=„«       «       ZN eejž                  «       e«       	 	 	 dGded0ee   dee   dedef
d>„«       «       ZP eej¢                  «       e«       	 	 	 dGded0ee   dee   dedef
d?„«       «       ZR eej¦                  «       e«       	 	 	 dGded0ee   dee   dedef
d@„«       «       ZTdee   d
edeUe   fdA„ZV eej®                  «      dHdedee   defdB„«       ZX eej²                  «      dHdedee   defdC„«       ZZy)Ié    N)ÚIterableÚSequence)ÚLiteralÚ
NamedTupleÚOptionalÚUnion)Ú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   €úM/var/www/skyplay_api_hub/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_normr7   +   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Úmetac                  ó   •— d‰ › �S )NzUnsupported dtype r,   ©r8   s   €r-   r.   z#_promote_type_fft.<locals>.<lambda>J   s   ø€ Ð3EÀeÀWÐ1M€ r/   )Ú
is_complexÚis_floating_pointr1   Úget_default_dtypeÚfloat32Úfloat64ÚtypeÚappendÚfloat16r2   ÚutilsÚcorresponding_complex_dtype)r8   r9   r:   Úallowed_typesÚmaybe_support_halfs   `    r-   Ú_promote_type_fftrL   :   s�   ø€ ð ×ÒØˆð ×"Ò"Ü×'Ñ'Ó)ˆä—]‘]¤E§M¡MÐ2€MØŸ™Ð(8Ð8ÐáØ×Ñœ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)r8   rL   r:   r   )rM   r9   Úcur_typeÚnew_types       r-   Ú_maybe_promote_tensor_fftrQ   R   s,   € ð �w‰w€HÜ  ¨?¸A¿H¹HÓE€HÜ" 1 hÓ/Ð/r/   Údims.Úsizesc                 ó¬  — t        |«      t        |«      k(  sJ ‚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.
    Fr   é   éÿÿÿÿTr0   )ÚlenÚshapeÚrangeÚnarrowr1   Úconstant_pad_nd)r&   rR   rS   Ú	must_copyÚx_sizesÚ
pad_amountÚiÚpad_idxs           r-   Ú_resize_fft_inputra   [   sÿ   € ô ˆt‹9œ˜E›
Ò"Ð"Ð"Ø€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©r9   F©Úwrap_scalarrU   r0   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/   )rR   rS   ©re   rm   ©r'   r(   r#   )rQ   rH   Úcanonicalize_dimÚndimrX   r1   r2   ra   ÚconjÚprimsÚfft_c2rr7   )	rb   rc   rd   re   r'   r#   rR   Úoutputrm   s	           @r-   Ú_fft_c2rrw   u   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   r0   c                  ó   •— d‰ › d�S rk   r,   ©Údim_sizes   €r-   r.   z_fft_r2c.<locals>.<lambda>¢   ó   ø€ Ð!@ÀÀ
È+ÐV€ r/   ©re   rx   )r1   r2   r8   r@   rQ   rH   rq   rr   rX   ra   rt   Úfft_r2cr7   rs   )
rb   rc   rd   re   r'   r#   rx   rR   Ú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   r0   c                  ó   •— d‰ › d�S rk   r,   r}   s   €r-   r.   z_fft_c2c.<locals>.<lambda>½   r   r/   ©re   r#   )r1   r2   r8   r@   rH   rq   rr   rX   ra   rt   Úfft_c2cr7   )	rb   rc   rd   re   r'   r#   rR   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   ©r8   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   rR   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>,  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>2  s   ø€ �o nÐ%5ð 6Ø!�{ ,ð0€ r/   c              3   ó<   •K  — | ]  \  }}|d k7  r|n‰|   –— Œ y­w)rV   Nr,   )Ú.0ÚsÚdÚinput_sizess      €r-   ú	<genexpr>z7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>;  s)   øè ø€ ò 
Ù17°!°Q��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>D  s   øè ø€ Ò;¨Q˜+ a�.Ñ;ùs   ƒr   c                  ó   •— d‰ › d�S rk   r,   )rd   s   €r-   r.   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>G  s   ø€ Ð&EÀaÀSÈÐ$T€ r/   )rX   rR   )rr   rX   Ú
isinstancer   rH   Úcanonicalize_dimsr1   r2   rW   Ú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ô ó 
Ü;>¸uÀhÓ;Oô
ó 
‰	ð 
ˆäœ˜yÓ)Ó*ˆÜ˜+Ó&‰	ô Ó;°(Ô;Ó;ˆ	àò VˆÜ�‰�Q˜‘UÓTÕUðVô ˜y¨xÔ8Ð8r/   Úxsc                 ó"   — d}| D ]  }||z  }Œ	 |S )zCompute product of a listr0   r,   )r¸   Úprodr&   s      r-   Ú_prodr»   L  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>_  s   ø€ �=�/ð "Ø—;‘;�-ð!€ r/   rˆ   rp   )	r1   r2   r8   r@   ra   rt   r‰   r7   r»   )r¼   rc   rX   re   r'   r#   r&   rv   s   ``      r-   Ú	_fftn_c2cr¿   T  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·   rQ   r¿   ©rc   r©   re   r'   rX   r&   s         r-   r   r   g  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   t  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   )r1   r2   r8   r@   r·   rQ   ra   rt   r�   r7   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   rV   Tr€   r0   rp   rˆ   )r1   r2   r8   r@   r·   rW   rQ   ra   rt   r�   r7   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/   rV   rU   r0   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·   r1   r2   rW   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Õ   rQ   ra   rt   ru   r7   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   r0   rV   rˆ   rŒ   ro   )
rÕ   rQ   ra   rW   rt   r‰   r7   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'   )r1   r   r   ©rc   r©   re   r'   s       r-   r   r   ø  s   € ô �9‰9�>‰>˜% 1¨#°Dˆ>Ó9Ð9r/   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r1   r   r   rÛ   s       r-   r   r     ó   € ô �9‰9�?‰?˜5 A¨3°Tˆ?Ó:Ð:r/   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r1   r   r   rÛ   s       r-   r   r     rÝ   r/   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r1   r   r    rÛ   s       r-   r   r     ó"   € ô �9‰9×Ñ˜E Q¨C°dÐÓ;Ð;r/   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r1   r   r   rÛ   s       r-   r   r   $  rÝ   r/   c                 óH   — t         j                  j                  | |||¬«      S rÚ   )r1   r   r   rÛ   s       r-   r   r   /  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 )NrU   ©rä   rX   r1   Úroll©rc   re   rR   rª   Úshifts        r-   r!   r!   D  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 )Nr0   rU   ræ   rè   s        r-   r"   r"   K  sK   € ä˜C Ó'€DØ04Ö5¨1ˆe�k‰k˜!‰n˜qÑ  QÓ&Ð5€EÐ5Ü�:‰:�e˜U DÓ)Ð)ùò 6s   ‘A)F)NrV   N)NNN)N)éþÿÿÿrV   Nr¯   )[r4   Úcollections.abcr   r   Útypingr   r   r   r   r1   Útorch._primsÚ_primsrt   Útorch._prims_commonÚ_prims_commonrH   Útorch._decompr	   r
   r   r   Útorch._prims_common.wrappersr   r   Ú__all__ÚNormTyper3   Ú_opsÚopsÚatenrž   Úboolr7   r8   r:   rL   rQ   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/  ðÛ ß .ß 7Ó 7ã Ý Ý #Ý 0ß CÑ Cß Mò€ð2 ��wÐ=Ñ>Ð>Ñ?€Ú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ð4WØðWàðWð ��}ðWð 
ð	Wð
 ðWð ðWð óWð6/Øð/àð/ð ��}ð/ð 
ð	/ð
 ð/ð ð/ð ð/ð ó/ð:5Øð5àð5ð ��}ð5ð 
ð	5ð
 ð5ð ð5ð ó5ñ4 ˜Ÿ™Ó%Ùƒð ØØñ		RØð	Rà��}ð	Rð 
ð	Rð ð		Rð
 ò	Ró ó &ð	Rñ ˜Ÿ™Ó&Ùƒð ØØñ		TØð	Tà��}ð	Tð 
ð	Tð ð		Tð
 ò	Tó ó 'ð	Tñ ˜Ÿ™Ó&Ùƒð ØØñ	NØðNà��}ðNð 
ðNð ð	Nð
 òNó ó 'ðNñ ˜Ÿ™Ó'Ùƒð ØØñ	AØðAà��}ðAð 
ðAð ð	Að
 òAó ó (ðAñ ˜Ÿ™Ó&Ùƒð ØØñ	?Øð?à��}ð?ð 
ð?ð ð	?ð
 ò?ó ó 'ð?ñ ˜Ÿ™Ó'Ùƒð ØØñ	PØðPà��}ðPð 
ðPð ð	Pð
 òPó ó (ðPô�Jô ð
59Øð59Ø"*¨9Ñ"5ð59Ø<DÀXÑ<Nð59àó59ðpˆh�s‰mð  ó ðVØðVàðVð ��c�‰?ðVð 
ˆs�Cˆx‰ð	Vð
 ðVð ðVð óVñ& ˜Ÿ™Ó&Ùƒð "Ø"Øñ	@Øð@à�	Ñð@ð 
�(Ñ	ð@ð ð	@ð
 ò@ó ó 'ð@ñ ˜Ÿ™Ó'Ùƒð "Ø"Øñ	BØðBà�	ÑðBð 
�(Ñ	ðBð ð	Bð
 òBó ó (ðBñ ˜Ÿ™Ó'Ùƒð "Ø"Øñ	PØðPà�	ÑðPð 
�(Ñ	ðPð ð	Pð
 òPó ó (ðPñ" ˜Ÿ™Ó(Ùƒð "Ø"Øñ	QØðQà�	ÑðQð 
�(Ñ	ðQð ð	Qð
 òQó ó )ðQô4˜Zô ðØðàðð �	Ñðð 
�(Ñ	ð	ð
 óñ8 ˜Ÿ™Ó(Ùƒð "Ø"Øñ	SØðSà�	ÑðSð 
�(Ñ	ðSð ð	Sð
 òSó ó )ðSñ ˜Ÿ™Ó'Ùƒð "Ø"Øñ	?Øð?à�	Ñð?ð 
�(Ñ	ð?ð ð	?ð
 ò?ó ó (ð?ñ& ˜Ÿ™Ó&Ùƒð "Ø&Øñ	:Øð:à�	Ñð:ð 
�(Ñ	ð:ð ð	:ð
 ò:ó ó 'ð:ñ ˜Ÿ™Ó'Ùƒð "Ø&Øñ	;Øð;à�	Ñð;ð 
�(Ñ	ð;ð ð	;ð
 ò;ó ó (ð;ñ ˜Ÿ™Ó'Ùƒð "Ø&Øñ	;Øð;à�	Ñð;ð 
�(Ñ	ð;ð ð	;ð
 ò;ó ó (ð;ñ ˜Ÿ™Ó(Ùƒð "Ø&Øñ	<Øð<à�	Ñð<ð 
�(Ñ	ð<ð ð	<ð
 ò<ó ó )ð<ñ ˜Ÿ™Ó'Ùƒð "Ø&Øñ	;Øð;à�	Ñð;ð 
�(Ñ	ð;ð ð	;ð
 ò;ó ó (ð;ñ ˜Ÿ™Ó(Ùƒð "Ø&Øñ	<Øð<à�	Ñð<ð 
�(Ñ	ð<ð ð	<ð
 ò<ó ó )ð<ð˜( 8Ñ,ð °ð ÀDÈÁIó ñ ˜×)Ñ)Ó*ñ*�Nð *¨°(Ñ);ð *À~ò *ó +ð*ñ ˜×*Ñ*Ó+ñ*�^ð *¨(°8Ñ*<ð *Èò *ó ,ñ*r/   