
    
g_                     ,   d dl mZmZ d dlZd dlZd dlmZmZ 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mZ  ej*                   e ee      d            Z ed      D  cg c]
  } ed| z      c} Z ed      D  cg c]
  } ed	| z      c} Z ej*                   e ee      d
            Z ej*                   e ee      d            Zed   Zd Zd Zd Z d Z!d Z"d Z#ddZ$ddZ%ddZ&ddZ' G d d      Z( G d d      Z) G d de)      Z* G d de)      Z+ G d d e)      Z, G d! d"e)      Z- G d# d$e*      Z. G d% d&e*      Z/ G d' d(e*      Z0 G d) d*e+      Z1 G d+ d,e+      Z2 G d- d.e+      Z3 G d/ d0e,      Z4 G d1 d2e,      Z5 G d3 d4e,      Z6 G d5 d6e-      Z7 G d7 d8e-      Z8 G d9 d:e-      Z9 G d; d<      Z: G d= d>e:      Z; G d? d@e:      Z< G dA dBe:      Z= G dC dDe:      Z> G dE dFe:      Z? G dG dHe:      Z@ G dI dJe:      ZA G dK dLe:      ZB G dM dNe:      ZC G dO dPe:      ZD G dQ dRe:      ZE G dS dTe:      ZF G dU dV      ZG G dW dXeG      ZH G dY dZeG      ZI G d[ d\eH      ZJ G d] d^eH      ZK G d_ d`eH      ZL G da dbeG      ZM G dc ddeG      ZN G de dfeG      ZO G dg dheG      ZP G di djeG      ZQ G dk dleG      ZR G dm dneI      ZS G do dpeI      ZT G dq dreI      ZU G ds dt      ZV G du dveV      ZW G dw dxeV      ZX G dy dzeV      ZY G d{ d|eV      ZZ G d} d~eV      Z[ G d deV      Z\ G d deV      Z] G d deV      Z^ G d deV      Z_ G d deV      Z` G d deV      Za G d deV      Zb G d d      Zc G d d      Zdyc c} w c c} w )    )joindirnameN)assert_array_almost_equalassert_equal)raises)dctidctdstidstdctnidctndstnidstnztest.npz   zx%dzy%dzfftw_double_ref.npzzfftw_single_ref.npzsizesc                 T   t        j                  d|dz
  |      j                  |      }t        j                  t         j                  |      }|t         j
                  k(  rt        }n$|t         j                  k(  rt        }n
t               |d| |fz     j                  |      }|||fS )Nr      z	dct_%d_%d	nplinspaceastyperesult_typefloat32float64FFTWDATA_DOUBLEFFTWDATA_SINGLE
ValueErrortypesizedtxdatays         e/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/scipy/fftpack/tests/test_real_transforms.pyfftw_dct_refr&          
AtAvt$++B/A	

B	'B	RZZ	rzz	l	kT4L(	)11"5Aa8O    c                 T   t        j                  d|dz
  |      j                  |      }t        j                  t         j                  |      }|t         j
                  k(  rt        }n$|t         j                  k(  rt        }n
