
    Ui_                        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d  ed          D             Zd	  ed          D             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          ZddS )    )joindirnameN)assert_array_almost_equalassert_equal)raises)dctidctdstidstdctnidctndstnidstnztest.npzc                 .    g | ]}t           d |          S )xMDATA.0is     /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/fftpack/tests/test_real_transforms.py
<listcomp>r      "    &&&U7q77^&&&       c                 .    g | ]}t           d |          S )yr   r   s     r   r   r      r   r   zfftw_double_ref.npzzfftw_single_ref.npzsizesc                 `   t          j        d|dz
  |                              |          }t          j        t           j        |          }|t           j        k    rt          }n&|t           j        k    rt          }nt                      |d|  d|                              |          }|||fS )Nr      dct__	nplinspaceastyperesult_typefloat32float64FFTWDATA_DOUBLEFFTWDATA_SINGLE
ValueErrortypesizedtr   datar   s         r   fftw_dct_refr2          
AtAvt$$++B//A	
B	'	'B	RZ	rz		ll	"T""D""	#++B//Aa8Or   c                 `   t          j        d|dz
  |                              |          }t          j        t           j        |          }|t           j        k    rt          }n&|t           j        k    rt          }nt                      |d|  d|                              |          }|||fS )Nr   r    dst_r"   r#   r-   s         r   fftw_dst_refr6   (   r3   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_refrA   5       
AQWQZ   - -#qqq&	,,V,,#qqq&		QWQZ   - -!!!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.Tr8   r   Nr    )r$   r:   r;   r<   r	   r=   s       r   idct_2d_refrD   ?       
AQWQZ   . .36--f--#qqq&		QWQZ   . .111c6--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.Tr8   r   Nr    )r$   r:   r;   r<   r
   r=   s       r   
dst_2d_refrG   I   rB   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.Tr8   r   Nr    )r$   r:   r;   r<   r   r=   s       r   idst_2d_refrI   S   rE   r   c           
         t          j        | d          } t          |           }|dz
  }t          j        |          }d\  }}|dk    r.t          j        d|z            }t          j        d|z            }t          |          D ]}t          d|dz
            D ]C}||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    rM|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.Tr8   r    )r       ortho      ?       @r   rK   )r$   r:   lenzerossqrtr;   cospi)	r   normNMr   m0mkns	            r   
