
    g;A                        d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZmZ d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d(S ))    )raises)GROUND_TYPES)ZZQQ)DDM)DMShapeErrorDMNonInvertibleMatrixErrorDMDomainErrorDMBadInputErrorc                     t          d          t          d          t          d          gt          d          t          d          t          d          gg} d}t          | |t                     }|j        |k    sJ |j        dk    sJ |j        dk    sJ |j        t           k    sJ t          t          d            t          t          d	            d S )
Nr                  r   r   c                  h    t          t          d          t          d          ggdt                    S )Nr   r   r   r   r   r        _/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/matrices/tests/test_ddm.py<lambda>ztest_DDM_init.<locals>.<lambda>   s%    C"Q%%A(8&"$E$E r   c                      t          t          d          gt          d          t          d          ggdt                    S )Nr   r   r   r   r   r   r   r   r   ztest_DDM_init.<locals>.<lambda>   s/    C"Q%%2a55"Q%%.(A62$N$N r   )r   r   shaperowscolsdomainr   r   )itemsr   ddms      r   test_DDM_initr!      s    eeRUUBqEE"RUUBqEE2a55$9:EE
eUB

C98q====8q====:
?EEFFF
?NNOOOOOr   c                      t          t          d          t          d          gt          d          t          d          ggdt                      d         d         t          d          k    sJ  d         d         t          d          k    sJ  d         d         t          d          k    sJ  d         d         t          d          k    sJ t          t           fd           t          t           fd	           t          d
           d         d<    d         d         t          d
          k    sJ d S )Nr   r   r   r   r   r   r   c                        d         d         S Nr   r   r   r    s   r   r   z%test_DDM_getsetitem.<locals>.<lambda>!       s1vay r   c                        d         d         S Nr   r   r   r%   s   r   r   z%test_DDM_getsetitem.<locals>.<lambda>"   r&   r   )r   r   r   
