o
    i_                     @   s  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eeedZdd ed	D Zd
d ed	D ZeeeedZeeeedZed Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dddZ$dddZ%dddZ&dd d!Z'G d"d# d#Z(G d$d% d%Z)G d&d' d'e)Z*G d(d) d)e)Z+G d*d+ d+e)Z,G d,d- d-e)Z-G d.d/ d/e*Z.G d0d1 d1e*Z/G d2d3 d3e*Z0G d4d5 d5e+Z1G d6d7 d7e+Z2G d8d9 d9e+Z3G d:d; d;e,Z4G d<d= d=e,Z5G d>d? d?e,Z6G d@dA dAe-Z7G dBdC dCe-Z8G dDdE dEe-Z9G dFdG dGZ:G dHdI dIe:Z;G dJdK dKe:Z<G dLdM dMe:Z=G dNdO dOe:Z>G dPdQ dQe:Z?G dRdS dSe:Z@G dTdU dUe:ZAG dVdW dWe:ZBG dXdY dYe:ZCG dZd[ d[e:ZDG d\d] d]e:ZEG d^d_ d_e:ZFG d`da daZGG dbdc dceGZHG ddde deeGZIG dfdg dgeHZJG dhdi dieHZKG djdk dkeHZLG dldm dmeGZMG dndo doeGZNG dpdq dqeGZOG drds dseGZPG dtdu dueGZQG dvdw dweGZRG dxdy dyeIZSG dzd{ d{eIZTG d|d} d}eIZUG d~d dZVG dd deVZWG dd deVZXG dd deVZYG dd deVZZG dd deVZ[G dd deVZ\G dd deVZ]G dd deVZ^G dd deVZ_G dd deVZ`G dd deVZaG dd deVZbG dd dZcG dd dZddS )    )joindirnameN)assert_array_almost_equalassert_equal)raises)dctidctdstidstdctnidctndstnidstnztest.npzc                 C      g | ]}t d |  qS )zx%dMDATA.0i r   b/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/fftpack/tests/test_real_transforms.py
<listcomp>       r      c                 C   r   )zy%dr   r   r   r   r   r      r   zfftw_double_ref.npzzfftw_single_ref.npzsizesc                 C   l   t d|d ||}t t j|}|t jkrt}n|t jkr#t}nt |d| |f  |}|||fS )Nr      z	dct_%d_%d	npZlinspaceastyperesult_typefloat32float64FFTWDATA_DOUBLEFFTWDATA_SINGLE
ValueErrortypesizedtxdatayr   r   r   fftw_dct_ref      


r-   c                 C   r   )Nr   r   z	dst_%d_%dr   r&   r   r   r   fftw_dst_ref(   r.   r/   c                 K      t j| dd} t| jd D ]}t| |ddf fi || |ddf< qt| jd D ]}t| dd|f fi || dd|f< q,| S )z,Calculate reference values for testing dct2.Tcopyr   Nr   )r   arrayrangeshaper   r*   kwargsrowcolr   r   r   
dct_2d_ref5      **r:   c                 K   r0   )z-Calculate reference values for testing idct2.Tr1   r   Nr   )r   r3   r4   r5   r   r6   r   r   r   idct_2d_ref?   r;   r<   c                 K   r0   )z,Calculate reference values for testing dst2.Tr1   r   Nr   )r   r3   r4   r5   r	   r6   r   r   r   
dst_2d_refI   r;   r=   c                 K   r0   )z-Calculate reference values for testing idst2.Tr1   r   Nr   )r   r3   r4   r5   r
   r6   r   r   r   idst_2d_refS   r;   r>   c           	   
   C   s2  t j| dd} t| }|d }t |}d\}}|dkr*t d| }t d| }t|D ]H}td|d D ]}||  || |  t t j| | |  7  < q7||  || d  7  < ||  || |d   |d	 dkrqdnd
 7  < q.|dkr|d  dt d	 9  < ||d   dt d	 9  < |S )z/Calculate textbook definition version of DCT-I.Tr1   r   )r      ortho      ?       @r   r?   )r   r3   lenzerossqrtr4   cospi)	r*   normNMr,   Zm0mknr   r   r   
