
    Og;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/y())    )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	        y )
Nr                  r   r   c                  N    t        t        d      t        d      ggdt              S )Nr   r   r   r   r   r        j/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/sympy/polys/matrices/tests/test_ddm.py<lambda>ztest_DDM_init.<locals>.<lambda>   s    C"Q%A(8&"$E r   c                  d    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%2a5"Q%.(A62$N r   )r   r   shaperowscolsdomainr   r   )itemsr   ddms      r   test_DDM_initr!      s    eRUBqE"RUBqE2a5$9:EE
eUB
C9988q==88q==::
?EF
?N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 y )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!u~1r!u~.
;Cq6!91q6!91q6!91q6!91
:()
:()2CF1Iq6!92r   c                     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 y t	        |       d	k(  sJ t        |       dk(  sJ y )
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!u~1r!u~.
;Cv3x----CySSSSCy????3x----r   c                  4   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 ||k7  du sJ || k7  du sJ | |k7  du sJ ||k7  du sJ ||k7  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 ||k7  du sJ ||k7  du sJ y )Nr   r   r   r   r   TF)r   r   r   )r   ddm1ddm2ddm3s       r   test_DDM_eqr5   2   su   eRU^beRU^,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              } | j                  t              | k(  sJ | j                  t              }|j                  t        k(  sJ y )Nr   r   r   r   )r   r   
convert_tor   r   )r    ddmqs     r   test_DDM_convert_tor:   L   sV    
1r!u~
+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 y )Nr   r   r   r   r   )r   zerosr   listr   r   )ddmzs    r   test_DDM_zerosr@   S   sY    99VR D:2a5'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 y )Nr   r   r   r   )r   onesr   r>   r   r   )ddmones    r   test_DDM_onesrD   Y   sY    XXfb!F<RUGaK=1,,,,<<6!!!==Br   c                  .   t        j                  dt              } d }t        |       t	        d      D cg c]"  }t	        d      D cg c]  } |||       c}$ c}}k(  sJ | j
                  dk(  sJ | j                  t        k(  sJ y c c}w c c}}w )Nr   c                 8    | |k(  rt        d      S t        d      S )Nr   r   )r   )ijs     r   r   ztest_DDM_eye.<locals>.<lambda>a   s    a1fRU "Q% r   r   r   )r   eyer   r>   ranger   r   )r?   frH   rG   s       r   test_DDM_eyerM   _   sx    771b>D/A:uQxH!E!H5q1Q75HHHH::;;" 6Hs   BBBBc                      t        t        d      gt        d      ggdt              } | j                         }| |k(  du sJ t        d      | d   d<   | |k(  du sJ t        d      |d   d<   | |k(  du sJ y )Nr   r   r   r   Tr)   r   F)r   r   copy)r2   r3   s     r   test_DDM_copyrQ   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              }| j                         |k(  sJ t        g dt              }t        g g gdt              }|j                         |k(  sJ |j                         |k(  sJ t        g dt              }|j                         |k(  sJ y )Nr   r   rO   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                  F   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   j                  |       cxk(  r|k(  sJ  J t	        t
        fd       t	        t        fd       t	        t        fd	       t	        t        fd
       t	        t        fd       y )Nr   r   rO   r   r      c                  B     t        t        d      ggdt              z   S )Nr   r   r   r   As   r   r   ztest_DDM_add.<locals>.<lambda>   s    S2a5'FB%?!? r   c                        t        d      z   S Nr   r   r`   s   r   r   ztest_DDM_add.<locals>.<lambda>       a"Q%i r   c                       t        d       z   S rc   rd   r`   s   r   r   ztest_DDM_add.<locals>.<lambda>       beai r   c                       z   S Nr   ra   AQs   r   r   ztest_DDM_add.<locals>.<lambda>       !b& r   c                       z   S ri   r   rj   s   r   r   ztest_DDM_add.<locals>.<lambda>       "q& r   )r   r   r   addr   r   	TypeErrorr
   )BCra   rk   s     @@r   test_DDM_addrs   }   s    beWr!ug+AbeWr!ug+AbeWr!ug+A	r!ug1w	,Bq5AEE!H!!!!!!