IndexErrorr%   s   @r   test_DDM_getsetitemr+      s!   
1r!uu~1r!uu~.
;
;Cq6!91q6!91q6!91q6!91
:(((()))
:(((()))2CF1Iq6!92r   c                  h   t          t          d          t          d          gt          d          t          d          ggdt                    } t          dk    r,t          |           dk    sJ t	          |           dk    sJ d S t	          |           d	k    sJ t          |           dk    sJ d S )
Nr   r   r   r   r   gmpyz[[0, 1], [2, 3]]z5DDM([[mpz(0), mpz(1)], [mpz(2), mpz(3)]], (2, 2), ZZ)z!DDM([[0, 1], [2, 3]], (2, 2), ZZ))r   r   r   strreprr%   s    r   test_DDM_strr0   (   s    
1r!uu~1r!uu~.
;
;Cv3xx-----CyySSSSSSSCyy?????3xx-------r   c                     t          d          t          d          gt          d          t          d          gg} t          | dt                     }t          | dt                     }||k    du sJ || k    du sJ | |k    du sJ ||k    du sJ ||k    du sJ ||k    du sJ || k    du sJ | |k    du sJ ||k    du sJ ||k    du sJ t          t          d          t          d          gt          d          t          d          ggdt                     }t          | dt                    }||k    du sJ ||k    du sJ ||k    du sJ ||k    du sJ d S )Nr   r   r   r   r   TF)r   r   r   )r   ddm1ddm2ddm3s       r   test_DDM_eqr5   2   s   eeRUU^beeRUU^,Eufb!!Dufb!!DDLT!!!!EMe####TMe####DLT!!!!DLT!!!!DLU""""EMd""""TMd""""DLU""""DLU""""A1A1/<<Dufb!!DDLU""""DLU""""DLT!!!!DLT!!!!!!r   c                     t          t          d          t          d          ggdt                    } |                     t                    | k    sJ |                     t                    }|j        t          k    sJ d S )Nr   r   r   r   )r   r   
convert_tor   r   )r    ddmqs     r   test_DDM_convert_tor:   L   sm    
1r!uu~
+
+C>>"$$$$>>"D;"r   c                      t          j        dt                    } t          |           t          d          gdz  gdz  k    sJ | j        dk    sJ | j        t          k    sJ d S )Nr   r   r   r   r   )r   zerosr   listr   r   )ddmzs    r   test_DDM_zerosr@   S   si    9VR  D::2a55'A+*****:;"r   c                      t          j        dt                    } t          |           t          d          gdz  gdz  k    sJ | j        dk    sJ | j        t          k    sJ d S )Nr   r   r   r   )r   onesr   r>   r   r   )ddmones    r   test_DDM_onesrD   Y   si    Xfb!!F<<RUUGaK=1,,,,,<6!!!!=Br   c                      t          j        dt                    } d t          |           fdt	          d          D             k    sJ | j        dk    sJ | j        t          k    sJ d S )Nr   c                 J    | |k    rt          d          nt          d          S )Nr   r   )r   )ijs     r   r   ztest_DDM_eye.<locals>.<lambda>a   s    a1ffRUUU"Q%% r   c                 J    g | ]fd t          d          D             S )c                 (    g | ]} |          S r   r   ).0rG   frH   s     r   
<listcomp>z+test_DDM_eye.<locals>.<listcomp>.<listcomp>b   s#    555q11Q77555r   r   )range)rK   rH   rL   s    @r   rM   z test_DDM_eye.<locals>.<listcomp>b   s8    HHH!55555E!HH555HHHr   r   r   )r   eyer   r>   rN   r   r   )r?   rL   s    @r   test_DDM_eyerQ   _   sx    71b>>D//A::HHHHuQxxHHHHHHH:;"r   c                  2   t          t          d          gt          d          ggdt                    } |                                 }| |k    du sJ t          d          | d         d<   | |k    du sJ t          d          |d         d<   | |k    du sJ d S )Nr   r   r   r   Tr)   r   F)r   r   copy)r2   r3   s     r   test_DDM_copyrU   g   s    A"Q%%!62..D99;;DDLT!!!!BDGAJDLU""""BDGAJDLT!!!!!!r   c                  ,   t          t          d          gt          d          ggdt                    } t          t          d          t          d          ggdt                    }|                                 |k    sJ t          g dt                    }t          g g gdt                    }|                                |k    sJ |                                |k    sJ t          g dt                    }|                                |k    sJ d S )Nr   r   rS   r7   r   r   r   r   r   r   )r   r   	transpose)r    ddmTddm02ddm02Tddm0s        r   test_DDM_transposer_   q   s    
1wA &"
-
-CA1,,D==??d""""FBE"b62&&F??&&&&&&&&r62D>>t######r   c                     t          t          d          gt          d          ggdt                    t          t          d          gt          d          ggdt                    } t          t          d          gt          d          ggdt                    }t          t          d          gt          d          ggdt                    | z                       |           cxk    r|k    sn J t	          t
          fd           t	          t          fd           t	          t          fd	           t	          t          fd
           t	          t          fd           d S )Nr   r   rS   r   r      c                  T     t          t          d          ggdt                    z   S )Nr   r   r   r   As   r   r   ztest_DDM_add.<locals>.<lambda>   s"    S2a55'FB%?%?!? r   c                  (     t          d          z   S Nr   r   rd   s   r   r   ztest_DDM_add.<locals>.<lambda>       a"Q%%i r   c                  (    t          d           z   S rg   rh   rd   s   r   r   ztest_DDM_add.<locals>.<lambda>       beeai r   c                       z   S Nr   re   AQs   r   r   ztest_DDM_add.<locals>.<lambda>       !b& r   c                       z   S rm   r   rn   s   r   r   ztest_DDM_add.<locals>.<lambda>       "q& r   )r   r   r   addr   r   	TypeErrorr
   )BCre   ro   s     @@r   test_DDM_addrw   }   sS   beeWr!uug++AbeeWr!uug++AbeeWr!uug++A	r!uug1w	,	,Bq5AEE!HH!!!!!!!!!!
<????@@@
9''''(((
9''''(((
=.....)))
=.....)))))r   c                  4   t          t          d          gt          d          ggdt                    t          t          d          gt          d          ggdt                    } t          t          d          gt          d          ggdt                    }t          t          d          gt          d          ggdt                    t          t          d          ggdt                    | z
                      |           cxk    r|k    sn J t	          t
          fd	           t	          t
          fd
           t	          t          fd           t	          t          fd           t	          t          fd           t	          t          fd           t	          t          fd           t	          t          fd           t	          t          fd           t	          t          fd           d S )Nr   r   rS   r   r   r   rc   c                  (     t          d          z
  S rg   rh   rd   s   r   r   ztest_DDM_sub.<locals>.<lambda>   ri   r   c                  (    t          d           z
  S rg   rh   rd   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rk   r   c                       z
  S rm   r   re   Ds   r   r   ztest_DDM_sub.<locals>.<lambda>       Q r   c                       z
  S rm   r   r}   s   r   r   ztest_DDM_sub.<locals>.<lambda>   r   r   c                  .                                    S rm   subr}   s   r   r   ztest_DDM_sub.<locals>.<lambda>       q r   c                  .                                    S rm   r   r}   s   r   r   ztest_DDM_sub.<locals>.<lambda>   r   r   c                       z
  S rm   r   rn   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rp   r   c                       z
  S rm   r   rn   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rr   r   c                  .                                    S rm   r   rn   s   r   r   ztest_DDM_sub.<locals>.<lambda>   s    !%%)) r   c                  .                                    S rm   r   rn   s   r   r   ztest_DDM_sub.<locals>.<lambda>   s    "&&)) r   )r   r   r   r   r   rt   r   r
   )ru   rv   re   ro   r~   s     @@@r   test_DDM_subr      s   beeWr!uug++AbeeWr!uug++AbffX2x &"--A	r!uug1w	,	,BbeeWIvr""Aq5AEE!HH!!!!!!!!!!
9''''(((
9''''(((
<'''
<'''
<)))))***
<)))))***
=.....)))
=.....)))
=+++++,,,
=+++++,,,,,r   c                  f   t          t          d          gt          d          ggdt                    } t          t          d          gt          d          ggdt                    }|  |                                 cxk    r|k    sn J | |                                cxk    r| k    sn J d S )Nr   r   rS   r)   ry   )r   r   neg)re   Ans     r   test_DDM_negr      s    beeWr!uug++A	r"vvhB!62	.	.B2B3"&&((ar   c                  \   t          t          d          ggdt                    t          t          d          ggdt                    } t          d          z  | k    sJ t          d          z  | k    sJ t          t          fd           t          t          fd           d S )Nr   rc   r   c                      dgg z  S rg   r   rd   s   r   r   ztest_DDM_mul.<locals>.<lambda>   s    seai r   c                       dggz  S rg   r   rd   s   r   r   ztest_DDM_mul.<locals>.<lambda>   s    aA3%i r   )r   r   r   rt   )A2re   s    @r   test_DDM_mulr      s    beeWIvr""A	r!uugY	#	#Br!uu9????a5519????
9''''(((
9''''(((((r   c                  &  	
 t          t          d          gt          d          ggdt                    t          t          d          t          d          ggdt                    } t          t          d          t          d          gt          d          t          d          ggd	t                    }t          t          d
          ggdt                    }| z                      |           cxk    r|k    sn J | z  |                               cxk    r|k    sn J t          t          fd           t          t          fd           t          t          d          t          d          ggdt
                    	t          t          	fd           t          t          	fd           t          t          d          ggdt                    

z                      
          cxk    rk    sn J t          t          
fd           t          t          
fd           t          g dt                    }t          g gdz  dt                    t          g gdz  dt                    }t          g dt                    t          dgdz  gdz  dt                    }t          dgdz  gdz  dt                    }t          g dt                    }||z  |                    |          cxk    rk    sn J ||z  |                    |          cxk    rk    sn J ||z  |                    |          cxk    r|k    sn J ||z  |                    |          cxk    r|k    sn J ||z  |                    |          cxk    r|k    sn J ||z  |                    |          cxk    r|k    sn J t          t          fd           t          t          fd           d S )Nr   r   rS   r   r   r7   ra      r      rc   c                       dz  S rg   r   rd   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    a!e r   c                       ddggz  S )Nr   r   r   rd   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    aAq6(l r   c                       z  S rm   r   re   Bqs   r   r   z!test_DDM_matmul.<locals>.<lambda>   rp   r   c                       z  S rm   r   r   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   rr   r   c                       z  S rm   r   re   rv   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   r   r   c                  .                                    S rm   matmulr   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    ! r   r   r   )r   r   r   )r   r   )r   r   r   )r   r   )r   r   rY   c                       z  S rm   r   Z05Z40s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    s r   c                  .                                    S rm   r   r   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    C r   )r   r   r   r   rt   r   r
   r   )ru   ABBAZ04Z50Z45Z54Z00re   r   rv   r   r   s           @@@@@r   test_DDM_matmulr      s   beeWr!uug++AbeeRUU^fb))A	r!uubeenr!uubeen-vr	:	:B	r"vvhZ	$	$Bq5AHHQKK%%%%2%%%%%%q5AHHQKK%%%%2%%%%%%
9mmmm$$$
9****+++	r!uubeenvr	*	*B
=.....)))
=.....)))beeWIvr""Aq5AHHQKK$$$$1$$$$$$
<'''
<,,,,,---
b&"

C
rd1ffb
!
!C
rd1ffb
!
!C
b&"

C
sQwi!mVR
(
(C
sQwi!mVR
(
(C
b&"

C9

3....3......9

3....3......9

3....3......9

3....3......9

3....3......9

3....3......
<*****+++
<0000011111r   c                     t          t          d          t          d          t          d          ggdt                    } t          t          d          t          d          ggdt                    }t          t          d          ggd	t                    }|                     |          }|j        d
k    sJ |j        t          k    sJ |t          t          d          t          d          t          d          t          d          t          d          ggd
t                    k    sJ |                     ||          }|j        dk    sJ |j        t          k    sJ |t          t          d          t          d          t          d          t          d          t          d          t          d          ggdt                    k    sJ d S )Nr   r   r   r   r   r   r   r7   ra   rc   )r   r   )r   ra   )r   r   hstackr   r   re   ru   rv   Ahs       r   test_DDM_hstackr      sr   beeRUUBqEE"#VR00AbeeRUU^fb))AbeeWIvr""A	
!B8v9????r!uubeeRUUBqEE2a559:FBGGGGGG	
!QB8v9????r!uubeeRUUBqEE2a55"Q%%@A62NNNNNNNNr   c                     t          t          d          gt          d          gt          d          ggdt                    } t          t          d          gt          d          ggdt                    }t          t          d          ggd	t                    }|                     |          }|j        d
k    sJ |j        t          k    sJ |t          t          d          gt          d          gt          d          gt          d          gt          d          ggd
t                    k    sJ |                     ||          }|j        dk    sJ |j        t          k    sJ |t          t          d          gt          d          gt          d          gt          d          gt          d          gt          d          ggdt                    k    sJ d S )Nr   r   r   r   r   r   r   rS   ra   rc   )r   r   )ra   r   )r   r   vstackr   r   r   s       r   test_DDM_vstackr      s   beeWr!uug1w'44AbeeWr!uug++AbeeWIvr""A	
!B8v9????r!uug1wA"Q%%2a55'BFBOOOOOO	
!QB8v9????r!uug1wA"Q%%2a55'BqEE7KVUWXXXXXXXXr   c                  N   t          t          d          t          d          t          d          ggdt                    } t          t          d          t          d          t          d          ggdt                    }|                     d t                    |k    sJ d S )Nr   r   r   r   r   ra   c                     d| z  S )Nr   r   )xs    r   r   z$test_DDM_applyfunc.<locals>.<lambda>   s
    1 r   )r   r   	applyfuncre   ru   s     r   test_DDM_applyfuncr      s    beeRUUBqEE"#VR00AbeeRUUBqEE"#VR00A;;}}b))Q......r   c                  	   t          g dt                    } |                                 | g fk    sJ t          t          d          t          d          gt          d          t          d          ggdt                    } t          t          d          t          d          gt          d          t          d          ggdt                    }ddg}|                                 ||fk    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    } t          t          d          t          d          t          d	          gt          d          t          d          t          d          ggdt                    }ddg}|                                 ||fk    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    } t          t          d          t          d          t          d	          gt          d          t          d          t          d          ggdt                    }ddg}|                                 ||fk    sJ t          t          d          t          d          gt          d          t          d          gt          d          t          d          ggd
t                    } t          t          d          t          d          gt          d          t          d          gt          d          t          d          ggd
t                    }ddg}|                                 ||fk    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    } t          t          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    }ddg}|                                 ||fk    sJ d S )Nr   r   r   r   r   r   r   r   r)   r   r   )r   r   rref)re   Arpivotss      r   test_DDM_rrefr      s   BA66882wbeeRUU^beeRUU^,fb99A	r!uubeenr!uubeen-vr	:	:BVF6688F|####beeRUUBqEE"RUUBqEE2a55$9:FBGGA	r!uubeeRVV$r!uubeeRUU&;<fb	I	IBVF6688F|####beeRUUBqEE"RUUBqEE2a55$9:FBGGA	r!uubeeRVV$r!uubeeRUU&;<fb	I	IBVF6688F|####beeRUU^beeRUU^beeRUU^<fbIIA	r!uubeenr!uubeenr!uubeen=vr	J	JBVF6688F|####beeRUUBqEE"RUUBqEE2a55$9:FBGGA	r!uubeeRUU#beeRUUBqEE%:;VR	H	HBVF6688F|######r   c                  J   t          t          d          t          d          gt          d          t          d          ggdt                    } t          t          d          t          d          ggdt                    }dg}|                                 ||fk    sJ d S )Nr   r   r)   r7   )r   r   	nullspace)re   Anull	nonpivotss      r   test_DDM_nullspacer     s    beeRUU^beeRUU^,fb99A"R&&"Q%%!62..EI;;==UI.......r   c                      t          t          d          t          d          ggdt                    } |                                 t          j        dt                    k    sJ d S )Nr   r   r7   rc   )r   r   
particularr=   rd   s    r   test_DDM_particularr   &  sQ    beeRUU^fb))A<<>>SYvr22222222r   c            	      p    t          g dt                                                      t          d          k    sJ t          t          d          ggdt                                                      t          d          k    sJ t          t          d          t          d          gt          d          t          d          ggdt                                                      t          d          k    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          ggd
t                                                      t          d          k    sJ t          t          dd          t          dd          gt          dd          t          dd          ggdt                                                      t          dd          k    sJ t          t          d          gt          d          ggdt                     t	          t
           fd           t          g dt                     t	          t
           fd           d S )NrY   r   r   rc   r   r   r   ry   r   rO   r   r)      rS   c                  ,                                      S rm   detrd   s   r   r   ztest_DDM_det.<locals>.<lambda>B       r   r   r   c                  ,                                      S rm   r   rd   s   r   r   ztest_DDM_det.<locals>.<lambda>F  r   r   )r   r   r   r   r   r   rd   s   @r   test_DDM_detr   +  s   BA5577bee 	beeWIvr""A5577bee 	beeRUU^beeRUU^,fb99A5577bff 	beeRUUBqEE"RUUBqEE2a55$9BqEE2a55"Q%%;PQSY[]^^A5577bee 	bAhh1a!Bq!HHbAhh#78&"EEA5577bRjj     	beeWr!uug++A
<))) 	BA
<)))))r   c                     t          t          dd          t          dd          gt          dd          t          dd          ggdt                    t          t          dd          t          dd          gt          dd          t          dd          ggdt                    }                                 | k    sJ t          t          d          t          d          ggdt                    t          t          fd	           t          t          d          ggd
t
                    t          t          fd           t          g dt                                                    k    sJ t          t          d          t          d          gt          d          t          d          ggdt                    t          t          fd           d S )Nr   r   r   r   r   ry   r)   r7   c                  ,                                      S rm   invrd   s   r   r   ztest_DDM_inv.<locals>.<lambda>O  r   r   rc   c                  ,                                      S rm   r   rd   s   r   r   ztest_DDM_inv.<locals>.<lambda>R  s    !%%'' r   rY   c                  ,                                      S rm   r   rd   s   r   r   ztest_DDM_inv.<locals>.<lambda>X  s    quuww r   )r   r   r   r   r   r   r
   r	   )Ainvre   s    @r   test_DDM_invr   I  s|   bAhh1a!Bq!HHbAhh#78&"EEABBq!HH%1a"R))'<=vrJJD5577d????beeRUU^fb))A
<)))beeWIvr""A
=////***BA5577a<<<<beeRUU^beeRUU^,fb99A
%77777r   c                     t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 \  }}}|t          t          d          t          d          gt          d          t          d          ggdt                    k    sJ |t          t          d          t          d          gt          d          t          d          ggdt                    k    sJ |g k    sJ g dg d	g d
g dg} g dg dg dg d
g}g dg d	g d
g dg}d }t           || t                    dt                    } t           ||t                    dt                    }t           ||t                    dt                    }|                                 \  }}}||k    sJ ||k    sJ |g k    sJ d S )Nr   r   r   r   r   r   ry   )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   r   r   c                      fd| D             S )Nc                 ,    g | ]}fd |D             S )c                 &    g | ]} |          S r   r   )rK   edoms     r   rM   z<test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>e  s!     5 5 5AQ 5 5 5r   r   )rK   rowr   s     r   rM   z1test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>e  s.    FFF# 5 5 5 5 5 5 5FFFr   r   )r   r   s    `r   r   ztest_DDM_lu.<locals>.<lambda>e  s    FFFFFFF r   )r   r   )r   r   lu)re   LUswapsLexpUexpto_doms          r   test_DDM_lur   [  s   beeRUU^beeRUU^,fb99A$$&&KAq%beeRUU^beeRUU^4fbAAAAAAbeeRUU^beeRVV_5vrBBBBBBB;;;;	|||\\\<<<@ALL,,,lllCDLL,,,lllCDFFFFF1bMM62&&AvvdB,,DvvdB,,D$$&&KAq%99999999B;;;;;;r   c                  H   t          t          d          t          d          gt          d          t          d          ggdt                    t          t          d          gt          d          ggdt                    t          t          d          gt          dd          ggdt                    }                               | k    sJ t          t          d          t          d          gt          d          t          d          ggdt                                                  | k    sJ t          t          d          t          d          gt          d          t          d          gt          d          t          d	          ggd
t                    t          t          d          gt          d          gt          d          ggdt                                                  | k    sJ t          t          d          gt          d          gt          d          ggdt                    t          t          fd           t          t          d          t          d          gt          d          t          d          ggdt                    t          t          d          gt          d          ggdt                    t          t          fd           t          t          d          t          d          ggdt                    t          t          d          ggdt                    t          t
          fd           t          t          d          gt          d          ggdt                    t          t          fd           t          t          d          gt          d          gt          d          ggdt                    t          t          fd           d S )Nr   r   r   r   r   rS   r   r   ra   r   r   c                  .                                    S rm   lu_solvere   bs   r   r   z#test_DDM_lu_solve.<locals>.<lambda>      qzz!}} r   c                  .                                    S rm   r   r   s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  r   r   r7   rc   c                  .                                    S rm   r   r   s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    

1 r   c                  .                                    S rm   r   )re   bzs   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    !**R.. r   c                  .                                    S rm   r   )re   b3s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    B r   )	r   r   r   r   r	   NotImplementedErrorr   r
   r   )r   re   r   r   r   s    @@@@r   test_DDM_lu_solver   o  sR   beeRUU^beeRUU^,fb99AbeeWr!uug++AbeeWr!Qxxj!62..A::a==A 	beeRUU^beeRUU^,fb99A::a==A 	beeRUU^beeRUU^beeRUU^<fbIIAbeeWr!uug1w'44A::a==A 	beeWr!uug1w'44A
%'<'<'<'<'<=== 	beeRUU^beeRUU^,fb99AbeeWr!uug++A
%'<'<'<'<'<=== 	beeRUU^fb))AbeeWIvr""A
 5 5 5 5 5666 
r!uug1w	,	,B
=00000111 
r!uug1wA(&"	5	5B
</////00000r   c            	         t          g dt                                                    t          d          gk    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d	          t          d
          ggdt                    t          d          t          d          t          d          t          d          g}                                 | k    sJ t          t          d          t          d          ggdt                    t          t          fd           d S )NrY   r   r   r   r   r   ra      r   	   rO   iir   r7   c                  ,                                      S rm   )charpolyrd   s   r   r   z#test_DDM_charpoly.<locals>.<lambda>  s     r   )r   r   r  r   r   )Avecre   s    @r   test_DDM_charpolyr    s)   BA::<<BqEE7""""	A1r!uu	A1r!uu	A1r!uu !'	, 	,A qEE2c77BsGGRUU+D::<<4beeRUU^fb))A