naive_dct1]   s"   
22rO   c                 C   s   t j| dd} t| }|d }t |}t|D ]%}t|D ]}||  d| |  t t j|d  |d  |  7  < qq|dkrK|t d| 9 }|S )z0Calculate textbook definition version  of DST-I.Tr1   r   r?   rA   r@         ?r   r3   rD   rE   r4   sinrH   rF   )r*   rI   rJ   rK   r,   rM   rN   r   r   r   
naive_dst1r   s   
:rS   c                 C      t j| dd} t| }t |}t|D ]#}t|D ]}||  | | t t j|d  |d  |  7  < qq|dkrG|t d| 9 }|S |d9 }|S )z0Calculate textbook definition version of DCT-IV.Tr1   rP   r@   rB   r?   )r   r3   rD   rE   r4   rG   rH   rF   r*   rI   rJ   r,   rM   rN   r   r   r   
naive_dct4      
6rV   c                 C   rT   )z0Calculate textbook definition version of DST-IV.Tr1   rP   r@   rB   r?   rQ   rU   r   r   r   
naive_dst4   rW   rX   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestComplexc                 C   s8   t dtjdtjd }dt td }t|| d S )N              ?   dtype)r   r   arange	complex64r   selfr,   r*   r   r   r   test_dct_complex64      zTestComplex.test_dct_complex64c                 C   2   t tdd }dt td }t|| d S Nr[   rZ   )r   r   r^   r   r`   r   r   r   test_dct_complex      zTestComplex.test_dct_complexc                 C   rd   re   )r   r   r^   r   r`   r   r   r   test_idct_complex   rg   zTestComplex.test_idct_complexc                 C   s8   t tjdtjdd }dt td }t|| d S )Nr[   r\   rZ   )r	   r   r^   r_   r   r`   r   r   r   test_dst_complex64   rc   zTestComplex.test_dst_complex64c                 C   rd   re   )r	   r   r^   r   r`   r   r   r   test_dst_complex   rg   zTestComplex.test_dst_complexc                 C   rd   re   )r
   r   r^   r   r`   r   r   r   test_idst_complex   rg   zTestComplex.test_idst_complexN)	__name__
__module____qualname__rb   rf   rh   ri   rj   rk   r   r   r   r   rY      s    rY   c                   @   s2   e Zd Zdd Zejdd Zdd Zdd Zd	S )
_TestDCTBasec                 C      d | _ d| _d | _d S N   rdtdecr'   ra   r   r   r   setup_method      
z_TestDCTBase.setup_methodc                 C      t  S N	threadingLockrv   r   r   r   dct_lock      z_TestDCTBase.dct_lockc              	   C      t D ]A}| t| j|| j\}}}W d    n1 sw   Y  t|| jd}t|j| t|t	| |t	| | j
d| d qd S Nr'   Size %d faileddecimalerr_msg)FFTWDATA_SIZESr-   r'   rt   r   r   r]   r   r   maxru   )ra   r~   r   r*   yrr)   r,   r   r   r   test_definition      z_TestDCTBase.test_definitionc                 C   s   d}t jd}dD ]R}|||}t|| jd}t|D ]}t|| t|| | jd| jd q|j	}t|d| jd}t|D ]}t|d d |f t|d d |f | jd| jd q@q
d S )Nr?     )   r   	          @   r   r   r   )axisr'   )
r   randomRandomStaterandnr   r'   r4   r   ru   T)ra   ntrngr   r*   r,   jr   r   r   	test_axis   s"   (z_TestDCTBase.test_axisN)	rl   rm   rn   rw   pytestfixturer~   r   r   r   r   r   r   ro      s    
ro   c                   @      e Zd Zdd ZdS )_TestDCTIBasec                 C   x   t t j| j}tD ]/}t j|| jd}t|ddd}t|dd}t|j	| t
|t | |t | | jd q
d S Nr\   r@   r   rI   r'   rI   r   )r   r    r!   rt   Xr3   r   rO   r   r]   r   r   ru   ra   r)   xrr*   r,   y2r   r   r   test_definition_ortho      &z#_TestDCTIBase.test_definition_orthoNrl   rm   rn   r   r   r   r   r   r          r   c                   @   r   )_TestDCTIIBasec                 C   s`   t t j| j}tttD ] \}}t j||d}t|ddd}t	|j
| t||| jd qd S )Nr\   r@   r?   r   r   )r   r    r!   rt   zipr   Yr3   r   r   r]   r   ru   )ra   r)   r   r   r*   r,   r   r   r   test_definition_matlab   s   z%_TestDCTIIBase.test_definition_matlabN)rl   rm   rn   r   r   r   r   r   r      r   r   c                   @   r   )_TestDCTIIIBasec                 C   sf   t t j| j}tD ]&}t j|| jd}t|ddd}t|ddd}t|j| t	||| j
d q
d S )Nr\   r@   r?   r      r   )r   r    r!   rt   r   r3   r   r   r]   r   ru   )ra   r)   r   r*   r,   xir   r   r   r      s   z%_TestDCTIIIBase.test_definition_orthoNr   r   r   r   r   r      r   r   c                   @   r   )_TestDCTIVBasec                 C   r   Nr\   r@      r   r   r   )r   r    r!   rt   r   r3   r   rV   r   r]   r   r   ru   r   r   r   r   r     r   z$_TestDCTIVBase.test_definition_orthoNr   r   r   r   r   r     r   r   c                   @   r   )TestDCTIDoublec                 C      t j| _d| _d| _d S N
   r   r   r"   rt   ru   r'   rv   r   r   r   rw        
