
    wg                         d dl Z d dlZd dl d Zd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Ze j                  j!                         d        Zd Zd Zy)    N)*c                  z  
 t        d      } t        d      D ]	  }d| ||f<    | t        d      k(  sJ | t        |       k(  sJ t        dd      

j                  rJ t        g dg dg dg      }t	        |      t	        t        dd            k(  sJ d|d	<   d	|j                  vsJ t        g dg dg      t        d
dgddgddgg      }|z  t        ddgddgg      k(  sJ | |z  || z  cxk(  r|k(  sJ  J t        j                  t        
fd       g dg dg dg}t        |      }|j                         |k(  sJ |t        t        |            k(  sJ t        j                  |      }|t        t        |            k(  sJ |dz  t        t        |dz              k(  sJ |dz  d|z  cxk(  r|k(  sJ  J 
j                  dk(  sJ 
j                  dk(  sJ d|_        d|_        t        |j                        dk(  sJ z   dz  k(  sJ t        j                  t        
fd       t        | | z
        dk(  sJ t        ddgddgdd
gddgg      t        ddg      }|z  t        g d      k(  sJ t!        d      }t        |dz   dt#        d      z
  z
        dk(  sJ dt!        d      z   dz  dz
  t#        d      k(  sJ t        d      dz  t        d      k(  sJ t        j                  t        fd       t%        d      }t        |      }	d|d<   ||	k7  sJ t'        |      sJ y ) N         r   r   r                  	   
   r   )r   r   r      i'   c                        z  S N )A2s   _/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/mpmath/tests/test_matrices.py<lambda>z#test_matrix_basic.<locals>.<lambda>   s    be     )r         )(   r   <   )F   P   Z   y              ?c                       z   S r   r   )r   A4s   r   r   z#test_matrix_basic.<locals>.<lambda>$   s    b2g r   r
   r   r   r   )r'   r'   r'   r'   c                       dz  S )Nr   r   )A7s   r   r   z#test_matrix_basic.<locals>.<lambda>-   s    b!e r   ir   r   )matrixrangeeye_matrix__datalistpytestraises
ValueErrortolistevalreprfprowscolslensumoneszeros
randmatrixnstr)A1iA3A5lA6xA8A9A10r   r&   r)   s             @@@r   test_matrix_basicrI      sG   	B1X 1Q3Q<<	1B	Iy1	2B8tE!RL))))BsG)))))	I&	'B	!R1a&1b'*	+B7fr2hS	233337b2g######
MM*m,	{L1A	B99;!d2h	2Bd2hb5Dbe%%%%7b2g######77a<<77a<<BGBGr A%%%7ad??
MM*o.rBw<1	!Q!Q!Q!Q0	1BCyAa46.////	aBQ1uQx<()Q...QK1q E!H,,,q62:Q
MM*m,	AB
*CBsG998O8r   c                      t         j                  dk  rt        j                  d       t	        g dg dg      } t	        ddgddgd	d
gg      }t        d       y)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   zassert A4 @ A5 == A4 * A5N)sys
hexversionr0   skipr+   exec)r&   rB   s     r   test_matmulrO   4   sR     ~~	!OP	I&	'B	!R1a&1b'*	+B	$%r   c                     t        g dg dg dg      t        g d      } d d d d f   k(  sJ d d df   t        dgdgdgg      k(  sJ dd d f   t        g dg      k(  sJ dd	dd	f   t        dd
gddgg      k(  sJ | dd t        d	dg      k(  sJ t        j                  t        fd       t        d	      }|d d d d f<   |d d d d f   t        g dg dg dg      k(  sJ t        g dg      |dd d f<   |t        g dg dg dg      k(  sJ t        dgdgdgg      |d d df<   |t        g dg dg dg      k(  sJ t        ddgddgg      |d dd df<   |t        g dg dg dg      k(  sJ d| dd	 | t        g d      k(  sJ t        j                  t              5  d d df   |dd d f<   d d d        t        j                  t              5  d d d d f   |dddf<   d d d        d|d d df<   |t        g dg d g d!g      k(  sJ d"|d d d d f<   |D ]	  }|d"k(  r	J  y # 1 sw Y   yxY w# 1 sw Y   QxY w)#Nr   r	   r   )r   r   r   r
   r   r   r   r   r   r   r   r   r
   c                       d d ddf   S )Nr   r   r   As   r   r   z$test_matrix_slices.<locals>.<lambda>M   s    a!A#h r   )r      r   r            )r   rT   rU   )r
   r   rV   )r   r   rW               )rX   rY   rU   )rZ   r[   rV   r   )r   r   r   r
   r   r   )rX   rY   r   )rZ   r[   r   )r   r   r   r    )r+   r0   r1   
IndexErrorr2   )Vr?   rE   rS   s      @r   test_matrix_slicesr^   A   s   I!!# 	$A 	{A QqS6Q;;QqS6VaS!aSM****QqS6VYK((((QqS1W:!A!u....Qq6VQqE]"""
MM*./ 
BBqsGac7fi(1(13 4 4 4 4 l^$BqsG,$-$-/ 0 0 0 0 rdRD2$'(BqsG,$.$.0 1 1 1 1 R2),-Brr"1"uI,$0$.0 1 1 1 1 AaF}%%%%	z	" AaC&1Q3 
z	" qsV1QrT6
 BqsG,$0$.0 1 1 1 1 BqsG Bww  s   5H>'I
>I
Ic                      t        ddgddgg      } | dz  | | z  k(  sJ | dz  | | z  | z  k(  sJ | dz  t        |       k(  sJ | dz  t        | | z        k(  sJ y )Nr   r   r   r
   r   )r+   inverserR   s    r   test_matrix_powerrb   s   su    AA Aa41Q3;;a41Q3q5==b5GAJb5GAaCL   r   c                  v   t        ddgddgddgg      } | j                  | j                         cxk(  rt        g dg dg      k(  sJ  J t        | dd       | t        ddgddgddgg      k(  sJ ddg}t        |d	d       |ddgk(  sJ t	        t        d      g d
      t        g dg dg dg      k(  sJ y )Nr   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+   T	transposeswap_rowextendr-   )rS   rC   s     r   test_matrix_transformrh   z   s    AAA'(A33!++-A69i*@#AAAAAAQ1AAA/0000	
AAQ1A;;#a&'"fi	)-L&MMMMr   c            	      B   t        dt        z   dgdt        gg      } | j                         t        t        dd      dgdt        dd      gg      k(  sJ | j	                         | j
                  cxk(  r)t        t        dd      dgdt        dd      gg      k(  sJ  J y )Nr   r   r   r   )r+   j	conjugatempctranspose_conjHrR   s    r   test_matrix_conjugatero      s    Q
QF#$A;;=FSBZOaQ_#EFFFF BQQ12C2J0A )B B B B B Br   c            	         t        g d      t        g dg dg dg      k(  sJ t        dd      } | j                  dk(  r| j                  dk(  sJ | D ]	  }|dk(  r	J  t        dd      }|j                  dk(  r|j                  dk(  sJ |D ]	  }|dk(  r	J  t        d	      t        d	      k7  sJ t        d      }t        d      t        ||dz  |dz  g|dz  |dz  |d
z  g|dz  |d
z  |dz  gg      k(  sJ y )Nr   )r   r   r   )r   r   r   )r   r   r   r   r   r   r   r   r
   r   )	diagr+   r;   r7   r8   r<   r=   mpfhilbert)r?   ar   ones       r   test_matrix_creationrv      s   	?fiI%FGGGG	aB77a<BGGqL(( Avv	q!B77a<BGGqL(( Avvb>Z^+++
a&C1:#s1uc!e!4"%a%QA!6"%a%QA!6!8 9 9 9 9r   c                     t        ddgddgddgg      } t        | d      dk(  sJ t        | t              dk(  sJ t        | d      t        d	      k(  sJ t	        d      d
k(  sJ g d}t	        |d      dk(  sJ t        t	        |d      d      dk(  sJ t        t	        |d      d      dk(  sJ t	        |t              dk(  sJ y )Nr   r`   r   r   r   r   r
   Fr   r   )r   r`   r   r      r   gPz$,@g%^(@r   )r+   mnorminfsqrtnormround)rS   rE   s     r   
test_normsr      s    B"bAq6*+A1:??3<13<48###8q==A1:aR M111ab!]2223<2r   c                     t        g d      } | t        dgdgdgdgdgg      k(  sJ | d   dk(  sJ t        | j                        dk(  sJ t        |       t        t	        d            k(  sJ d| d<   d| d<   | d   dk(  sJ t        |       t        | j
                        cxk(  rdk(  sJ  J | j
                  | z  t        d	gg      k(  sJ y )
N)r   r   r   r   r
   r   r   r   r   r
   r   r'   r   )r+   r9   r.   r/   r,   rd   )rE   s    r   test_vectorr      s    AaS1#sQC01111Q4199q1$$$7d58n$$$AaDAaDQ43;;q6SX""""""33q5FSE7O###r   c                      t        d      } | j                         }| }| |k(  sJ | |k(  sJ d|d<   | |k7  sJ d|d<   | |k7  sJ y )Nr   r   r*   *   )r;   copy)rS   BCs      r   test_matrix_copyr      s[    QA	A	
A6M66M6AcF6M6AcF6M6r   c                      	 dd l } ddgddgddgg}| j                  |      }t        |      t        |      k(  sJ y # t        $ r Y y w xY w)Nr   r   r   r   r
   r   r   )numpyImportErrorarrayr+   )r   rC   rt   s      r   test_matrix_numpyr      s[     Q!Q!Q AAA!9q	!!!	  s   < 	AAc                  z   t        dd      } | | dz  z   }t        d      }||dz  z   }d}t        j                  |      }||dz  z   }t        j                  |      }t        j                  d      }| |||||||fD ]>  }	|	|z  t        j                  |	g      k(  sJ ||	z  t        j                  |	g      k(  r>J  y)z/Multiplication of iv.matrix and any scalar typer   r   y               @r   gX9v?y              @N)mpirr   r6   convertivr;   r+   )
