+
    &j3F                        ^ RI t ^ RIHtHt ^ RIHtHt ^ RIt^ RIH	t
 ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHtHt . RKOtR]RL,          ,          t0 RMmt]P2                  P4                  P6                  tR R ltR	 R
 ltRNR R lltR R ltR R lt R R lt!R R lt"]! ]PF                  4      ]! 4       ROR R ll4       4       t$]! ]PJ                  4      ]! 4       ROR R ll4       4       t&]! ]PN                  4      ]! 4       ROR R ll4       4       t(]! ]PR                  4      ]! 4       ROR R ll4       4       t*]! ]PV                  4      ]! 4       ROR R ll4       4       t,]! ]PZ                  4      ]! 4       ROR R  ll4       4       t. ! R! R"]4      t/R# R$ lt0R% R& lt1R' R( lt2]! ]Pf                  4      ]! 4       RPR) R* ll4       4       t4]! ]Pj                  4      ]! 4       RPR+ R, ll4       4       t6]! ]Pn                  4      ]! 4       RPR- R. ll4       4       t8]! ]Pr                  4      ]! 4       RPR/ R0 ll4       4       t: ! R1 R2]4      t;R3 R4 lt<]! ]Pz                  4      ]! 4       RPR5 R6 ll4       4       t>]! ]P~                  4      ]! 4       RPR7 R8 ll4       4       t@]! ]P                  4      ]! 4       RQR9 R: ll4       4       tB]! ]P                  4      ]! 4       RQR; R< ll4       4       tD]! ]P                  4      ]! 4       RQR= R> ll4       4       tF]! ]P                  4      ]! 4       RQR? R@ ll4       4       tH]! ]P                  4      ]! 4       RQRA RB ll4       4       tJ]! ]P                  4      ]! 4       RQRC RD ll4       4       tLRE RF ltM]! ]P                  4      RRRG RH ll4       tO]! ]P                  4      RRRI RJ ll4       tQR# )S    N)IterableSequence)Literal
NamedTuple)register_decomposition)DimsType	ShapeTypeTensorLikeType)_maybe_convert_to_dtypeout_wrapperc          
      T    V ^8  d   QhR\         R\        R\        R\        R\         /# )   xnormsignal_numelforwardreturn)r
   NormTypeintbool)formats   "g/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/torch/_refs/fft.py__annotate__r   +   s4     6 66%6586CG66    c                @  a \         P                  ! S\        9   V3R l4       SR8X  d%   V ^\        P                  ! V4      ,          ,          # V'       * ;'       d    SRJ ;'       g    SR8H  ;'       g    T;'       d    SR8H  pV'       d   V ^V,          ,          # T # )z3Apply normalization to the un-normalized FFT resultc                     < R S  2# )zInvalid normalization mode:  )r   s   r   <lambda>_apply_norm.<locals>.<lambda>/   s    1MdV/Tr   orthoNbackwardr   )torch_check_NORM_VALUESmathsqrt)r   r   r   r   	normalizes   &f&& r   _apply_normr(   +   s     
LL%'TUwA		,//00EE$$, "D$*2D  %%DI%  &/1L !5A5r   c                    V ^8  d   QhR\         P                  R\        R\         P                  R\         P                  /# )r   dtyperequire_complexdevicer   )r"   r*   r   r,   )r   s   "r   r   r   :   s8      ;;)-7<||
[[r   c                  a  S P                   '       d   S # S P                  '       g   \        P                  ! 4       o \        P                  \        P
                  .pVP                  R9   pV'       d    VP                  \        P                  4       \        P                  ! S V9   V 3R l4       V'       d   \        P                  ! S 4      o S # )z@Helper to promote a dtype to one supported by the FFT primitivesc                     < R S  2# )zUnsupported dtype r   r*   s   r   r   #_promote_type_fft.<locals>.<lambda>J   s    3EeW1Mr   )cudametaxpu)
is_complexis_floating_pointr"   get_default_dtypefloat32float64typeappendfloat16r#   utilscorresponding_complex_dtype)r*   r+   r,   allowed_typesmaybe_support_halfs   f&&  r   _promote_type_fftr@   :   s      """'')]]EMM2M(??U]]+	LL-')MN11%8Lr   c                <    V ^8  d   QhR\         R\        R\         /# )r   tr+   r   )r
   r   )r   s   "r   r   r   R   s$     0 00(,00r   c                \    V P                   p\        W!V P                  4      p\        W4      # )zEHelper to promote a tensor to a dtype supported by the FFT primitives)r*   r@   r,   r   )rB   r+   cur_typenew_types   &&  r   _maybe_promote_tensor_fftrF   R   s(     wwH AHHEH"1//r   c                |    V ^8  d   QhR\         R\        \        R3,          R\        \        R3,          R\         /# )r   r   dims.sizesr   )r
   tupler   )r   s   "r   r   r   [   sB     D DD"38_D5:38_DDr   c                   \        V4      \        V4      8w  d$   \        R\        V4       R\        V4       24      hRpV P                  p^ .\        V4      ,          ^,          p\        \        V4      4       F  pW&,          R8X  d   K  WAV,          ,          W&,          8  dG   Rp\        V4      ^W,          ,          ,
          ^,
          pW&,          WAV,          ,          ,
          WW&   WAV,          ,          W&,          8  g   K  V P	                  W,          ^ W&,          4      p K  	  V'       d   \
        P                  ! W4      # T # )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 FT)lenAssertionErrorshaperangenarrowr"   constant_pad_nd)r   rH   rI   	must_copyx_sizes