t               |d| |fz     j                  |      }|||fS )Nr   r   z	dst_%d_%dr   r   s         r%   fftw_dst_refr*   (   r'   r(   c                    t        j                  | d      } t        | j                  d         D ]  }t	        | |ddf   fi || |ddf<    t        | j                  d         D ]  }t	        | dd|f   fi || dd|f<    | S )z,Calculate reference values for testing dct2.Tcopyr   Nr   )r   arrayrangeshaper   r"   kwargsrowcols       r%   
dct_2d_refr5   5       
AQWWQZ  -#q&	,V,#q&	-QWWQZ  -!S&	,V,!S&	-Hr(   c                    t        j                  | d      } t        | j                  d         D ]  }t	        | |ddf   fi || |ddf<    t        | j                  d         D ]  }t	        | dd|f   fi || dd|f<    | S )z-Calculate reference values for testing idct2.Tr,   r   Nr   )r   r.   r/   r0   r	   r1   s       r%   idct_2d_refr8   ?       
AQWWQZ  .36-f-#q&	.QWWQZ  .1c6-f-!S&	.Hr(   c                    t        j                  | d      } t        | j                  d         D ]  }t	        | |ddf   fi || |ddf<    t        | j                  d         D ]  }t	        | dd|f   fi || dd|f<    | S )z,Calculate reference values for testing dst2.Tr,   r   Nr   )r   r.   r/   r0   r
   r1   s       r%   
dst_2d_refr;   I   r6   r(   c                    t        j                  | d      } t        | j                  d         D ]  }t	        | |ddf   fi || |ddf<    t        | j                  d         D ]  }t	        | dd|f   fi || dd|f<    | S )z-Calculate reference values for testing idst2.Tr,   r   Nr   )r   r.   r/   r0   r   r1   s       r%   idst_2d_refr=   S   r9   r(   c           
         t        j                  | d      } t        |       }|dz
  }t        j                  |      }d\  }}|dk(  r0t        j                  d|z        }t        j                  d|z        }t        |      D ]  }t        d|dz
        D ]B  }||xx   || |   z  t        j                  t         j                  |z  |z  |z        z  z  cc<   D ||xx   || d   z  z  cc<   ||xx   || |dz
     z  |d	z  dk(  rdnd
z  z  cc<    |dk(  rI|dxx   dt        j                  d	      z  z  cc<   ||dz
  xx   dt        j                  d	      z  z  cc<   |S )z/Calculate textbook definition version of DCT-I.Tr,   r   )r      ortho      ?       @r   r?   )r   r.   lenzerossqrtr/   cospi)	r"   normNMr$   m0mkns	            r%   
naive_dct1rP   ]   sJ   
AAA	!A
AEBwWWSU^GGCEN1X 8q!A# 	/AaDAadF266"%%'!)A+...D	/	!QqT		!QqsVAEQJqB77	8
 w	!"''!*	!A#!BGGAJ,Hr(   c                    t        j                  | d      } t        |       }|dz   }t        j                  |      }t	        |      D ]X  }t	        |      D ]H  }||xx   d| |   z  t        j
                  t         j                  |dz   z  |dz   z  |z        z  z  cc<   J Z |dk(  r|t        j                  d|z        z  }|S )z0Calculate textbook definition version  of DST-I.Tr,   r   r?   rA   r@         ?r   r.   rD   rE   r/   sinrH   rF   )r"   rI   rJ   rK   r$   rN   rO   s          r%   
naive_dst1rU   r   s    
AAA	!A
A1X ;q 	;AaDAadF266"%%3-3"7"9:::D	;; w	RWWSU^Hr(   c                    t        j                  | d      } t        |       }t        j                  |      }t	        |      D ]U  }t	        |      D ]E  }||xx   | |   t        j
                  t         j                  |dz   z  |dz   z  |z        z  z  cc<   G W |dk(  r|t        j                  d|z        z  }|S |dz  }|S )z0Calculate textbook definition version of DCT-IV.Tr,   rR   r@   rB   r?   )r   r.   rD   rE   r/   rG   rH   rF   r"   rI   rJ   r$   rN   rO   s         r%   
naive_dct4rX          
AAA
A1X ;q 	;AaDAaDququ 5q 9:::D	;; w	RWWSU^ H 	
QHr(   c                    t        j                  | d      } t        |       }t        j                  |      }t	        |      D ]U  }t	        |      D ]E  }||xx   | |   t        j
                  t         j                  |dz   z  |dz   z  |z        z  z  cc<   G W |dk(  r|t        j                  d|z        z  }|S |dz  }|S )z0Calculate textbook definition version of DST-IV.Tr,   rR   r@   rB   r?   rS   rW   s         r%   
naive_dst4r[      rY   r(   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestComplexc                     t        dt        j                  dt        j                        z        }dt        t        j                  d            z  }t	        ||       y )N              ?   dtype)r   r   arange	complex64r   selfr$   r"   s      r%   test_dct_complex64zTestComplex.test_dct_complex64   sA    299Qbll334s299Q<  !!Q'r(   c                     t        t        j                  d      dz        }dt        t        j                  d            z  }t        ||       y Nr`   r_   )r   r   rc   r   re   s      r%   test_dct_complexzTestComplex.test_dct_complex   9    		!R s299Q<  !!Q'r(   c                     t        t        j                  d      dz        }dt        t        j                  d            z  }t        ||       y ri   )r	   r   rc   r   re   s      r%   test_idct_complexzTestComplex.test_idct_complex   9    1b!tBIIaL!!!!Q'r(   c                     t        t        j                  dt        j                        dz        }dt        t        j                  d            z  }t	        ||       y )Nr`   ra   r_   )r
   r   rc   rd   r   re   s      r%   test_dst_complex64zTestComplex.test_dst_complex64   sA    		!2<<034s299Q<  !!Q'r(   c                     t        t        j                  d      dz        }dt        t        j                  d            z  }t        ||       y ri   )r
   r   rc   r   re   s      r%   test_dst_complexzTestComplex.test_dst_complex   rk   r(   c                     t        t        j                  d      dz        }dt        t        j                  d            z  }t        ||       y ri   )r   r   rc   r   re   s      r%   test_idst_complexzTestComplex.test_idst_complex   rn   r(   N)	__name__
