
    MZd 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)HAS_GMPY)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        E/usr/lib/python3/dist-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        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   z[[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_strr/   (   s|    
1r!u~1r!u~.
;C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_eqr4   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_tor9   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_onesrC   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>   frG   rF   s       r   test_DDM_eyerL   _   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)r1   r2   s     r   test_DDM_copyrP   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   rN   r6   r   r   r   r   r   r   )r   r   	transpose)r    ddmTddm02ddm02Tddm0s        r   test_DDM_transposerZ   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   rN   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 rb   rc   r_   s   r   r   ztest_DDM_add.<locals>.<lambda>       beai r   c                       z   S Nr   r`   AQs   r   r   ztest_DDM_add.<locals>.<lambda>       !b& r   c                       z   S rh   r   ri   s   r   r   ztest_DDM_add.<locals>.<lambda>       "q& r   )r   r   r   addr   r   	TypeErrorr
   )BCr`   rj   s     @@r   test_DDM_addrr   }   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   rN   r   r   r   r^   c                        t        d      z
  S rb   rc   r_   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rd   r   c                       t        d       z
  S rb   rc   r_   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rf   r   c                       z
  S rh   r   r`   Ds   r   r   ztest_DDM_sub.<locals>.<lambda>       Q r   c                       z
  S rh   r   rx   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rz   r   c                  &     j                        S rh   subrx   s   r   r   ztest_DDM_sub.<locals>.<lambda>       q r   c                  &    j                         S rh   r}   rx   s   r   r   ztest_DDM_sub.<locals>.<lambda>   r   r   c                       z
  S rh   r   ri   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rk   r   c                       z
  S rh   r   ri   s   r   r   ztest_DDM_sub.<locals>.<lambda>   rm   r   c                  &     j                        S rh   r}   ri   s   r   r   ztest_DDM_sub.<locals>.<lambda>   s    !%%) r   c                  &    j                         S rh   r}   ri   s   r   r   ztest_DDM_sub.<locals>.<lambda>   s    "&&) r   )r   r   r   r~   r   ro   r   r
   )rp   rq   r`   rj   ry   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   rN   r)   rt   )r   r   neg)r`   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 rb   r   r_   s   r   r   ztest_DDM_mul.<locals>.<lambda>   s    seai r   c                       dggz  S rb   r   r_   s   r   r   ztest_DDM_mul.<locals>.<lambda>   s    aA3%i r   )r   r   r   ro   )A2r`   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   rN   r   r   r6   r\      r      r^   c                       dz  S rb   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 rh   r   r`   Bqs   r   r   z!test_DDM_matmul.<locals>.<lambda>   rk   r   c                       z  S rh   r   r   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   rm   r   c                       z  S rh   r   r`   rq   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   rz   r   c                  &    j                         S rh   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   rT   c                       z  S rh   r   Z05Z40s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    s r   c                  &     j                        S rh   r   r   s   r   r   z!test_DDM_matmul.<locals>.<lambda>   s    C r   )r   r   r   r   ro   r   r
   r   )rp   ABBAZ04Z50Z45Z54Z00r`   r   rq   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   r6   r\   r^   )r   r   )r   r\   )r   r   hstackr   r   r`   rp   rq   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   rN   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r`   rp   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)r`   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)   r6   )r   r   	nullspace)r`   Anull	nonpivotss      r   test_DDM_nullspacer     sj    	r!ubenr!uben-vr	:Q2b62a5/"FB/UYKKMeY////r   c                      t        t        d      t        d      ggdt              } | j                         t        j                  dt              k(  sJ y )Nr   r   r6   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 )NrT   r   r   r^   r   r   r   rt   r   rH   r   r)      rN   c                  $     j                         S rh   detr_   s   r   r   ztest_DDM_det.<locals>.<lambda>A       r   r   r   c                  $     j                         S rh   r   r_   s   r   r   ztest_DDM_det.<locals>.<lambda>E  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   rt   r)   r6   c                  $     j                         S rh   invr_   s   r   r   ztest_DDM_inv.<locals>.<lambda>N  r   r   r^   c                  $     j                         S rh   r   r_   s   r   r   ztest_DDM_inv.<locals>.<lambda>Q  s    quuw r   rT   c                  $     j                         S rh   r   r_   s   r   r   ztest_DDM_inv.<locals>.<lambda>W  s    quuw r   )r   r   r   r   r   r   
ValueErrorr	   )Ainvr`   s    @r   test_DDM_invr   H  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   rt   )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 rh   r   )r   domrowes       r   r   ztest_DDM_lu.<locals>.<lambda>d  s&    F# 5AQ 5F  5Fs   	,',,)r   r   )r   r   lu)r`   LUswapsLexpUexpto_doms          r   test_DDM_lur   Z  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   rN   r   r   r\   r   r   c                  &     j                        S rh   lu_solver`   bs   r   r   z#test_DDM_lu_solve.<locals>.<lambda>      qzz!} r   c                  &     j                        S rh   r   r   s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  r   r   r6   r^   c                  &     j                        S rh   r   r   s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    

1 r   c                  &     j                        S rh   r   )r`   bzs   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    !**R. r   c                  &     j                        S rh   r   )r`   b3s   r   r   z#test_DDM_lu_solve.<locals>.<lambda>  s    B r   )	r   r   r   r   r	   NotImplementedErrorr   r
   r   )r   r`   r   r   r   s    @@@@r   test_DDM_lu_solver   n  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 )NrT   r   r   r   r   r   r\      r   	   rH   iir   r6   c                  $     j                         S rh   )charpolyr_   s   r   r   z#test_DDM_charpoly.<locals>.<lambda>  s     r   )r   r   r   r   r   )Avecr`   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   rH   rt   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 )NrH   r   r   rt   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  rI   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   rH   r   rt   rN   r^   r)   r   rS   rR   rT   )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   rH   r   r   rt   r)   rT   )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   r6   FT)r   r   r<   is_zero_matrix)r`   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   rU   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+   r/   r4   r9   r?   rC   rL   rP   rZ   rr   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 /
$>03
*<8$($1N/
14M$7*5*!@!r   