pad_amountipad_idxs   &&&     r   _resize_fft_inputrX   [   s    4yCJ<SYKuSQVZLY
 	
 IggGs7|#a'J3t98r>7eh&I*oDG3a7G"'(W!W-="=J7eh&!UX.A  4=5  /C!Cr   c                z    V ^8  d   QhR\         R\        R\        R,          R\        R\        R\        R\        /# 	r   	func_nameinputnNdimr   r   r   strr
   r   r   r   )r   s   "r   r   r   y   s[     W WWW TzW 
	W
 W W Wr   c                  a \        VRR7      p\        P                  ! VP                  VRR7      3pVe   TM ^VP                  V,          ^,
          ,          o\
        P                  ! S^8  V3R l4       Ve   \        WS^,          ^,           3R7      pV'       d   \
        P                  ! V4      p\        P                  ! WSR7      p\        WtSVR7      # )	zBCommon code for performing any complex to real FFT (irfft or hfft)Tr+   Fwrap_scalarc                     < R S  R2# zInvalid number of data points (z) specifiedr   last_dim_sizes   r   r   _fft_c2r.<locals>.<lambda>       1-Lr   )rH   rI   r^   rh   r   r   r   )rF   r<   canonicalize_dimndimrO   r"   r#   rX   conjprimsfft_c2rr(   )	r[   r\   r]   r^   r   r   rH   outputrh   s	   &&&&&&  @r   _fft_c2rrs   y   s     &eTBE""5::sFHDAAS1AA1E,FM	LLL
 	}!%=A;MPQ;Q:ST

5!]]5-HFv}gVVr   c                    V ^8  d   QhR\         R\        R\        R,          R\        R\        R\        R\        R	\        /# )
r   r[   r\   r]   Nr^   r   r   onesidedr   r_   )r   s   "r   r   r      s\     / /// Tz/ 
	/
 / / / /r   c                  a aa	 \         P                  ! SP                  P                  '       * V V3R l4       \	        S4      o\
        P                  ! SP                  VRR7      3pVe   TMSP                  V,          o	\         P                  ! S	^8  V	3R l4       Ve   \        SWr34      o\        P                  ! SWvR7      p\        WS	V4      pV'       d   V# \         P                  ! V4      # )zBCommon code for performing any real to complex FFT (rfft or ihfft)c                  &   < S  R SP                    2# )z0 expects a floating point input tensor, but got r/   r[   r\   s   r   r   _fft_r2c.<locals>.<lambda>   s    9+Mekk][r   Frc   c                     < R S  R2# rf   r   dim_sizes   r   r   ry          !@
+Vr   r^   ru   )r"   r#   r*   r4   rF   r<   rm   rn   rO   rX   rp   fft_r2cr(   ro   )
r[   r\   r]   r^   r   r   ru   rH   retr|   s
   ff&&&&&  @r   _fft_r2cr      s     