__module____qualname__rg   rj   rm   rp   rr   rt    r(   r%   r]   r]      s     (
(
(
(
(
(r(   r]   c                   B    e Zd Zd Zej
                  d        Zd Zd Zy)_TestDCTBasec                 .    d | _         d| _        d | _        y N   rdtdecr   rf   s    r%   setup_methodz_TestDCTBase.setup_method       	r(   c                 *    t        j                         S N	threadingLockr   s    r%   dct_lockz_TestDCTBase.dct_lock       ~~r(   c                 |   t         D ]  }|5  t        | j                  || j                        \  }}}d d d        t	        | j                        }t        |j                         t        |t        j                  |      z  t        j                  |      z  | j                  d|z          y # 1 sw Y   xY wNr   Size %d faileddecimalerr_msg)FFTWDATA_SIZESr&   r   r   r   r   rb   r   r   maxr   )rf   r   ir"   yrr!   r$   s          r%   test_definitionz_TestDCTBase.test_definition   s     
	2A A(Atxx@	2rAADII&A"%
 &a"&&)mR"&&)^TXX,q02
	2A A   &B22B;	c           
      
   d}t         j                  j                  d      }dD ]  }|j                  ||      }t	        || j
                        }t        |      D ]5  }t        ||   t	        ||   | j
                        | j                         7 |j                  }t	        |d| j
                        }t        |      D ]=  }t        |d d |f   t	        |d d |f   | j
                        | j                         ?  y )Nr?     )   r   	          @   r   r   r   )axisr   )
