
    (ph                        S r SSKrSSKrSSKJr  SSKJrJ	r	J
r
JrJrJrJr    S SS.S jjr\R                   " \S	5      rS
\l        \R                   " \S5      rS\l          S SS.S jjr\R                   " \S	5      rS\l        \R                   " \S5      rS\l          S SS.S jjr\R                   " \S	5      rS\l        \R                   " \S5      rS\l        S!SS.S jjrS!SS.S jjr  S"SS.S jjr\R                   " \S	5      rS\l        \R                   " \S5      rS\l          S"SS.S jjr\R                   " \S	5      r S\ l        \R                   " \S5      r!S\!l          S"SS.S jjr"\R                   " \"S	5      r#S\#l        \R                   " \"S5      r$S\$l        S#S jr%\R                   " \%S	5      r&S\&l        \R                   " \%S5      r'S\'l        g)$z(
Discrete Fourier Transforms - basic.py
    N   )pypocketfft)	_asfarray_init_nd_shape_and_axes_datacopied
_fix_shape_fix_shape_1d_normalization_workersF)planc                   Ub  [        S5      e[        U5      nU=(       d    [        X5      n[        X@5      n[	        U5      nUb  [        XU5      u  pU=(       d    U	nO1UR                  U   S:  a  SUR                  U    S3n
[        U
5      eU(       a  UR                  R                  S:X  a  UOSn[        R                  " X4XX5      $ )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               M/var/www/html/venv/lib/python3.13/site-packages/scipy/fft/_pocketfft/basic.pyr   r      s     ! #E F 	F
A,C4S!4K$(DwG}#CD1!+V	41	3CIIdO3DKP!!#))..C"73TC88C'>>    Tfftifftc                b   Ub  [        S5      e[        U5      n[        X@5      n[        U5      n[        R
                  " U5      (       d  [        S5      eUb  [        XU5      u  pO/UR                  U   S:  a  [        SUR                  U    S35      e[        R                  " X4XSU5      $ )z0
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
A,C$(DwG<<344}st,Q	41	:399T?:K;WXX 88C'w??r%   rfftihfftc          	      Z   Ub  [        S5      e[        U5      n[        X@5      n[        U5      n[        R
                  " U5      (       a  US-   nUc+  UR                  U   S-
  S-  nUS:  a  [        SU S35      eO[        XS-  S-   U5      u  p[        R                  " X4X USU5      $ )z?
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$   r5   r5   F   s    
 ! #E F 	F
A,C$(DwG 
||CCi 	yYYt_q A%q5>qcMNN  sTQJ5 88C!dD'BBr%   hfftirfftc                8    Ub  [        S5      e[        XX#XE5      $ )z8
2-D discrete Fourier transform of a Hermitian sequence
r   )r   hfftnr   saxesr   r   r   r   s          r$   hfft2r=   h   s.    
 ! #E F 	Ft;88r%   c                8    Ub  [        S5      e[        XX#XE5      $ )z@
2-D discrete inverse Fourier transform of a Hermitian sequence
r   )r   ihfftnr:   s          r$   ihfft2r@   s   s.    
 ! #E F 	F!K99r%   c                r   Ub  [        S5      e[        U5      n[        XU5      u  pU=(       d    [        X5      n[	        U5      n[        U5      S:X  a  U$ [        XU5      u  pU=(       d    U
n[        X@5      nU(       a  UR                  R                  S:X  a  UOSn[        R                  " XXX5      $ )z5
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$   c2cnrC   ~   s    
 ! #E F 	F
A,C)#$7KE4S!4KwG
4yA~S.KC'K$(D#))..C"73TC88Cwc;;r%   fftnifftnc                J   Ub  [        S5      e[        U5      n[        R                  " U5      (       d  [	        S5      e[        XU5      u  p[        XU5      u  p[        X@5      n[        U5      n[        U5      S:X  a  [        S5      e[        R                  " XXSU5      $ )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   rB   r   r   r-   )r   r   r;   r<   r   r   r   r   r    r   r/   s              r$   r2cnrH      s     ! #E F 	F
A,C<<344)#$7KED)FC$(DwG
4yA~>?? 88CwdG<<r%   rfftnr?   c          	         Ub  [        S5      e[        U5      n[        R                  " U5      (       a  US-   nUSL n	[	        XU5      u  p[        U5      S:X  a  [        S5      e[        U
5      n
U	(       a  UR                  US      S-
  S-  U
S'   [        X@5      n[        U5      nU
S   nU
S   S-  S-   U
S'   [        [        XU5      5      u  p[        R                  " XXUSU5      $ )	zDMultidimensional inverse discrete fourier transform with real outputNr   r3   r   rG   r   r4   )r   r   r*   r+   r   rB   r   listr   r
   r   tupler   r   r5   )r   r   r;   r<   r   r   r   r   r    noshaper   lastsizer/   s                r$   c2rnrP      s     ! #E F 	F
A,C 
||CCi4iG)#$7KE
4yA~>??KEWWT"X&*a/b	$(DwG RyHra1$E"I:c$/0FC 88Cx$gFFr%   r9   irfftnc           	         [        U5      nU=(       d    [        Xa5      n[        X@5      n[        S5      nUR                  R
                  S:X  a  [        S5      eUb  [        XbU5      u  phU=(       d    UnO/UR                  U   S:  a  [        SUR                  U    S35      eU(       a  UOSn	[        R                  " Xc4X XIU5      $ )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$   rS   rS      s    
A,C4S!4K$(DtnG
yy~~344}#CD1!+V	41	:399T?:K;WXX34CC'DwOOr%   rfft_fftpackirfft_fftpack)NrK   NFN)N)rK   NFN)NNNFN)NrK   NF)(__doc__numpyr*   	functools r   r   helperr   r   r   r   r	   r
   r   r   partialr&   __name__r'   r-   r0   r1   r5   r6   r7   r=   r@   rC   rD   rE   rH   rI   r?   rP   r9   rQ   rS   rT   rU    r%   r$   <module>r_      s<     !   =B?"?. T"e$ =B@"@0 d##u% =BC"C8 d##u%99:: @E<#<4 t$$&?D=#=. 	$%			4	' @E G# GF 	$%			4	'P*   d3& !!+u5( r%   