LLKK"""[ &e,E""5::sFHDMqu{{3'7H	LLAV 	}!%t4
--4
;C
c7
3C3.uzz#.r   c                z    V ^8  d   QhR\         R\        R\        R,          R\        R\        R\        R\        /# rZ   r_   )r   s   "r   r   r      sR     5 555 Tz5 
	5
 5 5 5r   c                  a aa \         P                  ! SP                  P                  V V3R l4       \        P
                  ! SP                  VRR7      3pVe   TMSP                  V,          o\         P                  ! S^8  V3R l4       Ve   \        SWb34      o\        P                  ! SWeR7      p\        WtSV4      # )zCCommon code for performing any complex to complex FFT (fft or ifft)c                  &   < S  R SP                    2# z) expects a complex input tensor, but got r/   rx   s   r   r   _fft_c2c.<locals>.<lambda>   s    9+Fu{{mTr   Frc   c                     < R S  R2# rf   r   r{   s   r   r   r      r}   r   r^   r   )r"   r#   r*   r4   r<   rm   rn   rO   rX   rp   fft_c2cr(   )	r[   r\   r]   r^   r   r   rH   r   r|   s	   ff&&&&  @r   _fft_c2cr      s     
LLT ""5::sFHDMqu{{3'7H	LLAV 	}!%t4
--4
9Cs(G44r   c          
      b    V ^8  d   QhR\         R\        R,          R\        R\        R\         /# r   r\   r]   Nr^   r   r   r
   r   r   )r   s   "r   r   r      sE     	R 	R	R
Tz	R 
	R 		R
 	Rr   c           
      x    V P                   P                  '       d   \        R WW#RR7      # \        R WW#RRR7      # )fftTr   Fr   ru   r*   r4   r   r   r\   r]   r^   r   s   &&&&r   r   r      s8     {{uDAAuD5QQr   c          
      b    V ^8  d   QhR\         R\        R,          R\        R\        R\         /# r   r   )r   s   "r   r   r      sE     	T 	T	T
Tz	T 
	T 		T
 	Tr   c           
      x    V P                   P                  '       d   \        R WW#RR7      # \        R WW#RRR7      # )ifftFr   r   r   r   s   &&&&r   r   r      s8     {{#UCC#UUSSr   c          
      b    V ^8  d   QhR\         R\        R,          R\        R\        R\         /# r   r   )r   s   "r   r   r      sE     N NN
TzN 
N 	N
 Nr   c           
      "    \        R WW#RRR7      # )rfftTr   r   r   s   &&&&r   r   r      s     FEcMMr   c          
      b    V ^8  d   QhR\         R\        R,          R\        R\        R\         /# r   r   )r   s   "r   r   r      sE     A AA
TzA 
A 	A
 Ar   c           	           \        R WW#RR7      # )irfftFr   rs   r   s   &&&&r   r   r      s     GUs%@@r   c          
      b    V ^8  d   QhR\         R\        R,          R\        R\        R\         /# r   r   )r   s   "r   r   r      s>     ? ??
Tz? 
? 	?
 ?r   c           	           \        R WW#RR7      # )hfftTr   r   r   s   &&&&r   r   r      s     FEc>>r   c          
      b    V ^8  d   QhR\         R\        R,          R\        R\        R\         /# r   r   )r   s   "r   r   r   
  sE     P PP
TzP 
P 	P
 Pr   c           
      "    \        R WW#RRR7      # )ihfftFTr   r   r   s   &&&&r   r   r     s     GUs%$OOr   c                   ,   a  ] tR tRt o V 3R ltRtV tR# )_ShapeAndDimsi  c                Z   < V ^8  d   Qh/ S[ S[R3,          ;R&   S[ S[R3,          ;R&   # )r   .rO   rH   rJ   r   )r   __classdict__s   "r   r   _ShapeAndDims.__annotate__  s+     c? 
S/ r   r   N__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__r   s   @r   r   r           r   r   c                d    V ^8  d   QhR\         R\        R,          R\        R,          R\        /# )r   r\   rO   Nr^   r   )r
   r	   r   r   )r   s   "r   r   r     s5     69 6969"+d"2699AD6969r   c                  aaaa V P                   oV P                  oVei   \        V\        4      '       g   V3p\        P
                  ! SVRR7      p\        P                  ! \        \        V4      4      \        V4      8H  R 4       Ve   \        V\        4      '       g   V3p\        P                  ! VRJ ;'       g    \        V4      \        V4      8H  R 4       \        V4      o\        P                  ! SS8*  VV3R l4       Vf   \        \        SS,
          S4      4      p\        ;QJ d!    . V3R l\        VX4       4       F  NK  	  5M! V3R l\        VX4       4       4      pMVVf!   \        \        S4      4      p\        S4      pM2\        ;QJ d    . V3R lX 4       F  NK  	  5M! V3R lX 4       4      pV F!  o\        P                  ! S^ 8  V3R	 l4       K#  	  \        WCR
7      # )zTConvert the shape and dim arguments into a canonical form where neither are optionalNFrc   c                      R # )zFFT dims must be uniquer   r   r   r   r   6_canonicalize_fft_shape_and_dim_args.<locals>.<lambda>&  s    9Rr   c                      R # )z=When given, dim and shape arguments must have the same lengthr   r   r   r   r   r   0  s    Sr   c                     < R S RS  R2# )zGot shape with z" values but input tensor only has z dimensions.r   )	input_dimtransform_ndims   r   r   r   6  s    on%5 6!{,0r   c              3   L   <"   T F  w  rVR8w  d   TMSV,          x  K  	  R# 5i)   NrL   r   ).0sdinput_sizess   &  r   	<genexpr>7_canonicalize_fft_shape_and_dim_args.<locals>.<genexpr>?  s)      
. bAk!n,.s   !$c              3   6   <"   T F  pSV,          x  K  	  R # 5iNr   )r   r   r   s   & r   r   r   I  s     ;(Q+a..(s   c                     < R S  R2# rf   r   )r]   s   r   r   r   L  s    &EaS$Tr   )rO   rH   )rn   rO   
isinstancer   r<   canonicalize_dimsr"   r#   rM   setrJ   rP   zipr   )	r\   rO   r^   ret_dims	ret_shaper   r   r]   r   s	   &&&  @@@@r   $_canonicalize_fft_shape_and_dim_argsr     s    

I++K
#x((&C**9cuM 	H#h-/1R	
 %**HE 	4K113s8s5z1S	
 Ui'0	
 ;U9~#=yIJH E 
eX.
EE 
eX.
 
	 
y)*+&	 E;(;EE;(;;	QUTU  y88r   c                F    V ^8  d   QhR\         \        ,          R\        /# )r   xsr   )r   r   )r   s   "r   r   r   Q  s      hsm  r   c                ,    ^pV  F  pW,          pK  	  V# )zCompute product of a listr   )r   prodr   s   &  r   _prodr   Q  s    D	 Kr   c                    V ^8  d   QhR\         R\        R\        \        R3,          R\        \        R3,          R\        R\
        R\        /# )	r   function_namer\   rO   .r^   r   r   r   )r`   r
   rJ   r   r   r   )r   s   "r   r   r   Y  sg     V VVV c?V 
sCx	V
 V V Vr   c                   a a \         P                  ! SP                  P                  V V3R l4       \	        SW24      p\
        P                  ! WcVR7      p\        Wt\        V4      VR7      # )zECommon code for n-dimensional complex to complex FFTs (fftn or ifftn)c                  &   < S  R SP                    2# r   r/   )r   r\   s   r   r   _fftn_c2c.<locals>.<lambda>d  s    =/ ";;-!r   r   rl   )	r"   r#   r*   r4   rX   rp   r   r(   r   )r   r\   rO   r^   r   r   r   rr   s   ff&&&&  r   	_fftn_c2cr   Y  sT     
LL	!
 	%,A]]1w7FvuU|WUUr   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r\   r   Nr^   r   r   r
   r	   r   r   )r   s   "r   r   r   n  sJ     @ @@4@ 
D@ 	@
 @r   c           	      V    \        WV4      w  rB\        V R R7      p\        RWTW#R R7      # )Trb   fftnr   r   rF   r   r\   r   r^   r   rO   r   s   &&&&  r   r   r   l  s/     8#FLU!%>AVQs$??r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r   {  sJ     B BB4B 
DB 	B
 Br   c           	      V    \        WV4      w  rB\        V R R7      p\        RWTW#RR7      # )Trb   ifftnFr   r   r   s   &&&&  r   r   r   y  s/     8#FLU!%>AWa5AAr   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r     sJ     P PP4P 
DP 	P
 Pr   c                   a  \         P                  ! S P                  P                  '       * V 3R  l4       \	        S W4      w  rB\        S RR7      o \        S W$4      o \        P                  ! S VRR7      p\        WS\        V4      RR7      # )c                  "   < R S P                    2# )z2rfftn expects a real-valued input tensor, but got r/   r\   s   r   r   rfftn.<locals>.<lambda>  s    DU[[MRr   Frb   Tr~   rl   )r"   r#   r*   r4   r   rF   rX   rp   r   r(   r   )r\   r   r^   r   rO   outs   f&&&  r   rfftnr     sq     
LLKK"""R 6eQDJE%eUCEeS0E
--3
6CsE%L$OOr   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r     sJ     Q QQ4Q 
DQ 	Q
 Qr   c                 @  a  \         P                  ! S P                  P                  '       * V 3R  l4       \	        S W4      w  rB\         P                  ! \        V4      ^ 8  R 4       \        S RR7      o \        S W$4      o \        P                  ! S VR	R RR7      p\        V4      ^8X  d,   \        WSV^ ,          RR7      p\        P                  ! V4      # \        P                  ! V4      p\        P                  ! WRRR	 RR7      p\        WS\        V4      RR7      # )
