U
    »mœd  ã                   @   sF   d Z ddlZddlmZmZ ddlmZ ddl	m
Z
 G dd„ dƒZdS )z3Test functions for linalg.matmul_toeplitz function
é    N)ÚtoeplitzÚmatmul_toeplitz)Úraises)Úassert_allclosec                   @   s6   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zddd„Zd	S )ÚTestMatmulToeplitzc                 C   s   t j d¡| _d| _d S )Né*   gá7ÎQE=)ÚnpÚrandomZRandomStateÚrngÚ	tolerance©Úself© r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/linalg/tests/test_matmul_toeplitz.pyÚsetup_method   s    zTestMatmulToeplitz.setup_methodc                    sô  g }d}ˆ j j|d�}ˆ j j|d�}ˆ j j|dfd�}| |||df¡ d}ˆ j j|d�}ˆ j j|d�}ˆ j j|dfd�}| |||df¡ d}ˆ j j|d�}ˆ j j|d�}ˆ j j|dfd�}| |||df¡ d}ˆ j j|d�}ˆ j j|d�}ˆ j j|dfd�}| |||df¡ d}ˆ j j|d�}ˆ j j|d�}ˆ j j|ˆ j  dd	¡fd�}| |||df¡ d}ˆ j j|dfd�}ˆ j j|dfd�}ˆ j j|ˆ j  dd	¡fd�}| |||df¡ d}ˆ j j|dfd�}d }ˆ j j|ˆ j  dd	¡fd�}| |||dd
f¡ d}ˆ j j|dfd�}d }ˆ j j|d�}| |||df¡ d}ˆ j j|d�}ˆ j j|d d�}ˆ j j|d dfd�}| |||df¡ d}ˆ j j|d�}ˆ j j|d d�}ˆ j j|d ˆ j  dd	¡fd�}| |||df¡ ‡ fdd„|D ƒ d S )Né   ©ÚsizeFé   ée   Tiè  éd   é
   éÿÿÿÿé   é   c                    s   g | ]}ˆ j |Ž ‘qS r   )Údo)Ú.0Úir   r   r   Ú
<listcomp>P   s     z0TestMatmulToeplitz.test_real.<locals>.<listcomp>)r
   ÚnormalÚappendÚrandint)r   ZcasesÚnÚcÚrÚxr   r   r   Ú	test_real   sh     zTestMatmulToeplitz.test_realc                 C   s,  d}| j j|dfd�| j j|dfd�d  }| j j|dfd�| j j|dfd�d  }| j j|dfd�| j j|dfd�d  }|  |||d¡ d}| j j|dfd�| j j|dfd�d  }| j j|d dfd�| j j|d dfd�d  }| j j|d dfd�| j j|d dfd�d  }|  |||d¡ d S )	Né   r   r   y              ð?é   Fr   r   )r
   r   r   ©r   r"   r#   r$   r%   r   r   r   Útest_complexR   s    ((((ÿÿzTestMatmulToeplitz.test_complexc                 C   sÞ   d}| j j|d�}| j jd| d�}| j j|d�}ttt||f|dƒ d}| j j|d�}| j j|d�}| j j|d d�}ttt||f|dƒ d}| j j|d�}| j j|d d�}| j j|d d d�}ttt||f|dƒ d S )Nr   r   r   Tr   )r
   r   Úassert_raisesÚ
ValueErrorr   r)   r   r   r   Útest_exceptionsa   s    z"TestMatmulToeplitz.test_exceptionsNFc                 C   sN   |d krt ||||ƒ}nt ||f||ƒ}t||ƒ| }t||| j| jd� d S )N)ZrtolZatol)r   r   r   r   )r   r%   r#   r$   Zcheck_finiteÚworkersÚactualZdesiredr   r   r   r   v   s     ÿzTestMatmulToeplitz.do)NFN)Ú__name__Ú
__module__Ú__qualname__r   r&   r*   r-   r   r   r   r   r   r      s
   Ar   )Ú__doc__Únumpyr   Zscipy.linalgr   r   Zpytestr   r+   Znumpy.testingr   r   r   r   r   r   Ú<module>   s
   