
    tKg                        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lZ	 	 ddZ ej                  edej                         Zde_         ej                  edej                         Zd	e_         ej                  edej&                        Zd
e_         ej                  edej&                        Zde_        	 	 ddZ ej                  edej                         Zde_         ej                  edej                         Zde_         ej                  edej&                        Zde_         ej                  edej&                        Zde_        y)    N   )pypocketfft)	_asfarray_init_nd_shape_and_axes_datacopied
_fix_shape_fix_shape_1d_normalization_workersFc
           	      (   t        |      }
|xs t        |
|      }t        ||       }t        |      }| s|dk(  rd}n|dk(  rd}|t	        |
||      \  }
}|xs |}n.|
j
                  |   dk  rt        d|
j
                  |    d      |r|
nd}t        j                  |      r_|t        j                  |
      n|} ||
j                  ||f||j                  |        ||
j                  ||f||j                  |       |S  ||
||f||||	      S )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                g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/fft/_pocketfft/realtransforms.py_r2rr$      s    A,C4S!!4K$(DwG19DQYD}#CD1V!+V	41	:399T?:K;WXX34C 
q$'KbmmC S#((D4'47C#((D4'47C
S$sG]KK    Tdctidctdstidstc
           	          t        |      }
t        |
||      \  }}|xs t        |
|      }t        |      dk(  r|S t	        |
||      \  }
}|xs |}| s|dk(  rd}n|dk(  rd}t        ||       }t        |      }|r|
nd}t        j                  |      r]|t        j                  |
      n|} ||
j                  ||||j                  |        ||
j                  ||||j                  |       |S  ||
||||||	      S )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)#q$7KE44S!!4K
4yA~S%.KC'K19DQYD$(DwG34C 
q$'KbmmC S#((D$chh@#((D$chh@
S$dC-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<      sM    !J J J  ?C8<%LP idDHH-yudhh/idDHH-yudhh/ BF9='IT ydhh/	%1ydhh/	%1r%   