zTestDCTIDouble.setup_methodNrl   rm   rn   rw   r   r   r   r   r     r   r   c                   @   r   )TestDCTIFloatc                 C   r   Nr   r   r   r!   rt   ru   r'   rv   r   r   r   rw     r   zTestDCTIFloat.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestDCTIIntc                 C      t | _d| _d| _d S Nr[   r   intrt   ru   r'   rv   r   r   r   rw   "  rx   zTestDCTIInt.setup_methodNr   r   r   r   r   r   !  r   r   c                   @   r   )TestDCTIIDoublec                 C   r   Nr   r?   r   rv   r   r   r   rw   )  r   zTestDCTIIDouble.setup_methodNr   r   r   r   r   r   (  r   r   c                   @   r   )TestDCTIIFloatc                 C   r   Nr[   r?   r   rv   r   r   r   rw   0  r   zTestDCTIIFloat.setup_methodNr   r   r   r   r   r   /  r   r   c                   @   r   )TestDCTIIIntc                 C   r   r   r   rv   r   r   r   rw   7  rx   zTestDCTIIInt.setup_methodNr   r   r   r   r   r   6  r   r   c                   @   r   )TestDCTIIIDoublec                 C   r   Nrr   r   r   rv   r   r   r   rw   >  r   zTestDCTIIIDouble.setup_methodNr   r   r   r   r   r   =  r   r   c                   @   r   )TestDCTIIIFloatc                 C   r   Nr[   r   r   rv   r   r   r   rw   E  r   zTestDCTIIIFloat.setup_methodNr   r   r   r   r   r   D  r   r   c                   @   r   )TestDCTIIIIntc                 C   r   r   r   rv   r   r   r   rw   L  rx   zTestDCTIIIInt.setup_methodNr   r   r   r   r   r   K  r   r   c                   @   r   )TestDCTIVDoublec                 C   r   )N   r   r   rv   r   r   r   rw   S  r   zTestDCTIVDouble.setup_methodNr   r   r   r   r   r   R  r   r   c                   @   r   )TestDCTIVFloatc                 C   r   r   r   rv   r   r   r   rw   Z  r   zTestDCTIVFloat.setup_methodNr   r   r   r   r   r   Y  r   r   c                   @   r   )TestDCTIVIntc                 C   r   r   r   rv   r   r   r   rw   a  rx   zTestDCTIVInt.setup_methodNr   r   r   r   r   r   `  r   r   c                   @   *   e Zd Zdd Zejdd Zdd ZdS )_TestIDCTBasec                 C   rp   rq   rs   rv   r   r   r   rw   h  rx   z_TestIDCTBase.setup_methodc                 C   ry   rz   r{   rv   r   r   r   	idct_lockm  r   z_TestIDCTBase.idct_lockc              	   C   s   t D ]U}| t| j|| j\}}}W d    n1 sw   Y  t|| jd}| jdkr6|d|d   }n|d|  }t|j| t|t	| |t	| | j
d| d qd S Nr   r   r?   r   r   )r   r-   r'   rt   r   r   r]   r   r   r   ru   )ra   r   r   r   r   r)   r*   r   r   r   r   q     
z_TestIDCTBase.test_definitionN)rl   rm   rn   rw   r   r   r   r   r   r   r   r   r   g  
    