<?@
9'(
9'(
=.)
=.)r   c                  J   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
  j                  |       cxk(  r|k(  sJ  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       y )Nr   r   rO   r   r   r   r_   c                        t        d      z
  S rc   rd   r`   s   r   r   ztest_DDM_sub.<locals>.<lambda>   re   r   c                       t        d       z
  S rc   rd   r`   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rg   r   c                       z
  S ri   r   ra   Ds   r   r   ztest_DDM_sub.<locals>.<lambda>       Q r   c                       z
  S ri   r   ry   s   r   r   ztest_DDM_sub.<locals>.<lambda>   r{   r   c                  &     j                        S ri   subry   s   r   r   ztest_DDM_sub.<locals>.<lambda>       q r   c                  &    j                         S ri   r~   ry   s   r   r   ztest_DDM_sub.<locals>.<lambda>   r   r   c                       z
  S ri   r   rj   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rl   r   c                       z
  S ri   r   rj   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rn   r   c                  &     j                        S ri   r~   rj   s   r   r   ztest_DDM_sub.<locals>.<lambda>   s    !%%) r   c                  &    j                         S ri   r~   rj   s   r   r   ztest_DDM_sub.<locals>.<lambda>   s    "&&) r   )r   r   r   r   r   rp   r   r
   )rq   rr   ra   rk   rz   s     @@@r   test_DDM_subr      s$   beWr!ug+AbeWr!ug+AbfX2x &"-A	r!ug1w	,BbeWIvr"Aq5AEE!H!!!!!!
