
    /j                        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Z		 dddZ
 G d de          Z G d de          ZdS )    )annotationsN)OpRunx
np.ndarray
fft_lengthintaxisreturnc                   t           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.nr	   .r	   )npfftrealimagconcatenatenewaxis)r   r   r	   transformedreal_frequenciesimaginary_frequenciess         ^/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/reference/ops/op_dft.py_fftr      sv    &**Q*4*88Kw{++GK00>	#rz/	*,A#rz/,RS       onesidedbool	normalizec                $   | j         d         dk    r| }nd | j         D             }t          d| j         d         d          |d<   | t          |                   }t          d| j         d         d          |d<   | t          |                   }|d|z  z   }t          j        |d          }	t          |	||          }
|rJd |
j         D             }t          d|
j         |         dz  dz             ||<   |
t          |                   }
|r|
|z  }
|
S )	Nr      c                .    g | ]}t          d |          S r   slice).0r   s     r   
<listcomp>z_cfft.<locals>.<listcomp>"   s     ///!%1++///r   r                    ?r   c                .    g | ]}t          d |          S r"   r#   )r%   as     r   r&   z_cfft.<locals>.<listcomp>-   s     444!%1++444r   )shaper$   tupler   squeezer   )r   r   r	   r   r   signalslicesr   r   complex_signalsresults              r   _cfftr2      s$    	wr{a 0/qw///1agbk1--r
v1agbk1--r
vT	!j,,O/:D999F '44v|444QT 2a 7! ;<<tf& *Mr   c                   t           j                            | ||          }t          j        |          }t          j        |          }t          j        |dt           j        f         |dt           j        f         fd          S )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   _ifftr8   5   su    fkk!zk55G77##L((>	c2:o	&(9#rz/(JK   r   c                n    t           j                            | ||          }|dt           j        f         S )z3IRFFT: one-sided complex input -> full real output.r   .)r   r   irfftr   )r   r   r	   r5   s       r   _irfftr;   @   s,    fll1
l66G3
?##r   Fc                   | j         d         dk    rt          j        | d          }nd | j         D             }t          d| j         d         d          |d<   | t	          |                   }t          d| j         d         d          |d<   | t	          |                   }t          j        |d          dt          j        |d          z  z   }|rt          |||          S t          |||          S )z?Complex IFFT wrapper that handles both standard IFFT and IRFFT.r   r    c                .    g | ]}t          d |          S r"   r#   )r%   dims     r   r&   z_cifft.<locals>.<listcomp>Q   s     333C%3--333r   r   r'   r(   r   )r+   r   r-   r$   r,   r;   r8   )r   r   r	   r   frequenciesr/   r   r   s           r   _cifftr@   G   s    
 	wr{ajB'' 43173331agbk1--r
v1agbk1--r
vjr**R"*T22F2F-FF :k:D9999jt4444r   c                       e Zd Z	 	 	 	 dddZdS )DFT_17Nr    Fr   r   
dft_length
int | Noner	   r   inverser   r   r
   tuple[np.ndarray]c                   |t          |j                  z  }|%|r|rd|j        |         dz
  z  }n|j        |         }|rt          ||||          }nt          ||||d          }|                    |j                  fS Nr'   r    )r	   r   F)r	   r   r   lenr+   r@   r2   astypedtypeselfr   rC   r	   rE   r   r1   s          r   _runzDFT_17._run`        c!'ll"  +8 +!'$-!"34

WT]
 	YAzxHHHFF1jthRWXXXFag&&((r   )Nr    FFr   r   rC   rD   r	   r   rE   r   r   r   r
   rF   __name__
__module____qualname__rO    r   r   rB   rB   _   s;         "&) ) ) ) ) ) )r   rB   c                       e Zd Z	 	 	 	 dddZdS )DFT_20NFr   r   rC   rD   r	   r   rE   r   r   r
   rF   c                   |t          |j                  z  }|%|r|rd|j        |         dz
  z  }n|j        |         }|rt          ||||          }nt          ||||d          }|                    |j                  fS rH   rI   rM   s          r   rO   zDFT_20._run{   rP   r   )NrY   FFrQ   rR   rV   r   r   rX   rX   z   s;         "&) ) ) ) ) ) )r   rX   )r   r   r   r   r	   r   r
   r   )r   r   r   r   r	   r   r   r   r   r   r
   r   )F)
r   r   r   r   r	   r   r   r   r
   r   )
__future__r   numpyr   onnx.reference.op_runr   r   r2   r8   r;   r@   rB   rX   rV   r   r   <module>r^      s   # " " " " "     ' ' ' ' ' '      >   $ $ $ $ AF5 5 5 5 50) ) ) ) )U ) ) )6) ) ) ) )U ) ) ) ) )r   