r   c                   @   r   )TestIDCTIDoublec                 C   r   r   r   rv   r   r   r   rw     r   zTestIDCTIDouble.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIFloatc                 C   r   r   r   rv   r   r   r   rw     r   zTestIDCTIFloat.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestIDCTIInt.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIDoublec                 C   r   r   r   rv   r   r   r   rw     r   zTestIDCTIIDouble.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIFloatc                 C   r   r   r   rv   r   r   r   rw     r   zTestIDCTIIFloat.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestIDCTIIInt.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIIDoublec                 C   r   r   r   rv   r   r   r   rw     r   zTestIDCTIIIDouble.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIIFloatc                 C   r   r   r   rv   r   r   r   rw     r   zTestIDCTIIIFloat.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIIIIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestIDCTIIIInt.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIVDoublec                 C   r   Nr   r   r   rv   r   r   r   rw     r   zTestIDCTIVDouble.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIVFloatc                 C   r   Nr[   r   r   rv   r   r   r   rw     r   zTestIDCTIVFloat.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestIDCTIVIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestIDCTIVInt.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )_TestDSTBasec                 C      d | _ d | _d | _d S rz   rs   rv   r   r   r   rw     rx   z_TestDSTBase.setup_methodc                 C   ry   rz   r{   rv   r   r   r   dst_lock  r   z_TestDSTBase.dst_lockc              	   C   r   r   )r   r/   r'   rt   r	   r   r]   r   r   r   ru   )ra   r   r   r   r   r)   r,   r   r   r   r     r   z_TestDSTBase.test_definitionN)rl   rm   rn   rw   r   r   r   r   r   r   r   r   r     r   r   c                   @   r   )_TestDSTIBasec                 C   r   r   )r   r    r!   rt   r   r3   r	   rS   r   r]   r   r   ru   r   r   r   r   r     r   z#_TestDSTIBase.test_definition_orthoNr   r   r   r   r   r     r   r   c                   @   r   )_TestDSTIVBasec                 C   sd   t t j| j}tD ]%}t j|| jd}t|ddd}t|dd}t|j	| t
||| jd q
d S r   )r   r    r!   rt   r   r3   r	   rX   r   r]   r   ru   r   r   r   r   r     s   z$_TestDSTIVBase.test_definition_orthoNr   r   r   r   r   r     r   r   c                   @   r   )TestDSTIDoublec                 C   r   Nr   r   r   rv   r   r   r   rw     r   zTestDSTIDouble.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestDSTIFloatc                 C   r   r   r   rv   r   r   r   rw     r   zTestDSTIFloat.setup_methodNr   r   r   r   r   r   
  r   r   c                   @   r   )TestDSTIIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestDSTIInt.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestDSTIIDoublec                 C   r   Nrr   r?   r   rv   r   r   r   rw     r   zTestDSTIIDouble.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestDSTIIFloatc                 C   r   N   r?   r   rv   r   r   r   rw      r   zTestDSTIIFloat.setup_methodNr   r   r   r   r   r     r   r   c                   @   r   )TestDSTIIIntc                 C   r   r   r   rv   r   r   r   rw   '  rx   zTestDSTIIInt.setup_methodNr   r   r   r   r   r   &  r   r   c                   @   r   )TestDSTIIIDoublec                 C   r   r   r   rv   r   r   r   rw   .  r   zTestDSTIIIDouble.setup_methodNr   r   r   r   r   r   -  r   r   c                   @   r   )TestDSTIIIFloatc                 C   r   Nr   r   r   rv   r   r   r   rw   5  r   zTestDSTIIIFloat.setup_methodNr   r   r   r   r   r   4  r   r   c                   @   r   )TestDSTIIIIntc                 C   r   r   r   rv   r   r   r   rw   <  rx   zTestDSTIIIInt.setup_methodNr   r   r   r   r   r   ;  r   r   c                   @   r   )TestDSTIVDoublec                 C   r   r   r   rv   r   r   r   rw   C  r   zTestDSTIVDouble.setup_methodNr   r   r   r   r   r   B  r   r   c                   @   r   )TestDSTIVFloatc                 C   s   t j| _d| _d| _d S )Nr   r   rv   r   r   r   rw   J  r   zTestDSTIVFloat.setup_methodNr   r   r   r   r   r   I  r   r   c                   @   r   )TestDSTIVIntc                 C   r   r   r   rv   r   r   r   rw   Q  rx   zTestDSTIVInt.setup_methodNr   r   r   r   r   r   P  r   r   c                   @   r   )_TestIDSTBasec                 C   r   rz   rs   rv   r   r   r   rw   X  rx   z_TestIDSTBase.setup_methodc                 C   ry   rz   r{   rv   r   r   r   	idst_lock]  r   z_TestIDSTBase.idst_lockc              	   C   s   t D ]U}| t| j|| j\}}}W d    n1 sw   Y  t|| jd}| jdkr6|d|d   }n|d|  }t|j| t|t	| |t	| | j
