
    _Mh                     z   d Z ddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZ 	 	 d"ddd	Z ej        ed
          Zde_         ej        ed          Zde_        	 	 d"dddZ ej        ed
          Zde_         ej        ed          Zde_        	 	 d"dddZ ej        ed
          Zde_         ej        ed          Zde_        d#dddZd#dddZ	 	 d$dddZ ej        ed
          Zde_         ej        ed          Zde_        	 	 d$dddZ ej        ed
          Z de _         ej        ed          Z!de!_        	 	 d$dddZ" ej        e"d
          Z#de#_         ej        e"d          Z$de$_        d%dZ% ej        e%d
          Z&d e&_         ej        e%d          Z'd!e'_        dS )&z(
Discrete Fourier Transforms - basic.py
    N   )pypocketfft)	_asfarray_init_nd_shape_and_axes_datacopied
_fix_shape_fix_shape_1d_normalization_workersF)planc                   |t          d          t          |          }|pt          ||          }t          ||           }t	          |          }|t          |||          \  }}	|p|	}n1|j        |         dk     r d|j        |          d}
t          |
          |r|j        j	        dk    r|nd}t          j        ||f| |||          S )z@ Return discrete Fourier transform of real or complex sequence. NFPassing a precomputed plan is not yet supported by scipy.fft functionsr   invalid number of data points () specifiedc)NotImplementedErrorr   r   r
   r   r	   shape
ValueErrordtypekindpfftc2c)forwardxnaxisnormoverwrite_xworkersr   tmpcopiedmessageouts               Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/fft/_pocketfft/basic.pyr   r      s     ! #E F F 	F
A,,C4S!!4!4K$((DwG}#CD11V!+V	41		PCIdOPPP!!!A#).C"7"733TC8C$'4g>>>    Tfftifftc                   |t          d          t          |          }t          ||           }t          |          }t	          j        |          st          d          |t          |||          \  }}	n/|j        |         dk     rt          d|j        |          d          t          j        ||f| |d|          S )z8
    Discrete Fourier transform of a real sequence.
    Nr   x must be a real sequencer   r   r   )r   r   r
   r   np	isrealobj	TypeErrorr	   r   r   r   r2c
r   r   r   r   r   r   r    r   r!   _s
             r%   r.   r.   (   s    
 ! #E F F 	F
A,,C$((DwG< 53444}sAt,,QQ	41		W39T?WWWXXX 8C$'4w???r&   rfftihfftc          	      z   |t          d          t          |          }t          ||           }t          |          }t	          j        |          r|dz   }|-|j        |         dz
  dz  }|dk     rt          d| d          nt          ||dz  dz   |          \  }}	t          j
        ||f|| |d|          S )zG
    Return inverse discrete Fourier transform of real sequence x.
    Nr                   r      zInvalid number of data points (r   )r   r   r
   r   r+   r,   r   r   r	   r   c2rr/   s
             r%   r6   r6   F   s    
 ! #E F F 	F
A,,C$((DwG 
|C Ci 	yYt_q A%q55MqMMMNNN  sQTQJ55Q 8C$!WdD'BBBr&   hfftirfftr   c                L    |t          d          t          | |||||          S )z@
    2-D discrete Fourier transform of a Hermitian sequence
    Nr   )r   hfftnr   saxesr   r   r    r   s          r%   hfft2r@   h   s=    
 ! #E F F 	FAtT;888r&   c                L    |t          d          t          | |||||          S )zH
    2-D discrete inverse Fourier transform of a Hermitian sequence
    Nr   )r   ihfftnr=   s          r%   ihfft2rC   s   s=    
 ! #E F F 	F!QdK999r&   c                   |t          d          t          |          }t          |||          \  }	}|pt          ||          }t	          |          }t          |          dk    r|S t          ||	|          \  }}
|p|
}t          ||           }|r|j        j	        dk    r|nd}t          j        ||| |||          S )z=
    Return multidimensional discrete Fourier transform.
    Nr   r   r   )r   r   r   r   r   lenr   r
   r   r   r   r   )r   r   r>   r?   r   r   r    r   r!   r   r"   r$   s               r%   c2cnrF   ~   s    
 ! #E F F 	F
A,,C)#q$77KE44S!!4!4KwG
4yyA~~S%..KC'K$((DA#).C"7"733TC8Cwc7;;;r&   fftnifftnc                   |t          d          t          |          }t          j        |          st	          d          t          |||          \  }	}t          ||	|          \  }}
t          ||           }t          |          }t          |          dk    rt          d          t          j        ||| |d|          S )z@Return multidimensional discrete Fourier transform of real inputNr   r*   r   #at least 1 axis must be transformed)r   r   r+   r,   r-   r   r   r
   r   rE   r   r   r.   )r   r   r>   r?   r   r   r    r   r!   r   r0   s              r%   r2cnrK      s     ! #E F F 	F
A,,C< 53444)#q$77KE4UD))FC$((DwG
4yyA~~>??? 8CwdG<<<r&   rfftnrB   c          	      (   |t          d          t          |          }t          j        |          r|dz   }|du }	t	          |||          \  }
}t          |          dk    rt          d          t          |
          }
|	r|j        |d                  dz
  dz  |
d<   t          ||           }t          |          }|
d         }|
d         dz  dz   |
d<   t          t          ||
|                    \  }}t          j        |||| |d|          S )	zDMultidimensional inverse discrete fourier transform with real outputNr   r4   r   rJ   r   r   r5   )r   r   r+   r,   r   rE   r   listr   r
   r   tupler   r   r6   )r   r   r>   r?   r   r   r    r   r!   noshaper   lastsizer0   s                r%   c2rnrR      s2    ! #E F F 	F
A,,C 
|C Ci4iG)#q$77KE4
4yyA~~>???KKE 0WT"X&*a/b	$((DwG RyHra1$E"I:c5$//00FC 8Cx$gFFFr&   r<   irfftnc           	         t          |          }|pt          ||          }t          ||           }t          d          }|j        j        dk    rt          d          |t          |||          \  }}|p|}n/|j        |         dk     rt          d|j        |          d          |r|nd}	t          j        ||f| | ||	|          S )z=FFT of a real sequence, returning fftpack half complex formatNr   r*   r   r   r   )r   r   r
   r   r   r   r-   r	   r   r   r   r2r_fftpack)
r   r   r   r   r   r   r!   r    r"   r$   s
             r%   rU   rU      s    
A,,C4S!!4!4K$((DtnnG
y~3444}#CD11V!+V	41		W39T?WWWXXX'334CC$'7D#wOOOr&   rfft_fftpackirfft_fftpack)Nr   NFN)Nr9   NFN)NNNFN)Nr   NF)(__doc__numpyr+   	functools r   r   helperr   r   r   r   r	   r
   r   r   partialr'   __name__r(   r.   r1   r2   r6   r7   r8   r@   rC   rF   rG   rH   rK   rL   rB   rR   r<   rS   rU   rV   rW    r&   r%   <module>r`      s            ! ! ! ! ! !                  =B?"? ? ? ? ?. iT""ye$$ =B@"@ @ @ @ @0 yd##	#u%% =BC"C C C C C8 yd##	#u%%99 9 9 9 9:: : : : : @E<#< < < < <4 yt$$	$&&?D=#= = = = =. 		$%%		4	'	' @E G# G  G  G  G  GF 		$%%		4	'	'P P P P* !y d33& !	!+u55(   r&   