naive_dct1r\   ]   s   
AAA	!A
AEBwWSU^^GCENN1XX 8 8q!A# 	/ 	/AaDDDAadF26"%'!)A+....DDDD	!QqT		!QqsVAEQJJqqB77w	!"'!**	!A#!BGAJJ,Hr   c                    t          j        | d          } t          |           }|dz   }t          j        |          }t	          |          D ][}t	          |          D ]I}||xx         d| |         z  t          j        t           j        |dz   z  |dz   z  |z            z  z  cc<   J\|dk    r|t          j        d|z            z  }|S )z0Calculate textbook definition version  of DST-I.Tr8   r    rK   rM   rL         ?r$   r:   rP   rQ   r;   sinrT   rR   )r   rU   rV   rW   r   rZ   r[   s          r   
naive_dst1ra   r   s    
AAA	!A
A1XX ; ;q 	; 	;AaDDDAadF26"%3-3"7"9::::DDDD	;w	RWSU^^Hr   c                    t          j        | d          } t          |           }t          j        |          }t	          |          D ]X}t	          |          D ]F}||xx         | |         t          j        t           j        |dz   z  |dz   z  |z            z  z  cc<   GY|dk    r|t          j        d|z            z  }n|dz  }|S )z0Calculate textbook definition version of DCT-IV.Tr8   r^   rL   rN   rK   )r$   r:   rP   rQ   r;   rS   rT   rR   r   rU   rV   r   rZ   r[   s         r   
naive_dct4rd          
AAA
A1XX ; ;q 	; 	;AaDDDAaDququ 5q 9::::DDDD	;w	RWSU^^	QHr   c                    t          j        | d          } t          |           }t          j        |          }t	          |          D ]X}t	          |          D ]F}||xx         | |         t          j        t           j        |dz   z  |dz   z  |z            z  z  cc<   GY|dk    r|t          j        d|z            z  }n|dz  }|S )z0Calculate textbook definition version of DST-IV.Tr8   r^   rL   rN   rK   r_   rc   s         r   
naive_dst4rg      re   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestComplexc                     t          dt          j        dt          j                  z            }dt          t          j        d                    z  }t	          ||           d S )N              ?   dtype)r   r$   arange	complex64r   selfr   r   s      r   test_dct_complex64zTestComplex.test_dct_complex64   sU    29Qbl333344s29Q<<   !!Q'''''r   c                     t          t          j        d          dz            }dt          t          j        d                    z  }t          ||           d S Nrl   rk   )r   r$   ro   r   rq   s      r   test_dct_complexzTestComplex.test_dct_complex   K    	!R  s29Q<<   !!Q'''''r   c                     t          t          j        d          dz            }dt          t          j        d                    z  }t          ||           d S ru   )r	   r$   ro   r   rq   s      r   test_idct_complexzTestComplex.test_idct_complex   K    1b!!tBIaLL!!!!!Q'''''r   c                     t          t          j        dt          j                  dz            }dt          t          j        d                    z  }t	          ||           d S )Nrl   rm   rk   )r
   r$   ro   rp   r   rq   s      r   test_dst_complex64zTestComplex.test_dst_complex64   sU    	!2<000344s29Q<<   !!Q'''''r   c                     t          t          j        d          dz            }dt          t          j        d                    z  }t          ||           d S ru   )r
   r$   ro   r   rq   s      r   test_dst_complexzTestComplex.test_dst_complex   rw   r   c                     t          t          j        d          dz            }dt          t          j        d                    z  }t          ||           d S ru   )r   r$   ro   r   rq   s      r   test_idst_complexzTestComplex.test_idst_complex   rz   r   N)	__name__
__module____qualname__rs   rv   ry   r|   r~   r    r   r   ri   ri      sn        ( ( (
( ( (
( ( (
( ( (
( ( (
( ( ( ( (r   ri   c                   @    e Zd Zd Zej        d             Zd Zd ZdS )_TestDCTBasec                 0    d | _         d| _        d | _        d S N   rdtdecr.   rr   s    r   setup_methodz_TestDCTBase.setup_method       			r   c                 (    t          j                    S N	threadingLockr   s    r   dct_lockz_TestDCTBase.dct_lock       ~r   c           	      n   t           D ]}|5  t          | j        || j                  \  }}}d d d            n# 1 swxY w Y   t	          || j                  }t          |j        |           t          |t          j	        |          z  |t          j	        |          z  | j
        d| d           d S Nr.   Size  faileddecimalerr_msg)FFTWDATA_SIZESr2   r.   r   r   r   rn   r   r$   maxr   )rr   r   r   r   yrr0   r   s          r   test_definitionz_TestDCTBase.test_definition   s    
	0 
	0A A A(Atx@@	2rA A A A A A A A A A A A A A AADI&&&A"%%%
 &a"&))mR"&))^TX.A...0 0 0 0 0
	0 
	0    8<	<	c           
         d}t           j                            d          }dD ]}|                    ||          }t	          || j                  }t          |          D ]9}t          ||         t	          ||         | j                  | j                   :|j	        }t	          |d| j                  }t          |          D ]A}t          |d d |f         t	          |d d |f         | j                  | j                   Bd S )NrK     )   r   	          @   r   r   r   )axisr.   )