9'(
9'(
<'
<'
<)*
<)*
=.)
=.)
=+,
=+,r   c                     t        t        d      gt        d      ggdt              } t        t        d      gt        d      ggdt              }|  | j                         cxk(  r|k(  sJ  J | |j                         cxk(  r| k(  sJ  J y )Nr   r   rO   r)   ru   )r   r   neg)ra   Ans     r   test_DDM_negr      s    beWr!ug+A	r"vh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       y )Nr   r_   r   c                      dgg z  S rc   r   r`   s   r   r   ztest_DDM_mul.<locals>.<lambda>   s    seai r   c                       dggz  S rc   r   r`   s   r   r   ztest_DDM_mul.<locals>.<lambda>   s    aA3%i r   )r   r   r   rp   )A2ra   s    @r   test_DDM_mulr      sm    beWIvr"A	r!ugY	#Br!u9??a519??
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  j                  |       cxk(  r|k(  sJ  J | z  | j                        cxk(  r|k(  sJ  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  j                  
      cxk(  rk(  sJ  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  |j                  |      cxk(  rk(  sJ  J ||z  |j                  |      cxk(  rk(  sJ  J ||z  |j                  |      cxk(  r|k(  sJ  J ||z  |j                  |      cxk(  r|k(  sJ  J ||z  |j                  |      cxk(  r|k(  sJ  J ||z  |j                  |      cxk(  r|k(  sJ  J t        t        fd       t        t        fd       y )Nr   r   rO   r   r   r7   r]      r      r_   c                       dz  S rc   r   r`   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    a!e r   c                       ddggz  S )Nr   r   r   r`   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    aAq6(l r   c                       z  S ri   r   ra   Bqs   r   r   z!test_DDM_matmul.<locals>.<lambda>   rl   r   c                       z  S ri   r   r   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   rn   r   c                       z  S ri   r   ra   rr   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   r{   r   c                  &    j                         S ri   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   rU   c                       z  S ri   r   Z05Z40s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    s r   c                  &     j                        S ri   r   r   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    C r   )r   r   r   r   rp   r   r
   r   )rq   ABBAZ04Z50Z45Z54Z00ra   r   rr   r   r   s           @@@@@r   test_DDM_matmulr      s   beWr!ug+AbeRU^fb)A	r!ubenr!uben-vr	:B	r"vhZ	$Bq5AHHQK%2%%%%%q5AHHQK%2%%%%%
9m$
9*+	r!ubenvr	*B
=.)
=.)beWIvr"Aq5AHHQK$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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                  |      }|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                  ||      }|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 y )Nr   r   r   r   r   r   r   r7   r]   r_   )r   r   )r   r]   )r   r   hstackr   r   ra   rq   rr   Ahs       r   test_DDM_hstackr      s1   beRUBqE"#VR0AbeRU^fb)AbeWIvr"A	
!B88v99??r!ubeRUBqE2a59:FBGGGG	
!QB88v99??r!ubeRUBqE2a5"Q%@A62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                  |      }|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                  ||      }|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 y )Nr   r   r   r   r   r   r   rO   r]   r_   )r   r   )r]   r   )r   r   vstackr   r   r   s       r   test_DDM_vstackr      sG   beWr!ug1w'4AbeWr!ug+AbeWIvr"A	
!B88v99??r!ug1wA"Q%2a5'BFBOOOO	
!QB88v99??r!ug1wA"Q%2a5'BqE7KVUWXXXXr   c                      t        t        d      t        d      t        d      ggdt              } t        t        d      t        d      t        d      ggdt              }| j                  d t              |k(  sJ y )Nr   r   r   r   r   r]   c                     d| z  S )Nr   r   )xs    r   r   z$test_DDM_applyfunc.<locals>.<lambda>   s
    1 r   )r   r   	applyfuncra   rq   s     r   test_DDM_applyfuncr      sc    beRUBqE"#VR0AbeRUBqE"#VR0A;;}b)Q...r   c                  B   t        g dt              } | j                         | 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}| j                         ||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}| j                         ||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}| j                         ||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}| j                         ||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}| j                         ||fk(  sJ y )Nr   r   r   r   r   r   r   r   r)   r   r   )r   r   rref)ra   Arpivotss      r   test_DDM_rrefr      s   BA6682wbeRU^beRU^,fb9A	r!ubenr!uben-vr	:BVF668F|###beRUBqE"RUBqE2a5$9:FBGA	r!ubeRV$r!ubeRU&;<fb	IBVF668F|###beRUBqE"RUBqE2a5$9:FBGA	r!ubeRV$r!ubeRU&;<fb	IBVF668F|###beRU^beRU^beRU^<fbIA	r!ubenr!ubenr!uben=vr	JBVF668F|###beRUBqE"RUBqE2a5$9:FBGA	r!ubeRU#beRUBqE%:;VR	HBVF668F|###r   c                      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}| j                         ||fk(  sJ y )Nr   r   r)   r7   )r   r   	nullspace)ra   Anull	nonpivotss      r   test_DDM_nullspacer     sj    beRU^beRU^,fb9A"R&"Q%!62.EI;;=UI....r   c                      t        t        d      t        d      ggdt              } | j                         t        j                  dt              k(  sJ y )Nr   r   r7   r_   )r   r   
particularr=   r`   s    r   test_DDM_particularr   &  s>    beRU^fb)A<<>SYYvr2222r   c            	          t        g dt                j                         t        d      k(  sJ t        t        d      ggdt                j                         t        d      k(  sJ t        t        d      t        d      gt        d      t        d      ggdt                j                         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                j                         t        d      k(  sJ t        t        dd      t        dd      gt        dd      t        dd      ggdt                j                         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       y )NrU   r   r   r_   r   r   r   ru   r   rI   r   r)      rO   c                  $     j                         S ri   detr`   s   r   r   ztest_DDM_det.<locals>.<lambda>B       r   r   r   c                  $     j                         S ri   r   r`   s   r   r   ztest_DDM_det.<locals>.<lambda>F  r   r   )r   r   r   r   r   r   r`   s   @r   test_DDM_detr   +  s   BA557be 	beWIvr"A557be 	beRU^beRU^,fb9A557bf 	beRUBqE"RUBqE2a5$9BqE2a5"Q%;PQSY[]^A557be 	bAh1a!Bq!HbAh#78&"EA557bRj    	beWr!ug+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              } j                         | 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              j                         k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        fd       y )Nr   r   r   r   r   ru   r)   r7   c                  $     j                         S ri   invr`   s   r   r   ztest_DDM_inv.<locals>.<lambda>O  r   r   r_   c                  $     j                         S ri   r   r`   s   r   r   ztest_DDM_inv.<locals>.<lambda>R  s    !%%' r   rU   c                  $     j                         S ri   r   r`   s   r   r   ztest_DDM_inv.<locals>.<lambda>X  s    quuw r   )r   r   r   r   r   r   r
   r	   )Ainvra   s    @r   test_DDM_invr   I  s   bAh1a!Bq!HbAh#78&"EABBq!H%1a"R)'<=vrJD557d??beRU^fb)A
<)beWIvr"A
=/*BA557a<<beRU^beRU^,fb9A
%7r   c                     t        t        d      t        d      gt        d      t        d      ggdt              } | 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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              }| j                         \  }}}||k(  sJ ||k(  sJ |g k(  sJ y )Nr   r   r   r   r   r   ru   )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           
      d    | D cg c]  }|D cg c]
  } ||       c} c}}S c c}w c c}}w ri   r   )r   domrowes       r   r   ztest_DDM_lu.<locals>.<lambda>e  s&    F# 5AQ 5F  5Fs   	,',,)r   r   )r   r   lu)ra   LUswapsLexpUexpto_doms          r   test_DDM_lur   [  sT   beRU^beRU^,fb9A$$&KAq%beRU^beRU^4fbAAAAbeRU^beRV_5vrBBBBB;;	|\<@A,lCD,lCDFFF1bM62&AvdB,DvdB,D$$&KAq%9999B;;r   c                  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        d      gt        dd      ggdt              } j                        | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              j                        | 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              j                        | 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       y )Nr   r   r   r   r   rO   r   r   r]   r   r   c                  &     j                        S ri   lu_solvera   bs   r   r   z#test_DDM_lu_solve.<locals>.<lambda>      qzz!} r   c                  &     j                        S ri   r   r   s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  r   r   r7   r_   c                  &     j                        S ri   r   r   s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    

1 r   c                  &     j                        S ri   r   )ra   bzs   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    !**R. r   c                  &     j                        S ri   r   )ra   b3s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    B r   )	r   r   r   r   r	   NotImplementedErrorr   r
   r   )r   ra   r   r   r   s    @@@@r   test_DDM_lu_solver   o  sm   beRU^beRU^,fb9AbeWr!ug+AbeWr!Qxj!62.A::a=A 	beRU^beRU^,fb9A::a=A 	beRU^beRU^beRU^<fbIAbeWr!ug1w'4A::a=A 	beWr!ug1w'4A
%'<= 	beRU^beRU^,fb9AbeWr!ug+A
%'<= 	beRU^fb)AbeWIvr"A
 56 
r!ug1w	,B
=01 
r!ug1wA(&"	5B
</0r   c            	      2   t        g dt              j                         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} j                         | k(  sJ t        t        d      t        d      ggdt              t        t        fd       y )NrU   r   r   r   r   r   r]      r   	   rI   iir   r7   c                  $     j                         S ri   )charpolyr`   s   r   r   z#test_DDM_charpoly.<locals>.<lambda>  s     r   )r   r   r   r   r   )Avecra   s    @r   test_DDM_charpolyr     s    BA::<BqE7"""	A1r!u	A1r!u	A1r!u !'	,A qE2c7BsGRU+D::<4beRU^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                j                  dd      t        d      k(  sJ  j                  dd      t        d      k(  sJ  j                  dd      t        d      k(  sJ t        t         fd       y )Nr   r   r   r   r   r]   r   r   r   rI   ru   r)   c                  (     j                  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!u	A1r!u	A1r!u !'
,B
 ::ar!u$$$::a1%%%::b"A&&&
:/0r   c                      t        j                  dt                j                  ddd        j                  ddd        j                  ddd        t        j                  dt              k(  sJ t        t         fd       y )NrI   r   r   ru   r)   r   c                  *     j                  ddd      S )Nr   r   )setitemr  s   r   r   z"test_DDM_setitem.<locals>.<lambda>  s    rzz!Q2 r   )r   r=   r   r  rJ   r   r*   r  s   @r   test_DDM_setitemr    sf    	62	BJJq!QJJq"aJJr2qB
:2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              } | j                  t        dd      t        dd            | k(  sJ | j                  t        dd      t        d            t        dgdggdt              k(  sJ | j                  t        dd      t        d            t        dgdggdt              k(  sJ | j                  t        dd      t        d            t        t        d      ggdt              k(  sJ | j                  t        dd      t        d            t        dgdggdt              k(  sJ | j                  t        d      t        d            t        ddgddggdt              k(  sJ | j                  t        d      t        dd            t        g g gdt              k(  sJ | j                  t        dd      t        d            t        g dt              k(  sJ | j                  t        dd      t        dd            t        g dt              k(  sJ y )Nr   r   r   r   r   r]   r   r   r   rI   r   ru   rO   r_   r)   r   rT   rS   rU   )r   r   extract_sliceslicer  s    r   test_DDM_extract_slicer    s%   		A1r!u	A1r!u	A1r!u !'
,B
 E!QKq!5;;;E!QKr3sQC!:vr7RRRRE!QKr3sQC!:vr7RRRRE!QKr3sRUG9fb7QQQQE!QKr3sQC!:vr7RRRRE"IuRy1S1a&1a&9I6SU5VVVVE!HeAqk2c2r(FB6OOOOE!QKq2c"fb6IIIIE!QKq!5R9LLLLr   c            	      z   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              | j                  ddgddg      k(  sJ | j                  ddgddg      k(  sJ | j                  g g       t        j                  dt              k(  sJ | j                  dgg       t        j                  dt              k(  sJ | 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       y )Nr   r   r   r   r   r]   r   r   r   rI   r   r   ru   r)   rU   )r   r   r   c                  ,     j                  dgdg      S r$   extractdm2s   r   r   z"test_DDM_extract.<locals>.<lambda>      s{{A34 r   c                  ,     j                  dgdg      S r(   r  r  s   r   r   z"test_DDM_extract.<locals>.<lambda>  r  r   c                  ,     j                  dgdg      S )Nr   r   r  r  s   r   r   z"test_DDM_extract.<locals>.<lambda>  s    s{{B4!5 r   c                  ,     j                  dgdg      S )Nr   r   r  r  s   r   r   z"test_DDM_extract.<locals>.<lambda>  s    s{{A35 r   )r   r   r  r=   r   r*   )dm1r  s    @r   test_DDM_extractr    so   
	A1r!u	A1r!u	A1r!u !',C 	A1	A1%C ;;1v1v&#---;;AwQ(C///;;r2#))FB"7777;;sB399VR#8888;;rA3399VR#8888
:45
:45
:56
:56r   c                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d      t        d      t        d      gk(  sJ y )Nr]   r   r   r   r   )r   r   flatr  s    r   test_DDM_flatr    sc    		A1	A1
%B 779A1r!ube4444r   c                      t        t        d      t        d      gt        d      t        d      ggdt              } t        j                  dt              }| j                         du sJ |j                         du sJ y )Nr   r   r   r7   FT)r   r   r=   is_zero_matrix)ra   Azeros     r   test_DDM_is_zero_matrixr    sk    beRU^beRU^,fb9AIIfb!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              }| j                         du sJ |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              }| j                         du sJ |j                         du sJ y Nr   r   r   r   r   r   r]   r   r   r   r<   TF)r   r   
   )r   r   is_upperr   s     r   test_DDM_is_upperr$    s   	A1r!ube$	A1r!ube$	A1r!ube$ r		A
 		A1r!ube$	A1r!ube$	A1r!ube$ r		A
 ::<4::<5    		A1r!u	A1r!u	A1r!u	A1r!u	
 r	A 		A1r!u	A1r!u	A1r!u	A1r"v	
 r	A ::<4::<5   r   c            
      x   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              j                         } 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              j                         }| j                         du sJ |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              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              j                         }| j                         du sJ |j                         du sJ y r!  )r   r   rV   is_lowerr   s     r   test_DDM_is_lowerr'    s<   	A1r!ube$	A1r!ube$	A1r!ube$ r		 9;	 
 		A1r!ube$	A1r!ube$	A1r!ube$ r		 9;	 
 ::<4::<5    		A1r!u	A1r!u	A1r!u	A1r!u	
 r	
 9;  		A1r!u	A1r!u	A1r!u	A1r"v	
 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   rM   rQ   r[   rs   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>r-     s    ' ,  ( 

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