
    Si                        S SK Jr  S SKrS SKJr  SS jr            SS jrSS jrSS jr	 S         SS jjr
 " S	 S
\5      r " S S\5      rg)    )annotationsN)OpRunc                   [         R                  R                  XUS9n[         R                  " U5      n[         R                  " U5      n[         R                  " US[         R
                  4   US[         R
                  4   4SS9$ )zECompute the FFT return the real representation of the complex result.naxis.r   )npfftrealimagconcatenatenewaxis)x
fft_lengthr   transformedreal_frequenciesimaginary_frequenciess         X/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/reference/ops/op_dft.py_fftr      sm    &&**Q4*8Kww{+GGK0>>	#rzz/	*,A#rzz/,RS     c                ^   U R                   S   S:X  a  U nOU R                    V s/ s H  n [        SU 5      PM     nn [        SW R                   S   S5      US'   U [        U5         n[        SU R                   S   S5      US'   U [        U5         nUSU-  -   n[        R                  " US5      n	[        XUS9n
U(       aU  U
R                    Vs/ s H  n[        SU5      PM     nn[        SU
R                   U   S-  S-   5      Xb'   U
[        U5         n
U(       a  X-  n
U
$ s  sn f s  snf )Nr	      r                    ?r
   )shapeslicetupler   squeezer   )r   r   r   onesided	normalizesignalslicesr   r   complex_signalsresultas               r   _cfftr(      s    	wwr{a ()ww/w!%1+w/1aggbk1-r
v1aggbk1-r
vT	!jj,O/D9F'-||4|!%1+|4QT 2a 7! ;<f&M! 0 5s   D%D*c                   [         R                  R                  XUS9n[         R                  " U5      n[         R                  " U5      n[         R
                  " US[         R                  4   US[         R                  4   4SS9$ )z/Standard IFFT: complex input -> complex output.r   .r	   r
   )r   r   ifftr   r   r   r   )r   r   r   signalsreal_signalsimaginary_signalss         r   _ifftr.   5   sl    ffkk!k5G777#L(>>	c2::o	&(9#rzz/(JK r   c                h    [         R                  R                  XUS9nUS[         R                  4   $ )z3IRFFT: one-sided complex input -> full real output.r   .)r   r   irfftr   )r   r   r   r+   s       r   _irfftr1   @   s+    ffll1l6G3

?##r   c                   U R                   S   S:X  a  [        R                  " U S5      nOU R                    Vs/ s H  n[        SU5      PM     nn[        SU R                   S   S5      US'   U [	        U5         n[        SU R                   S   S5      US'   U [	        U5         n[        R                  " US5      S[        R                  " US5      -  -   nU(       a
  [        XAUS9$ [        XAUS9$ s  snf )z?Complex IFFT wrapper that handles both standard IFFT and IRFFT.r	   r   r   r   r   r
   )r   r   r    r   r   r1   r.   )	r   r   r   r!   frequenciesdimr$   r   r   s	            r   _cifftr5   G   s    
 	wwr{ajjB' ,-7737C%3-731aggbk1-r
v1aggbk1-r
vjjr*R"**T22F-FFkD99t44 4s   C5c                  @    \ rS rSr    S           SS jjrSrg)DFT_17_   Nc                   U[        UR                  5      -  nUc3  U(       a  U(       a  SUR                  U   S-
  -  nOUR                  U   nU(       a  [        XX5S9nO[        XX5SS9nUR	                  UR
                  5      4$ Nr   r   )r   r!   F)r   r!   r"   lenr   r5   r(   astypedtypeselfr   
dft_lengthr   inverser!   r&   s          r   _runDFT_17._run`   {     c!''l" 8!''$-!"34
WWT]
AHF1tRWXFagg&((r    )Nr   FFr   
np.ndarrayrA   z
int | Noner   intrB   boolr!   rJ   returnztuple[np.ndarray]__name__
__module____qualname____firstlineno__rC   __static_attributes__rF   r   r   r7   r7   _   sT     "&)) ) 	)
 ) ) 
) )r   r7   c                  @    \ rS rSr    S           SS jjrSrg)DFT_20z   Nc                   U[        UR                  5      -  nUc3  U(       a  U(       a  SUR                  U   S-
  -  nOUR                  U   nU(       a  [        XX5S9nO[        XX5SS9nUR	                  UR
                  5      4$ r:   r;   r?   s          r   rC   DFT_20._run{   rE   r   rF   )NFFrG   rL   rF   r   r   rS   rS   z   sT     "&)) ) 	)
 ) ) 
) )r   rS   )r   rH   r   rI   r   rI   rK   rH   )r   rH   r   rI   r   rI   r!   rJ   r"   rJ   rK   rH   )F)
r   rH   r   rI   r   rI   r!   rJ   rK   rH   )
__future__r   numpyr   onnx.reference.op_runr   r   r(   r.   r1   r5   r7   rS   rF   r   r   <module>r[      s    #  '  	
  >$ AF55"5*-59=550)U )6)U )r   