c                  "   < R S P                    2# )z3ihfftn expects a real-valued input tensor, but got r/   r   s   r   r   ihfftn.<locals>.<lambda>  s    Eekk]Sr   c                      R # )z'ihfftn must transform at least one axisr   r   r   r   r   r     s    )Rr   Frb   NTr~   rl   r   rL   )r"   r#   r*   r4   r   rM   rF   rX   rp   r   r(   ro   conj_physicalr   r   )r\   r   r^   r   rO   tmps   f&&&  r   ihfftnr     s     
LLKK"""S 6eQDJE	LLUa!RS%eUCEeS0E
--3rs8d
;C
3x1}#uQxOzz#


c
"C
--Sb5
9CsE%L%PPr   c                   ,   a  ] tR tRt o V 3R ltRtV tR# )_CanonicalizeC2rReturni  c                f   < V ^8  d   Qh/ S[ S[R3,          ;R&   S[ S[R3,          ;R&   S[;R&   # )r   .rO   r^   rh   r   )r   r   s   "r   r   #_CanonicalizeC2rReturn.__annotate__  s8     c? 	sCx   r   r   Nr   r   s   @r   r   r     r   r   r   c          
      p    V ^8  d   QhR\         R\        R\        R,          R\        R,          R\        /# )r   fnamer\   r   Nr^   r   )r`   r
   r	   r   r   )r   s   "r   r   r     sC       4 
D	
 r   c                  a a \        WV4      w  rC\        P                  ! \        V4      ^ 8  V 3R l4       Ve   VR,          R8X  d*   ^VP                  VR,          ,          ^,
          ,          oM	VR,          o\        P                  ! S^8  V3R l4       \        V4      pS^,          ^,           VR&   \        \        V4      VSR7      # )zCanonicalize shape and dim arguments for n-dimensional c2r transforms,
as well as calculating the last_dim_size which is shape[dim[-1]] for the outputc                     < S  R 2# )z! must transform at least one axisr   )r   s   r   r   :_canonicalize_fft_c2r_shape_and_dim_args.<locals>.<lambda>  s    E72S)Tr   c                     < R S  R2# rf   r   rg   s   r   r   r     rj   r   )rO   r^   rh   rL   )r   r"   r#   rM   rO   listr   rJ   )r   r\   r   r^   rO   
shape_listrh   s   f&&&  @r   (_canonicalize_fft_c2r_shape_and_dim_argsr     s     8#FLU	LLUa!TUyAbERKU[[R1A56b		LLL
 eJ"a'!+JrN!JS r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r     sJ     S SS4S 
DS 	S
 Sr   c                    a \        R WV4      w  rBp\        V RR7      p \        WV4      p \        P                  ! WVR7      o\        SV\        V3R lV 4       4      RR7      # )irfftnTrb   rk   c              3   J   <"   T F  pSP                   V,          x  K  	  R # 5ir   )rO   )r   r   r   s   & r   r   irfftn.<locals>.<genexpr>  s     'Bc		!cs    #Fr   )r   rF   rX   rp   rq   r(   r   )r\   r   r^   r   rO   rh   r   s   &&&&  @r   r  r    sb     !I%C!E &eTBEe%0E
--m
DCsD%'Bc'B"BERRr   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r     sC     ? ??4? 
D? 	?
 ?r   c           	      `   \        R WV4      w  rBp\        V RR7      p \        WV4      p \        V4      ^8  d   \        P
                  ! WRR RR7      MT p\        Wc\        VRR 4      RR7      p\        P                  ! V4      p\        P                  ! WbRR VR7      p\        WsVRR7      # )hfftnTrb   Nr   r   rk   rL   )
r   rF   rX   rM   rp   r   r(   r   r   rq   )r\   r   r^   r   rO   rh   r   r   s   &&&&    r   r  r    s     !I3!E &eTBEe%0E>A#hl%--s8T
:PUC
cuSbz!2D
AC


c
"C
--RS
GCs->>r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r     sC     : ::4: 
D: 	:
 :r   c                 D    \         P                  P                  WW#R 7      # )r   r^   r   )r"   r   r   r\   r   r^   r   s   &&&&r   fft2r    s     99>>%#>99r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r   
  C     ; ;;4; 
D; 	;
 ;r   c                 D    \         P                  P                  WW#R 7      # r
  )r"   r   r   r  s   &&&&r   ifft2r         99??53?::r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r     r  r   c                 D    \         P                  P                  WW#R 7      # r
  )r"   r   r   r  s   &&&&r   rfft2r    r  r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r      C     < <<4< 
D< 	<
 <r   c                 D    \         P                  P                  WW#R 7      # r
  )r"   r   r  r  s   &&&&r   irfft2r         99EC;;r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r   +  r  r   c                 D    \         P                  P                  WW#R 7      # r
  )r"   r   r  r  s   &&&&r   hfft2r  )  r  r   c          
      p    V ^8  d   QhR\         R\        R,          R\        R,          R\        R\         /# r   r   )r   s   "r   r   r   6  r  r   c                 D    \         P                  P                  WW#R 7      # r
  )r"   r   r   r  s   &&&&r   ihfft2r  4  r  r   c                `    V ^8  d   QhR\         R,          R\        R\        \        ,          /# )r   r^   Nr   r   )r   r
   r   r   )r   s   "r   r   r   ?  s)      (T/ n c r   c                    V f   \        \        VP                  4      4      # \        V \        4      '       g   V .# \        V 4      # )zIConvert Optional[DimsType] to a simple list, defaulting to all dimensions)r   rP   rn   r   r   )r^   r   s   &&r   _default_alldimsr"  ?  s8    
{E!&&M""X&&uCyr   c                J    V ^8  d   QhR\         R\        R,          R\         /# r   r\   r^   Nr   r
   r   )r   s   "r   r   r   J  s%     * *N *D *N *r   c                     \        W4      pV Uu. uF  q0P                  V,          ^,          NK  	  pp\        P                  ! WV4      # u upi )r   r"  rO   r"   rollr\   r^   rH   r   shifts   &&   r   fftshiftr+  I  sD    C'D*./$Q[[^q  $E/::eD)) 0s   "Ac                J    V ^8  d   QhR\         R\        R,          R\         /# r$  r%  )r   s   "r   r   r   Q  s%     * *^ *(T/ *^ *r   c                     \        W4      pV Uu. uF#  q0P                  V,          ^,           ^,          NK%  	  pp\        P                  ! WV4      # u upi )r   r'  r)  s   &&   r   	ifftshiftr.  P  sI    C'D0451kk!nq Q&&E5::eD)) 6s   )A)r   r  r   r   r  r  r   r  r   r   r  r   r   r  r   r   r  r  r+  r.  )r   r!   r    >   Nr    r   r!   )F)NrL   N)NNN)N)rL   Nr   )Rr%   collections.abcr   r   typingr   r   r"   torch._prims_primsrp   torch._prims_common_prims_commonr<   torch._decompr   r   r	   r
   torch._prims_common.wrappersr   r   __all__r   r$   _opsopsatenr(   r@   rF   rX   rs   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   r   r   <module>rP     s    . &   # 0 C C M2 '8995zz~~600D<W6/:54 %	R  &	R &	T  '	T &N  'N 'A  (A &?  '? 'P  (PJ 
69rV& &@  '@ 'B  (B 'P  (P" (Q  )Q4Z 8 (S  )S '?  (?& &:  ': ';  (; ';  (; (<  )< ';  (; (<  )< ))** +* **+* ,*r   