d| d qd S r   )r   r/   r'   rt   r
   r   r]   r   r   r   ru   )ra   r   r   r   r   r)   r*   r   r   r   r   a  r   z_TestIDSTBase.test_definitionN)rl   rm   rn   rw   r   r   r   r   r   r   r   r   r   W  r   r   c                   @   r   )TestIDSTIDoublec                 C   r   r   r   rv   r   r   r   rw   t  r   zTestIDSTIDouble.setup_methodNr   r   r   r   r   r   s  r   r   c                   @   r   )TestIDSTIFloatc                 C   r   r   r   rv   r   r   r   rw   {  r   zTestIDSTIFloat.setup_methodNr   r   r   r   r   r   z  r   r   c                   @   r   )TestIDSTIIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestIDSTIInt.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIIDoublec                 C   r   r   r   rv   r   r   r   rw     r   zTestIDSTIIDouble.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIIFloatc                 C   r   r   r   rv   r   r   r   rw     r   zTestIDSTIIFloat.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIIIntc                 C   r   r   r   rv   r   r   r   rw     rx   zTestIDSTIIInt.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIIIDoublec                 C   r   r   r   rv   r   r   r   rw     r   zTestIDSTIIIDouble.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIIIFloatc                 C   r   Nr   r   r   rv   r   r   r   rw     r   zTestIDSTIIIFloat.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIIIIntc                 C   r   r  r   rv   r   r   r   rw     rx   zTestIDSTIIIInt.setup_methodNr   r   r   r   r   r    r   r  c                   @   r   )TestIDSTIVDoublec                 C   r   r   r   rv   r   r   r   rw     r   zTestIDSTIVDouble.setup_methodNr   r   r   r   r   r	    r   r	  c                   @   r   )TestIDSTIVFloatc                 C   r   Nr   r   r   rv   r   r   r   rw     r   zTestIDSTIVFloat.setup_methodNr   r   r   r   r   r
    r   r
  c                   @   r   )TestIDSTIVntc                 C   r   r  r   rv   r   r   r   rw     rx   zTestIDSTIVnt.setup_methodNr   r   r   r   r   r    r   r  c                   @   sL   e Zd ZdZejejgZdd Zdd Z	dd Z
dd	 Zd
d Zdd ZdS )TestOverwritezCheck input overwrite behavior.c                 K   sh   |  }	||	|||||d |j d|j |jd|d|d|d}
|s2t|	|d|
 d d S d S )	N)overwrite_x(z, z, axis=z, overwrite_x=)zspurious overwrite in )r   )r2   rl   r]   r5   r   )ra   r*   routiner'   Zfftsizer   rI   r  kwZx2sigr   r   r   _check  s   zTestOverwrite._checkc           
      C   s   t jd}t |t jr|j| d|j|   }n|j| }||}dD ]}dD ]}dD ]}	| |||d ||	| q.q*q&d S )Nr   rZ   r   r?   r   r   )TF)Nr@   )r   r   r   Z
