ó
    Eñi»F  ã                   ó’  • S SK r S SKJrJr  S SKJrJrJrJr  S SK	r	S SK
Jr  S SKJr  S SKJr  S SKJrJrJr  S SKJrJr  / SQr\S\S   4   r1 S	kr\	R6                  R8                  R:                  rS
\S\S\S\S\4
S jr S\	RB                  S\S\	RD                  S\	RB                  4S jr# SDS\S\S\4S jjr$S
\S\%\S4   S\%\S4   S\4S jr&S\'S\S\\   S\S\S\S\4S jr(S\'S\S\\   S\S\S\S\S\4S  jr)S\'S\S\\   S\S\S\S\4S! jr*\" \RV                  5      \" 5          SES\S\\   S\S\S\4
S" jj5       5       r,\" \RZ                  5      \" 5          SES\S\\   S\S\S\4
S# jj5       5       r.\" \R^                  5      \" 5          SES\S\\   S\S\S\4
S$ jj5       5       r0\" \Rb                  5      \" 5          SES\S\\   S\S\S\4
S% jj5       5       r2\" \Rf                  5      \" 5          SES\S\\   S\S\S\4
S& jj5       5       r4\" \Rj                  5      \" 5          SES\S\\   S\S\S\4
S' jj5       5       r6 " S( S)\5      r7S\S*\\   S\\   S\74S+ jr8S,\\   S\4S- jr9S.\'S\S*\%\S4   S\%\S4   S\S\S\4S/ jr:\" \Rv                  5      \" 5          SFS\S0\\   S\\   S\S\4
S1 jj5       5       r<\" \Rz                  5      \" 5          SFS\S0\\   S\\   S\S\4
S2 jj5       5       r>\" \R~                  5      \" 5          SFS\S0\\   S\\   S\S\4
S3 jj5       5       r@\" \R‚                  5      \" 5          SFS\S0\\   S\\   S\S\4
S4 jj5       5       rB " S5 S6\5      rCS7\'S\S0\\   S\\   S\C4
S8 jrD\" \RŠ                  5      \" 5          SFS\S0\\   S\\   S\S\4
S9 jj5       5       rF\" \RŽ                  5      \" 5          SFS\S0\\   S\\   S\S\4
S: jj5       5       rH\" \R’                  5      \" 5          SGS\S0\\   S\\   S\S\4
S; jj5       5       rJ\" \R–                  5      \" 5          SGS\S0\\   S\\   S\S\4
S< jj5       5       rL\" \Rš                  5      \" 5          SGS\S0\\   S\\   S\S\4
S= jj5       5       rN\" \Rž                  5      \" 5          SGS\S0\\   S\\   S\S\4
S> jj5       5       rP\" \R¢                  5      \" 5          SGS\S0\\   S\\   S\S\4
S? jj5       5       rR\" \R¦                  5      \" 5          SGS\S0\\   S\\   S\S\4
S@ jj5       5       rTS\\   S
\S\U\   4SA jrV\" \R®                  5      SHS\S\\   S\4SB jj5       rX\" \R²                  5      SHS\S\\   S\4SC jj5       rZg)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                 ó  ^• [         R                  " T[        ;   U4S j5        TS:X  a  U S[        R                  " U5      -  -  $ U(       + =(       a    TSL =(       d    TS:H  =(       d    U=(       a    TS:H  nU(       a  U SU-  -  $ U $ )z3Apply normalization to the un-normalized FFT resultc                  ó   >• ST  3$ )NzInvalid normalization mode: © )r'   s   €ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_refs/fft.pyÚ<lambda>Ú_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_normr8   +   s�   ø€ ô 
‡L‚L�œÑ%Ô'TÔUàˆwƒØ�AœŸ	š	 ,Ó/Ñ/Ñ0Ð0à”×E $¨$ ,×"D°$¸*Ñ2D÷ Ø×%�D˜IÑ%ð ö &/ˆ1��LÑ Ñ!Ð5°AÐ5r0   ÚdtypeÚrequire_complexÚdevicec                 óš  ^ • T R                   (       a  T $ T R                  (       d  [        R                  " 5       m [        R                  [        R
                  /nUR                  S;   nU(       a  UR                  [        R                  5        [        R                  " T U;   U 4S j5        U(       a  [        R                  " T 5      m T $ )z@Helper to promote a dtype to one supported by the FFT primitives)ÚcudaÚmetac                  ó   >• ST  3$ )NzUnsupported dtype r,   ©r9   s   €r-   r.   Ú#_promote_type_fft.<locals>.<lambda>J   s   ø€ Ð3EÀeÀWÑ1Mr0   )Ú
is_complexÚis_floating_pointr2   Úget_default_dtypeÚfloat32Úfloat64ÚtypeÚappendÚfloat16r3   ÚutilsÚcorresponding_complex_dtype)r9   r:   r;   Úallowed_typesÚmaybe_support_halfs   `    r-   Ú_promote_type_fftrN   :   s�   ø€ ð ××Øˆð ×"×"Ü×'Ò'Ó)ˆä—]‘]¤E§M¡MÐ2€MØŸ™Ð(8Ñ8ÐæØ×ÑœUŸ]™]Ô+Ü	‡L‚L�˜-Ñ'Ô)MÔNæÜ×1Ò1°%Ó8ˆà€Lr0   Útc                 ó\   • U R                   n[        X!U R                  5      n[        X5      $ )zEHelper to promote a tensor to a dtype supported by the FFT primitives)r9   rN   r;   r   )rO   r:   Úcur_typeÚnew_types       r-   Ú_maybe_promote_tensor_fftrS   R   s(   € ð �w‰w€HÜ  ¸A¿H¹HÓE€HÜ" 1Ó/Ð/r0   Údims.Úsizesc                 óò  • [        U5      [        U5      :w  a#  [        S[        U5       S[        U5       35      eSnU R                  nS/[        U5      -  S-  n[        [        U5      5       Hf  nX&   S:X  a  M  XAU      X&   :  a&  Sn[        U5      SX   -  -
  S-
  nX&   XAU      -
  XW'   XAU      X&   :”  d  MO  U R	                  X   SX&   5      n Mh     U(       a  [
        R                  " X5      $ U $ )	zv
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   é   éÿÿÿÿTr1   )ÚlenÚAssertionErrorÚshapeÚrangeÚnarrowr2   Úconstant_pad_nd)r&   rT   rU   Ú	must_copyÚx_sizesÚ
pad_amountÚiÚpad_idxs           r-   Ú_resize_fft_inputrd   [   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‹>Ùà˜‘7Ñ˜e™hÓ&ØˆIÜ˜*“o¨¨D©G©Ñ3°aÑ7ˆGà"'¡(¨W¸!±WÑ-=Ñ"=ˆJÑà˜‘7Ñ˜e™hÕ&Ø—‘˜™ ! U¡XÓ.ŠAñ ö 4=Œ5× Ò  Ó/ÐCÀ!ÐCr0   Ú	func_nameÚinputÚnÚdimc                 ól  ^• [        USS9n[        R                  " UR                  USS94nUb  UOSUR                  U   S-
  -  m[
        R                  " TS:¬  U4S j5        Ub  [        XTS-  S-   4S9nU(       a  [
        R                  " U5      n[        R                  " XTS	9n[        XtTUS
9$ )zBCommon code for performing any complex to real FFT (irfft or hfft)T©r:   F©Úwrap_scalarrW   r1   c                  ó   >• ST  S3$ ©NzInvalid number of data points (z) specifiedr,   ©Úlast_dim_sizes   €r-   r.   Ú_fft_c2r.<locals>.<lambda>‡   ó   ø€ Ð1°-°ÀÑLr0   )rT   rU   ©rh   rp   ©r'   r(   r#   )rS   rJ   Úcanonicalize_dimÚndimr[   r2   r3   rd   ÚconjÚprimsÚfft_c2rr8   )	re   rf   rg   rh   r'   r#   rT   Úoutputrp   s	           @r-   Ú_fft_c2rr{   y   s²   ø€ ô & e¸TÑB€EÜ×"Ò" 5§:¡:¨sÀÑFÐH€DØ™‘A¨A°·±¸SÑ1AÀAÑ1EÑ,F€MÜ	‡L‚LØ˜ÑÜLôð
 	�}Ü! %¸=ÈAÑ;MÐPQÑ;QÐ:SÑTˆæÜ—
’
˜5Ó!ˆä�]Š]˜5¸-ÑH€FÜ�v°}ÈgÑVÐVr0   Úonesidedc                 óÐ  ^ ^^	• [         R                  " TR                  R                  (       + U U4S j5        [	        T5      m[
        R                  " TR                  USS94nUb  UOTR                  U   m	[         R                  " T	S:¬  U	4S j5        Ub  [        TXr45      m[        R                  " TXvS9n[        X„T	U5      nU(       a  U$ [         R                  " U5      $ )zBCommon code for performing any real to complex FFT (rfft or ihfft)c                  ó&   >• T  STR                    3$ )Nz0 expects a floating point input tensor, but got r@   ©re   rf   s   €€r-   r.   Ú_fft_r2c.<locals>.<lambda>    s   ø€ �9�+ÐMÈeÏkÉkÈ]Ñ[r0   Frk   r1   c                  ó   >• ST  S3$ rn   r,   ©Údim_sizes   €r-   r.   r€   ¦   ó   ø€ Ð!@ÀÀ
È+ÑVr0   ©rh   r|   )r2   r3   r9   rB   rS   rJ   ru   rv   r[   rd   rx   Úfft_r2cr8   rw   )
re   rf   rg   rh   r'   r#   r|   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 ¨7Ó
3€CÞˆ3Ð.œuŸzšz¨#›Ð.r0   c                 ór  ^ ^^• [         R                  " TR                  R                  U U4S j5        [        R
                  " TR                  USS94nUb  UOTR                  U   m[         R                  " TS:¬  U4S j5        Ub  [        TXb45      m[        R                  " TXeS9n[        XtTU5      $ )zCCommon code for performing any complex to complex FFT (fft or ifft)c                  ó&   >• T  STR                    3$ ©Nz) expects a complex input tensor, but got r@   r   s   €€r-   r.   Ú_fft_c2c.<locals>.<lambda>¼   s   ø€ �9�+ÐFÀuÇ{Á{ÀmÑTr0   Frk   r1   c                  ó   >• ST  S3$ rn   r,   r‚   s   €r-   r.   rŒ   Á   r„   r0   ©rh   r#   )r2   r3   r9   rB   rJ   ru   rv   r[   rd   rx   Úfft_c2cr8   )	re   rf   rg   rh   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 (¨GÓ4Ð4r0   c           
      ój   • U R                   R                  (       a  [        SXX#SS9$ [        SXX#SSS9$ )Nr   T©r#   F©r#   r|   ©r9   rB   r�   rˆ   ©rf   rg   rh   r'   s       r-   r   r   Ë   s5   € ð ‡{�{××Ü˜˜u¨¸DÑAÐAä˜˜u¨¸DÈ5ÑQÐQr0   c           
      ój   • U R                   R                  (       a  [        SXX#SS9$ [        SXX#SSS9$ )Nr   Fr’   r“   r”   r•   s       r-   r   r   Ù   s5   € ð ‡{�{××Ü˜ ¨#¸UÑCÐCä˜ ¨#¸UÈUÑSÐSr0   c           
      ó   • [        SXX#SSS9$ )Nr   Tr“   ©rˆ   r•   s       r-   r   r   ç   s   € ô �F˜E c¸ÈÑMÐMr0   c           	      ó   • [        SXX#SS9$ )Nr   Fr’   ©r{   r•   s       r-   r   r   ò   s   € ô �G˜U s¸%Ñ@Ð@r0   c           	      ó   • [        SXX#SS9$ )Nr   Tr’   rš   r•   s       r-   r   r   ý   s   € ô �F˜E c¸Ñ>Ð>r0   c           
      ó   • [        SXX#SSS9$ )Nr   FTr“   r˜   r•   s       r-   r   r     s   € ô �G˜U s¸%È$ÑOÐOr0   c                   ó>   • \ rS rSr% \\S4   \S'   \\S4   \S'   Srg)Ú_ShapeAndDimsi  .r[   rT   r,   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚtupleÚintÚ__annotations__Ú__static_attributes__r,   r0   r-   rž   rž     s   ‡ Ø��c�‰?ÓØ
��S�‰/Ör0   rž   r[   c                 óH  ^^^^• U R                   mU R                  mUbd  [        U[        5      (       d  U4n[        R
                  " TUSS9n[        R                  " [        [        U5      5      [        U5      :H  S 5        Ubµ  [        U[        5      (       d  U4n[        R                  " USL =(       d    [        U5      [        U5      :H  S 5        [        U5      m[        R                  " TT:*  UU4S j5        Uc  [        [        TT-
  T5      5      n[        U4S j[        UW5       5       5      nO8Uc   [        [        T5      5      n[        T5      nO[        U4S jW 5       5      nU H!  m[        R                  " TS	:„  U4S
 j5        M#     [        XCS9$ )zTConvert the shape and dim arguments into a canonical form where neither are optionalNFrk   c                  ó   • g)NzFFT dims must be uniquer,   r,   r0   r-   r.   Ú6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>&  s   € Ð9Rr0   c                  ó   • g)Nz=When given, dim and shape arguments must have the same lengthr,   r,   r0   r-   r.   rª   0  s   € ÐSr0   c                  ó   >• ST ST  S3$ )NzGot shape with z" values but input tensor only has z dimensions.r,   )Ú	input_dimÚtransform_ndims   €€r-   r.   rª   6  s   ø€ �o nÐ%5ð 6Ø!�{ ,ñ0r0   c              3   óB   >#   • U  H  u  pUS :w  a  UOTU   v •  M     g7f)rX   Nr,   )Ú.0ÚsÚdÚinput_sizess      €r-   Ú	<genexpr>Ú7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>?  s)   øé € ð 
â.‘�ð �b“‰A˜k¨!™nÔ,Ú.ùó   ƒc              3   ó.   >#   • U  H
  nTU   v •  M     g 7f©Nr,   )r°   r²   r³   s     €r-   r´   rµ   I  s   øé € Ð;²(¨Q˜+ až.²(ùs   ƒr   c                  ó   >• ST  S3$ rn   r,   )rg   s   €r-   r.   rª   L  s   ø€ Ð&EÀaÀSÈÑ$Tr0   )r[   rT   )rv   r[   Ú
isinstancer   rJ   Úcanonicalize_dimsr2   r3   rY   Úsetr¤   r\   Úziprž   )	rf   r[   rh   Úret_dimsÚ	ret_shaper­   r³   rg   r®   s	        @@@@r-   Ú$_canonicalize_fft_shape_and_dim_argsrÀ     sm  û€ ð —
‘
€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Ó)Ó*ˆÜ˜+Ó&‰	ô Ô;±(Ó;Ó;ˆ	ãˆÜ�Š�Q˜‘UÔTÖUñ ô ˜yÑ8Ð8r0   Úxsc                 ó$   • SnU  H  nX-  nM	     U$ )zCompute product of a listr1   r,   )rÁ   Úprodr&   s      r-   Ú_prodrÄ   Q  s   € à€DÛˆØ‰	Šñ à€Kr0   Úfunction_namec                 óÐ   ^ ^• [         R                  " TR                  R                  U U4S j5        [	        TX25      n[
        R                  " XcUS9n[        Xt[        U5      US9$ )zECommon code for n-dimensional complex to complex FFTs (fftn or ifftn)c                  ó&   >• T  STR                    3$ r‹   r@   )rÅ   rf   s   €€r-   r.   Ú_fftn_c2c.<locals>.<lambda>d  s   ø€ �=�/ð "Ø—;‘;�-ñ!r0   rŽ   rt   )	r2   r3   r9   rB   rd   rx   r�   r8   rÄ   )rÅ   rf   r[   rh   r'   r#   r&   rz   s   ``      r-   Ú	_fftn_c2crÉ   Y  sT   ù€ ô 
‡L‚LØ�‰×Ñõ	!ôô
 	˜% Ó,€AÜ�]Š]˜1¨wÑ7€FÜ�v´u¸U³|ÈWÑUÐUr0   r±   c           	      óJ   • [        XU5      u  pB[        U SS9n[        SXTX#SS9$ )NTrj   r   r’   ©rÀ   rS   rÉ   ©rf   r±   rh   r'   r[   r&   s         r-   r   r   l  s/   € ô 8¸À#ÓF�L€UÜ! %¸Ñ>€AÜ�V˜Q s¸$Ñ?Ð?r0   c           	      óJ   • [        XU5      u  pB[        U SS9n[        SXTX#SS9$ )NTrj   r   Fr’   rË   rÌ   s         r-   r   r   y  s/   € ô 8¸À#ÓF�L€UÜ! %¸Ñ>€AÜ�W˜a¨¸5ÑAÐAr0   c                 ó  ^ • [         R                  " T R                  R                  (       + U 4S j5        [	        T X5      u  pB[        T SS9m [        T X$5      m [        R                  " T USS9n[        XS[        U5      SS9$ )Nc                  ó"   >• ST R                    3$ )Nz2rfftn expects a real-valued input tensor, but got r@   ©rf   s   €r-   r.   Úrfftn.<locals>.<lambda>�  s   ø€ ÐDÀUÇ[Á[ÀMÑRr0   Frj   Tr…   rt   )r2   r3   r9   rB   rÀ   rS   rd   rx   r†   r8   rÄ   )rf   r±   rh   r'   r[   Úouts   `     r-   r   r   †  sq   ø€ ô 
‡L‚LØ�K‰K×"Ñ"Ô"ÜRôô 6°e¸QÓD�J€EÜ% e¸UÑC€EÜ˜e SÓ0€EÜ
�-Š-˜ 3°Ñ
6€CÜ�s´E¸%³LÈ$ÑOÐOr0   c                 ó  ^ • [         R                  " T R                  R                  (       + U 4S j5        [	        T X5      u  pB[         R                  " [        U5      S:„  S 5        [        T SS9m [        T X$5      m [        R                  " T USS  SS9n[        U5      S	:X  a$  [        XSUS   SS
9n[        R                  " U5      $ [        R                  " U5      n[        R                  " XRS S SS9n[        XS[        U5      SS
9$ )Nc                  ó"   >• ST R                    3$ )Nz3ihfftn expects a real-valued input tensor, but got r@   rÐ   s   €r-   r.   Úihfftn.<locals>.<lambda>£  s   ø€ ÐEÀeÇkÁkÀ]ÑSr0   r   c                  ó   • g)Nz'ihfftn must transform at least one axisr,   r,   r0   r-   r.   rÕ   ¦  s   € Ð)Rr0   Frj   rX   Tr…   r1   rt   rŽ   )r2   r3   r9   rB   rÀ   rY   rS   rd   rx   r†   r8   rw   Úconj_physicalr�   rÄ   )rf   r±   rh   r'   r[   Útmps   `     r-   r   r   ™  sß   ø€ ô 
‡L‚LØ�K‰K×"Ñ"Ô"ÜSôô 6°e¸QÓD�J€EÜ	‡L‚L”�U“˜a‘Ñ!RÔSÜ% e¸UÑC€EÜ˜e SÓ0€Eä
�-Š-˜ 3 r s 8°dÑ
;€Cä
ˆ3ƒx�1ƒ}Ü˜#°u¸Q±xÈÑOˆÜ�zŠz˜#‹Ðä
×
Ò
˜cÓ
"€CÜ
�-Š-˜ S b °5Ñ
9€CÜ�s´E¸%³LÈ%ÑPÐPr0   c                   óH   • \ rS rSr% \\S4   \S'   \\S4   \S'   \\S'   Srg)Ú_CanonicalizeC2rReturniµ  .r[   rh   rp   r,   NrŸ   r,   r0   r-   rÚ   rÚ   µ  s$   ‡ Ø��c�‰?ÓØ	ˆs�Cˆx‰ÓØÖr0   rÚ   Úfnamec                 óT  ^ ^• [        XU5      u  pC[        R                  " [        U5      S:„  U 4S j5        Ub	  US   S:X  a  SUR                  US      S-
  -  mOUS   m[        R                  " TS:¬  U4S j5        [        U5      nTS-  S-   US'   [        [        U5      UTS9$ )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                  ó   >• T  S3$ )Nz! must transform at least one axisr,   )rÛ   s   €r-   r.   Ú:_canonicalize_fft_c2r_shape_and_dim_args.<locals>.<lambda>Ä  s   ø€ ¨E¨7Ð2SÑ)Tr0   rX   rW   r1   c                  ó   >• ST  S3$ rn   r,   ro   s   €r-   r.   rÞ   Í  rr   r0   )r[   rh   rp   )rÀ   r2   r3   rY   r[   ÚlistrÚ   r¤   )rÛ   rf   r±   rh   r[   Ú
shape_listrp   s   `     @r-   Ú(_canonicalize_fft_c2r_shape_and_dim_argsrâ   »  s¬   ù€ ô 8¸À#ÓF�L€UÜ	‡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¸ñð r0   c                 ó¸   ^• [        SXU5      u  pBn[        U SS9n [        XU5      n [        R                  " XUS9m[        TU[        U4S jU 5       5      SS9$ )Nr    Trj   rs   c              3   óB   >#   • U  H  nTR                   U   v •  M     g 7fr¸   )r[   )r°   r²   rÒ   s     €r-   r´   Úirfftn.<locals>.<genexpr>å  s   øé € Ð'Bºc¸¨¯	©	°!®ºcùr¶   Fr’   )râ   rS   rd   rx   ry   r8   rÄ   )rf   r±   rh   r'   r[   rp   rÒ   s         @r-   r    r    ×  sb   ø€ ô !IØ�%˜Có!Ñ€E�ô & e¸TÑB€EÜ˜e¨%Ó0€EÜ
�-Š-˜°mÑ
D€CÜ�s˜D¤%Ô'B¹cÓ'BÓ"BÈEÑRÐRr0   c           	      ó@  • [        SXU5      u  pBn[        U SS9n [        XU5      n [        U5      S:”  a  [        R
                  " XS S SS9OU n[        Xc[        US S 5      SS9n[        R                  " U5      n[        R                  " XbSS  US9n[        XsUSS9$ )	Nr   Trj   r1   rX   rŽ   r’   rs   )
râ   rS   rd   rY   rx   r�   r8   rÄ   r×   ry   )rf   r±   rh   r'   r[   rp   rØ   rÒ   s           r-   r   r   è  s¦   € ô !IØ�˜3ó!Ñ€E�ô & e¸TÑB€EÜ˜e¨%Ó0€Eä>AÀ#»hÈ»lŒ%�-Š-˜ s¨ 8°TÒ
:ÐPU€CÜ
�c¤ u¨S¨b zÓ!2¸DÑ
A€CÜ
×
Ò
˜cÓ
"€CÜ
�-Š-˜ R S ¸Ñ
G€CÜ�s -¸Ñ>Ð>r0   c                 ó>   • [         R                  R                  XX#S9$ ©N)r±   rh   r'   )r2   r   r   ©rf   r±   rh   r'   s       r-   r   r   ý  s   € ô �9‰9�>‰>˜%¨#ˆ>Ð9Ð9r0   c                 ó>   • [         R                  R                  XX#S9$ rè   )r2   r   r   ré   s       r-   r   r     ó   € ô �9‰9�?‰?˜5¨3ˆ?Ð:Ð:r0   c                 ó>   • [         R                  R                  XX#S9$ rè   )r2   r   r   ré   s       r-   r   r     rë   r0   c                 ó>   • [         R                  R                  XX#S9$ rè   )r2   r   r    ré   s       r-   r   r     ó   € ô �9‰9×Ñ˜E¨CÐÐ;Ð;r0   c                 ó>   • [         R                  R                  XX#S9$ rè   )r2   r   r   ré   s       r-   r   r   )  rë   r0   c                 ó>   • [         R                  R                  XX#S9$ rè   )r2   r   r   ré   s       r-   r   r   4  rî   r0   c                 óŠ   • U c  [        [        UR                  5      5      $ [        U [        5      (       d  U /$ [        U 5      $ )zIConvert Optional[DimsType] to a simple list, defaulting to all dimensions)rà   r\   rv   rº   r   )rh   r&   s     r-   Ú_default_alldimsrò   ?  s8   € à
�{Ü”E˜!Ÿ&™&“MÓ"Ð"Ü˜œX×&Ñ&Øˆuˆä�C‹yÐr0   c                 ó’   • [        X5      nU Vs/ s H  o0R                  U   S-  PM     nn[        R                  " XU5      $ s  snf )NrW   ©rò   r[   r2   Úroll©rf   rh   rT   r²   Úshifts        r-   r!   r!   I  sA   € ä˜CÓ'€DÙ*.Ó/ª$ Q�[‰[˜‰^˜qÔ ©$€EÐ/Ü�:Š:�e DÓ)Ð)ùò 0s   �Ac                 ó˜   • [        X5      nU Vs/ s H  o0R                  U   S-   S-  PM     nn[        R                  " XU5      $ s  snf )Nr1   rW   rô   rö   s        r-   r"   r"   P  sF   € ä˜CÓ'€DÙ04Ó5²¨1�k‰k˜!‰n˜qÑ  QÔ&±€EÐ5Ü�:Š:�e DÓ)Ð)ùò 6s   �A)F)NrX   N)NNN)N)éþÿÿÿrX   Nr¸   )[r5   Úcollections.abcr   r   Útypingr   r   r   r   r2   Útorch._primsÚ_primsrx   Útorch._prims_commonÚ_prims_commonrJ   Útorch._decompr	   r
   r   r   Útorch._prims_common.wrappersr   r   Ú__all__ÚNormTyper4   Ú_opsÚopsÚatenr¥   Úboolr8   r9   r;   rN   rS   r¤   rd   Ústrr{   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,   r0   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ð<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ô ð
69Øð69Ø"*¨9Ñ"5ð69Ø<DÀXÑ<Nð69àô69ðrˆ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Ñ*<ð *Èô *ó ,ñ*r0   