
    xf2                        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 |}n9|
j
                  |   dk  r't        dj                  |
j
                  |               |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 ({}) 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outs                E/usr/lib/python3/dist-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	G &413 	3 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/   r0   r1   r2   r3    r&   r$   <module>r=      sM    !J J J  ?C8<&LR idDHH-yudhh/idDHH-yudhh/ BF9='IT ydhh/	%1ydhh/	%1r&   