rt   bcdefghMrE   s
             r    test_interval_matrix_scalar_multr      s    B
A	AF
ABA	AF
AA


1A	AF
A


1A

AAq!Q1% '1u		1#&&&1u		1#&&&'r   c                     t        d      } t        j                  d      }t        j                  d      }| ||fD ]P  }||z  t        j                  |      k(  sJ ||z  |k(  sJ ||z  t        j                  |      k(  sJ ||z  |k(  rPJ  y)z2Multiplication of iv.matrix and other matrix typesr   N)r;   r6   r   r+   )rS   r   r   Xs       r    test_interval_matrix_matrix_multr      s     	QA

A

AAY 1u		!$$$1uzz1u		!$$$1uzz	r   c                  N   t        d      t        j                  d      t        j                  d      fD ]n  } t        j                  |       }t        j                  d      }t	        |d         t	        |d         k(  sJ |j                         |j                         k(  rnJ  y )Nr   r*   )r-   r6   r   r+   typer3   )other_type_eyerS   r   s      r   test_matrix_conversion_to_ivr      s    q6266!9bffQi8 (IIn%FF1IAcF|tAcF|+++xxzQXXZ'''	(r   c            	         t        d      } t        | gg      }t        j                  |      }t        j                  | gg      }||k(  sJ ||z  }||z  }||k(  sJ |d   j                  dkD  sJ |d   j                  dk  sJ |d   j                  dkD  sJ |d   j                  dk  sJ t        j                  d      |d   v sJ t        j                  d      |d   v sJ t        j                  t        j                  d            t        j                  d      t        dd      z   z  t        j                  t        dd      t        dd      gt        dd      t        dd      gg      k(  sJ y )	Nz1.00000000000001r*   gؗҜ<gMg<z:1.00000000000001998401444325291756783368705994138804689654r   r   r   )	r   r+   r   deltamprr   r-   r;   r   )rE   rS   r   r   s       r   test_interval_matrix_mult_bugr      sm    	"#AuA
		!A
		A3%A6M6	AA	AA6M6T7==5   T7==5   T7==5   T7==5   66NOSTUYSZZZZ66NOSTUYSZZZZ99RVVAY2771:Aq	#9:bii#aQR)UXYZ\]U^I_befgijbkmpqrtumvawHx>yyyyr   )r0   rK   mpmathrI   rO   r^   rb   rh   ro   rv   r   r   r   r   r   markxfailr   r   r   r   r   r   <module>r      sz     
 -^&/d!NB9 
$	"' 	 	(zr   