<----.....r   c            	      \    t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          ggd
t                                          dd          t          d          k    sJ                      dd          t          d          k    sJ                      dd          t          d          k    sJ t          t           fd           d S )Nr   r   r   r   r   ra   r   r   r   rO   ry   r)   c                  0                          dd          S )Nr   )getitemdms   r   r   z"test_DDM_getitem.<locals>.<lambda>  s    rzz!Q// r   )r   r   r  r   r*   r  s   @r   test_DDM_getitemr
    s   		A1r!uu	A1r!uu	A1r!uu !'
, 
,B
 ::ar!uu$$$$::a1%%%%::b"A&&&&
:////00000r   c                  6    t          j        dt                                          ddd                                ddd                                ddd            t          j        dt                    k    sJ t          t           fd           d S )NrO   r   r   ry   r)   r   c                  2                          ddd          S )Nr   r   )setitemr  s   r   r   z"test_DDM_setitem.<locals>.<lambda>  s    rzz!Q22 r   )r   r=   r   r  rP   r   r*   r  s   @r   test_DDM_setitemr    s    	62		BJJq!QJJq"aJJr2qB
:222233333r   c            	         t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          ggd
t                    } |                     t          dd          t          dd                    | k    sJ |                     t          dd          t          d                    t          dgdggdt                    k    sJ |                     t          dd          t          d                    t          dgdggdt                    k    sJ |                     t          dd          t          d                    t          t          d          ggdt                    k    sJ |                     t          dd          t          d                    t          dgdggdt                    k    sJ |                     t          d          t          d                    t          ddgddggdt                    k    sJ |                     t          d          t          dd                    t          g g gdt                    k    sJ |                     t          dd          t          d                    t          g dt                    k    sJ |                     t          dd          t          dd                    t          g dt                    k    sJ d S )Nr   r   r   r   r   ra   r   r   r   rO   r   ry   rS   rc   r)   r   rX   rW   rY   )r   r   extract_sliceslicer  s    r   test_DDM_extract_slicer    s   		A1r!uu	A1r!uu	A1r!uu !'
, 
,B
 E!QKKq!55;;;;E!QKKr33sQC!:vr7R7RRRRRE!QKKr33sQC!:vr7R7RRRRRE!QKKr33sRUUG9fb7Q7QQQQQE!QKKr33sQC!:vr7R7RRRRRE"IIuRyy11S1a&1a&9I6SU5V5VVVVVE!HHeAqkk22c2r(FB6O6OOOOOE!QKKq22c"fb6I6IIIIIE!QKKq!55R9L9LLLLLLLr   c            	      R   t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          ggd