r$   randomRandomStaterandnr   r.   r;   r   r   T)rr   ntrngr   r   r   js          r   	test_axisz_TestDCTBase.test_axis   s2   i##D))& 	* 	*A		"a  AADI&&&A2YY * *)!A$AaDty0I0I0I $* * * * * AAADI...A2YY * *)!AAAaC&#a!f492M2M2M $* * * * **	* 	*r   N)	r   r   r   r   pytestfixturer   r   r   r   r   r   r   r      s^          
 ^    ^ 0 0 0* * * * *r   r   c                       e Zd Zd ZdS )_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                   d S Nrm   rL   r    rU   r.   rU   r   )r$   r'   r(   r   Xr:   r   r\   r   rn   r   r   r   rr   r0   xrr   r   y2s         r   test_definition_orthoz#_TestDCTIBase.test_definition_ortho       ^BJ11 	W 	WB48,,,AAG!,,,AAG,,,B"%%%%a"&))mR"&))^TXVVVVV	W 	Wr   Nr   r   r   r   r   r   r   r   r      (        W W W W Wr   r   c                       e Zd Zd ZdS )_TestDCTIIBasec                 6   t          j        t           j        | j                  }t	          t
          t                    D ]Y\  }}t          j        ||          }t          |dd          }t          |j
        |           t          ||| j                   Zd S )Nrm   rL   rK   r   r   )r$   r'   r(   r   zipr   Yr:   r   r   rn   r   r   )rr   r0   r   r   r   r   s         r   test_definition_matlabz%_TestDCTIIBase.test_definition_matlab   s    ^BJ11!Qii 	? 	?FB2&&&AAG!,,,A"%%%%aTX>>>>>		? 	?r   N)r   r   r   r   r   r   r   r   r      s#        ? ? ? ? ?r   r   c                       e Zd Zd ZdS )_TestDCTIIIBasec                 8   t          j        t           j        | j                  }t          D ]m}t          j        || j                  }t          |dd          }t          |dd          }t          |j        |           t          ||| j
                   nd S )Nrm   rL   rK   r      r   )r$   r'   r(   r   r   r:   r   r   rn   r   r   )rr   r0   r   r   r   xis         r   r   z%_TestDCTIIIBase.test_definition_ortho   s    ^BJ11 	? 	?B48,,,AAG!,,,AQW1---B2&&&%b!TX>>>>>	? 	?r   Nr   r   r   r   r   r      #        ? ? ? ? ?r   r   c                       e Zd Zd ZdS )_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                   d S Nrm   rL      r   r   r   )r$   r'   r(   r   r   r:   r   rd   r   rn   r   r   r   r   s         r   r   z$_TestDCTIVBase.test_definition_ortho  r   r   Nr   r   r   r   r   r     r   r   r   c                       e Zd Zd ZdS )TestDCTIDoublec                 D    t           j        | _        d| _        d| _        d S N
   r    r$   r)   r   r   r.   r   s    r   r   zTestDCTIDouble.setup_method      :			r   Nr   r   r   r   r   r   r   r   r     #            r   r   c                       e Zd Zd ZdS )TestDCTIFloatc                 D    t           j        | _        d| _        d| _        d S Nr   r    r$   r(   r   r   r.   r   s    r   r   zTestDCTIFloat.setup_method      :			r   Nr   r   r   r   r   r     r   r   r   c                       e Zd Zd ZdS )TestDCTIIntc                 :    t           | _        d| _        d| _        d S Nrl   r    intr   r   r.   r   s    r   r   zTestDCTIInt.setup_method"      			r   Nr   r   r   r   r   r   !  r   r   r   c                       e Zd Zd ZdS )TestDCTIIDoublec                 D    t           j        | _        d| _        d| _        d S Nr   rK   r   r   s    r   r   zTestDCTIIDouble.setup_method)  r   r   Nr   r   r   r   r   r   (  r   r   r   c                       e Zd Zd ZdS )TestDCTIIFloatc                 D    t           j        | _        d| _        d| _        d S Nrl   rK   r   r   s    r   r   zTestDCTIIFloat.setup_method0  r   r   Nr   r   r   r   r   r   /  r   r   r   c                       e Zd Zd ZdS )TestDCTIIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestDCTIIInt.setup_method7  r   r   Nr   r   r   r   r   r   6  r   r   r   c                       e Zd Zd ZdS )TestDCTIIIDoublec                 D    t           j        | _        d| _        d| _        d S Nr   r   r   r   s    r   r   zTestDCTIIIDouble.setup_method>  r   r   Nr   r   r   r   r   r   =  r   r   r   c                       e Zd Zd ZdS )TestDCTIIIFloatc                 D    t           j        | _        d| _        d| _        d S Nrl   r   r   r   s    r   r   zTestDCTIIIFloat.setup_methodE  r   r   Nr   r   r   r   r   r   D  r   r   r   c                       e Zd Zd ZdS )TestDCTIIIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestDCTIIIInt.setup_methodL  r   r   Nr   r   r   r   r   r   K  r   r   r   c                       e Zd Zd ZdS )TestDCTIVDoublec                 D    t           j        | _        d| _        d| _        d S )N   r   r   r   s    r   r   zTestDCTIVDouble.setup_methodS  r   r   Nr   r   r   r   r  r  R  r   r   r  c                       e Zd Zd ZdS )TestDCTIVFloatc                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestDCTIVFloat.setup_methodZ  r   r   Nr   r   r   r   r  r  Y  r   r   r  c                       e Zd Zd ZdS )TestDCTIVIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestDCTIVInt.setup_methoda  r   r   Nr   r   r   r   r
  r
  `  r   r   r
  c                   :    e Zd Zd Zej        d             Zd ZdS )_TestIDCTBasec                 0    d | _         d| _        d | _        d S 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            n# 1 swxY w Y   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| d           d S Nr   r    rK   r   r   r   )r   r2   r.   r   r	   r   rn   r   r$   r   r   )rr   r  r   r   r   r0   r   s          r   r   z_TestIDCTBase.test_definitionq  ?    	0 	0A B B)$)QAA
BB B B B B B B B B B B B B B BRdi(((AyA~~Q!A#YQU
"%%%
 &a"&))mR"&))^TX.A...0 0 0 0 0	0 	0r   N)r   r   r   r   r   r   r  r   r   r   r   r  r  g  O          
 ^    ^ 0 0 0 0 0r   r  c                       e Zd Zd ZdS )TestIDCTIDoublec                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIDouble.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDCTIFloatc                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIFloat.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDCTIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIInt.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDCTIIDoublec                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIIDouble.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDCTIIFloatc                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIIFloat.setup_method  r   r   Nr   r   r   r   r"  r"    r   r   r"  c                       e Zd Zd ZdS )TestIDCTIIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIIInt.setup_method  r   r   Nr   r   r   r   r%  r%    r   r   r%  c                       e Zd Zd ZdS )TestIDCTIIIDoublec                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIIIDouble.setup_method  r   r   Nr   r   r   r   r(  r(    r   r   r(  c                       e Zd Zd ZdS )TestIDCTIIIFloatc                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIIIFloat.setup_method  r   r   Nr   r   r   r   r+  r+    r   r   r+  c                       e Zd Zd ZdS )TestIDCTIIIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDCTIIIInt.setup_method  r   r   Nr   r   r   r   r.  r.    r   r   r.  c                       e Zd Zd ZdS )TestIDCTIVDoublec                 D    t           j        | _        d| _        d| _        d S Nr  r   r   r   s    r   r   zTestIDCTIVDouble.setup_method  r   r   Nr   r   r   r   r1  r1    r   r   r1  c                       e Zd Zd ZdS )TestIDCTIVFloatc                 D    t           j        | _        d| _        d| _        d S Nrl   r   r   r   s    r   r   zTestIDCTIVFloat.setup_method  r   r   Nr   r   r   r   r5  r5    r   r   r5  c                       e Zd Zd ZdS )TestIDCTIVIntc                 :    t           | _        d| _        d| _        d S r7  r   r   s    r   r   zTestIDCTIVInt.setup_method  r   r   Nr   r   r   r   r9  r9    r   r   r9  c                   :    e Zd Zd Zej        d             Zd ZdS )_TestDSTBasec                 0    d | _         d | _        d | _        d S 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           	      n   t           D ]}|5  t          | j        || j                  \  }}}d d d            n# 1 swxY w Y   t	          || j                  }t          |j        |           t          |t          j	        |          z  |t          j	        |          z  | j
        d| d           d S r   )r   r6   r.   r   r
   r   rn   r   r$   r   r   )rr   r@  r   r   r   r0   r   s          r   r   z_TestDSTBase.test_definition  s    
	0 
	0A B B)$)QAA
BB B B B B B B B B B B B B B BBTY'''A"%%%
 &a"&))mR"&))^TX.A...0 0 0 0 0
	0 
	0r   N)r   r   r   r   r   r   r@  r   r   r   r   r<  r<    sO          
 ^    ^ 0 0 0 0 0r   r<  c                       e Zd Zd ZdS )_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                   d S r   )r$   r'   r(   r   r   r:   r
   ra   r   rn   r   r   r   r   s         r   r   z#_TestDSTIBase.test_definition_ortho  r   r   Nr   r   r   r   rC  rC    r   r   rC  c                       e Zd Zd ZdS )_TestDSTIVBasec                 6   t          j        t           j        | j                  }t          D ]l}t          j        || j                  }t          |dd          }t          |d          }t          |j	        |           t          ||| j                   md S r   )r$   r'   r(   r   r   r:   r
   rg   r   rn   r   r   r   s         r   r   z$_TestDSTIVBase.test_definition_ortho  s    ^BJ11 	? 	?B48,,,AAG!,,,AAG,,,B"%%%%aTX>>>>>	? 	?r   Nr   r   r   r   rF  rF    r   r   rF  c                       e Zd Zd ZdS )TestDSTIDoublec                 D    t           j        | _        d| _        d| _        d S Nr  r    r   r   s    r   r   zTestDSTIDouble.setup_method  r   r   Nr   r   r   r   rI  rI    r   r   rI  c                       e Zd Zd ZdS )TestDSTIFloatc                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestDSTIFloat.setup_method
  r   r   Nr   r   r   r   rM  rM  	  r   r   rM  c                       e Zd Zd ZdS )TestDSTIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestDSTIInt.setup_method  r   r   Nr   r   r   r   rP  rP    r   r   rP  c                       e Zd Zd ZdS )TestDSTIIDoublec                 D    t           j        | _        d| _        d| _        d S Nr   rK   r   r   s    r   r   zTestDSTIIDouble.setup_method  r   r   Nr   r   r   r   rS  rS    r   r   rS  c                       e Zd Zd ZdS )TestDSTIIFloatc                 D    t           j        | _        d| _        d| _        d S N   rK   r   r   s    r   r   zTestDSTIIFloat.setup_method  r   r   Nr   r   r   r   rW  rW    r   r   rW  c                       e Zd Zd ZdS )TestDSTIIIntc                 :    t           | _        d| _        d| _        d S rY  r   r   s    r   r   zTestDSTIIInt.setup_method&  r   r   Nr   r   r   r   r\  r\  %  r   r   r\  c                       e Zd Zd ZdS )TestDSTIIIDoublec                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestDSTIIIDouble.setup_method-  r   r   Nr   r   r   r   r_  r_  ,  r   r   r_  c                       e Zd Zd ZdS )TestDSTIIIFloatc                 D    t           j        | _        d| _        d| _        d S Nr   r   r   r   s    r   r   zTestDSTIIIFloat.setup_method4  r   r   Nr   r   r   r   rb  rb  3  r   r   rb  c                       e Zd Zd ZdS )TestDSTIIIIntc                 :    t           | _        d| _        d| _        d S rd  r   r   s    r   r   zTestDSTIIIInt.setup_method;  r   r   Nr   r   r   r   rf  rf  :  r   r   rf  c                       e Zd Zd ZdS )TestDSTIVDoublec                 D    t           j        | _        d| _        d| _        d S r3  r   r   s    r   r   zTestDSTIVDouble.setup_methodB  r   r   Nr   r   r   r   ri  ri  A  r   r   ri  c                       e Zd Zd ZdS )TestDSTIVFloatc                 D    t           j        | _        d| _        d| _        d S )Nr   r   r   s    r   r   zTestDSTIVFloat.setup_methodI  r   r   Nr   r   r   r   rl  rl  H  r   r   rl  c                       e Zd Zd ZdS )TestDSTIVIntc                 :    t           | _        d| _        d| _        d S r7  r   r   s    r   r   zTestDSTIVInt.setup_methodP  r   r   Nr   r   r   r   ro  ro  O  r   r   ro  c                   :    e Zd Zd Zej        d             Zd ZdS )_TestIDSTBasec                 0    d | _         d | _        d | _        d S r   r   r   s    r   r   z_TestIDSTBase.setup_methodW  r>  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            n# 1 swxY w Y   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| d           d S r  )r   r6   r.   r   r   r   rn   r   r$   r   r   )rr   ru  r   r   r   r0   r   s          r   r   z_TestIDSTBase.test_definition`  r  r   N)r   r   r   r   r   r   ru  r   r   r   r   rr  rr  V  r  r   rr  c                       e Zd Zd ZdS )TestIDSTIDoublec                 D    t           j        | _        d| _        d| _        d S rK  r   r   s    r   r   zTestIDSTIDouble.setup_methods  r   r   Nr   r   r   r   rx  rx  r  r   r   rx  c                       e Zd Zd ZdS )TestIDSTIFloatc                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDSTIFloat.setup_methodz  r   r   Nr   r   r   r   r{  r{  y  r   r   r{  c                       e Zd Zd ZdS )TestIDSTIIntc                 :    t           | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDSTIInt.setup_method  r   r   Nr   r   r   r   r~  r~    r   r   r~  c                       e Zd Zd ZdS )TestIDSTIIDoublec                 D    t           j        | _        d| _        d| _        d S rU  r   r   s    r   r   zTestIDSTIIDouble.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIIFloatc                 D    t           j        | _        d| _        d| _        d S rY  r   r   s    r   r   zTestIDSTIIFloat.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIIIntc                 :    t           | _        d| _        d| _        d S rY  r   r   s    r   r   zTestIDSTIIInt.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIIIDoublec                 D    t           j        | _        d| _        d| _        d S r   r   r   s    r   r   zTestIDSTIIIDouble.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIIIFloatc                 D    t           j        | _        d| _        d| _        d S NrZ  r   r   r   s    r   r   zTestIDSTIIIFloat.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIIIIntc                 :    t           | _        d| _        d| _        d S r  r   r   s    r   r   zTestIDSTIIIInt.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIVDoublec                 D    t           j        | _        d| _        d| _        d S r3  r   r   s    r   r   zTestIDSTIVDouble.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIVFloatc                 D    t           j        | _        d| _        d| _        d S NrZ  r   r   r   s    r   r   zTestIDSTIVFloat.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                       e Zd Zd ZdS )TestIDSTIVntc                 :    t           | _        d| _        d| _        d S r  r   r   s    r   r   zTestIDSTIVnt.setup_method  r   r   Nr   r   r   r   r  r    r   r   r  c                   R    e Zd ZdZej        ej        gZd Zd Z	d Z