r   randomRandomStaterandnr   r   r/   r   r   T)rf   ntrngr   r"   r$   js          r%   	test_axisz_TestDCTBase.test_axis   s    ii##D)& 	*A		"a AADII&A2Y *)!A$AaDtyy0I $** AAADII.A2Y *)!AaC&#a!f4992M $**	*r(   N)	ru   rv   rw   r   pytestfixturer   r   r   rx   r(   r%   rz   rz      s)    
 ^^   2*r(   rz   c                       e Zd Zd Zy)_TestDCTIBasec                    t        j                  t         j                  | j                        }t        D ]  }t        j
                  || j                        }t        |dd      }t        |d      }t        |j                  |       t        |t        j                  |      z  |t        j                  |      z  | j                          y Nra   r@   r   rI   r   rI   r   )r   r   r   r   Xr.   r   rP   r   rb   r   r   r   rf   r!   xrr"   r$   y2s         r%   test_definition_orthoz#_TestDCTIBase.test_definition_ortho       ^^BJJ1 	WB488,AAG!,AAG,B"%%a"&&)mR"&&)^TXXV	Wr(   Nru   rv   rw   r   rx   r(   r%   r   r          Wr(   r   c                       e Zd Zd Zy)_TestDCTIIBasec                 >   t        j                  t         j                  | j                        }t	        t
        t              D ]X  \  }}t        j                  ||      }t        |dd      }t        |j                  |       t        ||| j                         Z y )Nra   r@   r?   r   r   )r   r   r   r   zipr   Yr.   r   r   rb   r   r   )rf   r!   r   r   r"   r$   s         r%   test_definition_matlabz%_TestDCTIIBase.test_definition_matlab   so    ^^BJJ1!Qi 	?FB2&AAG!,A"%%aTXX>		?r(   N)ru   rv   rw   r   rx   r(   r%   r   r      s    ?r(   r   c                       e Zd Zd Zy)_TestDCTIIIBasec                 L   t        j                  t         j                  | j                        }t        D ]m  }t        j
                  || j                        }t        |dd      }t        |dd      }t        |j                  |       t        ||| j                         o y )Nra   r@   r?   r      r   )r   r   r   r   r   r.   r   r   rb   r   r   )rf   r!   r   r"   r$   xis         r%   r   z%_TestDCTIIIBase.test_definition_ortho   sw    ^^BJJ1 	?B488,AAG!,AQW1-B2&%b!TXX>	?r(   Nr   rx   r(   r%   r   r          ?r(   r   c                       e Zd Zd Zy)_TestDCTIVBasec                    t        j                  t         j                  | j                        }t        D ]  }t        j
                  || j                        }t        |dd      }t        |d      }t        |j                  |       t        |t        j                  |      z  |t        j                  |      z  | j                          y Nra   r@      r   r   r   )r   r   r   r   r   r.   r   rX   r   rb   r   r   r   r   s         r%   r   z$_TestDCTIVBase.test_definition_ortho  r   r(   Nr   rx   r(   r%   r   r     r   r(   r   c                       e Zd Zd Zy)TestDCTIDoublec                 J    t         j                  | _        d| _        d| _        y N
   r   r   r   r   r   r   r   s    r%   r   zTestDCTIDouble.setup_method      ::	r(   Nru   rv   rw   r   rx   r(   r%   r   r         r(   r   c                       e Zd Zd Zy)TestDCTIFloatc                 J    t         j                  | _        d| _        d| _        y Nr   r   r   r   r   r   r   r   s    r%   r   zTestDCTIFloat.setup_method      ::	r(   Nr   rx   r(   r%   r   r     r   r(   r   c                       e Zd Zd Zy)TestDCTIIntc                 6    t         | _        d| _        d| _        y Nr`   r   intr   r   r   r   s    r%   r   zTestDCTIInt.setup_method"      	r(   Nr   rx   r(   r%   r   r   !  r   r(   r   c                       e Zd Zd Zy)TestDCTIIDoublec                 J    t         j                  | _        d| _        d| _        y Nr   r?   r   r   s    r%   r   zTestDCTIIDouble.setup_method)  r   r(   Nr   rx   r(   r%   r   r   (  r   r(   r   c                       e Zd Zd Zy)TestDCTIIFloatc                 J    t         j                  | _        d| _        d| _        y Nr`   r?   r   r   s    r%   r   zTestDCTIIFloat.setup_method0  r   r(   Nr   rx   r(   r%   r   r   /  r   r(   r   c                       e Zd Zd Zy)TestDCTIIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestDCTIIInt.setup_method7  r   r(   Nr   rx   r(   r%   r   r   6  r   r(   r   c                       e Zd Zd Zy)TestDCTIIIDoublec                 J    t         j                  | _        d| _        d| _        y Nr}   r   r   r   s    r%   r   zTestDCTIIIDouble.setup_method>  r   r(   Nr   rx   r(   r%   r   r   =  r   r(   r   c                       e Zd Zd Zy)TestDCTIIIFloatc                 J    t         j                  | _        d| _        d| _        y Nr`   r   r   r   s    r%   r   zTestDCTIIIFloat.setup_methodE  r   r(   Nr   rx   r(   r%   r   r   D  r   r(   r   c                       e Zd Zd Zy)TestDCTIIIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestDCTIIIInt.setup_methodL  r   r(   Nr   rx   r(   r%   r   r   K  r   r(   r   c                       e Zd Zd Zy)TestDCTIVDoublec                 J    t         j                  | _        d| _        d| _        y )N   r   r   r   s    r%   r   zTestDCTIVDouble.setup_methodS  r   r(   Nr   rx   r(   r%   r   r   R  r   r(   r   c                       e Zd Zd Zy)TestDCTIVFloatc                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestDCTIVFloat.setup_methodZ  r   r(   Nr   rx   r(   r%   r   r   Y  r   r(   r   c                       e Zd Zd Zy)TestDCTIVIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestDCTIVInt.setup_methoda  r   r(   Nr   rx   r(   r%   r   r   `  r   r(   r   c                   <    e Zd Zd Zej
                  d        Zd Zy)_TestIDCTBasec                 .    d | _         d| _        d | _        y r|   r~   r   s    r%   r   z_TestIDCTBase.setup_methodh  r   r(   c                 *    t        j                         S r   r   r   s    r%   	idct_lockz_TestIDCTBase.idct_lockm  r   r(   c                    t         D ]  }|5  t        | j                  || j                        \  }}}d d d        t	        | j                        }| j                  dk(  r|d|dz
  z  z  }n|d|z  z  }t        |j                         t        |t        j                  |      z  t        j                  |      z  | j                  d|z          y # 1 sw Y   xY wNr   r   r?   r   r   )r   r&   r   r   r	   r   rb   r   r   r   r   )rf   r  r   r   r   r!   r"   s          r%   r   z_TestIDCTBase.test_definitionq       	2A B)$))QA
BBRdii(AyyA~Q!A#YQU
"%
 &a"&&)mR"&&)^TXX,q02	2B B   &CC	N)ru   rv   rw   r   r   r   r  r   rx   r(   r%   r  r  g  $    
 ^^   2r(   r  c                       e Zd Zd Zy)TestIDCTIDoublec                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIDouble.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIFloatc                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIFloat.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIInt.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIIDoublec                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIIDouble.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIIFloatc                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIIFloat.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIIInt.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIIIDoublec                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIIIDouble.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDCTIIIFloatc                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIIIFloat.setup_method  r   r(   Nr   rx   r(   r%   r   r     r   r(   r   c                       e Zd Zd Zy)TestIDCTIIIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDCTIIIInt.setup_method  r   r(   Nr   rx   r(   r%   r#  r#    r   r(   r#  c                       e Zd Zd Zy)TestIDCTIVDoublec                 J    t         j                  | _        d| _        d| _        y Nr   r   r   r   s    r%   r   zTestIDCTIVDouble.setup_method  r   r(   Nr   rx   r(   r%   r&  r&    r   r(   r&  c                       e Zd Zd Zy)TestIDCTIVFloatc                 J    t         j                  | _        d| _        d| _        y Nr`   r   r   r   s    r%   r   zTestIDCTIVFloat.setup_method  r   r(   Nr   rx   r(   r%   r*  r*    r   r(   r*  c                       e Zd Zd Zy)TestIDCTIVIntc                 6    t         | _        d| _        d| _        y r,  r   r   s    r%   r   zTestIDCTIVInt.setup_method  r   r(   Nr   rx   r(   r%   r.  r.    r   r(   r.  c                   <    e Zd Zd Zej
                  d        Zd Zy)_TestDSTBasec                 .    d | _         d | _        d | _        y r   r~   r   s    r%   r   z_TestDSTBase.setup_method      	r(   c                 *    t        j                         S r   r   r   s    r%   dst_lockz_TestDSTBase.dst_lock  r   r(   c                 |   t         D ]  }|5  t        | j                  || j                        \  }}}d d d        t	        | j                        }t        |j                         t        |t        j                  |      z  t        j                  |      z  | j                  d|z          y # 1 sw Y   xY wr   )r   r*   r   r   r
   r   rb   r   r   r   r   )rf   r5  r   r   r   r!   r$   s          r%   r   z_TestDSTBase.test_definition  s     
	2A B)$))QA
BBBTYY'A"%
 &a"&&)mR"&&)^TXX,q02
	2B Br   N)ru   rv   rw   r   r   r   r5  r   rx   r(   r%   r1  r1    s$    
 ^^   2r(   r1  c                       e Zd Zd Zy)_TestDSTIBasec                    t        j                  t         j                  | j                        }t        D ]  }t        j
                  || j                        }t        |dd      }t        |d      }t        |j                  |       t        |t        j                  |      z  |t        j                  |      z  | j                          y r   )r   r   r   r   r   r.   r
   rU   r   rb   r   r   r   r   s         r%   r   z#_TestDSTIBase.test_definition_ortho  r   r(   Nr   rx   r(   r%   r8  r8    r   r(   r8  c                       e Zd Zd Zy)_TestDSTIVBasec                 J   t        j                  t         j                  | j                        }t        D ]l  }t        j
                  || j                        }t        |dd      }t        |d      }t        |j                  |       t        ||| j                         n y r   )r   r   r   r   r   r.   r
   r[   r   rb   r   r   r   s         r%   r   z$_TestDSTIVBase.test_definition_ortho  su    ^^BJJ1 	?B488,AAG!,AAG,B"%%aTXX>	?r(   Nr   rx   r(   r%   r;  r;    r   r(   r;  c                       e Zd Zd Zy)TestDSTIDoublec                 J    t         j                  | _        d| _        d| _        y Nr   r   r   r   s    r%   r   zTestDSTIDouble.setup_method  r   r(   Nr   rx   r(   r%   r>  r>    r   r(   r>  c                       e Zd Zd Zy)TestDSTIFloatc                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestDSTIFloat.setup_method  r   r(   Nr   rx   r(   r%   rB  rB  
  r   r(   rB  c                       e Zd Zd Zy)TestDSTIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestDSTIInt.setup_method  r   r(   Nr   rx   r(   r%   rE  rE    r   r(   rE  c                       e Zd Zd Zy)TestDSTIIDoublec                 J    t         j                  | _        d| _        d| _        y Nr}   r?   r   r   s    r%   r   zTestDSTIIDouble.setup_method  r   r(   Nr   rx   r(   r%   rH  rH    r   r(   rH  c                       e Zd Zd Zy)TestDSTIIFloatc                 J    t         j                  | _        d| _        d| _        y N   r?   r   r   s    r%   r   zTestDSTIIFloat.setup_method   r   r(   Nr   rx   r(   r%   rL  rL    r   r(   rL  c                       e Zd Zd Zy)TestDSTIIIntc                 6    t         | _        d| _        d| _        y rN  r   r   s    r%   r   zTestDSTIIInt.setup_method'  r   r(   Nr   rx   r(   r%   rQ  rQ  &  r   r(   rQ  c                       e Zd Zd Zy)TestDSTIIIDoublec                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestDSTIIIDouble.setup_method.  r   r(   Nr   rx   r(   r%   rT  rT  -  r   r(   rT  c                       e Zd Zd Zy)TestDSTIIIFloatc                 J    t         j                  | _        d| _        d| _        y Nr   r   r   r   s    r%   r   zTestDSTIIIFloat.setup_method5  r   r(   Nr   rx   r(   r%   rW  rW  4  r   r(   rW  c                       e Zd Zd Zy)TestDSTIIIIntc                 6    t         | _        d| _        d| _        y rY  r   r   s    r%   r   zTestDSTIIIInt.setup_method<  r   r(   Nr   rx   r(   r%   r[  r[  ;  r   r(   r[  c                       e Zd Zd Zy)TestDSTIVDoublec                 J    t         j                  | _        d| _        d| _        y r(  r   r   s    r%   r   zTestDSTIVDouble.setup_methodC  r   r(   Nr   rx   r(   r%   r^  r^  B  r   r(   r^  c                       e Zd Zd Zy)TestDSTIVFloatc                 J    t         j                  | _        d| _        d| _        y )Nr   r   r   s    r%   r   zTestDSTIVFloat.setup_methodJ  r   r(   Nr   rx   r(   r%   ra  ra  I  r   r(   ra  c                       e Zd Zd Zy)TestDSTIVIntc                 6    t         | _        d| _        d| _        y r,  r   r   s    r%   r   zTestDSTIVInt.setup_methodQ  r   r(   Nr   rx   r(   r%   rd  rd  P  r   r(   rd  c                   <    e Zd Zd Zej
                  d        Zd Zy)_TestIDSTBasec                 .    d | _         d | _        d | _        y r   r~   r   s    r%   r   z_TestIDSTBase.setup_methodX  r3  r(   c                 *    t        j                         S r   r   r   s    r%   	idst_lockz_TestIDSTBase.idst_lock]  r   r(   c                    t         D ]  }|5  t        | j                  || j                        \  }}}d d d        t	        | j                        }| j                  dk(  r|d|dz   z  z  }n|d|z  z  }t        |j                         t        |t        j                  |      z  t        j                  |      z  | j                  d|z          y # 1 sw Y   xY wr  )r   r*   r   r   r   r   rb   r   r   r   r   )rf   rj  r   r   r   r!   r"   s          r%   r   z_TestIDSTBase.test_definitiona  r  r  N)ru   rv   rw   r   r   r   rj  r   rx   r(   r%   rg  rg  W  r	  r(   rg  c                       e Zd Zd Zy)TestIDSTIDoublec                 J    t         j                  | _        d| _        d| _        y r@  r   r   s    r%   r   zTestIDSTIDouble.setup_methodt  r   r(   Nr   rx   r(   r%   rm  rm  s  r   r(   rm  c                       e Zd Zd Zy)TestIDSTIFloatc                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDSTIFloat.setup_method{  r   r(   Nr   rx   r(   r%   rp  rp  z  r   r(   rp  c                       e Zd Zd Zy)TestIDSTIIntc                 6    t         | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDSTIInt.setup_method  r   r(   Nr   rx   r(   r%   rs  rs    r   r(   rs  c                       e Zd Zd Zy)TestIDSTIIDoublec                 J    t         j                  | _        d| _        d| _        y rJ  r   r   s    r%   r   zTestIDSTIIDouble.setup_method  r   r(   Nr   rx   r(   r%   rv  rv    r   r(   rv  c                       e Zd Zd Zy)TestIDSTIIFloatc                 J    t         j                  | _        d| _        d| _        y rN  r   r   s    r%   r   zTestIDSTIIFloat.setup_method  r   r(   Nr   rx   r(   r%   ry  ry    r   r(   ry  c                       e Zd Zd Zy)TestIDSTIIIntc                 6    t         | _        d| _        d| _        y rN  r   r   s    r%   r   zTestIDSTIIInt.setup_method  r   r(   Nr   rx   r(   r%   r|  r|    r   r(   r|  c                       e Zd Zd Zy)TestIDSTIIIDoublec                 J    t         j                  | _        d| _        d| _        y r   r   r   s    r%   r   zTestIDSTIIIDouble.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDSTIIIFloatc                 J    t         j                  | _        d| _        d| _        y NrO  r   r   r   s    r%   r   zTestIDSTIIIFloat.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDSTIIIIntc                 6    t         | _        d| _        d| _        y r  r   r   s    r%   r   zTestIDSTIIIInt.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDSTIVDoublec                 J    t         j                  | _        d| _        d| _        y r(  r   r   s    r%   r   zTestIDSTIVDouble.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDSTIVFloatc                 J    t         j                  | _        d| _        d| _        y NrO  r   r   r   s    r%   r   zTestIDSTIVFloat.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                       e Zd Zd Zy)TestIDSTIVntc                 6    t         | _        d| _        d| _        y r  r   r   s    r%   r   zTestIDSTIVnt.setup_method  r   r(   Nr   rx   r(   r%   r  r    r   r(   r  c                   d    e Zd ZdZej
                  ej                  gZd Zd Z	d Z
