U
    9%e                     @   s   d dl Z 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d Zdd Ze j dd Zdd Zdd  ZdS )!    N)*c            
         s`  t d} tdD ]}d| ||f< q| tdks2t| t | ksBtt dd  jrVt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sht|t
t|ks~tt |}|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s8ttt fdd t| |  dksdt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sttdd
 tdkstttfdd td}t |}	d |d!< ||	ksNtt|s\td S )"N                        	   
   r   )r   r      i'   c                      s      S N r   )A2r   Y/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/mpmath/tests/test_matrices.py<lambda>       z#test_matrix_basic.<locals>.<lambda>      (   <   F   P   Z   y              ?c                      s     S r   r   r   )r   A4r   r   r   $   r   c                      s    d S )Nr   r   r   )A7r   r   r   -   r   ir   r   )matrixrangeeyeAssertionError_matrix__datalistpytestraises
ValueErrortolistevalreprfprowscolslensumoneszeros
randmatrixZnstr)
A1iZA3A5lZA6xZA8ZA9ZA10r   )r   r   r!   r   test_matrix_basic   sZ    

  &
& ""r<   c                  C   sR   t jdk rtd tdddgdddgg} tdd	gddgd
dgg}td dS )z
    Test the PEP465 "@" matrix multiplication syntax.
    To avoid syntax errors when importing this file in Python 3.5 and below, we have to use exec() - sorry for that.
    i z9'@' (__matmul__) is only supported in Python 3.5 or newerr   r   r   r   r   r   r   r   r   zassert A4 @ A5 == A4 * A5N)sys
hexversionr)   skipr#   exec)r   r9   r   r   r   test_matmul4   s
    

rA   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 5 Q R X tt&  d d d d f |dddf< W 5 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< |D ]}|dkstq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   M   r   z$test_matrix_slices.<locals>.<lambda>r      r   r                        r   r   )r#   r&   r)   r*   
IndexErrorr+   )Vr7   r;   r   rB   r   test_matrix_slicesA   s\    
($, $&*rN   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inverserB   r   r   r   test_matrix_powers   s
    rP   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%   )rC   r:   r   r   r   test_matrix_transformz   s    4"rS   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HrB   r   r   r   test_matrix_conjugate   s
    , rW   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| D ]}|dksXtqXtdd}|jdkr|jdkst|D ]}|dkstqt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&   r4   r0   r1   r5   r6   mpfZhilbert)r7   ar   oner   r   r   test_matrix_creation   s    2

r[   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   rO   r   r   r   r   r   Fr   r   r	   r      r   gPz$,@g%^(@r   )r#   Zmnormr&   infsqrtZnormround)rC   r;   r   r   r   
test_norms   s    ra   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   r    r   )r#   r&   r2   r'   r(   r$   rQ   )r;   r   r   r   test_vector   s    $$rc   c                  C   sZ   t d} |  }| 
 }| |ks"t| |ks.td|d< | |ksBtd|d< | |ksVtd S )Nr   r   r"   *   )r4   copyr&   )rC   BCr   r   r   test_matrix_copy   s    rh   c                  C   s\   zdd l } W n tk
r"   Y d S X ddgddgddgg}| |}t|t|ksXtd S )Nr   r   r   r   r   r   r   )numpyImportErrorarrayr#   r&   )ri   r:   rY   r   r   r   test_matrix_numpy   s    
rl   c            
      C   s   t dd} | | d  }td}||d  }d}t|}||d  }t|}td}| |||||||fD ]4}	|	| t|	gkst||	 t|	gksltqldS )z/Multiplication of iv.matrix and any scalar typer   r   y               @rd   gX9v?y              @N)mpirX   r/   convertivr4   r#   r&   )
rY   bcdefghMr;   r   r   r    test_interval_matrix_scalar_mult   s    



rx   c                  C   s|   t d} t d}t d}| ||fD ]P}|| t|ks@t|| |ksPt|| t|ksft|| |ks&tq&dS )z2Multiplication of iv.matrix and other matrix typesr   N)r4   r/   ro   r#   r&   )rC   rf   rw   Xr   r   r    test_interval_matrix_matrix_mult   s    

rz   c                  C   sh   t dt dt dfD ]H} t| }t d}t|d t|d ksNt| | kstqd S )Nr   r"   )r%   r/   ro   r#   typer&   r,   )Zother_type_eyerC   rf   r   r   r   test_matrix_conversion_to_iv   s
    

r|   c                  C   s$  t d} t| gg}t|}t| gg}||ks8t|| }|| }||ksTt|d jdksft|d jdk sxt|d jdkst|d jdk sttd|d ksttd|d kstttdtdt	dd  tt	ddt	ddgt	ddt	ddggks td S )	Nz1.00000000000001r"   gؗҜ<gMg<z:1.00000000000001998401444325291756783368705994138804689654r   r   r   )
rn   r#   ro   r&   deltamprX   r%   r4   rm   )r;   rC   rf   rg   r   r   r   test_interval_matrix_mult_bug   s    
r   )r)   r=   Zmpmathr<   rA   rN   rP   rS   rW   r[   ra   rc   rh   rl   rx   markZxfailrz   r|   r   r   r   r   r   <module>   s$   /2
	
