
    g                         d dl Z d dlZd dlT 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                                        d             Zd Zd ZdS )    N)*c                    
 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n J t          j        t          
fd           g dg dg dg}t          |          }|                                |k    sJ |t          t          |                    k    sJ t                               |          }|t          t          |                    k    sJ |dz  t          t          |dz                      k    sJ |dz  d|z  cxk    r|k    sn 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<   ||	k    sJ t'          |          sJ d S ) N         r   r   r                  	   
   r   )r   r   r      i'   c                        z  S N )A2s   V/var/www/html/ai-engine/env/lib/python3.11/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      s'   	B1XX  1Q3Q<<<<	1B	IIIyyy1	2	2B88tE!RLL))))))BsG)))))	III&	'	'B	!R1a&1b'*	+	+B7fr2hS	23333337b2g##########
M*mmmm,,,	{{{LLL1A	B99;;!d2hh	2Bd2hhb5Dbe%%%%%%7b2g##########7a<<<<7a<<<<BGBGr  A%%%%7ad????
M*ooooo...rBw<<1	!Q!Q!Q!Q0	1	1BCyAa46...//////	aBQ1uQxx<())Q....QK1q E!HH,,,,q662:Q
M*mmmm,,,	AB
**CBsG999988OOOOOr   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           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   zassert A4 @ A5 == A4 * A5N)sys
hexversionr0   skipr+   exec)r&   rB   s     r   test_matmulrO   4   sq     ~	!!OPPP	III&	'	'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            n# 1 swxY w Y   t          j        t                    5  d d d d f         |dddf<   d d d            n# 1 swxY w Y   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    sJ d S )#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   III!		!		# 	$ 	$A 	{{{A QQQqqqS6Q;;;;QQQqS6VaS!aSM******QqqqS6VYYYK((((((QqS1W:!A!u......QqS6VQqE]]""""
M*..../// 
BBqqqsGaaac7fiii(1		(1		3 4 4 4 4 4 4 lll^$$BqsG,,,$-II$-II/ 0 0 0 0 0 0 rdRD2$'((BqqqsG,,,$.JJ$.JJ0 1 1 1 1 1 1 R2),--Brr"1"uI,,,$0LL$.JJ0 1 1 1 1 1 1 AacF}}}%%%%%%	z	"	"  AAAaC&1QQQ3               
z	"	"  qqqsV1QrT6
               BqqqsG,,,$0LL$.JJ0 1 1 1 1 1 1 BqqqsG  Bwwwww s$   H11H58H5I77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 d S )Nr   r   r   r
   r   )r+   inverserR   s    r   test_matrix_powerrb   s   s    AA  Aa41Q3;;;;a41Q3q5====b5GAJJb5GAaCLL      r   c                     t          ddgddgddgg          } | j        |                                 cxk    rt          g dg dg          k    sn 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 d S )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3!++--AAAA6999iii*@#A#AAAAAAAQ1AAA/000000	
AAQ1A;;;;#a&&'''""fiii			)))-L&M&MMMMMMMr   c            	         t          dt          z   dgdt          gg          } |                                 t          t          dd          dgdt          dd          gg          k    sJ |                                 | j        cxk    r5t          t          dd          dgdt          dd          gg          k    sn J d S )Nr   r   r   r   )r+   j	conjugatempctranspose_conjHrR   s    r   test_matrix_conjugatero      s    Q
QF#$$A;;==FSBZZOaQ_#EFFFFFF B B B BQQ12C2JJ0A )B )B B B 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    sJ t          dd          }|j        dk    r|j        dk    sJ |D ]
}|dk    sJ t          d	          t          d	          k    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 d S )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]   			??fiiiIII%FGGGGGG	aB7a<<BGqLLLL  Avvvvv	q!B7a<<BGqLLLL  Avvvvvb>>Z^^++++
a&&C1::#s1uc!e!4"%a%QA!6"%a%QA!6!8 9 9 9 9 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 d S )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88####88q====A1::aR  M1111ab!!]2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n J | j        | z  t          d	gg          k    sJ d S )
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11Q419999q1$$$$77d588nn$$$$AaDAaDQ43;;;;q66SXX""""""""""3q5FSE7OO######r   c                      t          d          } |                                 }| 
 }| |k    sJ | |k    sJ d|d<   | |k    sJ d|d<   | |k    sJ d S )Nr   r   r*   *   )r;   copy)rS   BCs      r   test_matrix_copyr      sk    QA	A	
A66666666AcF6666AcF666666r   c                      	 dd l } n# t          $ r Y d S w xY wddgddgddgg}|                     |          }t          |          t          |          k    sJ d S )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!99q		!!!!!!s    
c                     t          dd          } | | dz  z   }t          d          }||dz  z   }d}t                              |          }||dz  z   }t                              |          }t                              d          }| |||||||fD ]J}	|	|z  t                              |	g          k    sJ ||	z  t                              |	g          k    sJ KdS )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   t          d          } t                               d          }t                               d          }| ||fD ]^}||z  t                              |          k    sJ ||z  |k    sJ ||z  t                              |          k    sJ ||z  |k    sJ _dS )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zzzz1u		!$$$$1uzzzzz	 r   c                     t          d          t                               d          t                               d          fD ]} t                              |           }t                               d          }t	          |d                   t	          |d                   k    sJ |                                |                                k    sJ d S )Nr   r*   )r-   r6   r   r+   typer3   )other_type_eyerS   r   s      r   test_matrix_conversion_to_ivr      s    q66266!99bffQii8 ( (IIn%%FF1IIAcF||tAcF||++++xxzzQXXZZ'''''	( (r   c            	         t          d          } t          | gg          }t                              |          }t                              | gg          }||k    sJ ||z  }||z  }||k    sJ |d         j        dk    sJ |d         j        dk     sJ |d         j        dk    sJ |d         j        dk     sJ t                              d          |d         v sJ t                              d          |d         v sJ t                              t                              d                    t                              d          t          dd          z   z  t                              t          dd          t          dd          gt          dd          t          dd          gg          k    sJ d S )	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      s    	"##AuA
		!A
		A3%A6666	AA	AA6666T7=5    T7=5    T7=5    T7=5    66NOOSTUYSZZZZZ66NOOSTUYSZZZZZ99RVVAYY2771::Aq		#9:bii#aQR))UXYZ\]U^U^I_befgijbkbkmpqrtumvmvawHx>y>yyy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      s6    



    - - -^& & &/ / /d! ! !N N NB B B9 9 9   
$ 
$ 
$	 	 	" " "' ' ' 	 	 	( ( (z z z z zr   