
    h                        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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         S/var/www/fran/franai/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nU(       aT  UR                   Vs/ s H  n[        U5      PM     n	n[        SUR                  U   S-  S-   5      X'   U[        U	5         $ U$ s  snf )Nr	   .r   r   r   r   )
r
   r   ifftr   r   r   r   r   r   r   )
r   r   r   r    signalsreal_signalsimaginary_signalsmergedr&   r#   s
             r   _ifftr.   5   s    ffkk!dk3G777#L(^^	c2::o	&(9#rzz/(JKF $*LL1Lq%(L1QT 2a 7! ;<eFm$$M 2s   C%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[        XX#S9$ s  sn f )Nr   r   r   r   r   r   r    )r   r   r   r
   r   r.   )	r   r   r   r    frequenciesr#   r   r   complex_frequenciess	            r   _cifftr3   D   s     	wwr{a'(ww/w!%1+w/1aggbk1-r
v1aggbk1-r
vR$Y&**["5$tOO 0s   B<c                  "    \ rS rSrSSS jjrSrg)DFT_17T   Nc                    U[        UR                  5      -  nUc  UR                  U   nU(       a  [        XX5S9nO[        XX5SS9nUR	                  UR
                  5      4$ Nr0   F)r   r    r!   lenr   r3   r'   astypedtypeselfr   
dft_lengthr   inverser    r%   s          r   _runDFT_17._runU   [    c!''l"JAHF1tRWXFagg&((r    )Nr   FFr   
np.ndarrayr?   z
int | Noner   intr@   boolr    rH   returnztuple[np.ndarray]__name__
__module____qualname____firstlineno__rA   __static_attributes__rD   r   r   r5   r5   T       	) 	)r   r5   c                  "    \ rS rSrSSS jjrSrg)DFT_20a   Nc                    U[        UR                  5      -  nUc  UR                  U   nU(       a  [        XX5S9nO[        XX5SS9nUR	                  UR
                  5      4$ r8   r9   r=   s          r   rA   DFT_20._runb   rC   r   rD   )NFFrE   rJ   rD   r   r   rR   rR   a   rP   r   rR   )r   rF   r   rG   r   rG   rI   rF   )r   rF   r   rG   r   rG   r    rH   r!   rH   rI   rF   )
r   rF   r   rG   r   rG   r    rH   rI   rF   )F)
__future__r   numpyr
   onnx.reference.op_runr   r   r'   r.   r3   r5   rR   rD   r   r   <module>rZ      s    #  '  	
  >  AFPP"P*-P9=PP 
)U 
)
)U 
)r   