Ë
    P/æj!F  ã                   ó(  — d dl Z d dlmZmZmZmZ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
j8                  j:                  j<                  Zd	ed
edede def
d„Z!de
jD                  de de
jF                  de
jD                  fd„Z$	 dCd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«       	 	 	 dDdedee   ded
edef
d!„«       «       Z, eejZ                  «       e«       	 	 	 dDdedee   ded
edef
d"„«       «       Z. eej^                  «       e«       	 	 	 dDdedee   ded
edef
d#„«       «       Z0 eejb                  «       e«       	 	 	 dDdedee   ded
edef
d$„«       «       Z2 eejf                  «       e«       	 	 	 dDdedee   ded
edef
d%„«       «       Z4 eejj                  «       e«       	 	 	 dDd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«       	 	 	 dEded/ee   dee   d
edef
d0„«       «       Z< eejz                  «       e«       	 	 	 dEded/ee   dee   d
edef
d1„«       «       Z> eej~                  «       e«       	 	 	 dEded/ee   dee   d
edef
d2„«       «       Z@ eej‚                  «       e«       	 	 	 dEded/ee   dee   d
edef
d3„«       «       ZB G d4„ d5e«      ZCd6e'ded/ee   dee   deCf
d7„ZD eejŠ                  «       e«       	 	 	 dEded/ee   dee   d
edef
d8„«       «       ZF eejŽ                  «       e«       	 	 	 dEded/ee   dee   d
edef
d9„«       «       ZH eej’                  «       e«       	 	 	 dFded/ee   dee   d
edef
d:„«       «       ZJ eej–                  «       e«       	 	 	 dFded/ee   dee   d
edef
d;„«       «       ZL eejš                  «       e«       	 	 	 dFded/ee   dee   d
edef
d<„«       «       ZN eejž                  «       e«       	 	 	 dFded/ee   dee   d
edef
d=„«       «       ZP eej¢                  «       e«       	 	 	 dFded/ee   dee   d
edef
d>„«       «       ZR eej¦                  «       e«       	 	 	 dFded/ee   dee   d
edef
d?„«       «       ZTdee   d	edee   fd@„ZU eej¬                  «      dGdedee   defdA„«       ZW eej°                  «      dGdedee   defdB„«       ZYy)Hé    N)ÚIterableÚListÚLiteralÚ
NamedTupleÚOptionalÚSequenceÚTupleÚ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   €úR/root/repos/pocs/video-evals/.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_normr9   *   s�   ø€ ô 
‡L�L�œÐ%Ó'TÔUàˆw‚Ø�AœŸ	™	 ,Ó/Ñ/Ñ0Ð0à�ÒE $¨$ ,Ò"D°$¸*Ñ2Dò ØÒ%�D˜IÑ%ð ñ &/ˆ1��LÑ Ñ!Ð5°AÐ5r1   Ú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.   ©r:   s   €r/   r0   z#_promote_type_fft.<locals>.<lambda>I   s   ø€ Ð3EÀeÀWÐ1M€ r1   )Ú
is_complexÚis_floating_pointr3   Úget_default_dtypeÚfloat32Úfloat64ÚtypeÚappendÚfloat16r4   ÚutilsÚcorresponding_complex_dtype)r:   r;   r<   Úallowed_typesÚmaybe_support_halfs   `    r/   Ú_promote_type_fftrN   9   s�   ø€ ð ×ÒØˆð ×"Ò"Ü×'Ñ'Ó)ˆä—]‘]¤E§M¡MÐ2€MØŸ™Ð(8Ð8ÐáØ×ÑœUŸ]™]Ô+Ü	‡L�L�˜-Ð'Ó)MÔNáÜ×1Ñ1°%Ó8ˆà€Lr1   Útc                 ó`   — | j                   }t        ||| j                  «      }t        | |«      S )zEHelper to promote a tensor to a dtype supported by the FFT primitives)r:   rN   r<   r   )rO   r;   Úcur_typeÚnew_types       r/   Ú_maybe_promote_tensor_fftrS   Q   s,   € ð �w‰w€HÜ  ¨?¸A¿H¹HÓE€HÜ" 1 hÓ/Ð/r1   Ú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   é   éÿÿÿÿTr2   )ÚlenÚshapeÚrangeÚnarrowr3   Úconstant_pad_nd)r(   rT   rU   Ú	must_copyÚx_sizesÚ
pad_amountÚiÚpad_idxs           r/   Ú_resize_fft_inputrc   Z   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À!ÐCr1   Ú	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©r;   F©Úwrap_scalarrW   r2   c                  ó   •— d‰ › d�S ©NzInvalid number of data points (z) specifiedr.   ©Úlast_dim_sizes   €r/   r0   z_fft_c2r.<locals>.<lambda>‚   ó   ø€ Ð1°-°ÀÐL€ r1   )rT   rU   ©rg   ro   ©r)   r*   r%   )rS   rJ   Úcanonicalize_dimÚndimrZ   r3   r4   rc   ÚconjÚprimsÚfft_c2rr9   )	rd   re   rf   rg   r)   r%   rT   Úoutputro   s	           @r/   Ú_fft_c2rry   t   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ÐVr1   Ú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 rA   ©rd   re   s   €€r/   r0   z_fft_r2c.<locals>.<lambda>›   s   ø€ �9�+ÐMÈeÏkÉkÈ]Ð[€ r1   Frj   r2   c                  ó   •— d‰ › d�S rm   r.   ©Údim_sizes   €r/   r0   z_fft_r2c.<locals>.<lambda>¡   ó   ø€ Ð!@ÀÀ
È+ÐV€ r1   ©rg   rz   )r3   r4   r:   rB   rS   rJ   rs   rt   rZ   rc   rv   Úfft_r2cr9   ru   )
rd   re   rf   rg   r)   r%   rz   rT   Ú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¨#›Ð.r1   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 rA   r}   s   €€r/   r0   z_fft_c2c.<locals>.<lambda>·   s   ø€ �9�+ÐFÀuÇ{Á{ÀmÐT€ r1   Frj   r2   c                  ó   •— d‰ › d�S rm   r.   r   s   €r/   r0   z_fft_c2c.<locals>.<lambda>¼   r�   r1   ©rg   r%   )r3   r4   r:   rB   rJ   rs   rt   rZ   rc   rv   Úfft_c2cr9   )	rd   re   rf   rg   r)   r%   rT   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Ð4r1   c           	      ót   — | j                   j                  rt        d| |||d¬«      S t        d| |||dd¬«      S )Nr   T©r%   F©r%   rz   ©r:   rB   rŒ   r…   ©re   rf   rg   r)   s       r/   r   r   Æ   s=   € ð ‡{�{×ÒÜ˜˜u a¨¨d¸DÔAÐAä˜˜u a¨¨d¸DÈ5ÔQÐQr1   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ÐSr1   c           	      ó&   — t        d| |||dd¬«      S )Nr   Tr�   ©r…   r‘   s       r/   r   r   â   s   € ô �F˜E 1 c¨4¸ÈÔMÐMr1   c                 ó$   — t        d| |||d¬«      S )Nr    FrŽ   ©ry   r‘   s       r/   r    r    í   s   € ô �G˜U A s¨D¸%Ô@Ð@r1   c                 ó$   — t        d| |||d¬«      S )Nr   TrŽ   r–   r‘   s       r/   r   r   ø   s   € ô �F˜E 1 c¨4¸Ô>Ð>r1   c           	      ó&   — t        d| |||dd¬«      S )Nr   FTr�   r”   r‘   s       r/   r   r     s   € ô �G˜U A s¨D¸%È$ÔOÐOr1   c                   ó6   — e Zd ZU eedf   ed<   eedf   ed<   y)Ú_ShapeAndDims.rZ   rT   N©Ú__name__Ú
__module__Ú__qualname__r	   ÚintÚ__annotations__r.   r1   r/   rš   rš     s   … Ø��c�‰?ÓØ
��S�‰/Ôr1   rš   rZ   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 optionalNFrj   c                   ó   — y)NzFFT dims must be uniquer.   r.   r1   r/   r0   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>!  ó   � r1   c                   ó   — y)Nz=When given, dim and shape arguments must have the same lengthr.   r.   r1   r/   r0   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>+  r£   r1   c                  ó   •— d‰› d‰ › d�S )NzGot shape with z" values but input tensor only has z dimensions.r.   )Ú	input_dimÚtransform_ndims   €€r/   r0   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>1  s   ø€ �o nÐ%5ð 6Ø!�{ ,ð0€ r1   c              3   ó<   •K  — | ]  \  }}|d k7  r|n‰|   –— Œ y­w)rX   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>C  s   øè ø€ Ò;¨Q˜+ a�.Ñ;ùs   ƒr   c                  ó   •— d‰ › d�S rm   r.   )rf   s   €r/   r0   z6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>F  s   ø€ Ð&EÀaÀSÈÐ$T€ r1   )rZ   rT   )rt   rZ   Ú
isinstancer   rJ   Úcanonicalize_dimsr3   r4   rY   ÚsetÚtupler[   Úziprš   )	re   rZ   rg   Úret_dimsÚ	ret_shaper¦   r¬   rf   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Ð8r1   Úxsc                 ó"   — d}| D ]  }||z  }Œ	 |S )zCompute product of a listr2   r.   )rº   Úprodr(   s      r/   Ú_prodr½   K  s$   € à€DØò ˆØ�‰	‰ðà€Kr1   Ú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ˆ   rA   )r¾   re   s   €€r/   r0   z_fftn_c2c.<locals>.<lambda>^  s   ø€ �=�/ð "Ø—;‘;�-ð!€ r1   rŠ   rr   )	r3   r4   r:   rB   rc   rv   r‹   r9   r½   )r¾   re   rZ   rg   r)   r%   r(   rx   s   ``      r/   Ú	_fftn_c2crÁ   S  sZ   ù€ ô 
‡L�LØ�‰×Ñô	!ôô
 	˜%  eÓ,€AÜ�]‰]˜1 #¨wÔ7€FÜ�v D´u¸U³|ÈWÔUÐUr1   rª   c                 ó^   — t        | ||«      \  }}t        | d¬«      }t        d||||d¬«      S )NTri   r   rŽ   ©r¹   rS   rÁ   ©re   rª   rg   r)   rZ   r(   s         r/   r   r   f  s7   € ô 8¸¸qÀ#ÓF�L€UˆCÜ! %¸Ô>€AÜ�V˜Q  s¨D¸$Ô?Ð?r1   c                 ó^   — t        | ||«      \  }}t        | d¬«      }t        d||||d¬«      S )NTri   r   FrŽ   rÃ   rÄ   s         r/   r   r   s  s7   € ô 8¸¸qÀ#ÓF�L€UˆCÜ! %¸Ô>€AÜ�W˜a ¨¨T¸5ÔAÐAr1   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 rA   ©re   s   €r/   r0   zrfftn.<locals>.<lambda>Š  s   ø€ ÐDÀUÇ[Á[ÀMÐR€ r1   Fri   Tr‚   rr   )r3   r4   r:   rB   r¹   rS   rc   rv   rƒ   r9   r½   )re   rª   rg   r)   rZ   Ú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ÐOr1   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 rA   rÈ   s   €r/   r0   zihfftn.<locals>.<lambda>�  s   ø€ ÐEÀeÇkÁkÀ]ÐS€ r1   r   c                   ó   — y)Nz'ihfftn must transform at least one axisr.   r.   r1   r/   r0   zihfftn.<locals>.<lambda>   r£   r1   Fri   rX   Tr‚   r2   rr   rŠ   )r3   r4   r:   rB   r¹   rY   rS   rc   rv   rƒ   r9   ru   Úconj_physicalr‹   r½   )re   rª   rg   r)   rZ   Ú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ÐPr1   c                   ó@   — e Zd ZU eedf   ed<   eedf   ed<   eed<   y)Ú_CanonicalizeC2rReturn.rZ   rg   ro   Nr›   r.   r1   r/   rÐ   rÐ   ¯  s$   … Ø��c�‰?ÓØ	ˆs�Cˆx‰ÓØÔr1   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/   r0   z:_canonicalize_fft_c2r_shape_and_dim_args.<locals>.<lambda>¾  s   ø€ ¨E¨7Ð2SÐ)T€ r1   rX   rW   r2   c                  ó   •— d‰ › d�S rm   r.   rn   s   €r/   r0   z:_canonicalize_fft_c2r_shape_and_dim_args.<locals>.<lambda>Ç  rp   r1   )rZ   rg   ro   )r¹   r3   r4   rY   rZ   ÚlistrÐ   rµ   )rÑ   re   rª   rg   rZ   Ú