d Zd Zd ZdS )	TestOverwritezCheck input overwrite behavior.c                     |                                 }	 ||	|||||           |j         d|j         |j        d|d|d|d}
|st	          |	|d|
            d S d S )	N)overwrite_x(z, z, axis=z, overwrite_x=)zspurious overwrite in )r   )r9   r   rn   r<   r   )rr   r   routiner.   fftsizer   rU   r  kwx2sigs              r   _checkzTestOverwrite._check  s    VVXXD'4;GGGG" > >QW >ag > >7 > >> >-8> > > 	HQ(F(F(FGGGGGG	H 	Hr   c                 F   t           j                            d          }t          j        |t           j                  r |j        | d |j        | z  z   }n
 |j        | }|                    |          }dD ]'}dD ]"}dD ]}	|                     |||d ||	|           #(d S )Nr   rk   r    rK   r   r   )TF)NrL   )r$   r   r   
issubdtypecomplexfloatingr   r&   r  )
rr   r  rn   r<   r   r   r1   r.   r  rU   s
             r   	_check_1dzTestOverwrite._check_1d  s    i##D))= 233 	%39e$r)#)U*;';;DD39e$D{{5!!  	- 	-D, - -+ - -DKKgtT4 +- - - ---	- 	-r   c                     | j         D ]Y}|                     t          |dd           |                     t          |dd           |                     t          |dd           Zd S N)r   rO   )r   rK   r   )rK   r   r    )real_dtypesr  r   rr   rn   s     r   test_dctzTestOverwrite.test_dct  i    % 	3 	3ENN3ub111NN3w222NN3w2222	3 	3r   c                     | j         D ]Y}|                     t          |dd           |                     t          |dd           |                     t          |dd           Zd S r  )r  r  r	   r  s     r   	test_idctzTestOverwrite.test_idct  i    % 	4 	4ENN4r222NN4333NN43333	4 	4r   c                     | j         D ]Y}|                     t          |dd           |                     t          |dd           |                     t          |dd           Zd S r  )r  r  r
   r  s     r   test_dstzTestOverwrite.test_dst  r  r   c                     | j         D ]Y}|                     t          |dd           |                     t          |dd           |                     t          |dd           Zd S r  )r  r  r   r  s     r   	test_idstzTestOverwrite.test_idst  r  r   N)r   r   r   __doc__r$   r(   r)   r  r  r  r  r  r  r  r   r   r   r  r    s        )):rz*KH H H- - -3 3 34 4 43 3 34 4 4 4 4r   r  c                      e Zd ZdZg dZddgZej                            d          Z	dZ
 e	j        e
 Zej                            deefeefg          ej                            ddd	d