d Zd Zd Zy)	TestOverwritezCheck input overwrite behavior.c                     |j                         }	 ||	|||||       |j                   d|j                   |j                  d|d|d|d}
|st	        |	|d|
        y y )	N)overwrite_x(z, z, axis=z, overwrite_x=)zspurious overwrite in )r   )r-   ru   rb   r0   r   )rf   r"   routiner   fftsizer   rI   r  kwx2sigs              r%   _checkzTestOverwrite._check  sy    VVXD'4;G""#1QWWIagg[7+ Fhn[O1>Q*@(FG r(   c                 h   t         j                  j                  d      }t        j                  |t         j                        r# |j
                  | d |j
                  | z  z   }n |j
                  | }|j                  |      }dD ]'  }dD ]   }dD ]  }	| j                  |||d ||	|        " ) y )Nr   r_   r   r?   r   r   )TF)Nr@   )r   r   r   
issubdtypecomplexfloatingr   r   r  )
rf   r  rb   r0   r   r   r#   r   r  rI   s
             r%   	_check_1dzTestOverwrite._check_1d  s    ii##D)== 2 23399e$r)#))U*;';;D399e$D{{5!  	-D, -+ -DKKgtT4 +---	-r(   c                     | j                   D ]J  }| j                  t        |dd       | j                  t        |dd       | j                  t        |dd       L y N)r   rC   )r   r?   r   )r?   r   r   )real_dtypesr  r   rf   rb   s     r%   test_dctzTestOverwrite.test_dct  M    %% 	3ENN3ub1NN3w2NN3w2	3r(   c                     | j                   D ]J  }| j                  t        |dd       | j                  t        |dd       | j                  t        |dd       L y r  )r  r  r	   r  s     r%   	test_idctzTestOverwrite.test_idct  M    %% 	4ENN4r2NN43NN43	4r(   c                     | j                   D ]J  }| j                  t        |dd       | j                  t        |dd       | j                  t        |dd       L y r  )r  r  r
   r  s     r%   test_dstzTestOverwrite.test_dst  r  r(   c                     | j                   D ]J  }| j                  t        |dd       | j                  t        |dd       | j                  t        |dd       L y r  )r  r  r   r  s     r%   	test_idstzTestOverwrite.test_idst  r  r(   N)ru   rv   rw   __doc__r   r   r   r  r  r  r  r  r  r  rx   r(   r%   r  r    s6    )::rzz*KH-3434r(   r  c                   x   e Zd ZdZg dZddgZej                  j                  d      Z	dZ
 e	j                  e
 Zej                  j                  deefeefg      ej                  j                  ddd	d
d	gdddgddd	gdddgg      ej                  j                  de      ej                  j                  ddg      d                             Zej                  j                  deefeefg      ej                  j                  de      ej                  j                  de      d                      Zej                  j                  deefeefg      ej                  j                  de      ej                  j                  dddg      d                      Zej                  j                  deefeefg      d        Zej                  j                  deeg      d        Zej                  j                  deefeefg      ej                  j                  dd	d
d	gdddgg      d               Zy)Test_DCTN_IDCTNr}   r  Nr@   r   )r   r   zfforward,finverseaxesr   )r   r   )r   r   r   )rC   r  rC   dct_typerI   c                 x     || j                   |||      } |||||      }t        | j                   |d       y )Nr   r  rI   r   r   r#   r   )rf   fforwardfinverser  r  rI   tmps          r%   test_axes_round_tripz$Test_DCTN_IDCTN.test_axes_round_trip  s8     tyyxdFs4@!$))S"=r(   zfforward,fforward_refc                 v     || j                   |d |      } || j                   ||      }t        ||d       y )Nr  r   rI      r   r  )rf   r  fforward_refr  rI   y1r   s          r%   test_dctn_vs_2d_referencez)Test_DCTN_IDCTN.test_dctn_vs_2d_reference  s6     diihTE$))(>!"b"5r(   zfinverse,finverse_refc                 |    t        | j                  ||      } ||||      } ||||      }t        ||d       y )Nr  r  r   )r   r#   r   )rf   r  finverse_refr  rI   fdatar  r   s           r%   test_idctn_vs_2d_referencez*Test_DCTN_IDCTN.test_idctn_vs_2d_reference  s>     TYYXD9e(6%hT:!"b"5r(   c                    t        t        d      5   || j                  | j                  j                  d   d       d d d        t        t        d      5   || j                  | j                  j                  d   d        d d d        t        t        d      5   || j                  | j                  j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)NzBwhen given, axes and shape arguments have to be of the same length)matchr   r  r0   r  )assert_raisesr   r#   r0   )rf   r  r  s      r%   test_axes_and_shapez#Test_DCTN_IDCTN.test_axes_and_shape'  s     :"<= 	G TYYdiiooa&8vF	G
 :"<= 	E TYYdiiooa&8tD	E
 :"<= 	? TYYdiiooA>	? 	?	G 	G
	E 	E
	? 	?s#   -C-C*C)CC&)C2r  c                 Z     || j                   dd       }t        |j                  d       y )N)   r  r  )r#   r   r0   )rf   r  r  s      r%   