shape_listro   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¸ôð r1   c                 óÎ   ‡— t        d| ||«      \  }}}t        | d¬«      } t        | ||«      } t        j                  | ||¬«      Št        ‰|t        ˆfd„|D «       «      d¬«      S )Nr"   Tri   rq   c              3   ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr°   )rZ   )r©   r«   rÉ   s     €r/   r­   zirfftn.<locals>.<genexpr>ß  s   øè ø€ Ò'B¸¨¯	©	°!­Ñ'Bùr®   FrŽ   )r×   rS   rc   rv   rw   r9   r½   )re   rª   rg   r)   rZ   ro   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ÐRr1   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   Tri   r2   rX   rŠ   rŽ   rq   )
r×   rS   rc   rY   rv   r‹   r9   r½   rÍ   rw   )re   rª   rg   r)   rZ   ro   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 -¸Ô>Ð>r1   c                 óH   — t         j                  j                  | |||¬«      S ©N)rª   rg   r)   )r3   r   r   ©re   rª   rg   r)   s       r/   r   r   ÷  s   € ô �9‰9�>‰>˜% 1¨#°Dˆ>Ó9Ð9r1   c                 óH   — t         j                  j                  | |||¬«      S rÜ   )r3   r   r   rÝ   s       r/   r   r     ó   € ô �9‰9�?‰?˜5 A¨3°Tˆ?Ó:Ð:r1   c                 óH   — t         j                  j                  | |||¬«      S rÜ   )r3   r   r   rÝ   s       r/   r   r     rß   r1   c                 óH   — t         j                  j                  | |||¬«      S rÜ   )r3   r   r"   rÝ   s       r/   r!   r!     ó"   € ô �9‰9×Ñ˜E Q¨C°dÐÓ;Ð;r1   c                 óH   — t         j                  j                  | |||¬«      S rÜ   )r3   r   r   rÝ   s       r/   r   r   #  rß   r1   c                 óH   — t         j                  j                  | |||¬«      S rÜ   )r3   r   r   rÝ   s       r/   r   r   .  râ   r1   c                 ó~   — | €t        t        |j                  «      «      S t        | t        «      s| gS t        | «      S )zIConvert Optional[DimsType] to a simple list, defaulting to all dimensions)rÕ   r[   rt   r²   r   )rg   r(   s     r/   Ú_default_alldimsræ   9  s5   € à
€{Ü”E˜!Ÿ&™&“MÓ"Ð"Ü˜œXÔ&Øˆuˆä�C‹yÐr1   c                 ó�   — t        || «      }|D �cg c]  }| j                  |   dz  ‘Œ }}t        j                  | ||«      S c c}w )NrW   ©ræ   rZ   r3   Úroll©re   rg   rT   r«   Úshifts        r/   r#   r#   C  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 )Nr2   rW   rè   rê   s        r/   r$   r$   J  sK   € ä˜C Ó'€DØ04Ö5¨1ˆe�k‰k˜!‰n˜qÑ  QÓ&Ð5€EÐ5Ü�:‰:�e˜U DÓ)Ð)ùò 6s   ‘A)F)NrX   N)NNN)N)éþÿÿÿrX   Nr°   )Zr6   Útypingr   r   r   r   r   r   r	   r
   r3   Útorch._primsÚ_primsrv   Útorch._prims_commonÚ_prims_commonrJ   Útorch._decompr   r   r   r   Útorch._prims_common.wrappersr   r   Ú__all__ÚNormTyper5   Ú_opsÚopsÚatenrŸ   Úboolr9   r:   r<   rN   rS   rc   Ústrry   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æ   Úfft_fftshiftr#   Úfft_ifftshiftr$   r.   r1   r/   ú<module>r     s/  ðÛ ß X× XÓ Xã Ý Ý #Ý 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Ñ*<ð *Èò *ó ,ñ*r1   