t                    } t          t          d          t          d          gt          d          t          d          ggdt                    |                     ddgddg          k    sJ |                     ddgddg          k    sJ |                     g g           t          j        dt                    k    sJ |                     dgg           t          j        dt                    k    sJ |                     g dg          t          j        dt                    k    sJ t	          t
          fd           t	          t
          fd           t	          t
          fd           t	          t
          fd           d S )Nr   r   r   r   r   ra   r   r   r   rO   r   r   ry   r)   rY   )r   r   r   c                  4                          dgdg          S r$   extractdm2s   r   r   z"test_DDM_extract.<locals>.<lambda>      s{{A344 r   c                  4                          dgdg          S r(   r  r  s   r   r   z"test_DDM_extract.<locals>.<lambda>  r  r   c                  4                          dgdg          S )Nr  r   r  r  s   r   r   z"test_DDM_extract.<locals>.<lambda>  s    s{{B4!55 r   c                  4                          dgdg          S )Nr   r  r  r  s   r   r   z"test_DDM_extract.<locals>.<lambda>  s    s{{A355 r   )r   r   r  r=   r   r*   )dm1r  s    @r   test_DDM_extractr    s   
	A1r!uu	A1r!uu	A1r!uu !', ,C 	A1	A1% %C ;;1v1v&&#----;;AwQ((C////;;r2#)FB"7"77777;;sB39VR#8#88888;;rA339VR#8#88888
