+
    ig4                     v   R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
HtHt ^ RIHt ^ RIHt ^ RIHtHtHt R	 tR
 tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R t'R t(R t)R t*R t+R  t,R! t-R" t.R# t/R$ t0R% t1R& t2R' t3R( t4R) t5R* t6R+ t7R, t8R- t9R. t:R/ t;R0 t<R1 t=R2 t>R3# )4z5
Tests for the basic functionality of the SDM class.
)product)S)GROUND_TYPES)raises)QQZZEXRAW)SDM)DDM)DMBadInputErrorDMDomainErrorDMShapeErrorc                     \        ^ ^ \        ^4      //R\        4      p V P                  \        8X  g   Q hV P                  R8X  g   Q h\	        V 4      ^ ^ \        ^4      //8X  g   Q h\        \        R 4       \        \        R 4       R# )    c                  >    \        ^^\        ^ 4      //R\        4      # )      r   r	   r        a/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/polys/matrices/tests/test_sdm.py<lambda>test_SDM.<locals>.<lambda>       CAbe9vr$Br   c                  >    \        ^ ^\        ^ 4      //R\        4      # r   r   r   r   r   r   r   r      r   r   Nr   )r	   r   domainshapedictr   r   As    r   test_SDMr"      sr    Q"Q%yM62&A88r>>77f7q!BqEm###
?BC
?BCr   c            	          \        ^ ^ \        ^4      /^^\        ^4      //R\        4      p \        V 4      R8X  g   Q h\        R8X  d   \	        V 4      R8X  g   Q hR# \	        V 4      R8X  g   Q hR# )r   z{0: {0: 1}, 1: {1: 1}}gmpyz1SDM({0: {0: mpz(1)}, 1: {1: mpz(1)}}, (2, 2), ZZ)z'SDM({0: {0: 1}, 1: {1: 1}}, (2, 2), ZZ)Nr   )r	   r   strr   repr)sdms    r   test_DDM_strr(      sj    
q!BqEAqAi(&"
5Cs8////vCyOOOOCyEEEEr   c                      \        ^ ^ \        ^4      //R\        4      p V P                  / R\        4      pV\        / R\        4      8X  g   Q hR# r   Nr   )r	   r   newr!   Bs     r   test_SDM_newr.   %   sE    Q"Q%yM62&A	b&"AB####r   c                      \        ^ ^ \        ^4      //R\        4      p V P                  4       pW8X  g   Q h\        ^4      V ^ ,          ^ &   W8w  g   Q hR# r*   )r	   r   copyr,   s     r   test_SDM_copyr1   +   sJ    Q"Q%yM62&A	A6M6eAaDG6M6r   c            
      :   \         P                  ! \        ^ 4      \        ^4      .\        ^4      \        ^ 4      ..R\        4      p V \        ^ ^\        ^4      /^^ \        ^4      //R\        4      8X  g   Q h\        \        R 4       \        \        R 4       R# )r   c                  z    \         P                  ! \        ^ 4      .\        ^ 4      \        ^4      ..R\        4      # r   r	   	from_listr   r   r   r   r   $test_SDM_from_list.<locals>.<lambda>7   s)    CMMBqE7RUBqEN2KVUW$Xr   c                  d    \         P                  ! \        ^ 4      \        ^4      ..R\        4      # r   r4   r   r   r   r   r6   8   s     CMMBqE2a5>2BFB$Or   Nr   )r	   r5   r   r   r   r    s    r   test_SDM_from_listr8   3   sw    1r!u~1r!u~6CAQ"Q%y!Qr!uI.;;;;
?XY
?OPr   c                  h   \        ^ ^\        ^4      //R\        4      p V P                  4       \        ^ 4      \        ^4      .\        ^ 4      \        ^ 4      ..8X  g   Q h\        / R\        4      p V P                  4       . 8X  g   Q h\        / R\        4      p V P                  4       . . .8X  g   Q hR# )r   Nr   )r   r   )r   r   )r	   r   to_listr    s    r   test_SDM_to_listr;   ;   s    Q2a5zNFB'A99;BqE2a5>BqE2a5>::::BA99;"BA99;2r("""r   c                      \        ^ ^\        ^4      //R\        4      p V P                  4       \        ^ 4      \        ^4      \        ^ 4      \        ^ 4      .8X  g   Q hR# r*   )r	   r   to_list_flatr    s    r   test_SDM_to_list_flatr>   F   sJ    Q2a5zNFB'A>>1r!ubeRU;;;;r   c                      \        ^ ^\        ^4      //R\        4      p V P                  4       R\        ^4      /8X  g   Q hR# )r   Nr   r      )r	   r   to_dokr    s    r   test_SDM_to_dokrC   K   s8    Q2a5zNFB'A88:&"Q%(((r   c                  T   \        \        ^4      \        ^ 4      .\        ^4      \        ^ 4      ..R\        4      p \        P                  ! V 4      pVP                  \        8X  g   Q hVP
                  R8X  g   Q h\        V4      ^ ^ \        ^4      /^^ \        ^4      //8X  g   Q hR# )rA   Nr   )r
   r   r	   from_ddmr   r   r   r,   s     r   test_SDM_from_ddmrF   P   s    beRU^beRU^,fb9AQA88r>>77f7q!BqEAqAi0000r   c                      \        ^ ^\        ^4      //R\        4      p \        \        ^ 4      \        ^4      .\        ^ 4      \        ^ 4      ..R\        4      pV P                  4       V8X  g   Q hR# r*   )r	   r   r
   to_ddmr,   s     r   test_SDM_to_ddmrI   X   sY    Q2a5zNFB'AbeRU^beRU^,fb9A88:??r   c                  p    \        ^ ^\        ^4      //R\        4      p V P                  4       V 8X  g   Q hR# r*   )r	   r   to_sdmr    s    r   test_SDM_to_sdmrL   ^   s.    Q2a5zNFB'A88:??r   c                  h  a  \        ^ ^\        ^4      //R\        4      o S P                  ^ ^ 4      \        P                  8X  g   Q hS P                  ^ ^4      \        P                  8X  g   Q hS P                  ^^ 4      \        P                  8X  g   Q hS P                  RR4      \        P                  8X  g   Q hS P                  RR4      \        P                  8X  g   Q hS P                  RR4      \        P                  8X  g   Q h\        \        V 3R l4       \        \        V 3R l4       R# )r   c                  (   < S P                  ^^ 4      # r   getitemr    s   r   r   "test_SDM_getitem.<locals>.<lambda>k       qyyAr   c                  (   < S P                  ^ ^4      # r   rP   r    s   r   r   rR   l   rS   r   Nr   )r	   r   rQ   zerooner   
IndexErrorr    s   @r   test_SDM_getitemr[   c   s    Q"Q%yM62&A99Q?bgg%%%99Q?bff$$$99Q?bgg%%%99R'''99R&&&99R'''
:./
:./r   c            
        a  \        ^ ^\        ^4      //R\        4      o S P                  ^ ^ \        ^4      4       S \        ^ ^ \        ^4      ^\        ^4      //R\        4      8X  g   Q hS P                  ^^ \        ^4      4       S \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      //R\        4      8X  g   Q hS P                  ^^ \        ^ 4      4       S \        ^ ^ \        ^4      ^\        ^4      //R\        4      8X  g   Q hS P                  ^^ \        ^ 4      4       S \        ^ ^ \        ^4      ^\        ^4      //R\        4      8X  g   Q hS P                  ^ ^ \        ^ 4      4       S \        ^ ^\        ^4      //R\        4      8X  g   Q hS P                  ^ ^ \        ^ 4      4       S \        ^ ^\        ^4      //R\        4      8X  g   Q h\        \        V 3R l4       \        \        V 3R l4       R# )r   c                  <   < S P                  ^^ \        ^4      4      # rO   setitemr   r    s   r   r   "test_SDM_setitem.<locals>.<lambda>       qyyAr!u5r   c                  <   < S P                  ^ ^\        ^4      4      # rU   r^   r    s   r   r   r`      ra   r   Nr   )r	   r   r_   r   rZ   r    s   @r   test_SDM_setitemrc   o   s   Q"Q%yM62&AIIaBqEQ"Q%2a5)*FB7777IIaBqEQ"Q%2a5)1a1Y7DDDDIIaBqEQ"Q%2a5)*FB7777IIaBqEQ"Q%2a5)*FB7777IIaBqEQ"Q%yM62....IIaBqEQ"Q%yM62....
:56
:56r   c                     \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p V P                  \        ^^4      \        ^^4      4      pV\        ^ ^ \        ^4      //R\        4      8X  g   Q hR# )r   Nr   rA   rA   )r	   r   extract_sliceslicer,   s     r   test_SDM_extract_slicerh      sz    Q"Q%2a5!1a1qA%78&"EA	aU1a[1AQ"Q%yM62....r   c                    a \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      oSP                  ^.^.4      p V \        ^ ^ \        ^4      //R\        4      8X  g   Q hSP                  ^^ .^^ .4      p V \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      8X  g   Q hSP                  ^^.^^.4      p V \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      8X  g   Q hSP                  R.R.4      p V \        ^ ^ \        ^4      //R\        4      8X  g   Q h\        / R\        4      oSP                  . R	O^ ^ .4      p V \        / R
\        4      8X  g   Q h\        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      oSP                  . . 4      \         P                  ! R\        4      8X  g   Q hSP                  ^.. 4      \         P                  ! R\        4      8X  g   Q hSP                  . ^.4      \         P                  ! R\        4      8X  g   Q h\	        \
        V3R l4       \	        \
        V3R l4       \	        \
        V3R l4       \	        \
        V3R l4       R# )r   c                  ,   < S P                  ^.^ .4      # rO   extractr    s   r   r   "test_SDM_extract.<locals>.<lambda>       qyy!qc2r   c                  ,   < S P                  ^ .^.4      # rU   rk   r    s   r   r   rm      rn   r   c                  ,   < S P                  R.^ .4      # )   rk   r    s   r   r   rm      s    qyy"s3r   c                  ,   < S P                  ^ .R.4      # )r   rr   rk   r    s   r   r   rm      s    qyy!rd3r   Nr   re   rW   )r   rA   r   rq   r   )r   r   )rA   r   r@   )r	   r   rl   zerosr   rZ   r-   r!   s    @r   test_SDM_extractrw      sl   Q"Q%2a5!1a1qA%78&"EA			1#sAQ"Q%yM62....			1a&1a&!AQ"Q%2a5)1a1qA-?@&"MMMM			1a&1a&!AQ"Q%2a5)1a1qA-?@&"MMMM			2$AQ"Q%yM62....BA			)aV$AB####Q"Q%2a5!1a1qA%78&"EA99R		&" 555599aS"62!666699R!62!6666
:23
:23
:34
:34r   c                      \         P                  ! R\        4      p V P                  \        8X  g   Q hV P                  R8X  g   Q h\        V 4      / 8X  g   Q hR# r   Nr   )r	   ru   r   r   r   r   r    s    r   test_SDM_zerosrz      sD    		&"A88r>>77f7b==r   c                      \         P                  ! R\        4      p V P                  \        8X  g   Q hV P                  R8X  g   Q h\        V 4      ^ ^ \        ^4      ^\        ^4      //8X  g   Q hR# )rA   NrA   r   )r	   onesr   r   r   r   r    s    r   test_SDM_onesr~      s\    A88r>>77f7q!BqE1RU+,,,,r   c                      \         P                  ! R\        4      p V P                  \        8X  g   Q hV P                  R8X  g   Q h\        V 4      ^ ^ \        ^4      /^^\        ^4      //8X  g   Q hR# ry   )r	   eyer   r   r   r   r    s    r   test_SDM_eyer      s_    A88r>>77f7q!BqEAqAi0000r   c            
          \         P                  ! \        ^4      \        ^4      .\        R4      p V \        ^ ^ \        ^4      /^^\        ^4      //R\        4      8X  g   Q hR# )rA   Nr   rq   )r	   diagr   r    s    r   test_SDM_diagr      sP    "Q%AV,AQ"Q%y!Qr!uI.;;;;r   c                     \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      pV P                  4       V8X  g   Q h\        ^ ^\        ^4      //R\        4      p \        ^^ \        ^4      //R\        4      pV P                  4       V8X  g   Q h\        ^ ^\        ^4      //R\        4      p \        ^^ \        ^4      //R\        4      pV P                  4       V8X  g   Q hR# )r   Nr   r|   r   rA   )r	   r   	transposer,   s     r   test_SDM_transposer      s   Q"Q%2a5!1a1qA%78&"EAQ"Q%2a5!1a1qA%78&"EA;;=AQ"Q%yM62&AQ"Q%yM62&A;;=AQ"Q%yM62&AQ"Q%yM62&A;;=Ar   c                  4  a \        ^ ^ \        ^4      //R\        4      o\        ^ ^ \        ^4      //R\        4      p S\        ^4      ,          V 8X  g   Q h\        ^4      S,          V 8X  g   Q h\        \        V3R l4       \        \        V3R l4       R# )r   c                  *   < S \        ^^4      ,          # rA   r   r    s   r   r   test_SDM_mul.<locals>.<lambda>   s    a1ajr   c                  *   < \        ^^4      S ,          # r   r   r    s   r   r   r      s    bAhqjr   Nr   )r	   r   r   	TypeErrorrv   s    @r   test_SDM_mulr      su    Q"Q%yM62&AQ"Q%yM62&ARU7a<<a57a<<
9()
9()r   c            	      
  aaa \        ^ ^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      /^^ \        ^4      //R\        4      o\        ^ ^ \        ^4      //R\        4      pV P                  S4      V8X  g   Q hSP                  V 4      V8X  g   Q hV P                  \        4      o\        ^ ^ \        ^4      //R\        4      o\        \        VV3R l4       \        \        VV3R l4       R# )r   c                  &   < S P                  S4      # Nmul_elementwise)Aqr-   s   r   r   *test_SDM_mul_elementwise.<locals>.<lambda>   s    ""4"4Q"7r   c                  &   < S P                  S4      # r   r   )A1r-   s   r   r   r      s    !3!3A!6r   Nr   re   )r	   r   r   
convert_tor   r   r   r   )r!   Cr   r   r-   s     @@@r   test_SDM_mul_elementwiser      s    Q"Q%2a5!"FB/AQ"Q%y!Qr!uI&3AQ"Q%yM62&AQ1$$$Q1$$$	
b	B	a2a5	]FB	'B
=78
<67r   c                  h  aaaa \        ^ ^ \        ^4      //R\        4      o\        ^ ^ \        ^4      //R\        4      p SP                  S4      SS,          u;8X  d	   V 8X  g   Q h Q h\        ^ ^ \        ^4      //R\        4      o\	        \
        VV3R l4       \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      o\        ^ ^ \        ^4      ^\        ^
