
    (ph                        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Kr  SS jr\R                  " \S\R                   5      rS\l        \R                  " \S\R                   5      rS	\l        \R                  " \S\R&                  5      rS
\l        \R                  " \S\R&                  5      rS\l          SS jr\R                  " \S\R                   5      rS\l        \R                  " \S\R                   5      rS\l        \R                  " \S\R&                  5      rS\l        \R                  " \S\R&                  5      rS\l        g)    N   )pypocketfft)	_asfarray_init_nd_shape_and_axes_datacopied
_fix_shape_fix_shape_1d_normalization_workersFc
           	      R   [        U5      n
U=(       d    [        X5      n[        X`5      n[        U5      nU (       d  US:X  a  SnOUS:X  a  SnUb  [	        XU5      u  pU=(       d    UnO/U
R
                  U   S:  a  [        SU
R
                  U    S35      eU(       a  U
OSn[        R                  " U5      (       a]  Uc  [        R                  " U
5      OUnU" U
R                  X54XlR                  U5        U" U
R                  X54XlR                  U5        U$ U" XU4XlX5      $ )zForward or backward 1-D DCT/DST

Parameters
----------
forward : bool
    Transform direction (determines type and normalisation)
transform : {pypocketfft.dct, pypocketfft.dst}
    The transform to perform
      Nr   zinvalid number of data points (z) specified)r   r   r
   r   r	   shape
ValueErrornpiscomplexobj
empty_likerealimag)forward	transformxtypenaxisnormoverwrite_xworkersorthogonalizetmpcopiedouts                V/var/www/html/venv/lib/python3.13/site-packages/scipy/fft/_pocketfft/realtransforms.py_r2rr$      s    A,C4S!4K$(DwG19DQYD}#CD1!+V	41	:399T?:K;WXX34C 
q$'KbmmC S#((D'47C#((D'47C
SGKK    Tdctidctdstidstc
           	      $   [        U5      n
[        XU5      u  pU=(       d    [        X5      n[        U5      S:X  a  U$ [	        XU5      u  pU=(       d    UnU (       d  US:X  a  SnOUS:X  a  Sn[        X`5      n[        U5      nU(       a  U
OSn[        R                  " U5      (       a[  Uc  [        R                  " U
5      OUnU" U
R                  X5XmR                  U5        U" U
R                  X5XmR                  U5        U$ U" XXVXU	5      $ )zForward or backward nd DCT/DST

Parameters
----------
forward : bool
    Transform direction (determines type and normalisation)
transform : {pypocketfft.dct, pypocketfft.dst}
    The transform to perform
r   r   r   N)r   r   r   lenr   r
   r   r   r   r   r   r   )r   r   r   r   saxesr   r   r   r   r    r   r!   r"   s                 r#   _r2rnr.   ;   s     A,C)#$7KE4S!4K
4yA~S.KC'K19DQYD$(DwG34C 
q$'KbmmC S#((Dhh@#((Dhh@
SC-HHr%   dctnidctndstnidstn)r   NNFNN)r   NNNFNN)numpyr    r   pffthelperr   r   r   r   r	   r
   r   	functoolsr$   partialr&   __name__r'   r(   r)   r.   r/   r0   r1   r2    r%   r#   <module>r<      s=    !J J J  ?C8<%LP dDHH-udhh/dDHH-udhh/ BF9='IT dhh/%1dhh/%1r%   