:4444555
:4444555
:5555666
:555566666r   c                  J   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 t          d          t          d          t          d          t          d          gk    sJ d S )Nra   r   r   r   r   )r   r   flatr  s    r   test_DDM_flatr!    s    		A1	A1
% 
%B 7799A1r!uubee4444444r   c                  :   t          t          d          t          d          gt          d          t          d          ggdt                    } t          j        dt                    }|                                 du sJ |                                du sJ d S )Nr   r   r   r7   FT)r   r   r=   is_zero_matrix)re   Azeros     r   test_DDM_is_zero_matrixr%    s    beeRUU^beeRUU^,fb99AIfb!!E&&&&!!T))))))r   c            
         t          t          d          t          d          t          d          t          d          gt          d          t          d          t          d          t          d          gt          d          t          d          t          d	          t          d
          ggdt                    } t          t          d          t          d          t          d          t          d          gt          d          t          d          t          d          t          d          gt          d          t          d          t          d	          t          d
          ggdt                    }|                                 du sJ |                                du sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          gt          d          t          d          t          d          ggdt                    } t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          gt          d          t          d          t          d          ggdt                    }|                                 du sJ |                                du sJ d S Nr   r   r   r   r   r   ra   r   r   r   r<   TF)r   r   
   )r   r   is_upperr   s     r   test_DDM_is_upperr*    s   	A1r!uubee$	A1r!uubee$	A1r!uubee$ r		 	A
 		A1r!uubee$	A1r!uubee$	A1r!uubee$ r		 	A
 ::<<4::<<5     		A1r!uu	A1r!uu	A1r!uu	A1r!uu	
 r	 	A 		A1r!uu	A1r!uu	A1r!uu	A1r"vv	
 r	 	A ::<<4::<<5      r   c            
      b   t          t          d          t          d          t          d          t          d          gt          d          t          d          t          d          t          d          gt          d          t          d          t          d	          t          d
          ggdt                                                    } t          t          d          t          d          t          d          t          d          gt          d          t          d          t          d          t          d          gt          d          t          d          t          d	          t          d
          ggdt                                                    }|                                 du sJ |                                du sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          gt          d          t          d          t          d          ggdt                                                    } t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          gt          d          t          d          t          d          ggdt                                                    }|                                 du sJ |                                du sJ d S r'  )r   r   rZ   is_lowerr   s     r   test_DDM_is_lowerr-    s   	A1r!uubee$	A1r!uubee$	A1r!uubee$ r		 	 9;;	 
 		A1r!uubee$	A1r!uubee$	A1r!uubee$ r		 	 9;;	 
 ::<<4::<<5     		A1r!uu	A1r!uu	A1r!uu	A1r!uu	
 r	 	
 9;;  		A1r!uu	A1r!uu	A1r!uu	A1r"vv	
 r	 	
 9;;  ::<<4::<<5      r   N)0sympy.testing.pytestr   sympy.external.gmpyr   sympy.polysr   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.exceptionsr   r	   r
   r   r!   r+   r0   r5   r:   r@   rD   rQ   rU   r_   rw   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   <module>r3     s   ' ' ' ' ' ' , , , , , ,         ( ( ( ( ( (           

P 
P 
P  . . ." " "4        " " "	$ 	$ 	$* * *- - -(     ) ) )(2 (2 (2VO O O Y Y Y / / /
$ $ $>/ / /3 3 3
* * *<8 8 8$  ($1 $1 $1N/ / /
1 
1 
14 4 4M M M$7 7 7*5 5 5* * *! ! !@! ! ! ! !r   