issubdtypeZcomplexfloatingr   r   r  )
ra   r  r]   r5   r   r   r+   r'   r  rI   r   r   r   	_check_1d  s   

zTestOverwrite._check_1dc                 C   @   | j D ]}| t|dd | t|dd | t|dd qd S N)r   rC   )r   r?   r   )r?   r   r   )real_dtypesr  r   ra   r]   r   r   r   test_dct  
   
zTestOverwrite.test_dctc                 C   r  r  )r  r  r   r  r   r   r   	test_idct  r  zTestOverwrite.test_idctc                 C   r  r  )r  r  r	   r  r   r   r   test_dst  r  zTestOverwrite.test_dstc                 C   r  r  )r  r  r
   r  r   r   r   	test_idst  r  zTestOverwrite.test_idstN)rl   rm   rn   __doc__r   r!   r"   r  r  r  r  r  r  r  r   r   r   r   r    s    	r  c                   @   s  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d Zejdeefeefgejdeejdedd Zejdeefeefgejdeejdddgdd Zejdeefeefgdd Zejdeegd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 d! ZdS )"Test_DCTN_IDCTNrr   r  Nr@   r   )r   r   zfforward,finverseaxesr   )r   r   )r   r   r   )rC   r$  rC   dct_typerI   c                 C   s6   || j |||d}|||||d}t| j |dd d S )Nr'   r"  rI   r   r   r+   r   )ra   fforwardfinverser"  r%  rI   tmpr   r   r   test_axes_round_trip  s   
z$Test_DCTN_IDCTN.test_axes_round_tripzfforward,fforward_refc                 C   s4   || j |d |d}|| j ||d}t||dd d S )Nr&  r'   rI      r   r'  )ra   r(  Zfforward_refr%  rI   y1r   r   r   r   test_dctn_vs_2d_reference  s   z)Test_DCTN_IDCTN.test_dctn_vs_2d_referencezfinverse,finverse_refc                 C   s>   t | j||d}||||d}||||d}t||dd d S )Nr,  r-  r   )r   r+   r   )ra   r)  Zfinverse_refr%  rI   fdatar.  r   r   r   r   test_idctn_vs_2d_reference  s   z*Test_DCTN_IDCTN.test_idctn_vs_2d_referencec                 C   s   t tdd || j| jjd dd W d    n1 sw   Y  t tdd || j| jjd d d W d    n1 s?w   Y  t tdd || j| jjdd W d    d S 1 s`w   Y  d S )NzBwhen given, axes and shape arguments have to be of the same length)matchr   r#  r5   r"  )assert_raisesr%   r+   r5   )ra   r(  r)  r   r   r   test_axes_and_shape'  s   "z#Test_DCTN_IDCTN.test_axes_and_shaper(  c                 C   s    || j dd d}t|jd d S )N)   r6  r3  )r+   r   r5   )ra   r(  r*  r   r   r   
test_shape9  s   zTest_DCTN_IDCTN.test_shapec                 C   s8   || j d |dd}||d |dd}t| j || jd d S )Nr@   )r5   r"  rI   r   )r+   r   ru   )ra   r(  r)  r"  r*  r   r   r   test_shape_is_none_with_axes>  s   z,Test_DCTN_IDCTN.test_shape_is_none_with_axes)rl   rm   rn   ru   r%  Znormsr   r   r   Zrstater5   r   r+   r   markZparametrizer   r   r   r   r+  r:   r=   r/  r<   r>   r1  r5  r7  r8  r   r   r   r   r!    sX    



r!  rz   )eZos.pathr   r   r|   numpyr   Znumpy.testingr   r   r   r   r4  Zscipy.fftpack._realtransformsr   r   r	   r
   r   r   r   r   load__file__r   r4   r   r   r#   r$   r   r-   r/   r:   r<   r=   r>   rO   rS   rV   rX   rY   ro   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   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  r!  r   r   r   r   <module>   s    (







 (5