d	gdddgddd	gdddgg          ej                            de          ej                            ddg          d                                                 Zej                            deefeefg          ej                            de          ej                            de          d                                     Zej                            deefeefg          ej                            de          ej                            dddg          d                                     Zej                            deefeefg          d             Zej                            deeg          d             Zej                            deefeefg          ej                            dd	d
d	gdddgg          d                         ZdS )Test_DCTN_IDCTNr   r  NrL   r   )r   r   zfforward,finverseaxesr    )r    r   )r   r   r    )rO   r  rO   dct_typerU   c                 z     || j         |||          } |||||          }t          | j         |d           d S )Nr.   r  rU   r  r   r1   r   )rr   fforwardfinverser  r  rU   tmps          r   test_axes_round_tripz$Test_DCTN_IDCTN.test_axes_round_trip  sS     htyxdFFFhs4@@@!$)S"======r   zfforward,fforward_refc                 x     || j         |d |          } || j         ||          }t          ||d           d S )Nr  r.   rU      r   r  )rr   r  fforward_refr  rU   y1r   s          r   test_dctn_vs_2d_referencez)Test_DCTN_IDCTN.test_dctn_vs_2d_reference  sQ     XdihTEEE\$)(>>>!"b"555555r   zfinverse,finverse_refc                     t          | j        ||          } ||||          } ||||          }t          ||d           d S )Nr  r  r   )r   r1   r   )rr   r  finverse_refr  rU   fdatar  r   s           r   test_idctn_vs_2d_referencez*Test_DCTN_IDCTN.test_idctn_vs_2d_reference  sa     TYXD999Xe(666\%hT:::!"b"555555r   c                    t          t          d          5   || j        | j        j        d         d           d d d            n# 1 swxY w Y   t          t          d          5   || j        | j        j        d         d            d d d            n# 1 swxY w Y   t          t          d          5   || j        | j        j        d           d d d            d S # 1 swxY w Y   d S )NzBwhen given, axes and shape arguments have to be of the same length)matchr   r  r<   r  )assert_raisesr,   r1   r<   )rr   r  r  s      r   test_axes_and_shapez#Test_DCTN_IDCTN.test_axes_and_shape&  s    :"<= = = 	G 	G HTYdioa&8vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
 :"<= = = 	E 	E HTYdioa&8tDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
 :"<= = = 	? 	? HTYdioA>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s5   $AAA($BBB9C$$C(+C(r  c                 V     || j         dd           }t          |j        d           d S )N)   r  r  )r1   r   r<   )rr   r  r  s      r   
