o
    ?Hh                     @   s  d dl mZmZmZmZmZ ddlmZ d dlZ	dd Z
h dZdd	 Zd
d Z		d6ddddZd6ddddZ		d6ddddZ		d6ddddZ		d6ddddZ		d6ddddZ		d7ddddZ		d7ddddZ		d8ddd d!Z		d8ddd"d#Z		d7ddd$d%Z		d8ddd&d'Z		d7ddd(d)Z		d8ddd*d+Zd,d- Z		d7ddd.d/Z		d8ddd0d1Z		d7ddd2d3Z		d8ddd4d5Z dS )9    )array_namespaceis_numpyxp_unsupported_param_msg
is_complexxp_float_to_complex   )
_pocketfftNc                 C   s8   | d ur
t td|d urt td|d u rd}|S )Nworkersplanbackward)
ValueErrorr   )r	   r
   norm r   X/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/fft/_basic_backend.py_validate_fft_args   s   r   >   fftfftnhfftifftifftnirfftirfftnc	              	   C      t |}	t|	rt|}||||||||dS t|||}t|	drTt|	j| }
| tv rLz|
||||d}W |S    t	||	}|
||||d}Y |S |
||||dS t|}|||||d}|	|S )Nnaxisr   overwrite_xr	   r
   r   )r   r   r   
r   r   npasarrayr   hasattrgetattrr   complex_funcsr   )func_strpocketfft_funcxr   r   r   r   r	   r
   xpxp_funcresyr   r   r   _execute_1D   *   





r*   c	              	   C   r   )Nsaxesr   r   r	   r
   r   )r-   r.   r   r   )r#   r$   r%   r-   r.   r   r   r	   r
   r&   r'   r(   r)   r   r   r   _execute_nD4   r+   r/   Fr
   c                C      t dtj| ||||||d	S )Nr   r   )r*   r   r   r%   r   r   r   r   r	   r
   r   r   r   r   M      r   c                C   r2   )Nr   r   )r*   r   r   r3   r   r   r   r   S   r4   r   c                C   r2   )Nrfftr   )r*   r   r5   r3   r   r   r   r5   Y   r4   r5   c                C   r2   )Nr   r   )r*   r   r   r3   r   r   r   r   _   r4   r   c                C   r2   )Nr   r   )r*   r   r   r3   r   r   r   r   e   r4   r   c                C   r2   )Nihfftr   )r*   r   r6   r3   r   r   r   r6   k   r4   r6   c                C   r2   )Nr   r,   )r/   r   r   r%   r-   r.   r   r   r	   r
   r   r   r   r   q   r4   r   c                C   r2   )Nr   r,   )r/   r   r   r7   r   r   r   r   x   r4   r   r0   c             	   C      t | ||||||dS Nr1   )r   r7   r   r   r   fft2~      r<   c             	   C   r:   r;   )r   r7   r   r   r   ifft2   r=   r>   c                C   r2   )Nrfftnr,   )r/   r   r?   r7   r   r   r   r?      r4   r?   c             	   C   r:   r;   )r?   r7   r   r   r   rfft2   r=   r@   c                C   r2   )Nr   r,   )r/   r   r   r7   r   r   r   r      r4   r   c             	   C   r:   r;   )r   r7   r   r   r   irfft2   r=   rA   c                 C   s<   | dv rd} | S | dkrd} | S | dkrt d|  d| S )N)Nr   forwardr   orthozInvalid norm value z.; should be "backward", "ortho", or "forward".)r   )r   r   r   r   _swap_direction   s   rD   c             	   C   s`   t | }t|rt| } tj| ||||||dS t| |r#|| } t| ||t	||||dS r;   )
r   r   r   r   r   hfftnr   conjr   rD   r%   r-   r.   r   r   r	   r
   r&   r   r   r   rE      s   


rE   c             	   C   r:   r;   )rE   r7   r   r   r   hfft2   r=   rH   c                C   sR   t | }t|rt| } tj| ||||||dS |t| ||t||||dS r;   )	r   r   r   r   r   ihfftnrF   r?   rD   rG   r   r   r   rI      s   
rI   c             	   C   r:   r;   )rI   r7   r   r   r   ihfft2   r=   rJ   )Nr0   NFN)NNNFN)Nr8   NFN)!scipy._lib._array_apir   r   r   r   r    r   numpyr   r   r"   r*   r/   r   r   r5   r   r   r6   r   r   r<   r>   r?   r@   r   rA   rD   rE   rH   rI   rJ   r   r   r   r   <module>   s    	