B
    +[*                 @   sd   d dl Z d dlT dd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Z	dd Z
dd ZdS )    N)*c        
         sf  t d} xtdD ]}d| ||f< qW | tdks6t| t | ksFtt dd  jrZtt dddgdddgddd	gg}t|ttdd
kstd|d< d|jkstt dddgdddggt ddgddgddgg}| t ddgddggkst| | ||    kr|ks"n ttt fdd d
ddgdddgdddgg}t |}|	 |kslt|t
t|kstt |td}|t
t|kst|d t
t|d kst|d
 d
|   kr|ksn t jdkst jdkstd|_d|_t|jdks(t d ks>ttt fdd t| |  dksjtt ddgddgddgddggt d
dg}| t ddddgksttd}t|d dtd  dkstdtd d d tdks ttdd
 tdkstttfd d td}t |}	d!|d"< ||	ksTtt|sbtd S )#N                        	   
   r   )r   r      i'   ic                  s      S )N r   )A2r   9lib/python3.7/site-packages/mpmath/tests/test_matrices.py<lambda>   s    z#test_matrix_basic.<locals>.<lambda>      (   <   F   P   Z   )Z
force_typey              ?c                  s     S )Nr   r   )r   A4r   r   r   #   s    ic                  s    d S )Nr   r   r   )A7r   r   r   ,   s    i)r   r   )matrixrangeeyeAssertionError_matrix__datalistpytestraises
ValueErrortolistevalreprfloatrowscolslensumoneszeros
randmatrixZnstr)
A1iZA3ZA5lZA6xZA8ZA9ZA10r   )r   r   r   r   test_matrix_basic   sZ    

  && ""r6   c           	      s*  t dddgdddgddd	gg t dddddg}  d d d d f  ksNt d d df t dgdgdggksvt dd d f t ddd	ggkst ddddf t ddgdd	ggkst| dd t ddgksttt fd
d t d} |d d d d f< |d d d d f t dddgdddgddd	ggksLtt dddgg|dd d f< |t dddgdddgddd	ggkstt dgdgdgg|d d df< |t dddgdddgdddggkstt ddgddgg|d dd df< |t dddgdddgdddggks*td| dd< | t dddddgksRttt"  d d df |dd d f< W d Q R X tt&  d d d d f |dddf< W d Q R X d|d d df< |t dddgdddgdddggkstd|d d d d f< x|D ]}|dkstqW d S )Nr   r   r   r   r   r   r	   r
   r   c                  s    d d ddf S )Nr   r   r   r   )Ar   r   r   ?   s    z$test_matrix_slices.<locals>.<lambda>r      r   r                        r   r   )r   r!   r$   r%   
IndexErrorr&   )Vr2   r5   r   )r7   r   test_matrix_slices3   sP    
($, $&*
rB   c              C   sp   t ddgddgg} | d | |  ks(t| d | |  |  ks@t| d t| ksTt| d t| |  ksltd S )Nr   r   r   r   r   )r   r!   Zinverse)r7   r   r   r   test_matrix_powere   s
    rD   c              C   s   t ddgddgddgg} | j|    krHt dddgdddggksNn tt| dd | t ddgddgddggks|tddg}t|dd |ddgkstttddddgt ddddgddddgddddggkstd S )Nr   r   r   r   r   r   r   )r   TZ	transposer!   Zswap_rowextendr    )r7   r4   r   r   r   test_matrix_transforml   s    4"rG   c              C   s   t dt dgdtgg} |  t tdddgdtddggksDt|  | j  krzt tdddgdtddggksn td S )Nr   r   r   r   )r   j	conjugateZmpcr!   Ztranspose_conjH)r7   r   r   r   test_matrix_conjugatev   s    , rK   c              C   s  t dddgtdddgdddgdddggks2ttdd} | jdkrP| jdksTtx| D ]}|dksZtqZW tdd}|jdkr|jdkstx|D ]}|dkstqW tdtdksttd}t	dt||d |d g|d |d |d g|d |d |d ggkstd S )Nr   r   r   r   r   r   r   )
Zdiagr   r!   r/   r+   r,   r0   r1   ZmpfZhilbert)r2   ar   Zoner   r   r   test_matrix_creation|   s    2



rM   c              C   s   t ddgddgddgg} t| ddks,tt| tdks>tt| dtd	ksTttdd
ksdtddddg}t|ddksttt|dddksttt|dddkstt|tdkstd S )Nr   rC   r   r   r   r   r   Fr   r   r	   i   r   gPz$,@g%^(@r   )r   Zmnormr!   infZsqrtZnormround)r7   r5   r   r   r   
test_norms   s    rR   c              C   s   t dddddg} | t dgdgdgdgdggks6t| d dksFtt| jdksXtt| ttdksptd| d< d| d< | d dkstt| t| j  krdksn t| j|  t dggkstd S )	Nr   r   r   r   r   r   ir   )r   r!   r-   r"   r#   r   rE   )r5   r   r   r   test_vector   s    $$rT   c              C   s4   t d} |  }| |kstd|d< | |ks0td S )Nr   r   )r   r   )r/   copyr!   )r7   Br   r   r   test_matrix_copy   s
    rW   c              C   sZ   ydd l } W n tk
r    d S X ddgddgddgg}| |}t|t|ksVtd S )Nr   r   r   r   r   r   r   )numpyImportErrorZarrayr   r!   )rX   r4   rL   r   r   r   test_matrix_numpy   s    
rZ   )r$   Zmpmathr6   rB   rD   rG   rK   rM   rR   rT   rW   rZ   r   r   r   r   <module>   s   /2
