
    \h;A                        S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	J
r
JrJrJr  S rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S  r(S! r)S" r*S# r+S$ r,S% r-S& r.S' r/g())    )raises)GROUND_TYPES)ZZQQ)DDM)DMShapeErrorDMNonInvertibleMatrixErrorDMDomainErrorDMBadInputErrorc                     [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //n Sn[        X[         5      nUR                  U:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR
                  [         :X  d   e[        [        S 5        [        [        S	 5        g )
Nr                  r   r   c                  N    [        [        S5      [        S5      //S[        5      $ )Nr   r   r   r   r   r        [/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/tests/test_ddm.py<lambda>test_DDM_init.<locals>.<lambda>   s    C"Q%A(8&"$Er   c                  d    [        [        S5      /[        S5      [        S5      //S[        5      $ )Nr   r   r   r   r   r   r   r   r   r      s$    C"Q%2a5"Q%.(A62$Nr   )r   r   shaperowscolsdomainr   r   )itemsr   ddms      r   test_DDM_initr"      s    eRUBqE"RUBqE2a5$9:EE
eB
C9988q==88q==::
?EF
?NOr   c                    ^  [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m T S   S   [        S5      :X  d   eT S   S   [        S5      :X  d   eT S   S   [        S5      :X  d   eT S   S   [        S5      :X  d   e[        [        U 4S j5        [        [        U 4S	 j5        [        S
5      T S   S'   T S   S   [        S
5      :X  d   eg )Nr   r   r   r   r   r   r   c                     > T S   S   $ Nr   r   r   r!   s   r   r   %test_DDM_getsetitem.<locals>.<lambda>!       s1vayr   c                     > T S   S   $ Nr   r   r   r&   s   r   r   r'   "   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                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        S:X  a#  [        U 5      S:X  d   e[	        U 5      S:X  d   eg [	        U 5      S	:X  d   e[        U 5      S:X  d   eg )
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_strr2   (   s    
1r!u~1r!u~.
;Cv3x----CySSSSCy????3x----r   c                  4   [        S5      [        S5      /[        S5      [        S5      //n [        U S[         5      n[        U S[         5      nX:H  SL d   eX:H  SL d   eX:H  SL d   eX:H  SL d   eX!:H  SL d   eX:g  SL d   eX:g  SL d   eX:g  SL d   eX:g  SL d   eX!:g  SL d   e[        [        S5      [        S5      /[        S5      [        S5      //S[         5      n[        U S[        5      nX:H  SL d   eX1:H  SL d   eX:g  SL d   eX1:g  SL d   eg )Nr   r   r   r   r   TF)r   r   r   )r    ddm1ddm2ddm3s       r   test_DDM_eqr7   2   sY   eRU^beRU^,Eufb!Dufb!DLT!!!Me###Me###LT!!!LT!!!LU"""Md"""Md"""LU"""LU"""A1A1/<Dufb!DLU"""LU"""LT!!!LT!!!r   c                      [        [        S5      [        S5      //S[        5      n U R                  [        5      U :X  d   eU R                  [        5      nUR                  [        :X  d   eg )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                      [         R                  " S[        5      n [        U 5      [        S5      /S-  /S-  :X  d   eU R                  S:X  d   eU R
                  [        :X  d   eg )Nr   r   r   r   r   )r   zerosr   listr   r   )ddmzs    r   test_DDM_zerosrB   S   sY    99VR D:2a5'A+****::;;"r   c                      [         R                  " S[        5      n [        U 5      [        S5      /S-  /S-  :X  d   eU R                  S:X  d   eU R
                  [        :X  d   eg )Nr   r   r   r   )r   onesr   r@   r   r   )ddmones    r   test_DDM_onesrF   Y   sY    XXfb!F<RUGaK=1,,,,<<6!!!==Br   c                  >   [         R                  " S[        5      n S n[        U 5      [	        S5       VVs/ s H$  n[	        S5       Vs/ s H
  o1" X25      PM     snPM&     snn:X  d   eU R
                  S:X  d   eU R                  [        :X  d   eg s  snf s  snnf )Nr   c                 8    X:X  a  [        S5      $ [        S5      $ )Nr   r   )r   )ijs     r   r   test_DDM_eye.<locals>.<lambda>a   s    afRU/"Q%/r   r   r   )r   eyer   r@   ranger   r   )rA   frJ   rI   s       r   test_DDM_eyerP   _   s~    771b>D/A:uQxHx!E!H5Hq1Q7H5xHHHH::;;" 6Hs   B
BBBc                      [        [        S5      /[        S5      //S[        5      n U R                  5       nX:H  SL d   e[        S5      U S   S'   X:H  SL d   e[        S5      US   S'   X:H  SL d   eg )Nr   r   r   r   Tr+   r   F)r   r   copy)r4   r5   s     r   test_DDM_copyrT   g   s~    A"Q%!62.D99;DLT!!!BDGAJLU"""BDGAJLT!!!r   c                     [        [        S5      /[        S5      //S[        5      n [        [        S5      [        S5      //S[        5      nU R                  5       U:X  d   e[        / S[        5      n[        / / /S[        5      nUR                  5       U:X  d   eUR                  5       U:X  d   e[        / S[        5      nUR                  5       U:X  d   eg )Nr   r   rR   r9   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  ^^ [        [        S5      /[        S5      //S[        5      m[        [        S5      /[        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      n[        [        S5      /[        S5      //S[        5      mTU -   TR                  U 5      s=:X  a  U:X  d   e   e[	        [
        U4S j5        [	        [        U4S j5        [	        [        U4S	 j5        [	        [        UU4S
 j5        [	        [        UU4S j5        g )Nr   r   rR   r   r      c                  B   > T [        [        S5      //S[        5      -   $ )Nr   r   r   r   As   r   r   test_DDM_add.<locals>.<lambda>   s    S2a5'FB%?!?r   c                      > T [        S5      -   $ Nr   r   rc   s   r   r   re          a"Q%ir   c                      > [        S5      T -   $ rg   rh   rc   s   r   r   re          beair   c                     > T T-   $ Nr   rd   AQs   r   r   re      	    !b&r   c                     > TT -   $ rm   r   rn   s   r   r   re      	    "q&r   )r   r   r   addr   r   	TypeErrorr
   )BCrd   ro   s     @@r   test_DDM_addrw   }   s    beWr!ug+AbeWr!ug+AbeWr!ug+A	r!ug1w	,Bq5AEE!H!!!!!!
<?@
9'(
9'(
=.)
=.)r   c                  b  ^^^ [        [        S5      /[        S5      //S[        5      m[        [        S5      /[        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      n[        [        S5      /[        S5      //S[        5      m[        [        S5      //S[        5      mTU -
  TR                  U 5      s=:X  a  U:X  d   e   e[	        [
        U4S	 j5        [	        [
        U4S
 j5        [	        [        UU4S j5        [	        [        UU4S j5        [	        [        UU4S j5        [	        [        UU4S j5        [	        [        UU4S j5        [	        [        UU4S j5        [	        [        UU4S j5        [	        [        UU4S j5        g )Nr   r   rR   r   r   r   rb   c                      > T [        S5      -
  $ rg   rh   rc   s   r   r   test_DDM_sub.<locals>.<lambda>   ri   r   c                      > [        S5      T -
  $ rg   rh   rc   s   r   r   r{      rk   r   c                     > T T-
  $ rm   r   rd   Ds   r   r   r{      	    Qr   c                     > TT -
  $ rm   r   r~   s   r   r   r{      r   r   c                  &   > T R                  T5      $ rm   subr~   s   r   r   r{          qr   c                  &   > TR                  T 5      $ rm   r   r~   s   r   r   r{      r   r   c                     > T T-
  $ rm   r   rn   s   r   r   r{      rp   r   c                     > TT -
  $ rm   r   rn   s   r   r   r{      rr   r   c                  &   > T R                  T5      $ rm   r   rn   s   r   r   r{      s    !%%)r   c                  &   > TR                  T 5      $ rm   r   rn   s   r   r   r{      s    "&&)r   )r   r   r   r   r   rt   r   r
   )ru   rv   rd   ro   r   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                  $   [        [        S5      /[        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      nU * U R                  5       s=:X  a  U:X  d   e   eU* UR                  5       s=:X  a  U :X  d   e   eg )Nr   r   rR   r+   ry   )r   r   neg)rd   Ans     r   test_DDM_negr      s    beWr!ug+A	r"vhB!62	.B2B3"&&(ar   c                    ^ [        [        S5      //S[        5      m[        [        S5      //S[        5      n T[        S5      -  U :X  d   e[        S5      T-  U :X  d   e[        [        U4S j5        [        [        U4S j5        g )Nr   rb   r   c                     > S//T -  $ rg   r   rc   s   r   r   test_DDM_mul.<locals>.<lambda>   s    seair   c                     > T S//-  $ rg   r   rc   s   r   r   r      s    aA3%ir   )r   r   r   rt   )A2rd   s    @r   test_DDM_mulr      sm    beWIvr"A	r!ugY	#Br!u9??a519??
9'(
9'(r   c                    ^^	^
^^ [        [        S5      /[        S5      //S[        5      m[        [        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S	[        5      n[        [        S
5      //S[        5      nTU -  TR                  U 5      s=:X  a  U:X  d   e   eU T-  U R                  T5      s=:X  a  U:X  d   e   e[        [        U4S j5        [        [        U4S j5        [        [        S5      [        S5      //S[
        5      m	[        [        UU	4S j5        [        [        UU	4S j5        [        [        S5      //S[        5      m
TT
-  TR                  T
5      s=:X  a  T:X  d   e   e[        [        UU
4S j5        [        [        UU
4S j5        [        / S[        5      n[        / /S-  S[        5      m[        / /S-  S[        5      n[        / S[        5      m[        S/S-  /S-  S[        5      n[        S/S-  /S-  S[        5      n[        / S[        5      nX5-  UR                  U5      s=:X  a  T:X  d   e   eXT-  UR                  U5      s=:X  a  T:X  d   e   eXs-  UR                  U5      s=:X  a  U:X  d   e   eXG-  UR                  U5      s=:X  a  U:X  d   e   eXw-  UR                  U5      s=:X  a  U:X  d   e   eXC-  UR                  U5      s=:X  a  U:X  d   e   e[        [        UU4S j5        [        [        UU4S j5        g )Nr   r   rR   r   r   r9   r`      r      rb   c                     > T S-  $ rg   r   rc   s   r   r   !test_DDM_matmul.<locals>.<lambda>   s	    a!er   c                     > T SS//-  $ )Nr   r   r   rc   s   r   r   r      s    aAq6(lr   c                     > T T-  $ rm   r   rd   Bqs   r   r   r      rp   r   c                     > TT -  $ rm   r   r   s   r   r   r      rr   r   c                     > TT -  $ rm   r   rd   rv   s   r   r   r      r   r   c                  &   > TR                  T 5      $ rm   matmulr   s   r   r   r      s    !r   r   r   )r   r   r   )r   r   )r   r   r   )r   r   )r   r   rX   c                     > T T-  $ rm   r   Z05Z40s   r   r   r      s	    sr   c                  &   > T R                  T5      $ rm   r   r   s   r   r   r      s    Cr   )r   r   r   r   rt   r   r
   r   )ru   ABBAZ04Z50Z45Z54Z00rd   r   rv   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                     [        [        S5      [        S5      [        S5      //S[        5      n [        [        S5      [        S5      //S[        5      n[        [        S5      //S	[        5      nU R                  U5      nUR                  S
:X  d   eUR                  [        :X  d   eU[        [        S5      [        S5      [        S5      [        S5      [        S5      //S
[        5      :X  d   eU R                  X5      nUR                  S:X  d   eUR                  [        :X  d   eU[        [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      //S[        5      :X  d   eg )Nr   r   r   r   r   r   r   r9   r`   rb   )r   r   )r   r`   )r   r   hstackr   r   rd   ru   rv   Ahs       r   test_DDM_hstackr      s/   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	
!B88v99??r!ubeRUBqE2a5"Q%@A62NNNNr   c                      [        [        S5      /[        S5      /[        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      n[        [        S5      //S	[        5      nU R                  U5      nUR                  S
:X  d   eUR                  [        :X  d   eU[        [        S5      /[        S5      /[        S5      /[        S5      /[        S5      //S
[        5      :X  d   eU R                  X5      nUR                  S:X  d   eUR                  [        :X  d   eU[        [        S5      /[        S5      /[        S5      /[        S5      /[        S5      /[        S5      //S[        5      :X  d   eg )Nr   r   r   r   r   r   r   rR   r`   rb   )r   r   )r`   r   )r   r   vstackr   r   r   s       r   test_DDM_vstackr      sE   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	
!B88v99??r!ug1wA"Q%2a5'BqE7KVUWXXXXr   c                      [        [        S5      [        S5      [        S5      //S[        5      n [        [        S5      [        S5      [        S5      //S[        5      nU R                  S [        5      U:X  d   eg )Nr   r   r   r   r   r`   c                     SU -  $ )Nr   r   )xs    r   r   $test_DDM_applyfunc.<locals>.<lambda>   s    1r   )r   r   	applyfuncrd   ru   s     r   test_DDM_applyfuncr      sc    beRUBqE"#VR0AbeRUBqE"#VR0A;;}b)Q...r   c                  D   [        / S[        5      n U R                  5       U / 4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nSS/nU R                  5       X4:X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      n [        [        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      //S[        5      nSS/nU R                  5       X4:X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      n [        [        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      //S[        5      nSS/nU R                  5       X4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      /[        S5      [        S5      //S
[        5      n [        [        S5      [        S5      /[        S5      [        S5      /[        S5      [        S5      //S
[        5      nSS/nU R                  5       X4:X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      n [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      nSS/nU R                  5       X4:X  d   eg )Nr   r   r   r   r   r   r   r   r+   r   r   )r   r   rref)rd   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|###beRUBqE"RUBqE2a5$9:FBGA	r!ubeRV$r!ubeRU&;<fb	IBVF668|###beRUBqE"RUBqE2a5$9:FBGA	r!ubeRV$r!ubeRU&;<fb	IBVF668|###beRU^beRU^beRU^<fbIA	r!ubenr!ubenr!uben=vr	JBVF668|###beRUBqE"RUBqE2a5$9:FBGA	r!ubeRU#beRUBqE%:;VR	HBVF668|###r   c                      [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      //S[        5      nS/nU R                  5       X4:X  d   eg )Nr   r   r+   r9   )r   r   	nullspace)rd   Anull	nonpivotss      r   test_DDM_nullspacer     sh    beRU^beRU^,fb9A"R&"Q%!62.EI;;=U....r   c                      [        [        S5      [        S5      //S[        5      n U R                  5       [         R                  " S[        5      :X  d   eg )Nr   r   r9   rb   )r   r   
particularr?   rc   s    r   test_DDM_particularr   &  s>    beRU^fb)A<<>SYYvr2222r   c            	      (  ^  [        / S[        5      m T R                  5       [        S5      :X  d   e[        [        S5      //S[        5      m T R                  5       [        S5      :X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m T R                  5       [        S5      :X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //S
[        5      m T R                  5       [        S5      :X  d   e[        [        SS5      [        SS5      /[        SS5      [        SS5      //S[        5      m T R                  5       [        SS5      :X  d   e[        [        S5      /[        S5      //S[        5      m [	        [
        U 4S j5        [        / S[        5      m [	        [
        U 4S j5        g )NrX   r   r   rb   r   r   r   ry   r   rL   r   r+      rR   c                  $   > T R                  5       $ rm   detrc   s   r   r   test_DDM_det.<locals>.<lambda>B      r   r   r   c                  $   > T R                  5       $ rm   r   rc   s   r   r   r   F  r   r   )r   r   r   r   r   r   rc   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                    ^ [        [        SS5      [        SS5      /[        SS5      [        SS5      //S[        5      m[        [        SS5      [        SS5      /[        SS5      [        SS5      //S[        5      n TR                  5       U :X  d   e[        [        S5      [        S5      //S[        5      m[        [        U4S	 j5        [        [        S5      //S
[
        5      m[        [        U4S j5        [        / S[        5      mTR                  5       T:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        U4S j5        g )Nr   r   r   r   r   ry   r+   r9   c                  $   > T R                  5       $ rm   invrc   s   r   r   test_DDM_inv.<locals>.<lambda>O  r   r   rb   c                  $   > T R                  5       $ rm   r   rc   s   r   r   r   R  s    !%%'r   rX   c                  $   > T R                  5       $ rm   r   rc   s   r   r   r   X  s    quuwr   )r   r   r   r   r   r   r
   r	   )Ainvrd   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                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       u  pnU[        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eU[        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eU/ :X  d   e/ SQ/ S	Q/ S
Q/ SQ/n / SQ/ SQ/ SQ/ S
Q/n/ SQ/ S	Q/ S
Q/ SQ/nS n[        U" U [        5      S[        5      n [        U" U[        5      S[        5      n[        U" U[        5      S[        5      nU R                  5       u  pnX:X  d   eX%:X  d   eU/ :X  d   eg )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           
      l    U  VVs/ s H  o" Vs/ s H
  o1" U5      PM     snPM     snn$ s  snf s  snnf rm   r   )r   domrowes       r   r   test_DDM_lu.<locals>.<lambda>e  s,    F# 5AQ 5F 5Fs   	0+00)r   r   )r   r   lu)rd   LUswapsLexpUexpto_doms          r   test_DDM_lur   [  sL   beRU^beRU^,fb9A$$&KA%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$$&KA%9999B;;r   c                  T  ^^^^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      /[        S5      //S[        5      m[        [        S5      /[        SS5      //S[        5      n TR                  T5      U :X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      mTR                  T5      U :X  d   e[        [        S5      [        S5      /[        S5      [        S5      /[        S5      [        S	5      //S
[        5      m[        [        S5      /[        S5      /[        S5      //S[        5      mTR                  T5      U :X  d   e[        [        S5      /[        S5      /[        S5      //S[        5      m[        [        UU4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      /[        S5      //S[        5      m[        [        UU4S j5        [        [        S5      [        S5      //S[        5      m[        [        S5      //S[        5      m[        [
        UU4S j5        [        [        S5      /[        S5      //S[        5      m[        [        UU4S j5        [        [        S5      /[        S5      /[        S5      //S[        5      m[        [        UU4S j5        g )Nr   r   r   r   r   rR   r   r   r`   r   r   c                  &   > T R                  T5      $ rm   lu_solverd   bs   r   r   #test_DDM_lu_solve.<locals>.<lambda>      qzz!}r   c                  &   > T R                  T5      $ rm   r   r   s   r   r   r     r   r   r9   rb   c                  &   > T R                  T5      $ rm   r   r   s   r   r   r     s    

1r   c                  &   > T R                  T5      $ rm   r   )rd   bzs   r   r   r     s    !**R.r   c                  &   > T R                  T5      $ rm   r   )rd   b3s   r   r   r     s    Br   )	r   r   r   r   r	   NotImplementedErrorr   r
   r   )r   rd   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            	      8  ^ [        / S[        5      mTR                  5       [        S5      /:X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S	5      [        S
5      //S[        5      m[        S5      [        S5      [        S5      [        S5      /n TR                  5       U :X  d   e[        [        S5      [        S5      //S[        5      m[        [        U4S j5        g )NrX   r   r   r   r   r   r`      r   	   rL   iir   r9   c                  $   > T R                  5       $ rm   )charpolyrc   s   r   r   #test_DDM_charpoly.<locals>.<lambda>  s    r   )r   r   r  r   r   )Avecrd   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            	        ^  [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //S
[        5      m T R                  SS5      [        S5      :X  d   eT R                  SS5      [        S5      :X  d   eT R                  SS5      [        S5      :X  d   e[        [        U 4S j5        g )Nr   r   r   r   r   r`   r  r   r  rL   ry   r+   c                  (   > T R                  SS5      $ )Nr   )getitemdms   r   r   "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                    ^  [         R                  " S[        5      m T R                  SSS5        T R                  SSS5        T R                  SSS5        T [         R                  " S[        5      :X  d   e[        [        U 4S j5        g )NrL   r   r   ry   r+   r   c                  *   > T R                  SSS5      $ )Nr   r   )setitemr  s   r   r   "test_DDM_setitem.<locals>.<lambda>  s    rzz!Q2r   )r   r?   r   r  rM   r   r,   r  s   @r   test_DDM_setitemr    sf    	62	BJJq!QJJq"aJJr2qB
:23r   c            	         [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //S
[        5      n U R                  [        SS5      [        SS5      5      U :X  d   eU R                  [        SS5      [        S5      5      [        S/S//S[        5      :X  d   eU R                  [        SS5      [        S5      5      [        S/S//S[        5      :X  d   eU R                  [        SS5      [        S5      5      [        [        S5      //S[        5      :X  d   eU R                  [        SS5      [        S5      5      [        S/S//S[        5      :X  d   eU R                  [        S5      [        S5      5      [        SS/SS//S[        5      :X  d   eU R                  [        S5      [        SS5      5      [        / / /S[        5      :X  d   eU R                  [        SS5      [        S5      5      [        / S[        5      :X  d   eU R                  [        SS5      [        SS5      5      [        / S[        5      :X  d   eg )Nr   r   r   r   r   r`   r  r   r  rL   r   ry   rR   rb   r+   r   rW   rV   rX   )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            	        ^ [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //S
[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      mU R                  SS/SS/5      T:X  d   eU R                  SS/SS/5      T:X  d   eU R                  / / 5      [         R                  " S[        5      :X  d   eU R                  S// 5      [         R                  " S[        5      :X  d   eU R                  / S/5      [         R                  " S[        5      :X  d   e[	        [
        U4S j5        [	        [
        U4S j5        [	        [
        U4S j5        [	        [
        U4S j5        g )Nr   r   r   r   r   r`   r  r   r  rL   r   r   ry   r+   rX   )r   r   r   c                  ,   > T R                  S/S/5      $ r%   extractdm2s   r   r   "test_DDM_extract.<locals>.<lambda>      s{{A34r   c                  ,   > T R                  S/S/5      $ r*   r  r   s   r   r   r"    r#  r   c                  ,   > T R                  S/S/5      $ )Nr  r   r  r   s   r   r   r"    s    s{{B4!5r   c                  ,   > T R                  S/S/5      $ )Nr   r  r  r   s   r   r   r"    s    s{{A35r   )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                      [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       [        S5      [        S5      [        S5      [        S5      /:X  d   eg )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                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [         R                  " S[        5      nU R                  5       SL d   eUR                  5       SL d   eg )Nr   r   r   r9   FT)r   r   r?   is_zero_matrix)rd   Azeros     r   test_DDM_is_zero_matrixr/    sk    beRU^beRU^,fb9AIIfb!E&&&!T)))r   c            
         [        [        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      [        S
5      //S[        5      n [        [        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      [        S
5      //S[        5      nU R                  5       SL d   eUR                  5       SL d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      //S[        5      n [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      //S[        5      nU R                  5       SL d   eUR                  5       SL d   eg Nr   r   r   r   r   r   r`   r  r   r  r>   TF)r   r   
   )r   r   is_upperr   s     r   test_DDM_is_upperr4    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            
         [        [        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      [        S
5      //S[        5      R                  5       n [        [        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      [        S
5      //S[        5      R                  5       nU R                  5       SL d   eUR                  5       SL d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      //S[        5      R                  5       n [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      //S[        5      R                  5       nU R                  5       SL d   eUR                  5       SL d   eg r1  )r   r   rY   is_lowerr   s     r   test_DDM_is_lowerr7    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-   r2   r7   r<   rB   rF   rP   rT   r^   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r(  r+  r/  r4  r7  r   r   r   <module>r=     s    ' ,  ( 

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