test_shapezTest_DCTN_IDCTN.test_shape9  s"    tyy
>SYY
+r(   c                      || j                   d |d      } ||d |d      }t        | j                   || j                         y )Nr@   )r0   r  rI   r   )r#   r   r   )rf   r  r  r  r  s        r%   test_shape_is_none_with_axesz,Test_DCTN_IDCTN.test_shape_is_none_with_axes>  s<    
 tyy4gFs$T@!$))S$((Cr(   )ru   rv   rw   r   r  normsr   r   r   rstater0   r   r#   r   markparametrizer   r   r   r   r  r5   r;   r  r8   r=   r  r  r  r  rx   r(   r%   r  r    s   
CH7OEYY""4(FE6<<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__MDATAr/   r   r   r   r   r   r&   r*   r5   r8   r;   r=   rP   rU   rX   r[   r]   rz   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&  r*  r.  r1  r8  r;  r>  rB  rE  rH  rL  rQ  rT  rW  r[  r^  ra  rd  rg  rm  rp  rs  rv  ry  r|  r  r  r  r  r  r  r  r  )r   s   0r%   <module>r     s   !   A  *4 4 4 	WX&
34$Qx(!U519($Qx(!U519( "''$wx02GHI"''$wx02GHI )

*( (@%* %*P	WL 	W?\ ?	?l 	?	W\ 	W] M - n ^ >  o O n ^ > 2 28m ] = } m M  } ] } m M 2 20	WL 	W	?\ 	?] M - l \ < | l L n ^ > 2 28m ] = } m M  } ] } m = 24 24jID ID] )(s    N<N