
    -i_                     @   S SK JrJr  S SKrS SKrS SKJrJ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Jr  \R*                  " \" \" \5      S5      5      r\" S5       V s/ s H  n \SU  3   PM     sn r\" S5       V s/ s H  n \S	U  3   PM     sn r\R*                  " \" \" \5      S
5      5      r\R*                  " \" \" \5      S5      5      r\S   rS rS rS r S r!S r"S r#SS jr$SS jr%SS jr&SS jr' " S S5      r( " S S5      r) " S S\)5      r* " S S\)5      r+ " S S \)5      r, " S! S"\)5      r- " S# S$\*5      r. " S% S&\*5      r/ " S' S(\*5      r0 " S) S*\+5      r1 " S+ S,\+5      r2 " S- S.\+5      r3 " S/ S0\,5      r4 " S1 S2\,5      r5 " S3 S4\,5      r6 " S5 S6\-5      r7 " S7 S8\-5      r8 " S9 S:\-5      r9 " S; S<5      r: " S= S>\:5      r; " S? S@\:5      r< " SA SB\:5      r= " SC SD\:5      r> " SE SF\:5      r? " SG SH\:5      r@ " SI SJ\:5      rA " SK SL\:5      rB " SM SN\:5      rC " SO SP\:5      rD " SQ SR\:5      rE " SS ST\:5      rF " SU SV5      rG " SW SX\G5      rH " SY SZ\G5      rI " S[ S\\H5      rJ " S] S^\H5      rK " S_ S`\H5      rL " Sa Sb\G5      rM " Sc Sd\G5      rN " Se Sf\G5      rO " Sg Sh\G5      rP " Si Sj\G5      rQ " Sk Sl\G5      rR " Sm Sn\I5      rS " So Sp\I5      rT " Sq Sr\I5      rU " Ss St5      rV " Su Sv\V5      rW " Sw Sx\V5      rX " Sy Sz\V5      rY " S{ S|\V5      rZ " S} S~\V5      r[ " S S\V5      r\ " S S\V5      r] " S S\V5      r^ " S S\V5      r_ " S S\V5      r` " S S\V5      ra " S S\V5      rb " S S5      rc " S S5      rdgs  sn f s  sn f )    )joindirnameN)assert_array_almost_equalassert_equal)raises)dctidctdstidstdctnidctndstnidstnztest.npz   xyzfftw_double_ref.npzzfftw_single_ref.npzsizesc                 \   [         R                  " SUS-
  U5      R                  U5      n[         R                  " [         R                  U5      nU[         R
                  :X  a  [        nO%U[         R                  :X  a  [        nO
[        5       eUSU  SU 3   R                  U5      nX5U4$ )Nr      dct__	nplinspaceastyperesult_typefloat32float64FFTWDATA_DOUBLEFFTWDATA_SINGLE
ValueErrortypesizedtr   datar   s         [/var/www/html/venv/lib/python3.13/site-packages/scipy/fftpack/tests/test_real_transforms.pyfftw_dct_refr(          
AtAvt$++B/A	

B	'B	RZZ	rzz	l	TF!D6"	#++B/A8O    c                 \   [         R                  " SUS-
  U5      R                  U5      n[         R                  " [         R                  U5      nU[         R
                  :X  a  [        nO%U[         R                  :X  a  [        nO
[        5       eUSU  SU 3   R                  U5      nX5U4$ )Nr   r   dst_r   r   r"   s         r'   fftw_dst_refr-   (   r)   r*   c                    [         R                  " U SS9n [        U R                  S   5       H  n[	        XSS24   40 UD6XSS24'   M     [        U R                  S   5       H  n[	        U SS2U4   40 UD6U SS2U4'   M     U $ )z,Calculate reference values for testing dct2.Tcopyr   Nr   )r   arrayrangeshaper   r   kwargsrowcols       r'   
dct_2d_refr8   5       
AQWWQZ q&	,V,q&	 !QWWQZ !S&	,V,!S&	 !Hr*   c                    [         R                  " U SS9n [        U R                  S   5       H  n[	        XSS24   40 UD6XSS24'   M     [        U R                  S   5       H  n[	        U SS2U4   40 UD6U SS2U4'   M     U $ )z-Calculate reference values for testing idct2.Tr/   r   Nr   )r   r1   r2   r3   r	   r4   s       r'   idct_2d_refr;   ?       
AQWWQZ 6-f-q&	 !QWWQZ 1c6-f-!S&	 !Hr*   c                    [         R                  " U SS9n [        U R                  S   5       H  n[	        XSS24   40 UD6XSS24'   M     [        U R                  S   5       H  n[	        U SS2U4   40 UD6U SS2U4'   M     U $ )z,Calculate reference values for testing dst2.Tr/   r   Nr   )r   r1   r2   r3   r
   r4   s       r'   
dst_2d_refr>   I   r9   r*   c                    [         R                  " U SS9n [        U R                  S   5       H  n[	        XSS24   40 UD6XSS24'   M     [        U R                  S   5       H  n[	        U SS2U4   40 UD6U SS2U4'   M     U $ )z-Calculate reference values for testing idst2.Tr/   r   Nr   )r   r1   r2   r3   r   r4   s       r'   idst_2d_refr@   S   r<   r*   c           
         [         R                  " U SS9n [        U 5      nUS-
  n[         R                  " U5      nSu  pVUS:X  a2  [         R                  " SU-  5      n[         R                  " SU-  5      n[        U5       H  n[        SUS-
  5       HB  nXG==   X`U   -  [         R                  " [         R                  U-  U-  U-  5      -  -  ss'   MD     XG==   XPS   -  -  ss'   XG==   XPUS-
     -  US	-  S:X  a  SOS
-  -  ss'   M     US:X  aJ  US==   S[         R                  " S	5      -  -  ss'   XBS-
  ==   S[         R                  " S	5      -  -  ss'   U$ )z/Calculate textbook definition version of DCT-I.Tr/   r   )r      ortho      ?       @r   rB   )r   r1   lenzerossqrtr2   cospi)	r   normNMr   m0mkns	            r'   
naive_dct1rS   ]   s0   
AAA	!A
AEBwWWSU^GGCEN1Xq!A#ADAdF266"%%'!)A+...D 	qT		qsVAEQJqB77	 
 w	!"''!*	A#!BGGAJ,Hr*   c                    [         R                  " U SS9n [        U 5      nUS-   n[         R                  " U5      n[	        U5       HZ  n[	        U5       HH  nXE==   SX   -  [         R
                  " [         R                  US-   -  US-   -  U-  5      -  -  ss'   MJ     M\     US:X  a  U[         R                  " SU-  5      -  nU$ )z0Calculate textbook definition version  of DST-I.Tr/   r   rB   rD   rC         ?r   r1   rG   rH   r2   sinrK   rI   )r   rL   rM   rN   r   rQ   rR   s          r'   
naive_dst1rX   r   s    
AAA	!A
A1XqADAadF266"%%3-3"7"9:::D   w	RWWSU^Hr*   c                    [         R                  " U SS9n [        U 5      n[         R                  " U5      n[	        U5       HW  n[	        U5       HE  nX4==   X   [         R
                  " [         R                  US-   -  US-   -  U-  5      -  -  ss'   MG     MY     US:X  a  U[         R                  " SU-  5      -  nU$ US-  nU$ )z0Calculate textbook definition version of DCT-IV.Tr/   rU   rC   rE   rB   )r   r1   rG   rH   r2   rJ   rK   rI   r   rL   rM   r   rQ   rR   s         r'   
naive_dct4r[          
AAA
A1XqADADququ 5q 9:::D   w	RWWSU^ H 	
QHr*   c                    [         R                  " U SS9n [        U 5      n[         R                  " U5      n[	        U5       HW  n[	        U5       HE  nX4==   X   [         R
                  " [         R                  US-   -  US-   -  U-  5      -  -  ss'   MG     MY     US:X  a  U[         R                  " SU-  5      -  nU$ US-  nU$ )z0Calculate textbook definition version of DST-IV.Tr/   rU   rC   rE   rB   rV   rZ   s         r'   
naive_dst4r^      r\   r*   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestComplex   c                     [        S[        R                  " S[        R                  S9-  5      nS[        [        R                  " S5      5      -  n[	        X!5        g )N              ?   dtype)r   r   arange	complex64r   selfr   r   s      r'   test_dct_complex64TestComplex.test_dct_complex64   s?    299Qbll334s299Q<  !!'r*   c                     [        [        R                  " S5      S-  5      nS[        [        R                  " S5      5      -  n[        X!5        g Nrd   rc   )r   r   rg   r   ri   s      r'   test_dct_complexTestComplex.test_dct_complex   7    		!R s299Q<  !!'r*   c                     [        [        R                  " S5      S-  5      nS[        [        R                  " S5      5      -  n[        X!5        g rn   )r	   r   rg   r   ri   s      r'   test_idct_complexTestComplex.test_idct_complex   7    1b!tBIIaL!!!!'r*   c                     [        [        R                  " S[        R                  S9S-  5      nS[        [        R                  " S5      5      -  n[	        X!5        g )Nrd   re   rc   )r
   r   rg   rh   r   ri   s      r'   test_dst_complex64TestComplex.test_dst_complex64   s?    		!2<<034s299Q<  !!'r*   c                     [        [        R                  " S5      S-  5      nS[        [        R                  " S5      5      -  n[        X!5        g rn   )r
   r   rg   r   ri   s      r'   test_dst_complexTestComplex.test_dst_complex   rq   r*   c                     [        [        R                  " S5      S-  5      nS[        [        R                  " S5      5      -  n[        X!5        g rn   )r   r   rg   r   ri   s      r'   test_idst_complexTestComplex.test_idst_complex   ru   r*    N)__name__
__module____qualname____firstlineno__rk   ro   rs   rw   rz   r}   __static_attributes__r   r*   r'   r`   r`      s     (
(
(
(
(
(r*   r`   c                   J    \ rS rSrS r\R                  S 5       rS rS r	Sr
g)_TestDCTBase   c                 .    S U l         SU l        S U l        g N   rdtdecr#   rj   s    r'   setup_method_TestDCTBase.setup_method       	r*   c                 ,    [         R                  " 5       $ N	threadingLockr   s    r'   dct_lock_TestDCTBase.dct_lock       ~~r*   c           	         [          H  nU   [        U R                  X R                  5      u  p4nS S S 5        [	        WU R                  S9n[        UR                  W5        [        U[        R                  " U5      -  W[        R                  " U5      -  U R                  SU S3S9  M     g ! , (       d  f       N= fNr#   Size  faileddecimalerr_msg)FFTWDATA_SIZESr(   r#   r   r   r   rf   r   r   maxr   )rj   r   ir   yrr%   r   s          r'   test_definition_TestDCTBase.test_definition   s    A(Axx@	r ADII&A"%
 &a"&&)mR"&&)^TXX#A3g.0     $B//
B=	c           
         Sn[         R                  R                  S5      nS H  nUR                  X5      n[	        X@R
                  S9n[        U5       H.  n[        XV   [	        XF   U R
                  S9U R                  S9  M0     UR                  n[	        USU R
                  S9n[        U5       H8  n[        US S 2U4   [	        US S 2U4   U R
                  S9U R                  S9  M:     M     g )NrB     )   r   	          @   r   r   r   )axisr#   )
r   randomRandomStaterandnr   r#   r2   r   r   T)rj   ntrngr   r   r   js          r'   	test_axis_TestDCTBase.test_axis   s    ii##D)&A		" AAII&A2Y)!$ADtyy0I $*  AAADII.A2Y)!AaC&#a!f4992M $*  'r*   r   r   r#   N)r   r   r   r   r   pytestfixturer   r   r   r   r   r*   r'   r   r      s)    
 ^^   0*r*   r   c                       \ rS rSrS rSrg)_TestDCTIBase   c                    [         R                  " [         R                  U R                  5      n[         H  n[         R
                  " X R                  S9n[        USSS9n[        USS9n[        UR                  U5        [        U[         R                  " U5      -  U[         R                  " U5      -  U R                  S9  M     g Nre   rC   r   rL   r#   rL   r   )r   r   r   r   Xr1   r   rS   r   rf   r   r   r   rj   r%   xrr   r   y2s         r'   test_definition_ortho#_TestDCTIBase.test_definition_ortho       ^^BJJ1B88,AAG!,AAG,B"%%a"&&)mR"&&)^TXXV r*   r   Nr   r   r   r   r   r   r   r*   r'   r   r          Wr*   r   c                       \ rS rSrS rSrg)_TestDCTIIBase   c                 .   [         R                  " [         R                  U R                  5      n[	        [
        [        5       HN  u  p#[         R                  " X!S9n[        USSS9n[        UR                  U5        [        XSU R                  S9  MP     g )Nre   rC   rB   r   r   )r   r   r   r   zipr   Yr1   r   r   rf   r   r   )rj   r%   r   r   r   r   s         r'   test_definition_matlab%_TestDCTIIBase.test_definition_matlab   sd    ^^BJJ1!QiFB&AAG!,A"%%aTXX>	  r*   r   N)r   r   r   r   r   r   r   r*   r'   r   r      s    ?r*   r   c                       \ rS rSrS rSrg)_TestDCTIIIBase   c                 8   [         R                  " [         R                  U R                  5      n[         Ha  n[         R
                  " X R                  S9n[        USSS9n[        USSS9n[        UR                  U5        [        XSU R                  S9  Mc     g )Nre   rC   rB   r      r   )r   r   r   r   r   r1   r   r   rf   r   r   )rj   r%   r   r   r   xis         r'   r   %_TestDCTIIIBase.test_definition_ortho   sn    ^^BJJ1B88,AAG!,AQW1-B2&%bTXX> r*   r   Nr   r   r*   r'   r   r          ?r*   r   c                       \ rS rSrS rSrg)_TestDCTIVBasei  c                    [         R                  " [         R                  U R                  5      n[         H  n[         R
                  " X R                  S9n[        USSS9n[        USS9n[        UR                  U5        [        U[         R                  " U5      -  U[         R                  " U5      -  U R                  S9  M     g Nre   rC      r   r   r   )r   r   r   r   r   r1   r   r[   r   rf   r   r   r   r   s         r'   r   $_TestDCTIVBase.test_definition_ortho  r   r*   r   Nr   r   r*   r'   r   r     r   r*   r   c                       \ rS rSrS rSrg)TestDCTIDoublei  c                 J    [         R                  U l        SU l        SU l        g N
   r   r   r   r   r   r#   r   s    r'   r   TestDCTIDouble.setup_method      ::	r*   r   Nr   r   r   r   r   r   r   r*   r'   r   r         r*   r   c                       \ rS rSrS rSrg)TestDCTIFloati  c                 J    [         R                  U l        SU l        SU l        g Nr   r   r   r   r   r   r#   r   s    r'   r   TestDCTIFloat.setup_method      ::	r*   r   Nr   r   r*   r'   r   r     r   r*   r   c                       \ rS rSrS rSrg)TestDCTIInti!  c                 6    [         U l        SU l        SU l        g Nrd   r   intr   r   r#   r   s    r'   r   TestDCTIInt.setup_method"      	r*   r   Nr   r   r*   r'   r   r   !  r   r*   r   c                       \ rS rSrS rSrg)TestDCTIIDoublei(  c                 J    [         R                  U l        SU l        SU l        g Nr   rB   r   r   s    r'   r   TestDCTIIDouble.setup_method)  r   r*   r   Nr   r   r*   r'   r   r   (  r   r*   r   c                       \ rS rSrS rSrg)TestDCTIIFloati/  c                 J    [         R                  U l        SU l        SU l        g Nrd   rB   r   r   s    r'   r   TestDCTIIFloat.setup_method0  r   r*   r   Nr   r   r*   r'   r  r  /  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIIInti6  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestDCTIIInt.setup_method7  r   r*   r   Nr   r   r*   r'   r  r  6  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIIIDoublei=  c                 J    [         R                  U l        SU l        SU l        g Nr   r   r   r   s    r'   r   TestDCTIIIDouble.setup_method>  r   r*   r   Nr   r   r*   r'   r  r  =  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIIIFloatiD  c                 J    [         R                  U l        SU l        SU l        g Nrd   r   r   r   s    r'   r   TestDCTIIIFloat.setup_methodE  r   r*   r   Nr   r   r*   r'   r  r  D  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIIIIntiK  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestDCTIIIInt.setup_methodL  r   r*   r   Nr   r   r*   r'   r  r  K  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIVDoubleiR  c                 J    [         R                  U l        SU l        SU l        g )N   r   r   r   s    r'   r   TestDCTIVDouble.setup_methodS  r   r*   r   Nr   r   r*   r'   r  r  R  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIVFloatiY  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestDCTIVFloat.setup_methodZ  r   r*   r   Nr   r   r*   r'   r  r  Y  r   r*   r  c                       \ rS rSrS rSrg)TestDCTIVInti`  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestDCTIVInt.setup_methoda  r   r*   r   Nr   r   r*   r'   r#  r#  `  r   r*   r#  c                   D    \ rS rSrS r\R                  S 5       rS rSr	g)_TestIDCTBaseig  c                 .    S U l         SU l        S U l        g r   r   r   s    r'   r   _TestIDCTBase.setup_methodh  r   r*   c                 ,    [         R                  " 5       $ r   r   r   s    r'   	idct_lock_TestIDCTBase.idct_lockm  r   r*   c           	         [          H  nU   [        U R                  X R                  5      u  p4nS S S 5        [	        WU R                  S9nU R                  S:X  a  USUS-
  -  -  nOUSU-  -  n[        UR                  W5        [        U[        R                  " U5      -  W[        R                  " U5      -  U R                  SU S3S9  M     g ! , (       d  f       N= fNr   r   rB   r   r   r   )r   r(   r#   r   r	   r   rf   r   r   r   r   )rj   r+  r   r   r   r%   r   s          r'   r   _TestIDCTBase.test_definitionq      A)$))QA
 Rdii(AyyA~Q!A#YQU
"%
 &a"&&)mR"&&)^TXX#A3g.0     $C
C!	r   N)
r   r   r   r   r   r   r   r+  r   r   r   r*   r'   r'  r'  g  $    
 ^^   0r*   r'  c                       \ rS rSrS rSrg)TestIDCTIDoublei  c                 J    [         R                  U l        SU l        SU l        g r   r   r   s    r'   r   TestIDCTIDouble.setup_method  r   r*   r   Nr   r   r*   r'   r4  r4    r   r*   r4  c                       \ rS rSrS rSrg)TestIDCTIFloati  c                 J    [         R                  U l        SU l        SU l        g r   r   r   s    r'   r   TestIDCTIFloat.setup_method  r   r*   r   Nr   r   r*   r'   r8  r8    r   r*   r8  c                       \ rS rSrS rSrg)TestIDCTIInti  c                 6    [         U l        SU l        SU l        g r   r   r   s    r'   r   TestIDCTIInt.setup_method  r   r*   r   Nr   r   r*   r'   r<  r<    r   r*   r<  c                       \ rS rSrS rSrg)TestIDCTIIDoublei  c                 J    [         R                  U l        SU l        SU l        g r   r   r   s    r'   r   TestIDCTIIDouble.setup_method  r   r*   r   Nr   r   r*   r'   r@  r@    r   r*   r@  c                       \ rS rSrS rSrg)TestIDCTIIFloati  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestIDCTIIFloat.setup_method  r   r*   r   Nr   r   r*   r'   rD  rD    r   r*   rD  c                       \ rS rSrS rSrg)TestIDCTIIInti  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestIDCTIIInt.setup_method  r   r*   r   Nr   r   r*   r'   rH  rH    r   r*   rH  c                       \ rS rSrS rSrg)TestIDCTIIIDoublei  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestIDCTIIIDouble.setup_method  r   r*   r   Nr   r   r*   r'   rL  rL    r   r*   rL  c                       \ rS rSrS rSrg)TestIDCTIIIFloati  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestIDCTIIIFloat.setup_method  r   r*   r   Nr   r   r*   r'   rP  rP    r   r*   rP  c                       \ rS rSrS rSrg)TestIDCTIIIInti  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestIDCTIIIInt.setup_method  r   r*   r   Nr   r   r*   r'   rT  rT    r   r*   rT  c                       \ rS rSrS rSrg)TestIDCTIVDoublei  c                 J    [         R                  U l        SU l        SU l        g Nr  r   r   r   s    r'   r   TestIDCTIVDouble.setup_method  r   r*   r   Nr   r   r*   r'   rX  rX    r   r*   rX  c                       \ rS rSrS rSrg)TestIDCTIVFloati  c                 J    [         R                  U l        SU l        SU l        g Nrd   r   r   r   s    r'   r   TestIDCTIVFloat.setup_method  r   r*   r   Nr   r   r*   r'   r]  r]    r   r*   r]  c                       \ rS rSrS rSrg)TestIDCTIVInti  c                 6    [         U l        SU l        SU l        g r_  r   r   s    r'   r   TestIDCTIVInt.setup_method  r   r*   r   Nr   r   r*   r'   rb  rb    r   r*   rb  c                   D    \ rS rSrS r\R                  S 5       rS rSr	g)_TestDSTBasei  c                 .    S U l         S U l        S U l        g r   r   r   s    r'   r   _TestDSTBase.setup_method      	r*   c                 ,    [         R                  " 5       $ r   r   r   s    r'   dst_lock_TestDSTBase.dst_lock  r   r*   c           	         [          H  nU   [        U R                  X R                  5      u  p4nS S S 5        [	        WU R                  S9n[        UR                  W5        [        U[        R                  " U5      -  W[        R                  " U5      -  U R                  SU S3S9  M     g ! , (       d  f       N= fr   )r   r-   r#   r   r
   r   rf   r   r   r   r   )rj   rk  r   r   r   r%   r   s          r'   r   _TestDSTBase.test_definition  s    A)$))QA
 BTYY'A"%
 &a"&&)mR"&&)^TXX#A3g.0  r   r   N)
r   r   r   r   r   r   r   rk  r   r   r   r*   r'   rf  rf    s$    
 ^^   0r*   rf  c                       \ rS rSrS rSrg)_TestDSTIBasei  c                    [         R                  " [         R                  U R                  5      n[         H  n[         R
                  " X R                  S9n[        USSS9n[        USS9n[        UR                  U5        [        U[         R                  " U5      -  U[         R                  " U5      -  U R                  S9  M     g r   )r   r   r   r   r   r1   r
   rX   r   rf   r   r   r   r   s         r'   r   #_TestDSTIBase.test_definition_ortho  r   r*   r   Nr   r   r*   r'   rp  rp    r   r*   rp  c                       \ rS rSrS rSrg)_TestDSTIVBasei  c                 6   [         R                  " [         R                  U R                  5      n[         H`  n[         R
                  " X R                  S9n[        USSS9n[        USS9n[        UR                  U5        [        XEU R                  S9  Mb     g r   )r   r   r   r   r   r1   r
   r^   r   rf   r   r   r   s         r'   r   $_TestDSTIVBase.test_definition_ortho  sl    ^^BJJ1B88,AAG!,AAG,B"%%aTXX> r*   r   Nr   r   r*   r'   rt  rt    r   r*   rt  c                       \ rS rSrS rSrg)TestDSTIDoublei  c                 J    [         R                  U l        SU l        SU l        g Nr  r   r   r   s    r'   r   TestDSTIDouble.setup_method  r   r*   r   Nr   r   r*   r'   rx  rx    r   r*   rx  c                       \ rS rSrS rSrg)TestDSTIFloati	  c                 J    [         R                  U l        SU l        SU l        g r   r   r   s    r'   r   TestDSTIFloat.setup_method
  r   r*   r   Nr   r   r*   r'   r}  r}  	  r   r*   r}  c                       \ rS rSrS rSrg)TestDSTIInti  c                 6    [         U l        SU l        SU l        g r   r   r   s    r'   r   TestDSTIInt.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestDSTIIDoublei  c                 J    [         R                  U l        SU l        SU l        g Nr   rB   r   r   s    r'   r   TestDSTIIDouble.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestDSTIIFloati  c                 J    [         R                  U l        SU l        SU l        g N   rB   r   r   s    r'   r   TestDSTIIFloat.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestDSTIIInti%  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestDSTIIInt.setup_method&  r   r*   r   Nr   r   r*   r'   r  r  %  r   r*   r  c                       \ rS rSrS rSrg)TestDSTIIIDoublei,  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestDSTIIIDouble.setup_method-  r   r*   r   Nr   r   r*   r'   r  r  ,  r   r*   r  c                       \ rS rSrS rSrg)TestDSTIIIFloati3  c                 J    [         R                  U l        SU l        SU l        g Nr   r   r   r   s    r'   r   TestDSTIIIFloat.setup_method4  r   r*   r   Nr   r   r*   r'   r  r  3  r   r*   r  c                       \ rS rSrS rSrg)TestDSTIIIInti:  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestDSTIIIInt.setup_method;  r   r*   r   Nr   r   r*   r'   r  r  :  r   r*   r  c                       \ rS rSrS rSrg)TestDSTIVDoubleiA  c                 J    [         R                  U l        SU l        SU l        g rZ  r   r   s    r'   r   TestDSTIVDouble.setup_methodB  r   r*   r   Nr   r   r*   r'   r  r  A  r   r*   r  c                       \ rS rSrS rSrg)TestDSTIVFloatiH  c                 J    [         R                  U l        SU l        SU l        g )Nr   r   r   s    r'   r   TestDSTIVFloat.setup_methodI  r   r*   r   Nr   r   r*   r'   r  r  H  r   r*   r  c                       \ rS rSrS rSrg)TestDSTIVIntiO  c                 6    [         U l        SU l        SU l        g r_  r   r   s    r'   r   TestDSTIVInt.setup_methodP  r   r*   r   Nr   r   r*   r'   r  r  O  r   r*   r  c                   D    \ rS rSrS r\R                  S 5       rS rSr	g)_TestIDSTBaseiV  c                 .    S U l         S U l        S U l        g r   r   r   s    r'   r   _TestIDSTBase.setup_methodW  ri  r*   c                 ,    [         R                  " 5       $ r   r   r   s    r'   	idst_lock_TestIDSTBase.idst_lock\  r   r*   c           	         [          H  nU   [        U R                  X R                  5      u  p4nS S S 5        [	        WU R                  S9nU R                  S:X  a  USUS-   -  -  nOUSU-  -  n[        UR                  W5        [        U[        R                  " U5      -  W[        R                  " U5      -  U R                  SU S3S9  M     g ! , (       d  f       N= fr.  )r   r-   r#   r   r   r   rf   r   r   r   r   )rj   r  r   r   r   r%   r   s          r'   r   _TestIDSTBase.test_definition`  r0  r1  r   N)
r   r   r   r   r   r   r   r  r   r   r   r*   r'   r  r  V  r2  r*   r  c                       \ rS rSrS rSrg)TestIDSTIDoubleir  c                 J    [         R                  U l        SU l        SU l        g rz  r   r   s    r'   r   TestIDSTIDouble.setup_methods  r   r*   r   Nr   r   r*   r'   r  r  r  r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIFloatiy  c                 J    [         R                  U l        SU l        SU l        g r   r   r   s    r'   r   TestIDSTIFloat.setup_methodz  r   r*   r   Nr   r   r*   r'   r  r  y  r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIInti  c                 6    [         U l        SU l        SU l        g r   r   r   s    r'   r   TestIDSTIInt.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIIDoublei  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestIDSTIIDouble.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIIFloati  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestIDSTIIFloat.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIIInti  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestIDSTIIInt.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIIIDoublei  c                 J    [         R                  U l        SU l        SU l        g r  r   r   s    r'   r   TestIDSTIIIDouble.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIIIFloati  c                 J    [         R                  U l        SU l        SU l        g Nr  r   r   r   s    r'   r   TestIDSTIIIFloat.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIIIInti  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestIDSTIIIInt.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIVDoublei  c                 J    [         R                  U l        SU l        SU l        g rZ  r   r   s    r'   r   TestIDSTIVDouble.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIVFloati  c                 J    [         R                  U l        SU l        SU l        g Nr  r   r   r   s    r'   r   TestIDSTIVFloat.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                       \ rS rSrS rSrg)TestIDSTIVnti  c                 6    [         U l        SU l        SU l        g r  r   r   s    r'   r   TestIDSTIVnt.setup_method  r   r*   r   Nr   r   r*   r'   r  r    r   r*   r  c                   l    \ rS rSrSr\R                  \R                  /rS r	S r
S rS rS rS rS	rg
)TestOverwritei  zCheck input overwrite behavior.c                     UR                  5       n	U" XXEXgS9  UR                   SUR                   UR                  < SU< SU< SU< S3n
U(       d  [	        XSU
 3S9  g g )	N)overwrite_x(z, z, axis=z, overwrite_x=)zspurious overwrite in )r   )r0   r   rf   r3   r   )rj   r   routiner#   fftsizer   rL   r  kwx2sigs              r'   _checkTestOverwrite._check  sq    VVX'G""#1QWWIagg[7+ Fhn[O1>*@(FG r*   c                 |   [         R                  R                  S5      n[         R                  " U[         R                  5      (       a#  UR
                  " U6 SUR
                  " U6 -  -   nOUR
                  " U6 nUR                  U5      nS H*  nS H!  nS H  n	U R                  XaUS XIU5        M     M#     M,     g )Nr   rc   r   rB   r   r   )TF)NrC   )r   r   r   
issubdtypecomplexfloatingr   r   r  )
rj   r  rf   r3   r   r   r&   r#   r  rL   s
             r'   	_check_1dTestOverwrite._check_1d  s    ii##D)== 2 23399e$r#))U*;';;D99e$D{{5! D,+DKKtT4 +- ,  - !r*   c                     U R                    HK  nU R                  [        USS5        U R                  [        USS5        U R                  [        USS5        MM     g N)r   rF   )r   rB   r   )rB   r   r   )real_dtypesr  r   rj   rf   s     r'   test_dctTestOverwrite.test_dct  H    %%ENN3ub1NN3w2NN3w2 &r*   c                     U R                    HK  nU R                  [        USS5        U R                  [        USS5        U R                  [        USS5        MM     g r  )r  r  r	   r  s     r'   	test_idctTestOverwrite.test_idct  H    %%ENN4r2NN43NN43 &r*   c                     U R                    HK  nU R                  [        USS5        U R                  [        USS5        U R                  [        USS5        MM     g r  )r  r  r
   r  s     r'   test_dstTestOverwrite.test_dst  r   r*   c                     U R                    HK  nU R                  [        USS5        U R                  [        USS5        U R                  [        USS5        MM     g r  )r  r  r   r  s     r'   	test_idstTestOverwrite.test_idst  r  r*   r   N)r   r   r   r   __doc__r   r   r   r  r  r  r  r  r  r	  r   r   r*   r'   r  r    s6    )::rzz*KH-3434r*   r  c                      \ rS rSrSr/ SQrSS/r\R                  R                  S5      r
Sr\
R                  " \6 r\R                  R!                  S\\4\\4/5      \R                  R!                  S	SS
SS
/SSS/SSS
/SSS//5      \R                  R!                  S\5      \R                  R!                  SS/5      S 5       5       5       5       r\R                  R!                  S\\4\\4/5      \R                  R!                  S\5      \R                  R!                  S\5      S 5       5       5       r\R                  R!                  S\\4\\4/5      \R                  R!                  S\5      \R                  R!                  SSS/5      S 5       5       5       r\R                  R!                  S\\4\\4/5      S 5       r\R                  R!                  S\\/5      S 5       r\R                  R!                  S\\4\\4/5      \R                  R!                  S	S
SS
/SSS//5      S 5       5       rSrg)Test_DCTN_IDCTNi  r   r  NrC   r   )r   r   zfforward,finverseaxesr   )r   r   )r   r   r   )rF   r  rF   dct_typerL   c                 `    U" U R                   XCUS9nU" XdX5S9n[        U R                   USS9  g )Nr#   r  rL   r  r   r&   r   )rj   fforwardfinverser  r  rL   tmps          r'   test_axes_round_trip$Test_DCTN_IDCTN.test_axes_round_trip  s2     tyyxFs@!$))S"=r*   zfforward,fforward_refc                 `    U" U R                   US US9nU" U R                   X4S9n[        XVSS9  g )Nr  r#   rL      r   r  )rj   r  fforward_refr  rL   y1r   s          r'   test_dctn_vs_2d_reference)Test_DCTN_IDCTN.test_dctn_vs_2d_reference  s2     diihTE$))(>!""5r*   zfinverse,finverse_refc                 \    [        U R                  X4S9nU" XSUS9nU" XSUS9n[        XgSS9  g )Nr  r  r   )r   r&   r   )rj   r  finverse_refr  rL   fdatar  r   s           r'   test_idctn_vs_2d_reference*Test_DCTN_IDCTN.test_idctn_vs_2d_reference  s6     TYYX9e6%T:!""5r*   c                    [        [        SS9   U" U R                  U R                  R                  S   SS9  S S S 5        [        [        SS9   U" U R                  U R                  R                  S   S S9  S S S 5        [        [        SS9   U" U R                  U R                  R                  SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N]= f! , (       d  f       g = f)NzBwhen given, axes and shape arguments have to be of the same length)matchr   r  r3   r  )assert_raisesr!   r&   r3   )rj   r  r  s      r'   test_axes_and_shape#Test_DCTN_IDCTN.test_axes_and_shape&  s     :"<= TYYdiiooa&8vF=
 :"<= TYYdiiooa&8tD=
 :"<= TYYdiiooA>= == =
= =
= =s#   *B?*C'C!?
C
C!
C/r  c                 T    U" U R                   SS S9n[        UR                  S5        g )N)   r-  r(  )r&   r   r3   )rj   r  r  s      r'   
test_shapeTest_DCTN_IDCTN.test_shape8  s"    tyy
>SYY
+r*   c                 x    U" U R                   S USS9nU" US USS9n[        U R                   X@R                  S9  g )NrC   )r3   r  rL   r   )r&   r   r   )rj   r  r  r  r  s        r'   test_shape_is_none_with_axes,Test_DCTN_IDCTN.test_shape_is_none_with_axes=  s:    
 tyy4gFs$T@!$))S((Cr*   r   ) r   r   r   r   r   r  normsr   r   r   rstater3   r   r&   r   markparametrizer   r   r   r   r  r8   r>   r  r;   r@   r$  r*  r.  r1  r   r   r*   r'   r  r    s   
CH7OEYY""4(FE<<D[[0D%=48%=3B C[[Vd&'s&'s&,q!f&.R	&: ;
 [[Z2[[VgY/> 0 3;C>
 [[4j7I8<j7I7K L[[Z2[[VU+6 , 3L6 [[4{7K8={7K7M N[[Z2[[VdG_56 6 3N6 [[0D%=48%=3B C?C?  [[Z$6, 7, [[0D%=48%=3B C[[Vas&'s&4 5D5CDr*   r  r   )eos.pathr   r   r   numpyr   numpy.testingr   r   r   r   r)  scipy.fftpack._realtransformsr   r	   r
   r   r   r   r   r   load__file__MDATAr2   r   r   r   r    r   r(   r-   r8   r;   r>   r@   rS   rX   r[   r^   r`   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r#  r'  r4  r8  r<  r@  rD  rH  rL  rP  rT  rX  r]  rb  rf  rp  rt  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r   s   0r'   <module>r>     s   !   A  *4 4 4 	WX&
34"1X&XUQqc7^X&"1X&XUQqc7^X& ''$wx02GHI''$wx02GHI )

*( (@%* %*P	WL 	W?\ ?	?l 	?	W\ 	W] M - n ^ >  o O n ^ > 0 06m ] = } m M  } ] } m M 0 00	WL 	W	?\ 	?] M - l \ < | l L n ^ > 0 08m ] = } m M  } ] } m = 24 24jID ID[ '&s    N?N