
    \hg4                     t   S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
JrJr  SSKJr  SSKJr  SS	K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% r0S& r1S' r2S( r3S) r4S* r5S+ r6S, r7S- r8S. r9S/ r:S0 r;S1 r<S2 r=S3 r>g4)5z5
Tests for the basic functionality of the SDM class.
    )product)S)GROUND_TYPES)raises)QQZZEXRAW)SDM)DDM)DMBadInputErrorDMDomainErrorDMShapeErrorc                     [        SS[        S5      00S[        5      n U R                  [        :X  d   eU R                  S:X  d   e[	        U 5      SS[        S5      00:X  d   e[        [        S 5        [        [        S 5        g )Nr         r   c                  >    [        SS[        S5      00S[        5      $ )N   r   r   r   r
   r        [/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/tests/test_sdm.py<lambda>test_SDM.<locals>.<lambda>       CAbe9vr$Br   c                  >    [        SS[        S5      00S[        5      $ )Nr   r   r   r   r   r   r   r   r      r   r   )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                      [        S[        S5      0S[        S5      0S.S[        5      n [        U 5      S:X  d   e[        S:X  a  [	        U 5      S:X  d   eg [	        U 5      S:X  d   eg )	Nr   r   r   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))r
   r   strr   repr)sdms    r   test_DDM_strr)      sf    
!BqEqAi(&"
5Cs8////vCyOOOOCyEEEEr   c                      [        SS[        S5      00S[        5      n U R                  0 S[        5      nU[        0 S[        5      :X  d   eg Nr   r   r   )r
   r   newr!   Bs     r   test_SDM_newr/   %   sE    Q"Q%yM62&A	b&"AB####r   c                      [        SS[        S5      00S[        5      n U R                  5       nX:X  d   e[        S5      U S   S'   X:w  d   eg )Nr   r   r   r   )r
   r   copyr-   s     r   test_SDM_copyr2   +   sJ    Q"Q%yM62&A	A6M6eAaDG6M6r   c                  4   [         R                  " [        S5      [        S5      /[        S5      [        S5      //S[        5      n U [        S[        S5      0S[        S5      0S.S[        5      :X  d   e[        [        S 5        [        [        S 5        g )Nr   r   r   r$   c                  z    [         R                  " [        S5      /[        S5      [        S5      //S[        5      $ r+   r
   	from_listr   r   r   r   r   $test_SDM_from_list.<locals>.<lambda>7   s)    CMMBqE7RUBqEN2KVUW$Xr   c                  d    [         R                  " [        S5      [        S5      //S[        5      $ r+   r5   r   r   r   r   r7   8   s     CMMBqE2a5>2BFB$Or   )r
   r6   r   r   r   r    s    r   test_SDM_from_listr9   3   ss    1r!u~1r!u~6CA"Q%yQr!uI.;;;;
?XY
?OPr   c                  `   [        SS[        S5      00S[        5      n U R                  5       [        S5      [        S5      /[        S5      [        S5      //:X  d   e[        0 S[        5      n U R                  5       / :X  d   e[        0 S[        5      n U R                  5       / / /:X  d   eg )Nr   r   r   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                      [        SS[        S5      00S[        5      n U R                  5       [        S5      [        S5      [        S5      [        S5      /:X  d   eg 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                      [        SS[        S5      00S[        5      n U R                  5       S[        S5      0:X  d   eg )Nr   r   r   r$   )r
   r   to_dokr    s    r   test_SDM_to_dokrC   K   s8    Q2a5zNFB'A88:&"Q%(((r   c                  J   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        R                  " U 5      nUR                  [        :X  d   eUR
                  S:X  d   e[        U5      S[        S5      0S[        S5      0S.:X  d   eg )Nr   r   r   r$   )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7!BqEqAi0000r   c                      [        SS[        S5      00S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  5       U:X  d   eg 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                  l    [        SS[        S5      00S[        5      n U R                  5       U :X  d   eg r+   )r
   r   to_sdmr    s    r   test_SDM_to_sdmrL   ^   s.    Q2a5zNFB'A88:??r   c                  Z  ^  [        SS[        S5      00S[        5      m T R                  SS5      [        R                  :X  d   eT R                  SS5      [        R                  :X  d   eT R                  SS5      [        R                  :X  d   eT R                  SS5      [        R                  :X  d   eT R                  SS5      [        R                  :X  d   eT R                  SS5      [        R                  :X  d   e[        [        U 4S j5        [        [        U 4S j5        g )Nr   r   r   c                  (   > T R                  SS5      $ Nr   r   getitemr    s   r   r   "test_SDM_getitem.<locals>.<lambda>k       qyyAr   c                  (   > T R                  SS5      $ Nr   r   rR   r    s   r   r   rT   l   rU   r   )r
   r   rS   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                    ^  [        SS[        S5      00S[        5      m T R                  SS[        S5      5        T [        S[        S5      [        S5      S.0S[        5      :X  d   eT R                  SS[        S5      5        T [        [        S5      [        S5      S.S[        S5      0S.S[        5      :X  d   eT R                  SS[        S5      5        T [        S[        S5      [        S5      S.0S[        5      :X  d   eT R                  SS[        S5      5        T [        S[        S5      [        S5      S.0S[        5      :X  d   eT R                  SS[        S5      5        T [        SS[        S5      00S[        5      :X  d   eT R                  SS[        S5      5        T [        SS[        S5      00S[        5      :X  d   e[        [        U 4S j5        [        [        U 4S j5        g )Nr   r   r   r$   c                  <   > T R                  SS[        S5      5      $ )Nr   r   r   setitemr   r    s   r   r   "test_SDM_setitem.<locals>.<lambda>       qyyAr!u5r   c                  <   > T R                  SS[        S5      5      $ )Nr   r   r   r^   r    s   r   r   r`      ra   r   )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%2a5)a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                     [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n U R                  [        SS5      [        SS5      5      nU[        SS[        S5      00S[        5      :X  d   eg )	Nr   r   r$         r   r   r   r   )r
   r   extract_sliceslicer-   s     r   test_SDM_extract_slicerj      sn    "Q%2a5!1A%78&"EA	aU1a[1AQ"Q%yM62....r   c                    ^ [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      mTR                  S/S/5      n U [        SS[        S5      00S[        5      :X  d   eTR                  SS/SS/5      n U [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      :X  d   eTR                  SS/SS/5      n U [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      :X  d   eTR                  S	/S	/5      n U [        SS[        S5      00S[        5      :X  d   e[        0 S[        5      mTR                  / S
QSS/5      n U [        0 S[        5      :X  d   e[        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      mTR                  / / 5      [         R                  " S[        5      :X  d   eTR                  S// 5      [         R                  " S[        5      :X  d   eT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$   re   rf   r   r   rg   rO   )r   r   r   re   r   )r   r   )r   r   c                  ,   > T R                  S/S/5      $ rQ   extractr    s   r   r   "test_SDM_extract.<locals>.<lambda>       qyy!qc2r   c                  ,   > T R                  S/S/5      $ rW   rn   r    s   r   r   rp      rq   r   c                  ,   > T R                  S/S/5      $ )Nr   rn   r    s   r   r   rp      s    qyy"s3r   c                  ,   > T R                  S/S/5      $ )Nr   rt   rn   r    s   r   r   rp      s    qyy!rd3r   )r
   r   ro   zerosr   rZ   r.   r!   s    @r   test_SDM_extractrx      s<   "Q%2a5!1A%78&"EA			1#sAQ"Q%yM62....			1a&1a&!A"Q%2a5)1A-?@&"MMMM			1a&1a&!A"Q%2a5)1A-?@&"MMMM			2$AQ"Q%yM62....BA			)aV$AB####"Q%2a5!1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                      [         R                  " S[        5      n U R                  [        :X  d   eU R                  S:X  d   e[        U 5      0 :X  d   eg Nr   )r
   rv   r   r   r   r   r    s    r   test_SDM_zerosr{      sD    		&"A88r>>77f7b==r   c                      [         R                  " S[        5      n U R                  [        :X  d   eU R                  S:X  d   e[        U 5      S[        S5      [        S5      S.0:X  d   eg )Nr   r   r   r   r$   )r
   onesr   r   r   r   r    s    r   test_SDM_onesr      sX    A88r>>77f7qBqERU+,,,,r   c                      [         R                  " S[        5      n U R                  [        :X  d   eU R                  S:X  d   e[        U 5      S[        S5      0S[        S5      0S.:X  d   eg )Nr   r   r   r$   )r
   eyer   r   r   r   r    s    r   test_SDM_eyer      s[    A88r>>77f7!BqEqAi0000r   c                      [         R                  " [        S5      [        S5      /[        S5      n U [        S[        S5      0S[        S5      0S.S[        5      :X  d   eg )Nr   r   r   re   r   r$   )r
   diagr   r    s    r   test_SDM_diagr      sL    "Q%AV,A"Q%yQr!uI.;;;;r   c                  p   [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      nU R                  5       U:X  d   e[        SS[        S5      00S[        5      n [        SS[        S5      00S[        5      nU R                  5       U:X  d   e[        SS[        S5      00S[        5      n [        SS[        S5      00S	[        5      nU R                  5       U:X  d   eg )
Nr   r   r$   re   rf   r   r   r}   r   r   )r
   r   	transposer-   s     r   test_SDM_transposer      s    "Q%2a5!1A%78&"EA"Q%2a5!1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                    ^ [        SS[        S5      00S[        5      m[        SS[        S5      00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   r   r   rf   c                  "   > T [        SS5      -  $ Nr   r   r   r    s   r   r   test_SDM_mul.<locals>.<lambda>   s    a1ajr   c                  "   > [        SS5      T -  $ r   r   r    s   r   r   r      s    bAhqjr   )r
   r   r   	TypeErrorrw   s    @r   test_SDM_mulr      su    Q"Q%yM62&AQ"Q%yM62&ARU7a<<a57a<<
9()
9()r   c                     ^^^ [        S[        S5      [        S5      S.0S[        5      n [        S[        S5      0S[        S5      0S.S[        5      m[        SS[        S5      00S[        5      nU R                  T5      U:X  d   eTR                  U 5      U:X  d   eU R                  [        5      m[        SS[        S5      00S	[        5      m[        [        UU4S
 j5        [        [        UU4S j5        g )Nr   r   r$   r   rf   re      r   rg   c                  &   > T R                  T5      $ Nmul_elementwise)Aqr.   s   r   r   *test_SDM_mul_elementwise.<locals>.<lambda>   s    ""4"4Q"7r   c                  &   > T R                  T5      $ r   r   )A1r.   s   r   r   r      s    !3!3A!6r   )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%yQr!uI&3AQ"Q%yM62&AQ1$$$Q1$$$	
b	B	a2a5	]FB	'B
=78
<67r   c                  .  ^^^^ [        SS[        S5      00S[        5      m[        SS[        S5      00S[        5      n TR                  T5      TT-  s=:X  a  U :X  d   e   e[        SS[        S5      00S[        5      m[	        [
        UU4S j5        [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      m[        [        S	5      [        S
5      S.[        S5      [        S5      S.S.S[        5      n TR                  T5      TT-  s=:X  a  U :X  d   e   e[        SS[        S5      00S[        5      m[        SS[        S5      00S[        5      n[        SS[        S5      00S[        5      m[        SS[        S5      00S[        5      n[        SS[        S5      00S[        5      mUR                  T5      U:X  d   eTR                  U5      T:X  d   e[	        [        UU4S j5        [        S[        S5      [        S5      S.0S[        5      m[        S[        S5      0S[        S5      0S.S[        5      n TR                  U 5      TU -  s=:X  a  [        0 S[        5      :X  d   e   eg )Nr   r   r   rf   c                  &   > T R                  T5      $ r   matmul)r!   r   s   r   r   !test_SDM_matmul.<locals>.<lambda>   s    !((1+r   r   r$   re      
         rl   r   r   )re   re   c                  &   > TR                  T 5      $ r   r   )A22A23s   r   r   r      s    Cr   rO   r}   r   rg   )r
   r   r   r   r   r   r   )r.   A32A33r!   r   r   r   s      @@@@r   test_SDM_matmulr      s,   Q"Q%yM62&AQ"Q%yM62&A88A;!A#""""""Q"Q%yM62&A
=-."Q%2a5!1A%78&"EA"Q%2b6"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QBrFr!u%&3ABrFBrF,fb9A88A;!A#4R!444444r   c                  \   S n [         R                  [         R                  [         R                  [         R                  [         R
                  /n[        U/S-  6  HL  u  p#pEU " X#S.XES.S.5      nU " X"-  X4-  -   X#-  X5-  -   S.XB-  XT-  -   XC-  XU-  -   S.S.5      nXf-  U:X  a  ML   e   g )Nc                     0 nU R                  5        H?  u  p#UR                  5        VVs0 s H  u  pEU(       d  M  XE_M     nnnU(       d  M;  X1U'   MA     [        US[        5      $ s  snnf rz   )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'rf   r$   )r   NegativeInfinityNegativeOneZeroOneInfinityr   )r   valuesabcr   AdAd2s           r   test_matmul_exrawr      s    *   !--

KFxz*
aqJa:./ac	QS13Y/acACiAC!#I3NOPw#~~ +r   c                    ^ [        S[        S5      0[        S5      [        S5      S.S.S[        5      m[        S[        S5      0[        S5      [        S5      S.S.S[        5      n [        [        S5      [        S5      S.S[        S5      0S.S[        5      nTR                  U 5      U R                  T5      s=:X  a  TU -   s=:X  a  U T-   s=:X  a  U:X  d   e   e[        SS[        S5      00S[        5      m[        S[        S5      0[        S5      [        S5      S.S.S[        5      n [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      nTR                  U 5      U R                  T5      s=:X  a  TU -   s=:X  a  U T-   s=:X  a  U:X  d   e   e[        [        U4S	 j5        g )
Nr   r   re   r$   r   r   rN      c                     > T / -   $ r   r   r    s   r   r   test_SDM_add.<locals>.<lambda>  	    a"fr   )r
   r   addr   r   r.   r   r!   s     @r   test_SDM_addr     sj   "Q%yr!u1./<A"Q%yr"vA/0&"=A"Q%2a5!a1Y/<A558quuQx61q56AE6Q66666Q"Q%yM62&A"Q%yr"vA/0&"=A"Q%2a5!2"Q%%8962FA558quuQx61q56AE6Q66666
9n%r   c                    ^ [        S[        S5      0[        S5      [        S5      S.S.S[        5      m[        S[        S5      0[        S5      [        S5      S.S.S[        5      n [        [        S5      [        S5      S.S[        S	5      0S.S[        5      nTR                  U 5      TU -
  s=:X  a  U:X  d   e   e[        [        U4S
 j5        g )Nr   r   re   r$   r   r   rN   rO   rf   c                     > T / -
  $ r   r   r    s   r   r   test_SDM_sub.<locals>.<lambda>$  r   r   )r
   r   subr   r   r   s     @r   test_SDM_subr     s    "Q%yr!u1./<A"Q%yr"vA/0&"=A"R&BqE"qAi0&"=A558q1u!!!!!!
9n%r   c                     [        S[        S5      0[        S5      [        S5      S.S.S[        5      n [        S[        S5      0[        S5      [        S5      S.S.S[        5      nU R                  5       U * s=:X  a  U:X  d   e   eg )	Nr   r   re   r$   r   rO   rN   rt   )r
   r   negr-   s     r   test_SDM_negr   '  ss    "Q%yr!u1./<A"R&z2"R&12FB?A557qbAr   c                     [        S[        S5      0[        S5      [        S5      S.S.S[        5      n [        S[        S5      0[        S5      [        S5      S.S.S[        5      nU R                  [        5      nX!:X  d   eUR                  [        :X  d   eU R                  [        5      nX0:X  d   eUR                  [        :X  d   eg )Nr   r   re   r$   r   )r
   r   r   r   r   )r!   r.   r   Ds       r   test_SDM_convert_tor   -  s    "Q%yr!u1./<A"Q%yr!u1./<A	RA6M688r>>	RA6M688r>>r   c                     [        SS[        S5      00S[        5      n [        SS[        S5      00S[        5      n[        S[        S5      [        S5      S.0S[        5      n[        S[        S5      0S[        S5      0S.S[        5      n[         R                  " U 5      U :X  d   e[         R                  " X 5      U:X  d   e[         R                  " X5      U:X  d   eg )Nr   r   r   )r   re   )r   rf   re   r$   )r
   r   hstackr!   r.   AAABs       r   test_SDM_hstackr   9  s    Q"Q%yM62&AQ"Q%yM62&A	a2a5BqE"#VR	0B	2a5	a1Y'	4B::a=A::ar!!!::ar!!!r   c                     [        SS[        S5      00S[        5      n [        SS[        S5      00S[        5      n[        S[        S5      0S[        S5      0S.S[        5      n[        S[        S5      0S[        S5      0S.S[        5      n[         R                  " U 5      U :X  d   e[         R                  " X 5      U:X  d   e[         R                  " X5      U:X  d   eg )Nr   r   r   r;   )rf   r   )r   re   )r
   r   vstackr   s       r   test_SDM_vstackr   C  s    Q"Q%yM62&AQ"Q%yM62&A	2a5	a1Y'	4B	2a5	a1Y'	4B::a=A::ar!!!::ar!!!r   c                      [        SS[        S5      00S[        5      n [        SS[        S5      00S[        5      nU R                  S [        5      U:X  d   eg )Nr   r   r   r   c                     SU -  $ )Nr   r   )xs    r   r   $test_SDM_applyfunc.<locals>.<lambda>P  s    1r   )r
   r   	applyfuncr-   s     r   test_SDM_applyfuncr   M  sO    Q"Q%yM62&AQ"Q%yM62&A;;}b)Q...r   c                  ,   [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n [        [        S5      [        S5      S.[        SS5      [        SS5      S.S.S[        5      nU R                  5       U:X  d   eg )	Nr   r   r$   re   rf   r   rN   rO   )r
   r   invr-   s     r   test_SDM_invr   S  sr    "Q%2a5!1A%78&"EA"R&BqE"AqRAY&?@&"MA557a<<r   c                      [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n U R                  5       [        S5      :X  d   eg )Nr   r   r$   re   rf   r   rN   )r
   r   detr    s    r   test_SDM_detr   Y  sG    "Q%2a5!1A%78&"EA557bfr   c                     [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n [        S[        S5      0[        S5      [        S5      S.S.S[        5      nU R                  5       S   U:X  d   eg )Nr   r   r$   re   rf   r   r   )r
   r   lu)r!   Ls     r   test_SDM_lur   ^  so    "Q%2a5!1A%78&"EA"Q%yr!u1./<A
 446!9>>r   c                  n   [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n [        S[        S5      0S[        S5      0S.S[        5      n[        SS[        SS5      00S[        5      nU R                  U5      U:X  d   eU R                  U5      U:X  d   eg )	Nr   r   r$   re   rf   r   r   r   )r
   r   r   lu_solve)r!   r   r   s      r   test_SDM_lu_solver   h  s    "Q%2a5!1A%78&"EA"Q%yQr!uI&3AQ"Q(|fb)A88A;!::a=Ar   c                      [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n U R                  5       [        S5      [        S5      [        S5      /:X  d   eg )	Nr   r   r$   re   rf   r   rN   )r
   r   charpolyr    s    r   test_SDM_charpolyr   p  sV    "Q%2a5!1A%78&"EA::<BqE2b62b62222r   c                      [        S[        S5      [        S5      S.0S[        5      n U R                  5       S   [        S[        S5      [        S5      S.0S[        5      :X  d   eg )Nr   r   r$   r   rO   r}   )r
   r   	nullspacer    s    r   test_SDM_nullspacer   u  sV    Q"Q%2a5!"FB/A;;=sAB2a5&9#:FBGGGGr   c                  P   [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n [        S[        S5      0S[        S5      0S.S[        5      nU R                  5       USS/4:X  d   e[        [        S5      [        S5      [        S5      S.[        S5      [        S5      S	.S.S
[        5      n [        [        SS5      [        SS5      S	.[        SS5      [        SS5      S.S.S
[        5      nU R                  5       USS/4:X  d   eg )Nr   r   r$   re   rf   r   r   r   r   r   r;   r   r}   )r
   r   rrefr   )r!   A_rrefs     r   test_SDM_rrefr   {  s    	"Q%2a5!Q%2a5!#$*B	0AQr!uI!BqE+VR8F668A''''BqEbe1.qE1.017	=AAaR!W-AaR!W-/06<F668A''''r   c                      [        SS[        S5      00S[        5      n [         R                  " S[        5      nU R                  5       U:X  d   eg )Nr   r   r   r}   )r
   r   rv   
particular)r!   Aparts     r   test_SDM_particularr    s@    Q"Q%yM62&AIIfb!E<<>U"""r   c                      [        SS[        S5      00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   r}   FT)r
   r   rv   is_zero_matrix)r!   Azeros     r   test_SDM_is_zero_matrixr    sZ    QBqE
OVR(AIIfb!E&&&!T)))r   c            	      4   [        [        S5      [        S5      [        S5      [        S5      S.[        S5      [        S5      [        S5      S	.[        S
5      [        S5      S.S.S[        5      n [        [        S5      [        S5      [        S5      [        S5      S.[        S5      [        S5      [        S5      S	.[        S5      [        S
5      [        S5      S	.S.S[        5      nU R                  5       SL d   eUR                  5       SL d   eg Nr   r   re   rf   )r   r   r   re   r   r   r   )r   r   re   r   	   r   r   )re   rf   TF)r
   r   is_upperr-   s     r   test_SDM_is_upperr    s    BqEbe1"Q%8 e1"Q%8(*1"Q%$8:;A2	GA 	BqEbe1"Q%8 e1"Q%8 e1"Q%8:;A2	GA ::<4::<5   r   c            	      l   [        [        S5      [        S5      [        S5      [        S5      S.[        S5      [        S5      [        S5      S	.[        S
5      [        S5      S.S.S[        5      R                  5       n [        [        S5      [        S5      [        S5      [        S5      S.[        S5      [        S5      [        S5      S	.[        S5      [        S
5      [        S5      S	.S.S[        5      R                  5       nU R                  5       SL d   eUR                  5       SL d   eg r
  )r
   r   r   is_lowerr-   s     r   test_SDM_is_lowerr    s    BqEbe1"Q%8 e1"Q%8(*1"Q%$8:;A2	 ik  	BqEbe1"Q%8 e1"Q%8 e1"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/   r2   r9   r=   r@   rC   rF   rI   rL   r[   rc   rj   rx   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   r   <module>r     s    " , ' - - ( (; ;DF$Q#<
)
1
	07(/54-1<
*85<"&&	""/
3
H(#*!
!r   