test_shapezTest_DCTN_IDCTN.test_shape8  s2    hty
>>>SY
+++++r   c                      || j         d |d          } ||d |d          }t          | j         || j                   d S )NrL   )r<   r  rU   r   )r1   r   r   )rr   r  r  r  r  s        r   test_shape_is_none_with_axesz,Test_DCTN_IDCTN.test_shape_is_none_with_axes=  sU    
 hty4gFFFhs$T@@@!$)S$(CCCCCCr   )r   r   r   r   r  normsr$   r   r   rstater<   r   r1   r   markparametrizer   r   r   r   r  rA   rG   r  rD   rI   r  r  r  r  r   r   r   r  r    s7       
C||H7OEY""4((FE6<D[0D%=48%=3B C C[Vd&'s&'s&,q!f&.R	&: ; ;
 [Z22[VgY//> > 0/ 32; ;C C>
 [4j7I8<j7I7K L L[Z22[VU++6 6 ,+ 32L L6 [4{7K8={7K7M N N[Z22[VdG_556 6 65 32N N6 [0D%=48%=3B C C? ?C C?  [Z$66, , 76, [0D%=48%=3B C C[Vas&'s&4 5 5D D5 5C CD D 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__r   r;   r   r   r*   r+   r   r2   r6   rA   rD   rG   rI   r\   ra   rd   rg   ri   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  r5  r9  r<  rC  rF  rI  rM  rP  rS  rW  r\  r_  rb  rf  ri  rl  ro  rr  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s^   ! ! ! ! ! ! ! !         A A A A A A A A  * * * * * *4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 	WWX&&
3344&&UU1XX&&&&&UU1XX&&& "'$$wwx002GHHII"'$$wwx002GHHII )
 
 

 
 
           *         ( ( ( ( ( ( ( (@%* %* %* %* %* %* %* %*P	W 	W 	W 	W 	WL 	W 	W 	W? ? ? ? ?\ ? ? ?	? 	? 	? 	? 	?l 	? 	? 	?	W 	W 	W 	W 	W\ 	W 	W 	W    ]       M       -       n       ^       >              o       O       n       ^       >   0 0 0 0 0 0 0 06    m       ]       =       }       m       M              }       ]       }       m       M   0 0 0 0 0 0 0 00	W 	W 	W 	W 	WL 	W 	W 	W	? 	? 	? 	? 	?\ 	? 	? 	?    ]       M       -       l       \       <       |       l       L       n       ^       >   0 0 0 0 0 0 0 08    m       ]       =       }       m       M              }       ]       }       m       =   24 24 24 24 24 24 24 24jID ID ID ID ID ID ID ID ID IDr   