o
    ×Ëh2  ã                   @   s  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d	„Ze ed
ej¡Zde_e edej¡Zde_e ed
ej¡Zde_e edej¡Zde_		ddd„Ze ed
ej¡Zde_e edej¡Zde_e ed
ej¡Zde_e edej¡Zde_dS )é    Né   )Úpypocketfft)Ú	_asfarrayÚ_init_nd_shape_and_axesÚ_datacopiedÚ
_fix_shapeÚ_fix_shape_1dÚ_normalizationÚ_workersé   éÿÿÿÿFc
                 C   s   t |ƒ}
|p
t|
|ƒ}t|| ƒ}t|ƒ}| s#|dkrd}n|dkr#d}|dur4t|
||ƒ\}
}|p2|}n|
j| dk rEtd |
j| ¡ƒ‚|rI|
nd}t 	|¡ru|du rYt 
|
¡n|}||
j||f||j|ƒ ||
j||f||j|ƒ |S ||
||f||||	ƒS )zêForward or backward 1-D DCT/DST

    Parameters
    ----------
    forward : bool
        Transform direction (determines type and normalisation)
    transform : {pypocketfft.dct, pypocketfft.dst}
        The transform to perform
    r   é   Nr   z,invalid number of data points ({}) specified)r   r   r	   r
   r   ÚshapeÚ
ValueErrorÚformatÚnpÚiscomplexobjÚ
empty_likeÚrealÚimag)ÚforwardÚ	transformÚxÚtypeÚnÚaxisÚnormÚoverwrite_xÚworkersÚorthogonalizeÚtmpÚcopiedÚout© r#   ú^/var/www/html/scripts/venv/lib/python3.10/site-packages/scipy/fft/_pocketfft/realtransforms.pyÚ_r2r   s.   

ÿ
r%   TÚdctÚidctÚdstÚidstc
                 C   sî   t |ƒ}
t|
||ƒ\}}|pt|
|ƒ}t|ƒdkr|S t|
||ƒ\}
}|p&|}| s6|dkr0d}n|dkr6d}t|| ƒ}t|ƒ}|rC|
nd}t |¡rm|du rSt 	|
¡n|}||
j
||||j
|ƒ ||
j||||j|ƒ |S ||
||||||	ƒS )zéForward 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"   r#   r#   r$   Ú_r2rn<   s*   

r-   ÚdctnÚidctnÚdstnÚidstn)r   Nr   NFNN)r   NNNFNN)Únumpyr   Ú r   ÚpfftÚhelperr   r   r   r   r   r	   r
   Ú	functoolsr%   Úpartialr&   Ú__name__r'   r(   r)   r-   r.   r/   r0   r1   r#   r#   r#   r$   Ú<module>   s4    $
ÿ)
ÿ*