4      /^^ \        ^4      ^\        ^4      //R\        4      p SP                  S4      SS,          u;8X  d	   V 8X  g   Q h Q h\        ^ ^ \        ^4      //R\        4      o\        ^ ^ \        ^4      //R\        4      p\        ^ ^ \        ^4      //R\        4      o\        ^ ^ \        ^4      //R\        4      p\        ^ ^ \        ^4      //R\        4      oVP                  S4      V8X  g   Q hSP                  V4      S8X  g   Q h\	        \        VV3R l4       \        ^ ^ \        R4      ^\        ^4      //R	\        4      o\        ^ ^ \        R4      /^^ \        R4      //R
\        4      p SP                  V 4      SV ,          u;8X  d   \        / R\        4      8X  g   Q h Q hR# )r   c                  &   < S P                  S4      # r   matmul)r!   r   s   r   r   !test_SDM_matmul.<locals>.<lambda>   s    !((1+r   c                  &   < SP                  S 4      # r   r   )A22A23s   r   r   r      s    Cr   Nr   rt   r   )rq   rq   rW   r|   r   re   )r	   r   r   r   r   r   r   )r-   A32A33r!   r   r   r   s      @@@@r   test_SDM_matmulr      sL   Q"Q%yM62&AQ"Q%yM62&A88A;!A#""""""Q"Q%yM62&A
=-.Q"Q%2a5!1a1qA%78&"EAQ"Q%2b6"AqB2b6&:;VRHA88A;!A#""""""
q!BqEmVR
(C
q!BqEmVR
(C
q!BqEmVR
(C
q!BqEmVR
(C
q!BqEmVR
(C::c?c!!!::c?c!!!
 <01QBrFAr!u%&3AQBrFQBrF,fb9A88A;!A#4R!444444r   c                     R  p \         P                  \         P                  \         P                  \         P                  \         P
                  .p\        V.^,          !   F  w  r#rEV ! ^ ^ V^V/^^ V^V//4      pV ! ^ ^ W",          W4,          ,           ^W#,          W5,          ,           /^^ WB,          WT,          ,           ^WC,          WU,          ,           //4      pWf,          V8X  d   K  Q h	  R# )c                     / pV P                  4        F@  w  r#VP                  4        UUu/ uF  w  rEV'       g   K  WEbK  	  pppV'       g   K<  W1V&   KB  	  \        VR\        4      # u uppi )r   r   )itemsr	   r   )dresultirowjvals   &     r   dmtest_matmul_exraw.<locals>.dm  s]    ggiFA'*yy{:{VQc515{C:sq	   665)) ;s
   A(A(N)r   NegativeInfinityNegativeOneZeroOneInfinityr   )r   valuesabcr   AdAd2s           r   test_matmul_exrawr      s    *   !--

KFxz*
aQq!AJAa1:./!aac	1QS13Y/AacACiAC!#I3NOPw#~~ +r   c                    a \        ^ ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      o\        ^ ^ \        ^4      /^^ \        R4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      ^\        ^4      /^^\        ^4      //R\        4      pSP                  V 4      V P                  S4      u;8X  d'   SV ,           u;8X  d   V S,           u;8X  d	   V8X  g   Q h Q h\        ^ ^\        ^4      //R\        4      o\        ^ ^ \        ^4      /^^ \        R4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      ^\        ^4      /^^ \        R4      ^\        ^4      //R\        4      pSP                  V 4      V P                  S4      u;8X  d'   SV ,           u;8X  d   V S,           u;8X  d	   V8X  g   Q h Q h\        \        V3R l4       R# )r   c                     < S . ,           # r   r   r    s   r   r   test_SDM_add.<locals>.<lambda>  	    a"fr   Nr   rV   )r	   r   addr   r   r-   r   r!   s     @r   test_SDM_addr     s   Q"Q%y!Qr!ua1./<AQ"Q%y!Qr"vqA/0&"=AQ"Q%2a5!1a1Y/<A558quuQx61q56AE6Q66666Q"Q%yM62&AQ"Q%y!Qr"vqA/0&"=AQ"Q%2a5!1a2"Q%%8962FA558quuQx61q56AE6Q66666
9n%r   c                    a \        ^ ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      o\        ^ ^ \        ^4      /^^ \        R4      ^\        ^4      //R\        4      p \        ^ ^ \        R4      ^\        ^4      /^^ \        ^4      //R\        4      pSP                  V 4      SV ,
          u;8X  d	   V8X  g   Q h Q h\        \        V3R l4       R# )r   c                     < S . ,
          # r   r   r    s   r   r   test_SDM_sub.<locals>.<lambda>$  r   r   Nr   rV   rW   )r	   r   subr   r   r   s     @r   test_SDM_subr     s    Q"Q%y!Qr!ua1./<AQ"Q%y!Qr"vqA/0&"=AQ"R&!BqE"AqAi0&"=A558q1u!!!!!!
9n%r   c                  $   \        ^ ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^\        R4      /^^ \        R4      ^\        R4      //R\        4      pV P                  4       V ) u;8X  d	   V8X  g   Q h Q hR# )r   Nr   rW   rV   rr   )r	   r   negr,   s     r   test_SDM_negr   '  s    Q"Q%y!Qr!ua1./<AQ"R&z1a2"R&12FB?A557qbAr   c                     \        ^ ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      pV P                  \        4      pW!8X  g   Q hVP                  \        8X  g   Q hV P                  \        4      pW08X  g   Q hVP                  \        8X  g   Q hR# r*   )r	   r   r   r   r   )r!   r-   r   Ds       r   test_SDM_convert_tor   -  s    Q"Q%y!Qr!ua1./<AQ"Q%y!Qr!ua1./<A	RA6M688r>>	RA6M688r>>r   c            	         \        ^ ^\        ^4      //R\        4      p \        ^^\        ^4      //R\        4      p\        ^ ^\        ^4      ^\        ^4      //R\        4      p\        ^ ^\        ^4      /^^\        ^4      //R\        4      p\         P                  ! V 4      V 8X  g   Q h\         P                  ! W 4      V8X  g   Q h\         P                  ! W4      V8X  g   Q hR# )r   Nr   )r      )r	   r   hstackr!   r-   AAABs       r   test_SDM_hstackr   9  s    Q"Q%yM62&AQ"Q%yM62&A	a2a5!BqE"#VR	0B	a2a5	1a1Y'	4B::a=A::ar!!!::ar!!!r   c            	         \        ^ ^\        ^4      //R\        4      p \        ^^\        ^4      //R\        4      p\        ^ ^\        ^4      /^^\        ^4      //R\        4      p\        ^ ^\        ^4      /^^\        ^4      //R\        4      p\         P                  ! V 4      V 8X  g   Q h\         P                  ! W 4      V8X  g   Q h\         P                  ! W4      V8X  g   Q hR# )r   Nr   )r   r   )r	   r   vstackr   s       r   test_SDM_vstackr   C  s    Q"Q%yM62&AQ"Q%yM62&A	a2a5	1a1Y'	4B	a2a5	1a1Y'	4B::a=A::ar!!!::ar!!!r   c                      \        ^ ^\        ^4      //R\        4      p \        ^ ^\        ^4      //R\        4      pV P                  R \        4      V8X  g   Q hR# )r   c                     ^V ,          # rO   r   )xs   &r   r   $test_SDM_applyfunc.<locals>.<lambda>P  s    1r   Nr   )r	   r   	applyfuncr,   s     r   test_SDM_applyfuncr   M  sO    Q"Q%yM62&AQ"Q%yM62&A;;}b)Q...r   c                  <   \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        R4      ^\        ^4      /^^ \        ^^4      ^\        R^4      //R\        4      pV P                  4       V8X  g   Q hR# )r   Nr   rV   rW   )r	   r   invr,   s     r   test_SDM_invr   S  s    Q"Q%2a5!1a1qA%78&"EAQ"R&!BqE"AqAq1RAY&?@&"MA557a<<r   c                      \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p V P                  4       \        R4      8X  g   Q hR# )r   Nr   rV   )r	   r   detr    s    r   test_SDM_detr   Y  sS    Q"Q%2a5!1a1qA%78&"EA557bfr   c                  0   \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      /^^ \        ^4      ^\        ^4      //R\        4      pV P                  4       ^ ,          V8X  g   Q hR# r*   )r	   r   lu)r!   Ls     r   test_SDM_lur   ^  s    Q"Q%2a5!1a1qA%78&"EAQ"Q%y!Qr!ua1./<A
 446!9>>r   c                  |   \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      /^^ \        ^4      //R\        4      p\        ^^ \        ^^4      //R\        4      pV P                  V4      V8X  g   Q hV P                  V4      V8X  g   Q hR# )r   Nr   r   )r	   r   r   lu_solve)r!   r   r   s      r   test_SDM_lu_solver   h  s    Q"Q%2a5!1a1qA%78&"EAQ"Q%y!Qr!uI&3AQ"Q(|fb)A88A;!::a=Ar   c                      \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p V P                  4       \        ^4      \        R4      \        R4      .8X  g   Q hR# )r   Nr   rV   )r	   r   charpolyr    s    r   test_SDM_charpolyr   p  sb    Q"Q%2a5!1a1qA%78&"EA::<BqE2b62b62222r   c            
          \        ^ ^ \        ^4      ^\        ^4      //R\        4      p V P                  4       ^ ,          \        ^ ^ \        R4      ^\        ^4      //R\        4      8X  g   Q hR# )r   Nr   rW   r|   )r	   r   	nullspacer    s    r   test_SDM_nullspacer   u  s^    Q"Q%2a5!"FB/A;;=sAqB2a5&9#:FBGGGGr   c                  l   \        ^ ^ \        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        ^4      /^^\        ^4      //R\        4      pV P                  4       V^ ^.38X  g   Q h\        ^ ^ \        ^4      ^\        ^4      ^\        ^4      /^^ \        ^4      ^\        ^4      //R\        4      p \        ^ ^ \        ^^4      ^\        ^^4      /^^\        ^^4      ^\        ^^4      //R\        4      pV P                  4       V^ ^.38X  g   Q hR# )r   Nr   r   )r	   r   rrefr   )r!   A_rrefs     r   test_SDM_rrefr   {  s2    	Q"Q%2a5!"Q%2a5!#$*B	0A!Qr!uIq!BqE+VR8F668A''''QBqE1beQ1.BqEQ1.017	=A!aAa!R!W-aAa!R!W-/06<F668A''''r   c                      \        ^ ^ \        ^4      //R\        4      p \         P                  ! R\        4      pV P                  4       V8X  g   Q hR# )r   Nr   r|   )r	   r   ru   
particular)r!   Aparts     r   test_SDM_particularr     s@    Q"Q%yM62&AIIfb!E<<>U"""r   c                      \        ^ ^ \        ^4      //R\        4      p \         P                  ! R\        4      pV P                  4       RJ g   Q hVP                  4       RJ g   Q hR# )r   FTNr   r|   )r	   r   ru   is_zero_matrix)r!   Azeros     r   test_SDM_is_zero_matrixr    sZ    QBqE
OVR(AIIfb!E&&&!T)))r   c                  \   \        ^ ^ \        ^4      ^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^	4      //R\        4      p \        ^ ^ \        ^4      ^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^4      ^\        ^	4      //R\        4      pV P                  4       RJ g   Q hVP                  4       RJ g   Q hR# r   TFN)rq   r   )r	   r   is_upperr,   s     r   test_SDM_is_upperr    s   QBqE1beQ1q"Q%81beQ1q"Q%8!"Q1q"Q%$8:;A2	GA 	QBqE1beQ1q"Q%81beQ1q"Q%81beQ1q"Q%8:;A2	GA ::<4::<5   r   c                     \        ^ ^ \        ^4      ^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^	4      //R\        4      P                  4       p \        ^ ^ \        ^4      ^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^4      ^\        ^4      /^^\        ^4      ^\        ^4      ^\        ^	4      //R\        4      P                  4       pV P                  4       RJ g   Q hVP                  4       RJ g   Q hR# r  )r	   r   r   is_lowerr,   s     r   test_SDM_is_lowerr    s(   QBqE1beQ1q"Q%81beQ1q"Q%8!"Q1q"Q%$8:;A2	 ik  	QBqE1beQ1q"Q%81beQ1q"Q%81beQ1q"Q%8:;A2	 ik  ::<4::<5   r   N)?__doc__	itertoolsr   sympy.core.singletonr   sympy.external.gmpyr   sympy.testing.pytestr   sympy.polys.domainsr   r   r   sympy.polys.matrices.sdmr	   sympy.polys.matrices.ddmr
   sympy.polys.matrices.exceptionsr   r   r   r"   r(   r.   r1   r8   r;   r>   rC   rF   rI   rL   r[   rc   rh   rw   rz   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   r   <module>r     s    " , ' - - ( (; ;DF$Q#<
)
1
	07(/54-1<
*85<"&&	""/
3
H(#*!
!r   