
    bIg                        d dl mZ d dlZd dlmZ ddZ	 	 	 	 	 	 	 	 	 	 	 	 ddZddZ	 d	 	 	 	 	 	 	 	 	 ddZ	 G d d	e      Z
 G d
 de      Zy)    )annotationsN)OpRunc                   t         j                  j                  | ||      }t        j                  |      }t        j                  |      }t        j                  |dt         j
                  f   |dt         j
                  f   fd      S )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         V/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/reference/ops/op_dft.py_fftr      so    &&**Q*4*8Kww{+GGK0>>	#rzz/	*,A#rzz/,RS     c                F   | j                   d   dk(  r| }n| j                   D  cg c]  } t        d|        }} t        d j                   d   d      |d<   | t        |         }t        d| j                   d   d      |d<   | t        |         }|d|z  z   }t        j                  |d      }	t        |	||      }
|rS|
j                   D cg c]  }t        d|       }}t        d|
j                   |   dz  dz         ||<   |
t        |         }
|r|
|z  }
|
S c c} w c c}w )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/!%1+//1aggbk1-r
v1aggbk1-r
vT	!jj,O/:D9F'-||4!%1+44QT 2a 7! ;<tf&*M! 0 5s   DDc                   t         j                  j                  | ||      }t        j                  |      }t        j                  |      }t        j
                  |dt         j                  f   |dt         j                  f   fd      }|rR|j                  D cg c]  }t        |       }	}t        d|j                  |   dz  dz         |	|<   |t        |	         S |S c c}w )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!Zdk3G777#L(^^	c2::o	&(9#rzz/(JKF $*LL1q%(11QT 2a 7! ;<teFm$$M 2s   C"c                   | j                   d   dk(  r| }n| j                   D  cg c]  } t        d|        }} t        d j                   d   d      |d<   | t        |         }t        d| j                   d   d      |d<   | t        |         }|d|z  z   }t        j                  |d      }t        ||||      S c c} w )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/!%1+//1aggbk1-r
v1aggbk1-r
vR$Y&**["5$jthOO 0s   B<c                  4    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZy)DFT_17Nc                    |t        |j                        z  }||j                  |   }|rt        ||||      }nt        ||||d      }|j	                  |j
                        fS Nr0   F)r   r    r!   lenr   r3   r'   astypedtypeselfr   
dft_lengthr   inverser    r%   s          r   _runzDFT_17._runU   e     c!''l"JAzxHF1jthRWXFagg&((r   )Nr   FFr   
np.ndarrayr>   z
int | Noner   intr?   boolr    rE   returnztuple[np.ndarray]__name__
__module____qualname__r@    r   r   r5   r5   T   sO     "&)) ) 	)
 ) ) 
)r   r5   c                  4    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZy)DFT_20Nc                    |t        |j                        z  }||j                  |   }|rt        ||||      }nt        ||||d      }|j	                  |j
                        fS r7   r8   r<   s          r   r@   zDFT_20._runi   rA   r   )NFFrB   rG   rK   r   r   rM   rM   h   sO     "&)) ) 	)
 ) ) 
)r   rM   )r   rC   r   rD   r   rD   rF   rC   )r   rC   r   rD   r   rD   r    rE   r!   rE   rF   rC   )
r   rC   r   rD   r   rD   r    rE   rF   rC   )F)
__future__r   numpyr
   onnx.reference.op_runr   r   r'   r.   r3   r5   rM   rK   r   r   <module>rS      s    #  '  	
  >  AFPP"P*-P9=PP )U )()U )r   