
    \hV                        S SK Jr  S SKJrJrJrJrJrJr  S SKJ	r	J
r
JrJrJr  S SKJrJrJr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr  S SK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 r0S r1S r2S r3S r4S r5S r6S  r7S! r8S" r9S# r:S$ r;S% r<S& r=S' r>S( r?S) r@S* rAS+ rBS, rCS- rDS. rES/ rFS0 rGS1 rHS2 rIS3 rJS4 rKS5 rLS6 rMS7 rNS8 rOS9 rPS: rQS; rRS< rSS= rTS> rUS? rVS@ rWSA rXSB rYSC rZSD r[SE r\SF r]SG r^SH r_SI r`SJ raSK rbSL rcSM rdSN reSO rfSP rgSQ rhSR riSS rjST rkSU rlSV rmSW rnSX roSY rpSZ rqS[ rrS\ rsS] rtS^ rug_)`    )GROUND_TYPES)IntegerRationalSsqrtMatrixsymbols)FFZZQQQQ_IEXRAW)DomainMatrixDomainScalarDM)DMBadInputErrorDMDomainErrorDMShapeErrorDMFormatErrorDMNotAFieldDMNonSquareMatrixErrorDMNonInvertibleMatrixError)DDM)SDM)raisesc                  p   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        SS/SS//[        5      n[        S:w  a  UR                  U :X  d   eO UR                  U R                  5       :X  d   eUR                  S:X  d   eUR                  [        :X  d   eg )N            r   r   flint)r   r   r   r   repto_dfmshapedomain)ddmAs     d/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/tests/test_domainmatrix.pytest_DMr*      s    
1r!u~1r!u~.
;C
QFQFR Awuu||uu

$$$77f88r>>    c                    ^^^ [        S5      [        S5      /[        S5      [        S5      //m[        S5      [        S5      S.[        S5      [        S5      S.S.n [        TS[         5      m[        U S[         5      m[        TS[         5      n[        S:w  a  UR
                  T:X  d   eO UR
                  TR                  5       :X  d   eUR                  S:X  d   eUR                  [         :X  d   e[        U S[         5      nUR
                  T:X  d   eUR                  S:X  d   eUR                  [         :X  d   e[        [        U4S j5        [        [        U4S	 j5        [        [        S
 5        ST4ST44 Hi  u  p#US:X  a  [        S:X  a  UR                  5       n[        TS[         US9nUR
                  U:X  d   e[        U S[         US9nUR
                  U:X  a  Mi   e   [        [        U4S j5        [        [        S 5        T Vs/ s H  oDR                  5       PM     nn[        S5      US'   UT:X  d   eg s  snf )Nr   r   r   r    r   r   r!   r"   c                  &   > [        T S[        5      $ Nr!   r   r   )r'   s   r)   <lambda>(test_DomainMatrix_init.<locals>.<lambda>/       l3;r+   c                  &   > [        T S[        5      $ r/   r0   )sdms   r)   r1   r2   0   r3   r+   c                  :    [        [        S//5      S[        5      $ )Nr   r   r   )r   r   r    r+   r)   r1   r2   1   s    l6A3%=&"Er+   sparsedensefmtc                  $   > [        T S[        SS9$ )Nr!   invalidr;   r0   )lols   r)   r1   r2   ;   s    |CKr+   c                  N    [        [        S5      [        S5      //S[        5      $ )Nr   r   r!   r0   r8   r+   r)   r1   r2   =   s    L2a5"Q%.1A62$Nr+   *   r   r   )r   r   r   r   r   r#   r$   r%   r&   r   	TypeError
ValueErrorr   copy)	dodr(   r<   r#   iwasr'   r?   r5   s	         @@@r)   test_DomainMatrix_initrI      s   qE2a5>BqE2a5>
*CQ%2a5!A"Q%&8
9C
c62
C
c62
CS&"%Awuu||uu

$$$77f88r>>S&"%A55C<<77f88r>>
9;<
9;<
9EF_wn5'>lg5**,Cfbc2uu||fbc2uu|| 6 :KL
?NO !
!S668SC
!VAcF#:: "s   Ic                    ^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        R                  " U 5      mTR                  U :X  d   eTR
                  S:X  d   eTR                  [        :X  d   e[        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n[        R                  " U5      mTR                  U:X  d   eTR
                  S:X  d   eTR                  [        :X  d   e[        [        S5      //S[        5      m[        [        U4S j5        g )	Nr   r   r   r    r!   r-   r7   c                  0   > [         R                  " T 5      $ N)r   from_repr(   s   r)   r1   ,test_DomainMatrix_from_rep.<locals>.<lambda>T   s    l33A6r+   )
r   r   r   rM   r#   r%   r&   r   r   rC   )r'   r5   r(   s     @r)   test_DomainMatrix_from_reprP   E   s    
1r!u~1r!u~.
;Cc"A55C<<77f88r>>
ber!u%RUbe*<=vr
JCc"A55C<<77f88r>>r!ugY+A
967r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        R                  " SS/SS//[        5      n[        S:w  a  UR
                  U :X  d   eO UR
                  U R                  5       :X  d   eUR                  S:X  d   eUR                  [        :X  d   e[        S5      n[        U" S5      U" S5      /U" S5      U" S5      //SU5      n [        R                  " SS/SS//U5      n[        S:w  a  UR
                  U :X  d   eO UR
                  U R                  5       :X  d   eUR                  S:X  d   eUR                  U:X  d   e[        SS-  S-
  5      n[        U" S5      U" S5      /U" S5      U" S5      //SU5      n [        R                  " SS/SS//U5      n[        S:w  a  UR
                  U :X  d   eO UR
                  U R                  5       :X  d   eUR                  S:X  d   eUR                  U:X  d   e[        [        SS5      [        SS5      /[        SS5      [        S	S5      //S[        5      n [        R                  " S
S/SS//[        5      n[        S:w  a  UR
                  U :X  d   eO UR
                  U R                  5       :X  d   eUR                  S:X  d   eUR                  [        :X  d   eg )Nr   r   r   r    r!   r"            r   r   r   r   r   r    )rT   r   )r   r   r   	from_listr   r#   r$   r%   r&   r
   r   )r'   r(   doms      r)   test_DomainMatrix_from_listrZ   W   s   
1r!u~1r!u~.
;CAA/4Awuu||uu

$$$77f88r>>
Q%C
AA#a&#a&!12FC
@CAA/5Awuu||uu

$$$77f88s??
QVAX,C
AA#a&#a&!12FC
@CAA/5Awuu||uu

$$$77f88s??
1a"Q(#bAh1a%9:FB
GC 0662BCRHAwuu||uu

$$$77f88r>>r+   c            
         [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        R                  " SSSS/SS//5      n[        S:w  a  UR
                  U :X  d   eO UR
                  U R                  5       :X  d   eUR                  S:X  d   eUR                  [        :X  d   e[        R                  " [        S5      5      n[        UR                  S[        S5      -   5      UR                  S[        S5      -   5      /UR                  S[        S5      -   5      UR                  S[        S5      -   5      //SU5      n [        R                  " SSS[        S5      -   S[        S5      -   /S[        S5      -   S[        S5      -   //SS9nUR
                  U :X  d   eUR                  S:X  d   eUR                  U:X  d   eg )	Nr   r   r   r    r!   r"   T	extension)r   r   r   from_list_sympyr   r#   r$   r%   r&   r   algebraic_fieldr   convert)r'   r(   Ks      r)   !test_DomainMatrix_from_list_sympyrb      s   
1r!u~1r!u~.
;C$$QQFQF+;<Awuu||uu

$$$77f88r>>
47#A

))AQK
 !))AQK"8	9
))AQK
 !))AQK"8	9	;		C 	$$	1DGQa[)AQKT!W+EF	A 55C<<77f88q==r+   c                    ^ [        S[        SS5      0S[        SS5      0S.S[        5      n S[        SS5      0S[        SS5      0S.n[        R                  " SSU5      nUR
                  U :X  d   eUR                  S:X  d   eUR                  [        :X  d   e[        R                  m[        [        U4S j5        [        [        U4S j5        g )	Nr   r   r   r   r-   r!   c            
      4   > T " SSSS[        SS5      005      $ )Nr   r   r   r   r   fdss   r)   r1   3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>       C1q1hq!n2E.F$Gr+   c            
      4   > T " SSSS[        SS5      005      $ )Nr   r   r   r   re   rf   s   r)   r1   rh      ri   r+   )
r   r   r   r   from_dict_sympyr#   r%   r&   r   r   )r5   
sympy_dictr(   rg   s      @r)   !test_DomainMatrix_from_dict_sympyrm      s    
1bAh-Q1aM2FB
?C!Q(a!Q-@AJ$$Q:6A55C<<77f88r>>

&
&C
?GH
?GHr+   c            
      t   [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      n [        R                  " [	        SS/SS//5      5      nUR
                  U :X  d   eUR                  S:X  d   eUR                  [        :X  d   e[        R                  " [        S5      5      n[        UR                  S[        S5      -   5      UR                  S[        S5      -   5      S.UR                  S[        S5      -   5      UR                  S[        S5      -   5      S.S.SU5      n [        R                  " [	        S[        S5      -   S[        S5      -   /S[        S5      -   S[        S5      -   //5      SS9nUR
                  U :X  d   eUR                  S:X  d   eUR                  U:X  d   e[        R                  " [	        [        SS5      [        SS5      /[        S	S5      [        S	S5      //5      S
S9n[        [        SS5      [        SS5      /[        S	S5      [        S	S5      //S[        5      n[        S:w  a  UR
                  U:X  d   eO UR
                  UR                  5       :X  d   eUR                  S:X  d   eUR                  [        :X  d   eg )Nr   r   r-   r   r    r!   Tr\   r   r:   r;   r"   )r   r   r   from_Matrixr   r#   r%   r&   r   r_   r   r`   r   r   r$   )r5   r(   ra   r'   s       r)   test_DomainMatrix_from_Matrixrp      sH   
be1&r!uA+?@&"
MC  !Q!Q(8!9:A55C<<77f88r>>
47#A
		!d1g+&199Qa[+AB		!d1g+&199Qa[+AB	D		C 	  T!Wa$q'k*Qa[!d1g+,FGH	A 55C<<77f88q==  "Q(Bq!H)=1a"QPQ(?S(T!U[bcA
1a"Q(#bAh1a%9:FB
GCwuu||uu

$$$77f88r>>r+   c                  r   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n X :X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nX:w  d   e[        S5      [        S5      /[        S5      [        S5      //nX:w  d   eg Nr   r   r   r    r!   r0   r(   BCs      r)   test_DomainMatrix_eqrv      s    r!ubenr!uben5vrBA6M6r!ubenr!uben5vrBA6M6
Q%A"Q%A(A6M6r+   c                  "   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n[        [        S5      //S[        5      nU R                  U5      SL d   eU R                  U5      SL d   eU R                  U5      SL d   eg )	Nr   r   r   r    r!   r7   TF)r   r   r   unify_eq)r(   B1B2B3s       r)   test_DomainMatrix_unify_eqr|      s    r!ubenr!uben5vrBA	1r!u~1r!u~6	CB	1r!u~1r!u~6	CB	1wi	,B::b>T!!!::b>U"""::b>U"""r+   c            	      v   [         R                  " / SQ5      u  pU[        S5      [        S5      [        S5      [        S5      /:X  d   eU [        :X  d   e[         R                  " SSS[        SS5      /5      u  pU[	        S5      [	        S5      [	        S5      [	        SS5      /:X  d   eU [        :X  d   eg )N)r   r   r   r    r   r   r   r    )r   
get_domainr   r   r   )ra   itemss     r)   test_DomainMatrix_get_domainr      s    &&|4HARUBqE2a5"Q%00007N7&&1a!Q'@AHARUBqE2a5"Q(33337N7r+   c                  &   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  [        5      nU[        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eg rr   )r   r   
convert_tor   r(   Aqs     r)   test_DomainMatrix_convert_tor      so    r!ubenr!uben5vrBA	
b	B1r!u~1r!u~>KKKKr+   c                     SS/SS//n [        U [        5      R                  5       [        U [        5      :X  d   e[        U [        5      R                  SS9[        U [        5      :X  d   e[        U [        5      R                  SS9[        U [        5      :X  d   e[	        S5      nSU/US-  US-  //n[        U[        U   5      R                  SS9[        U[        R
                  " U5      5      :X  d   eg )Nr   r   r   r   T)fieldx)r   r   choose_domainr   r	   
frac_field)r(   r   rt   s      r)   test_DomainMatrix_choose_domainr      s    
Q!QAa9""$1b	111a9"""."Q);;;a9"""."Q);;;A
Q!Q$1AaA<%%D%1R2==;K5LLLLr+   c                  2   [        SS/SS//[        5      n U R                  R                  5       nU R                  R	                  5       nXU4 H  nUR                  5       u  pEUR                  XEUR                  5      U:X  d   eU Vs/ s H  n[        U5      PM     nnUR                  Xu[        5      UR                  [        5      :X  d   eU Vs/ s H  nSU-  PM
     nnUR                  XUR                  5      SU-  :X  a  M   e   g s  snf s  snf )Nr   r   r   r   )
r   r   r#   to_ddmto_sdm
to_flat_nzfrom_flat_nzr&   r   r   )	AdmAddmAsdmr(   elemsdataeelemsqelems2s	            r)   test_DomainMatrix_to_flat_nzr      s    
q!fq!fr
"C77>>D77>>Dlln~~e1884999!&'A"Q%'~~fB/1<<3CCCC$%u!!A#u%~~fAHH51<<<  (%s   
DDc                      [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       U R                  [        5      :X  d   eg rr   )r   r   to_sympyr   r   rN   s    r)   test_DomainMatrix_to_sympyr      sJ    r!ubenr!uben5vrBA::<1<<....r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       nU[        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eg rr   )r   r   to_fieldr   r   s     r)   test_DomainMatrix_to_fieldr     sl    r!ubenr!uben5vrBA	
B1r!u~1r!u~>KKKKr+   c                      [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       nUR                  SSS.SSS.S.:X  d   eg )Nr   r   r   r    r!   r-   )r   r   	to_sparser#   )r(   A_sparses     r)   test_DomainMatrix_to_sparser     sW    r!ubenr!uben5vrBA{{}H<<1|A!====r+   c                      [        SSS.SSS.S.S[        5      n U R                  5       n[        SS/SS//S[        5      n[        S:w  a  UR
                  U:X  d   eg UR
                  UR                  5       :X  d   eg )Nr   r   r-   r   r    r!   r"   )r   r   to_denser   r   r#   r$   )r(   A_denser'   s      r)   test_DomainMatrix_to_denser     su    Q1aA,7DAjjlG
1v1v
+Cw{{c!!!{{cjjl***r+   c                    ^^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  U 5      X 4:X  d   eU R                  U5      X4:X  d   eUR                  U 5      X4:X  d   eUR                  U5      X4:X  d   e[        S[        S5      0S[        S5      0S.S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      mTR                  T5      TT4:X  d   eTR                  T5      TT4:X  d   eTR                  TSS	9u  p#UR                  [        SS/SS//S[        5      R                  5       :X  d   eUR                  [        SS/SS//S[        5      R                  5       :X  d   eTR                  TS
S	9u  p#UR                  [        SS0SS0S.S[        5      :X  d   eUR                  [        SSS.SSS.S.S[        5      :X  d   e[        [        UU4S j5        g )Nr   r   r   r    r!   r   r-   r:   r;   r9   c                  $   > TR                  T SS9$ )Nr>   r;   )unifyAdAss   r)   r1   )test_DomainMatrix_unify.<locals>.<lambda>1  s    rxx	x:r+   )
r   r   r   r   r#   r   to_dfm_or_ddmr   r   rD   )Azr   BsBdr   r   s       @@r)   test_DomainMatrix_unifyr     s   	1r!u~1r!u~6	CB	1r!u~1r!u~6	CB88B<B8###88B<B8###88B<B8###88B<B8###	1be*2a5	2FB	?B	1r!u~1r!u~6	CB88B<B8###88B<B8###XXbgX&FB66S1a&1a&)626DDFFFF66S1a&!Q&"5CCEEEEXXbhX'FB66SaVA/<<<<66Sq\!l;VRHHHH
::;r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        SS/SS//5      nU R                  5       U:X  d   eU R	                  5       R                  5       U:X  d   eU R                  [        5      R                  5       U:X  d   eU R                  [        R                  " [        S5      5      5      R                  5       U:X  d   eg rr   )	r   r   r   	to_Matrixr   r   r   r_   r   )r(   A_Matrixs     r)   test_DomainMatrix_to_Matrixr   4  s    r!ubenr!uben5vrBA1v1v&'H;;=H$$$;;=""$000<<%%'8333<<**4734>>@HLLLr+   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 rr   )r   r   to_listrN   s    r)   test_DomainMatrix_to_listr   =  s^    r!ubenr!uben5vrBA99;BqE2a5>BqE2a5>::::r+   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 rr   )r   r   to_list_flatrN   s    r)   test_DomainMatrix_to_list_flatr   B  s[    r!ubenr!uben5vrBA>>1r!ubeRU;;;;r+   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 rr   )r   r   flatrN   s    r)   test_DomainMatrix_flatr   G  sZ    r!ubenr!uben5vrBA6681r!ubeRU3333r+   c                  L   [        S5      [        S5      [        S5      [        S5      /n [        [        S5      [        S5      /[        S5      [        S5      //S[         5      n[        R                  " U S[         5      U:X  d   e[        R                  " U S[         5      UR                  R                  5       :X  d   e[        R                  " U S[         5      UR                  R                  5       :X  d   eXR                  UR                  5       UR                  UR                  5      :X  d   e[        [        [        R                  U S[         5        [        [        [        R                  U S[         5        [        [        [        R                  U S[         5        g )Nr   r   r   r    r!   r   r   )r   r   from_list_flatr   r#   r   r   r   r   r%   r&   r   r   )numsr(   s     r)    test_DomainMatrix_from_list_flatr   L  s"   qE2a5"Q%A'Dr!ubenr!uben5vrBA&&tVR8A===dFB/155<<>AAAdFB/155<<>AAA  !1177AHHEEEE
?L77vrJ
?C..fbA
?C..fbAr+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       [        S5      [        S5      S.[        S5      [        S5      S.S.:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       S[        S5      0S[        S5      0S.:X  d   eg )Nr   r   r   r    r!   r-   r   )r   r   to_dodrN   s    r)   test_DomainMatrix_to_dodr   [  s    r!ubenr!uben5vrBA88:A"Q%01A5GHHHHr!ubenr!uben5vrBA88:aAZQ1J7777r+   c                  z   [        S5      [        S5      S.[        S5      [        S5      S.S.n [        SS/SS//[         5      n[        R                  " U S[         5      UR	                  5       :X  d   eUR                  U 5      U:X  d   eUR                  U [        5      UR                  [        5      :X  d   eg )Nr   r   r-   r   r    r!   )r   r   r   from_dodr   from_dod_liker   r   r   r(   s     r)   test_DomainMatrix_from_dodr   b  s    qERU#2a5BqE(:;E
QFQFR A  3q{{}DDD??5!Q&&&??5"%b)9999r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       [        S5      [        S5      [        S5      [        S5      S.:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        S5      [        S5      S.nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   eU R	                  5       R                  5       U:X  d   eU R
                  R                  5       R                  5       U:X  d   eU R
                  R                  5       R                  5       U:X  d   eg )	Nr   r   r   r    r!   )rB   r-   r   r   r7   r   rB   r7   )r   r   to_dokr   r   r#   r   r   )r(   doks     r)   test_DomainMatrix_to_dokr   j  s'   r!ubenr!uben5vrBA88:Ar!uRU2a5QQQQr!ubenr!uben5vrBAQ%1
&C88:::< C''';;=!S(((55<<>  "c)))55<<>  "c)))r+   c                     [        S5      [        S5      S.n [        SS/SS//[         5      n[        R                  " U S[         5      UR	                  5       :X  d   e[
        R                  " U S[         5      UR                  R                  5       :X  d   e[        R                  " U S[         5      UR                  R                  5       :X  d   eg )Nr   r   r   r   r!   )
r   r   r   from_dokr   r   r#   r   r   r   r   s     r)   test_DomainMatrix_from_dokr   v  s    UBqE*E
QFQFR A  3q{{}DDD<<vr*aeelln<<<<<vr*aeelln<<<r+   c                      [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        U 5      S:X  d   eg )Nr   r   r   r    r!   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r   reprrN   s    r)   test_DomainMatrix_reprr   ~  s@    r!ubenr!uben5vrBA7BBBBr+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  5       U:X  d   eg rr   )r   r   	transpose)r(   ATs     r)   test_DomainMatrix_transposer     sl    r!ubenr!uben5vrBA	1r!u~1r!u~6	CB;;=Br+   c                      [        [        S5      //S[        5      n [        [        S5      //S[        5      nU R                  SL d   eUR                  SL d   eg )Nr   r7   r   FT)r   r   is_zero_matrixr(   rt   s     r)    test_DomainMatrix_is_zero_matrixr     sV    r!ugY+Ar!ugY+Au$$$t###r+   c                  4   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  SL d   eUR                  SL d   eg )	Nr   r   r   r    r!   r   TF)r   r   is_upperr   s     r)   test_DomainMatrix_is_upperr     |    r!ubenr!uben5vrBAr!ubenr!uben5vrBA::::r+   c                  4   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  SL d   eUR                  SL d   eg )	Nr   r   r   r    r!   r   TF)r   r   is_lowerr   s     r)   test_DomainMatrix_is_lowerr     r   r+   c                  $   [        SS/SS//[        5      n [        SS/SS//[        5      nU R                  U R                  5       R                  s=L a  SL d   e   eUR                  UR                  5       R                  s=L a  SL d   e   eg )Nr   r   r    r   r   TF)r   r   is_diagonalr   r   s     r)   test_DomainMatrix_is_diagonalr     s    
QFQFR A
QFQFR A==AKKM55========AKKM55>>>>>>r+   c                  ^   [        [        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U R                  S	L d   eUR                  S
L d   eg )Nr   r   r   r    r!   rT      r   r   TF)r   r   	is_squarer   s     r)   test_DomainMatrix_is_squarer     s    r!ubenr!uben5vrBAr!ubenr!ubenr!ubenEvrRA;;$;;%r+   c                  n   [        SS/SS//[        5      n U R                  5       U R                  5       R                  5       s=:X  a  [        S5      [        S5      /:X  d   e   e[        SS/SS/SS//[        5      n U R                  5       U R                  5       R                  5       s=:X  a  [        S5      [        S5      /:X  d   e   e[        / SQ/ SQ/[        5      n U R                  5       U R                  5       R                  5       s=:X  a  [        S5      [        S5      /:X  d   e   eg )	Nr   r   r   r    rT   r   )r   r   r   )r    rT   r   )r   r   diagonalr   rN   s    r)   test_DomainMatrix_diagonalr     s    
QFQFR A::<1;;=113E1r!u~EEEEE
QFQFQF#R(A::<1;;=113E1r!u~EEEEE
Iy!2&A::<1;;=113E1r!u~EEEEEr+   c                      [        [        S5      [        S5      /[        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       S:X  d   eg )Nr   r   r   r    r      r   )r   r   rankrN   s    r)   test_DomainMatrix_rankr     sM    r!ubenr!ubenr!ubenEvrRA668q==r+   c                    ^^^^^^	^
^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n TT-   TR                  T5      s=:X  a  U :X  d   e   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      mSS/SS//m[        [        UU4S j5        [        [        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        [        [
        UU4S j5        [        [
        UU4S j5        [        [
        UU4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m
[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nT
T-   U:X  d   eTT
-   U:X  d   e[        [        UU
4S j5        [        [        UU
4S j5        [        S[        S5      0S[        S5      0S.S[        5      m	[        [        S5      [        S5      /[        S5      [        S5      //S[        5      mT	T-   nTT	-   nU[        SS/SS//S[        5      :X  d   eUR                  [        SS/SS//S[        5      R                  5       :X  d   eU[        SS/SS//S[        5      :X  d   eUR                  [        SS/SS//S[        5      R                  5       :X  d   e[        [        UU	4S j5        g )Nr   r   r   r    r!   r   r   c                     > T T-   $ rL   r8   r(   Ls   r)   r1   'test_DomainMatrix_add.<locals>.<lambda>  	    a!er+   c                     > TT -   $ rL   r8   r   s   r)   r1   r     r   r+   rU   c                     > T T-   $ rL   r8   A1A2s   r)   r1   r     	    br+   c                     > TT -   $ rL   r8   r   s   r)   r1   r     r  r+   c                  &   > T R                  T5      $ rL   addr   s   r)   r1   r         r+   c                  &   > TR                  T 5      $ rL   r  r   s   r)   r1   r     r  r+   c                  &   > TR                  T 5      $ rL   r  r   r   s   r)   r1   r         "&&*r+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r     r  r+   r   r-   rT   c                  &   > TR                  T 5      $ rL   r  r   s   r)   r1   r     r  r+   )r   r   r  r   rC   r   r   r   r#   r   r   r   )rt   AsumAsdAdsr(   r  r  r   r   r   r   r   s       @@@@@@@@r)   test_DomainMatrix_addr    s   r!ubenr!uben5vrBAr!ubenr!uben5vrBAq5AEE!H!!!!!!r!ubenr!uben5vrBA
Q!QA
9m$
9m$	1r!u~1r!u~6	CB	1r!u~&	3B
<)
<)
<+,
<+,	1r!u~1r!u~6	CB	1r!u~1r!u~6	CB"Q%A"Q%A8&"ED7d??7d??
=,-
=,-	1be*!RU4fb	AB	1r!u~1r!u~6	CB
r'C
r'C,AA/<<<<77cAq6Aq6*FB7EEGGGG,AA/<<<<77cAq6Aq6*FB7EEGGGG
=,-r+   c                  2  ^^^^	^
^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n TT-
  TR                  T5      s=:X  a  U :X  d   e   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      mSS/SS//m[        [        UU4S j5        [        [        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        [        [
        UU4S j5        [        [
        UU4S j5        [        [
        UU4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m
[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m	[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nT
T	-
  U:X  d   eT	T
-
  U:X  d   e[        [        U	U
4S j5        [        [        U	U
4S j5        [        S[        S5      0S[        S5      0S.S[        5      n[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nX#-
  nX2-
  nU[        SS/SS//S[        5      :X  d   eUR                  [        SS/SS//S[        5      R                  5       :X  d   eXE* :X  d   eUR                  UR                  * :X  d   eg )Nr   r   r   r    r!   r   c                     > T T-
  $ rL   r8   r   s   r)   r1   'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                     > TT -
  $ rL   r8   r   s   r)   r1   r    r   r+   rU   c                     > T T-
  $ rL   r8   r   s   r)   r1   r    r  r+   c                     > TT -
  $ rL   r8   r   s   r)   r1   r    r  r+   c                  &   > T R                  T5      $ rL   subr   s   r)   r1   r    r  r+   c                  &   > TR                  T 5      $ rL   r  r   s   r)   r1   r    r  r+   c                  &   > TR                  T 5      $ rL   r  r  s   r)   r1   r    r  r+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r    r  r+   r-   )r   r   r  r   rC   r   r   r   r#   r   r   )rt   Adiffr   r   r  r  r(   r  r  r   r   r   s         @@@@@@r)   test_DomainMatrix_subr"    s   r!ubenr!uben5vrBAr!ubenr!uben5vrBAq5AEE!H!!!!!!r!ubenr!uben5vrBA
Q!QA
9m$
9m$	1r!u~1r!u~6	CB	1r!u~&	3B
<)
<)
<+,
<+,	1r!u~1r!u~6	CB	1r!u~1r!u~6	CB2a5"Q%.2a5"Q%.962FE7e7e
=,-
=,-	1be*!RU4fb	AB	1r!u~1r!u~6	CB
'C
'C,R2r(3VR@@@@77cB8b"X.;IIKKKK$;;77swwhr+   c                  2   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S	5      //S[        5      nU * U R                  5       s=:X  a  U:X  d   e   eg )
Nr   r   r   r    r!   r  r   )r   r   neg)r(   Anegs     r)   test_DomainMatrix_negr(    s{    r!ubenr!uben5vrBA"R&"R&)BrFBrF+;<fbID2 D     r+   c                    ^^	^
^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S	5      //S[        5      n TT-  TR                  T5      s=:X  a  U :X  d   e   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      mSS/SS//m[        [        UU4S
 j5        [        [        UU4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m
[        [        S5      [        S5      /[        S5      [        S5      //S[
        5      m	[        [        S5      [        S5      /[        S5      [        S	5      //S[
        5      nT
T	-  U:X  d   eT	T
-  U:X  d   e[        [        U	U
4S j5        [        [        U	U
4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n[        S5      nTU-  UT-  s=:X  a  TR                  U5      s=:X  a  U:X  d   e   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[         R                  " S[        5      n[        S5      nTU-  UT-  s=:X  a+  TR                  U5      R                  5       s=:X  a  U:X  d   e   e[        S[        S5      0S[        S5      0S.S[        5      n[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nXE-  nXT-  nU[        SS/SS//S[        5      :X  d   eUR                  [        SS/SS//S[        5      R                  5       :X  d   eU[        SS/SS//S[        5      :X  d   eUR                  [        SS/SS//S[        5      R                  5       :X  d   eg )Nr   r   r   r    r!   rR   
         c                     > T T-  $ rL   r8   r   s   r)   r1   'test_DomainMatrix_mul.<locals>.<lambda>  r   r+   c                     > TT -  $ rL   r8   r   s   r)   r1   r.    r   r+   c                  &   > TR                  T 5      $ rL   matmulr  s   r)   r1   r.        "))B-r+   c                  &   > T R                  T5      $ rL   r1  r  s   r)   r1   r.    r3  r+   r   r   r   r-   )r   r   r2  r   rC   r   r   mulzerosr   r#   r   r   )r  AprodAAr   r   r   r  r  r(   r   r   r   s           @@@@r)   test_DomainMatrix_mulr9  	  s   r!ubenr!uben5vrBA	1r"vBB(8962	FBQ3!((1+######r!ubenr!uben5vrBA
Q!QA
9m$
9m$	1r!u~1r!u~6	CB	1r!u~1r!u~6	CB2a5"R&/BrFBrF+;<fbIE7e7e
=/0
=/0r!ubenr!uben5vrBA	1r!u~1r!u~6	CB
1Aq5AE+QUU1X++++++r!ubenr!uben5vrBA			FB	'B
1Aq5AE7QUU1X//17R77777	1be*!RU4fb	AB	1r!u~1r!u~6	CB
'C
'C,AA/<<<<77cAq6Aq6*FB7EEGGGG,AA/<<<<77cAq6Aq6*FB7EEGGGGr+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  U5      U:X  d   eUR                  U 5      U:X  d   eg )Nr   r   r!   r    r   r   )r   r   mul_elementwisers   s      r)   !test_DomainMatrix_mul_elementwiser<  0  s    r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAQ1$$$Q1$$$r+   c                    ^ [         R                  " S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S	5      //S[        5      n[        [        S
5      [        S5      /[        S5      [        S5      //S[        5      nTS-  TR                  S5      s=:X  a  U :X  d   e   eTS-  TR                  S5      s=:X  a  T:X  d   e   eTS-  TR                  S5      s=:X  a  U:X  d   e   eTS-  TR                  S5      s=:X  a  U:X  d   e   e[	        [
        U4S j5        [	        [        U4S j5        [	        [        U4S j5        [         R                  " S[        5      m[	        [        U4S j5        g )Nr   r   r   r    r!   rR   r*  r+  r,  %   6   Q   v   r   c                  "   > T [        SS5      -  $ Nr   r   re   rN   s   r)   r1   'test_DomainMatrix_pow.<locals>.<lambda>B  s    a8Aq>1r+   c                     > T S-  $ Nr  r8   rN   s   r)   r1   rD  C  s	    Rr+   c                  &   > T R                  S5      $ rF  )powrN   s   r)   r1   rD  D  s    b	r+   r   r   c                     > T S-  $ Nr   r8   rN   s   r)   r1   rD  G  s	    16r+   )	r   eyer   rH  r   rC   NotImplementedErrorr6  r   )rL  r  A3r(   s      @r)   test_DomainMatrix_powrO  8  sl   


1b
!Cr!ubenr!uben5vrBA	1r"vBB(8962	FB	22'"R&"S'):;VR	HBa41558"s"""""a41558 q     a41558!r!!!!!a41558!r!!!!!
912
0
 1262&A
!>2r+   c                  :   [        SS/SS//[        5      n [        [        S5      [        5      n[        SS/SS	//[        5      nUR	                  [        5      nU R                  5       X4:X  d   eU R                  S
S9X4:X  d   eX-  U:X  d   eXU-  :X  d   eg )NrU   r   r   rW   r   rT   <         r+     Tr`   )r   r   r   r   r   clear_denomsr(   den_ZAnum_ZAnum_Qs       r)   test_DomainMatrix_clear_denomsr]  J  s    
U5M5-("-AB$E"bB8$b)Fr"F>>...>>$>'E?:::9r+   c                      [        SS/SS//[        5      n [        SS/SS//[        5      R                  5       n[        SS	/S
S//[        5      n[        SS	/S
S//[        5      nU R	                  5       X4:X  d   eU R	                  SS9X4:X  d   eX-  U:X  d   eXR                  5       R                  5       U-  :X  d   e[        / SQ/ SQ/ SQ/[        5      n [        / SQ/ SQ/ SQ/[        5      R                  5       n[        / SQ/ SQ/ SQ/[        5      nUR                  [        5      nU R	                  5       X4:X  d   eU R	                  SS9X4:X  d   eX-  U:X  d   eXR                  5       R                  5       U-  :X  d   eg )NrU   rQ  rW   rR  r   r   rU  r   r   rT   r    TrW  )rU   rQ  r   r   r   r   r   r   )rW   rR  )r   r   )r   rR   )r   r   r   )r   r   r   )r   r   i  )r   r   r   r   )i   T   F   rS  )r   r   r   r   clear_denoms_rowwiser   invr   rY  s       r)   &test_DomainMatrix_clear_denoms_rowwisere  W  s   
U5M5-("-AAB "%//1E!Q!Q "%F!Q!Q "%F!!#666!!$!/E?BBB9 $$&////
i)BCRHA	9k2B7AACE|->?DFr"F!!#666!!$!/E?BBB9 $$&////r+   c                  L  ^  [        SS/SS//[        5      m T R                  [        S5      5      [        SS/SS//[        5      [        S5      4:X  d   eT R                  [        S5      5      [        SS/SS//[        5      [        S5      4:X  d   eT R                  [        S5      5      [        SS/SS//[        5      [        S5      4:X  d   e[        SS/SS//[        5      m T R                  [        S5      5      T [        S5      4:X  d   eT R                  [        S5      5      T * [        S5      4:X  d   e[        SS/SS//[        5      m T R                  [        SS5      5      [        SS	5      T -  [        S5      4:X  d   e[	        [
        U 4S
 j5        g )Nr   r    r   r   r   r   r$  r   r  c                  8   > T R                  [        S5      5      $ Nr   )cancel_denomr   rN   s   r)   r1   0test_DomainMatrix_cancel_denom.<locals>.<lambda>|  s    annRU&;r+   )r   r   ri  r   r   ZeroDivisionErrorrN   s   @r)   test_DomainMatrix_cancel_denomrl  n  s|   
QFQFR A>>"Q% R!Q!Q(8"%=r!u$EEEE>>"Q% R!Q!Q(8"%=r!u$EEEE>>"Q% R!Q!Q(8"%=r!u$EEEE
QFQFR A>>"Q% Q1J...>>"R&!qb"Q%[000 	QFQFT"A>>$q)$aAtAw(????
;<r+   c                    ^ [        SS/SS//[        5      mTR                  [        S5      5      u  pU [        SS/SS//[        5      :X  d   eU[        SS/SS//[        5      :X  d   eTR                  [        S5      5      u  pU [        SS/SS//[        5      :X  d   eU[        SS/SS//[        5      :X  d   e[        [        U4S j5        g )Nr   r    r   r   r   r   c                  8   > T R                  [        S5      5      $ rh  )cancel_denom_elementwiser   rN   s   r)   r1   <test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>  s    a&@&@A&Gr+   )r   r   ro  r   rk  )numersdenomsr(   s     @r)   *test_DomainMatrix_cancel_denom_elementwisers    s    
QFQFR A//16NFR!Q!Q("----R!Q!Q("----//16NFR!Q!Q("----R!Q!Q("----
GHr+   c                      [        SS/SS//[        5      n [        SS/SS//[        5      n[        S5      nU R                  5       U:X  d   eU R                  5       X!4:X  d   eg )Nr   r    r   r   r   r   )r   r   content	primitive)r(   A_primitive	A_contents      r)   #test_DomainMatrix_content_primitivery    sh    
QFQFR Aq!fq!f%r*K1I99;)###;;=Y4444r+   c            	        ^ [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      n U R                  5       nU R                  nUR                  nXX#4 H  mU R	                  5       S/SS//:X  a  M   e   [        [        S5      [        S5      [        S5      //[        5      m[        [        U4S j5        g )Nr   r   r   r   r    r   r   c                  $   > T R                  5       $ rL   )sccrN   s   r)   r1   'test_DomainMatrix_scc.<locals>.<lambda>  s    1557r+   )r   r   r   r#   r}  r   r   r   )r   r   r   r   r(   s       @r)   test_DomainMatrix_sccr    s    	1r!ube,1r!ube,1r!ube,./5r
;B 
B66D66Dd!vvxQC!Q=((( " 	RUBqE2a5!"B'A
!?3r+   c            	      h  ^ [        / S[        5      n U R                  5       U S4:X  d   e[        [        S5      //S[        5      n U R                  5       U S4:X  d   e[        [        S5      //S[        5      n U R                  5       U S4:X  d   e[        [        S5      [        S5      /[        S5      [        S	5      //S
[        5      n U R                  5       u  pU[        [        S5      [        S5      /[        S5      [        S5      //S
[        5      :X  d   eUS:X  d   e[        [        S5      [        S5      /[        S5      [        S	5      //S
[        5      n U R                  5       u  pU[        [        S5      [        S5      /[        S5      [        S5      //S
[        5      :X  d   eUS:X  d   e[        [        S5      [        S5      /[        S5      [        S	5      //S
[        5      n U R                  5       u  pU[        [        S5      [        S5      /[        S5      [        S5      //S
[        5      :X  d   eUS:X  d   e[        [        S5      [        S5      /[        S5      [        S	5      //S
[        5      mTR                  5       u  pU[        [        S5      [        S5      /[        S5      [        S5      //S
[        5      :X  d   eUS:X  d   eSn[        [        S5      [        S5      /[        S5      [        S	5      //S
[        5      mU H]  nTR                  US9u  pU[        [        S5      [        S5      /[        S5      [        S5      //S
[        5      :X  d   eUS:X  a  M]   e   [	        [
        U4S j5        [	        [
        U4S j5        g )Nr-   r8   r   r7   )r   r   r   r   r    r!   )r   )autoGJr
   CDGJ_denseFF_denseCD_densemethodc                  "   > T R                  SS9$ Nfoor  )rrefr   s   r)   r1   (test_DomainMatrix_rref.<locals>.<lambda>  s    rwwew4r+   c                  "   > T R                  SS9$ r  )rref_denr  s   r)   r1   r    s    r{{%{8r+   )r   r   r  r   r   rD   )r(   Arpivotsmethodsr  r   s        @r)   test_DomainMatrix_rrefr    s   R$A6682wr!ugY+A6684y   r!ugY+A6682wr!ubenr!uben5vrBAJB1r!u~1r!u~>KKKKVr!ubenr!uben5vrBAJB1r!u~1r!u~>KKKKVr!ubenr!uben5vrBAJB1r!u~1r!u~>KKKKT>>	1r!u~1r!u~6	CBJB1r!u~1r!u~>KKKKVLG	1r!u~1r!u~6	CBWWFW+
\BqE2a5>BqE2a5>"BFBOOOO 
 :45
:89r+   c                  P  ^ [        [        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      nU R                  5       U:X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      m[	        [
        U4S j5        [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        S	S
9n [        [        S5      [        S5      S.[        S5      [        S5      S.S.S[        5      nU R                  5       U:X  d   eg )Nr   r  r   r$  r   r   r!   c                  $   > T R                  5       $ rL   )columnspacer  s   r)   r1   /test_DomainMatrix_columnspace.<locals>.<lambda>  s     0r+   r9   r;   r-   )r   r   r  r   r   r   )r(   Acolr   s     @r)   test_DomainMatrix_columnspacer    s>   r!ubfbe,r!ubfbe.DEvrRA"Q%A"Q%A8&"ED==?d"""	1r"vr!u-1r"vr!u/EFPR	SB
;01r!ubfbe,r!ubfbe.DEvrW_`A1"Q%0A2a55IJFTVWD==?d"""r+   c                  ^  ^ [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      n U R                  5       U :X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      m[	        [
        U4S j5        [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        SS	9n U R                  5       U :X  d   eg )
Nr   r  r   r$  r   r   c                  $   > T R                  5       $ rL   )rowspacer  s   r)   r1   ,test_DomainMatrix_rowspace.<locals>.<lambda>  s    r+   r9   r;   )r   r   r  r   r   r   )r(   r   s    @r)   test_DomainMatrix_rowspacer    s    r!ubfbe,r!ubfbe.DEvrRA::<1	1r"vr!u-1r"vr!u/EFPR	SB
;-.r!ubfbe,r!ubfbe.DEvrW_`A::<1r+   c                  8  ^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      //S[        5      n TR                  5       U :X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      //S[        5      n TR                  5       U :X  d   e[	        [
        U4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      //S[        5      n TR                  5       u  pnU[        S5      :X  d   eUR                  5       U :X  d   eUR                  U5      U :X  d   eUR                  5       R                  5       U R                  5       :X  d   eUR                  5       R                  U5      U R                  5       :X  d   eg )Nr   r!   r  rU   c                  "   > T R                  SS9$ )NT)divide_last)	nullspacerN   s   r)   r1   -test_DomainMatrix_nullspace.<locals>.<lambda>  s     =r+   r   r$  )	r   r   r  r   r   r   r  nullspace_from_rrefr   )AnullArrefdenr  r(   s       @r)   test_DomainMatrix_nullspacer    s   r!ubenr!uben5vrBA2b62a5/*FB7E;;=E!!!r!ubenr!uben5vrBA2b62a5/*FB7E;;=E!!!
;=>r!ubenr!uben5vrBA2b62a5/*FB7EE"Q%<<$$&%///$$V,555??002eoo6GGGG??008EOO<MMMMr+   c                  T  ^^^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      /[        S5      //S[        5      n [        SS//S[        5      n[        SS//S[        5      nTR                  U 5      X4:X  d   e[        [        S5      /[        S5      /[        S5      //S	[        5      m[        [        UU4S
 j5        [        [        S5      /[        S5      //S[
        5      m[        [        UU4S j5        g )Nr   r   r    r!   rI  r   rU   r$  rV   c                  &   > T R                  T5      $ rL   _solve)r(   b3s   r)   r1   )test_DomainMatrix_solve.<locals>.<lambda>  s    "r+   c                  &   > T R                  T5      $ rL   r  )r(   bzs   r)   r1   r    s    r+   )r   r   r  r   r   r   r   )b
particularr  r(   r  r  s      @@@r)   test_DomainMatrix_solver    s    r!ubenr!uben5vrBAr!ug1w'4A1vh3Jr1gY3I88A;:1111	1wA"Q%162	>B
<-.	1wA(&"	5B
;,-r+   c                    ^^^^ [        / S[        5      n U R                  5       U :X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        SS5      [        SS5      //S[        5      nU R                  5       U:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[	        [
        U4S	 j5        [        [        S5      [        S5      //S
[        5      m[	        [        U4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[	        [        U4S j5        [        S5      n[        SS/SS//U5      R                  5       [        SS/SS//U5      :X  d   e[        S5      m[	        [
        U4S j5        g )NrB   r   r   r   r    r!   r$  r  c                  $   > T R                  5       $ rL   rd  r  s   r)   r1   'test_DomainMatrix_inv.<locals>.<lambda>  s    r+   rU   c                  $   > T R                  5       $ rL   r  Anss   r)   r1   r        3779r+   r   c                  $   > T R                  5       $ rL   r  )Aninvs   r)   r1   r    s    uyy{r+   r   c                  D   > [        SS/SS//T 5      R                  5       $ )Nr   r   r   r    )r   rd  )Z6s   r)   r1   r    s"    QFQF#3R 8 < < >r+   )
r   r   rd  r   r   r   r   r   r
   r   )r(   AinvZ3r  r  r   r  s      @@@@r)   test_DomainMatrix_invr    s   R$A557a<<r!ubenr!uben5vrBA"R&"Q%2a8RAY*?@&"MD557d??	1r!u~1r!u~6	CB
;()
A1'
4C
!#452a5"Q%.2a5"Q%.962FE
%':;	AB1v1v#'')R!Q!Q0@"-EEEE	AB
;>?r+   c            	        ^ [        / S[        5      n U R                  5       S:X  d   e[        S//S[        5      n U R                  5       S:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U 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      n U 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      n U R                  5       [        S5      :X  d   e[        [        S5      [        S5      //S[        5      m[	        [
        U4S j5        [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       [        S5      :X  d   eg )NrB   r   r7   r   r   r    r!   r$  rT   r{  r  r   rU   c                  $   > T R                  5       $ rL   )detr  s   r)   r1   'test_DomainMatrix_det.<locals>.<lambda>1  r  r+   )r   r   r  r   r   r   )r(   r  s    @r)   test_DomainMatrix_detr     s   R$A557a<<qcUFB'A557a<<r!ubenr!uben5vrBA557bfr!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA557bfr!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA557be
A1'
4C
!#45r!ubenr!uben5vrBA557bfr+   c                    ^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        S5      [        S5      [        S5      /n[        [        S5      [        S5      /[        S5      [        S	5      //S[        5      nU R                  U5      Us=:X  a%  US
   U S-  -  US   U -  -   US   U S
-  -  -   :X  d   e   eU R                  / 5      U R                  U R                  U R
                  5      :X  d   eU R                  [        S5      /5      SU R                  SU R
                  5      -  :X  d   e[        [        S5      [        S5      //S[        5      m[        [        U4S j5        g )Nr   r   r   r    r!   rV        !   r   rU   c                  :   > T R                  [        S5      /5      $ rK  )	eval_polyr   )dM2s   r)   r1   -test_DomainMatrix_eval_poly.<locals>.<lambda>@  s    3=="Q%+Ar+   )	r   r   r  r6  r%   r&   rL  r   r   )dMpresultr  s      @r)   test_DomainMatrix_eval_polyr  7  sB   	1r!u~1r!u~6	CB	A1r!uABrFBrF+bfbf-=>KF<<?fI!RU
QqT"W(<qtBEz(IIIIII<<rxx"))<<<<<<A AbffQ		&:$::::
A1'
4C
!#ABr+   c                    ^^^^^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      m[        S5      [        S5      [        S5      /n[        [        S5      /[        S5      //S[        5      nU R                  UT5      Us=:X  a(  US	   U S-  -  T-  US   U -  T-  -   US   T-  -   :X  d   e   e[        [        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[        [
        UU4S j5        [        [        S5      /[        S5      //S[        5      m[        [        UU4S j5        g )Nr   r   r   r    r!   rI  (   W   r   c                  <   > TR                  [        S5      /T 5      $ rK  eval_poly_mulr   )r  dM1s   r)   r1   1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>L  s    3+<+<beWa+Hr+   rU   c                  <   > TR                  [        S5      /T 5      $ rK  r  )b1r  s   r)   r1   r  N  s    !1!12a5'2!>r+   c                  <   > TR                  [        S5      /T 5      $ rK  r  )bqr  s   r)   r1   r  P  s    ""2"2BqE7B"?r+   )r   r   r  r   r   r   r   r   )r(   r  r  r  r  r  r  r  s      @@@@@r)   test_DomainMatrix_eval_poly_mulr  C  s~   r!ubenr!uben5vrBAr!ug1w'4A	A1r!uABrF8bfX.;F??1a FMad1a4ikAaDF1H.DqtAv.MMMMMM	1r!u~1r!u~6	CB
A"Q%)62
6C
!#HI	1r!u~&	3B
<>?	1wA(&"	5B
=?@r+   c                   ^^ XT4nU R                  5       UR                  5       TR                  5       4nXE4 H  u  mpgTU-  X7-  :X  d   eXc4U* U* 4/nTR                  T5      U;   d   eTR                  TSS9U;   d   eTR                  T5      U;   d   eTR                  u  pX:X  a1  TR                  USS9Xc4:X  d   eTR	                  U5      Xc4:X  d   eM  [        [        UU4S j5        [        [        UU4S j5        M     g )Nr  r  charpolyc                  &   > T R                  T5      $ rL   solve_den_charpolyAir  s   r)   r1   "_check_solve_den.<locals>.<lambda>k  s    23H3H3Kr+   c                  $   > T R                  TSS9$ )Nr  r  	solve_denr  s   r)   r1   r  l  s    2<<*<3Ur+   )r   r  solve_den_rrefr%   r  r   r   )r(   r  xnumxdencase1case2xnum_ib_ianswersmnr  s    `         @r)   _check_solve_denr  S  s    aLE[[]DNN,akkm<E!>F&yDH$$$ >VGdU#34||A')))||Af|-888  #w... xx6<<J<7F>III((-&???)+KL)+UV% *r+   c            	         [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      n[        [        S5      /[        S5      //S[        5      n[        S	5      n[        XX#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      n[        [        S5      /[        S5      /[        S5      //S[        5      n[        S5      n[        XX#5        [        [        S5      /[        S5      //S[        5      n [        [        S5      /[        S5      //S[        5      n[        [        S5      //S[        5      n[        S5      n[        XX#5        g )Nr   r   r   r    r!   rI  r   r  r$  rT   r{  rV   r7   )r   r   r  )r(   r  r  r  s       r)   test_DomainMatrix_solve_denr  o  s   r!ubenr!uben5vrBAr!ug1w'4ABqE7RVH-vr:F
R&CQ6'	A1r!u	A1r!u	A1r!u !'	,A 	r!ug1wA0&"=ABqE7RUGbfX6CF
R&CQ6'r!ug1w'4Ar!ug1w'4ABqE7)VR0F
Q%CQ6'r+   c                  6  ^ ^^^^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m [        [        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[        [        U U4S	 j5        [        [        S5      /[        S5      //S[
        5      m[        [        U U4S
 j5        g )Nr   r   r   r    r!   rI  rU   c                  &   > T R                  T5      $ rL   r  )r  r  s   r)   r1   6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>  s    2+@+@+Cr+   c                  &   > T R                  T5      $ rL   r  r(   r  s   r)   r1   r    s    !5!5b!9r+   c                  &   > T R                  T5      $ rL   r  )r(   r  s   r)   r1   r    s    !"6"6r":r+   )r   r   r   r   r   r   r   )r(   r  r  r  r  s   @@@@@r)   $test_DomainMatrix_solve_den_charpolyr     s    r!ubenr!uben5vrBAr!ug1w'4A	1r!u~&	3B
!#CD	1r!u~&	3B
<9:	1wA(&"	5B
=:;r+   c                    ^^ [        [        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      n TR	                  5       T-  U :X  d   eTR                  TS	S
9U [        S5      4:X  d   eg )Nr   r   r    r!   r   rI  c                  &   > T R                  T5      $ rL   r  r(   r  s   r)   r1   <test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>  s    q/C/CA/Fr+   r$  F)checkr   )r   r   r   r   adjugater  )adjAbr(   r  s    @@r)   *test_DomainMatrix_solve_den_charpoly_checkr    s    r!ubenr!uben5vrBAr!ug1w'4A
%'FG2b6(RUG,fb9E::<!u$$$/E2a5>AAAr+   c                  0  ^ ^^ [        [        S5      [        S5      //S[        5      m [        [        S5      /[        S5      //S[        5      m[        [        U U4S j5        [        [        U U4S j5        [        [        S5      [        S5      //S[        5      m [        [        S5      [        S5      //S[        5      m[        [        U U4S j5        [        [        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      m [        [        S5      //S[        5      m[        [        U U4S j5        [        [        S5      /[        S5      //S[        5      m [        [        S5      /[        S5      //S[        5      m[        [
        U U4S j5        g )Nr   r   rU   rI  c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      Qr+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r        !1!1!!4r+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r    r  r+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r    r  r+   r   r    r!   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r    s    Rr+   r7   c                  $   > T R                  TSS9$ )Nr>   r  r  r  s   r)   r1   r    s    AKK9K$Er+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r    s    1+?+?+Br+   )r   r   r   r   r   r   )r(   r  r  s   @@@r)   "test_DomainMatrix_solve_den_errorsr    sy   r!uben%vr2Ar!ug1w'4A
</0
<45r!uben%vr2Ar!uben%vr2A
</0
<45r!ubenr!uben5vrBA	1r!u~&	3B
<01r!ugY+Ar!ugY+A
?EFr!ug1w'4Ar!ug1w'4A
!#BCr+   c                     ^ ^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m [        [        S5      /[        S5      //S[        5      m[        [        U U4S j5        [        [        U U4S j5        g )Nr   r   r!   rI  c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   Btest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>  s    q{{1~r+   c                  &   > T R                  T5      $ rL   r  r  s   r)   r1   r    s    q/?/?/Br+   )r   r   r   r   r  s   @@r)   0test_DomainMatrix_solve_den_rref_underdeterminedr    se    r!ubenr!uben5vrBAr!ug1w'4A
%'=>
%'BCr+   c            	        ^ [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //[        5      mTR                  5       u  pU [        S5      [        S
5      [        S5      /:X  d   eTR                  5       U S   TS-  -  U S   TS-  -  -   U S   TS-  -  -   s=:X  a  TR	                  U 5      :X  d   e   eTR                  5       U:X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //[        5      m[        [        U4S j5        g )Nr   r   r   r    rT   r   rR   r   	   r   c                  $   > T R                  5       $ rL   )adj_poly_detrN   s   r)   r1   0test_DomainMatrix_adj_poly_det.<locals>.<lambda>  s    1>>+;r+   )r   r   r   r  r  r  r   r   )r  detAr(   s     @r)   test_DomainMatrix_adj_poly_detr#    s7   
RUBqE2a5!UBqE2a5!UBqE2a5!#$&	(A nnGAA3C))))::<1Q419qtAqDy01Q419<NANNNNN557d??
RUBqE2a5!UBqE2a5!#$&	(A
!#;<r+   c                  4   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        S5      n[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  5       X!4:X  d   eg Nr   r   r   r    r!   r$  r%  )r   r   inv_den)r(   r  r  s      r)   test_DomainMatrix_inv_denr'    sw    r!ubenr!uben5vrBA
R&CBqE2b6?RVRUO<fbIF99;6-'''r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //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  )r(   r  s     r)   test_DomainMatrix_adjugater)    sl    r!ubenr!uben5vrBABqE2b6?RVRUO<fbIF::<6!!!r+   c                  2   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  5       U[        S5      4:X  d   eg r%  )r   r   adj_det)r(   adjAs     r)   test_DomainMatrix_adj_detr-    st    r!ubenr!uben5vrBA"Q%B2b62a5/:FBGD99;4B.(((r+   c            	        ^ [        / S[        5      mTR                  5       TT/ 4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n/ nTR                  5       XU4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      nS	/nTR                  5       XU4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n/ nTR                  5       XU4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n/ nTR                  5       XU4: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      //S[        5      n [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S[        5      n/ nTR                  5       XU4: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      [        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/ nTR                  5       XU4:X  d   e/ SQ/ SQ/ SQ/ SQ/m/ SQ/ SQ/ SQ/ SQ/n / SQ/ SQ/ SQ/ SQ/nS n[        U" T[        5      S[        5      m[        U" U [        5      S[        5      n [        U" U[        5      S[        5      nTR                  5       X/ 4:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[	        [
        U4S j5        g )NrB   r   r   r   r    r!   r   r$  r-   rT   r   r   r%  ir   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 rL   r8   )rowsrY   rowr   s       r)   r1   &test_DomainMatrix_lu.<locals>.<lambda>	  s,    F# 5AQ 5F 5Fs   	0+00)r    r    c                  $   > T R                  5       $ rL   )lurN   s   r)   r1   r2    s    r+   )r   r   r4  r   r   r   )r   Uswapsto_domr(   s       @r)   test_DomainMatrix_lur8    s   R$A446aBZr!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!ubfo6CAE446aE]"""r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAHE446aE]"""r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAE446aE]"""r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAE446aE]"""r!ubeRU+beRUBqE-BCVRPAr!ubenr!uben5vrBAr!ubeRU+beRVRV-DEvrRAE446aE]"""r!ubenr!ubenr!ubenEvrRA	A1r!u	A1r!u	A1r!u !'	,A 	r!ubenr!ubfo1r!u~FPRSAE446aE]"""	|\<@A	|\<@A	|\<@AFFVAr]FB/AVAr]FB/AVAr]FB/A446aBZr!ubenr!uben5vrBA
;'r+   c                  
	  ^^ [        / S[        5      =m=mn TR                  T5      U :X  d   e[        [        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[        [        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[        [        S5      /[        S5      //S[        5      m[        [        UU4S	 j5        [        [        S5      [        S5      /[        S5      [        S5      /[        S
5      [        S5      //S[        5      m[        [        S5      /[        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      [        S5      //S[        5      m[        [        S5      /[        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      [        S5      //S[        5      m[        [        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        g )NrB   r   r   r   r    r!   rI  r   c                  &   > T R                  T5      $ rL   lu_solver  s   r)   r1   ,test_DomainMatrix_lu_solve.<locals>.<lambda>'      qzz!}r+   rT   r   r   rV   c                  &   > T R                  T5      $ rL   r;  r  s   r)   r1   r=  2  r>  r+   rU   r7   c                  &   > T R                  T5      $ rL   r;  r  s   r)   r1   r=  7  s    

1r+   c                  &   > T R                  T5      $ rL   r;  r  s   r)   r1   r=  <  s    

1r+   c                  &   > T R                  T5      $ rL   r;  r  s   r)   r1   r=  A  s    Ar+   )	r   r   r<  r   r   rM  r   r   r   )r   r(   r  s    @@r)   test_DomainMatrix_lu_solverC    s   R,,A,A::a=A 	r!ubenr!uben5vrBAr!ug1w'4Ar!ug1az*FB7A::a=A 	r!ubenr!uben5vrBAr!ug1w'4Ar!ug1az*FB7A::a=A 	r!ubenr!uben5vrBAr!ug1w'4A
%'<= 	r!ubenr!ubenr!ubenEvrRAr!ug1wA0&"=Ar!ug1az*FB7A::a=A 	r!ubenr!ubenr!ubenEvrRAr!ug1wA0&"=A
%'<= 	r!uben%vr2Ar!ugY+A
 56 	r!ubenr!uben5vrBAr!ug1w'4A
;-. 	r!ubenr!uben5vrBAr!uben%vr2A
<./r+   c                  `  ^ [        / S[        5      n [        S5      /nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   e[        S//S[        5      n [        S5      [        S5      /nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        S5      [        S	5      [        S
5      /nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   e[        [        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      /nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   e[        [        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      /nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   e[	        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
[        5      n [        R
                  " / SQ5      nU R                  5       U:X  d   eU R                  5       R                  5       U:X  d   e[        [        S5      [        S5      //S[        5      m[        [        U4S j5        g )NrB   r   r7   r  r   r   r    r!   r$  rT   r   rR   r   r  r{  r  r  r   )
   r   rT  r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
E   r   r   r   r   V   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   r   )
r   r   r   r   r>  C   r   r   r   r   )r   iir   i:r   r   r   r   r   r   rU   c                  $   > T R                  5       $ rL   )r  r  s   r)   r1   ,test_DomainMatrix_charpoly.<locals>.<lambda>o  s    3<<>r+   )	r   r   r  r   r   mapr   r   r   )r(   r  r  s     @r)   test_DomainMatrix_charpolyrP  D  s   R$A	AA::<1;;=!!#q(((qcUFB'A	A2A::<1;;=!!#q(((r!ubenr!uben5vrBA	A22A::<1;;=!!#q(((r!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA	A3C"Q%(A::<1;;=!!#q(((r!ubeRU+!ubeRU+!ubeRU+-.4b	:A 
A1r"vr!u%A::<1;;=!!#q(((
0000000000	2 46		7A 	<=A::<1;;=!!#q(((
A1'
4C
!#9:r+   c                  8   [        / S[        5      n U R                  5       / :X  d   e[        S//[        5      n U R                  5       [        S5      [        S5      /S4/:X  d   e[        SS/SS//[        5      n U R                  5       [        S5      [        S5      [        S5      /S4/:X  d   e[        / S	Q/ S
Q/ SQ/[        5      n U R                  5       [        S5      [        S5      /S4[        S5      [        S5      [        S5      /S4/:X  d   eg )NrB   r   r  r   r   r    rE  r$  )r   r   r   )r   r    r   )r   r   r   )r   r   charpoly_factor_listr   rN   s    r)   &test_DomainMatrix_charpoly_factor_listrS  r  s$   R$A!!#r)))
QC5"A!!#
Q%B!(    	QFQFR A!!#
Q%BB	 !$(    	Iy),b1A!!#
Q%B!
Q%BB	 !$(   r+   c                      [         R                  " S[        5      n U R                  [        R                  " S[        5      :X  d   eU R
                  S:X  d   eU R                  [        :X  d   eg )Nr   r{  )r   rL  r   r#   r   r%   r&   rN   s    r)   test_DomainMatrix_eyerU    sS    BA55CGGFB''''77f88r>>r+   c                      [         R                  " S[        5      n U R                  [        R                  " S[        5      :X  d   eU R
                  S:X  d   eU R                  [        :X  d   eg )NrU   )r   r6  r   r#   r   r%   r&   rN   s    r)   test_DomainMatrix_zerosrW    sS    62&A55CIIfb))))77f88r>>r+   c                  h   [         R                  " S[        5      n [        S:w  a,  U R                  [
        R                  " S[        5      :X  d   eO9U R                  [        R                  " S[        5      R                  5       :X  d   eU R                  S:X  d   eU R                  [        :X  d   eg )Nr   r"   )
r   onesr   r   r#   r   r   r$   r%   r&   rN   s    r)   test_DomainMatrix_onesrZ    s    &"%Awuu,,,,uu,33555577f88r>>r+   c                     [        S[        S5      0S[        S5      0S.S[        5      n [         R                  " [        S5      [        S5      /[        5      U :X  d   e[        S[        S5      0S[        S5      0S.S[        5      n [         R                  " [        S5      [        S5      /[        S5      U :X  d   eg )Nr   r   r   r   r-   r!   )r   r    )r   r   diagrN   s    r)   test_DomainMatrix_diagr]    s    2a5	a1Y/<AbeRU^R0A5552a5	a1Y/<AbeRU^R8A===r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S	5      //S[        5      n[        [        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      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                  U5      U:X  d   eU R                  X5      U:X  d   eg )Nr   r   r   r    r!   rT   r   rR   r   r  r*     rV  r   r    )r   r   )r   r   hstackr(   rt   ru   ABABCs        r)   test_DomainMatrix_hstackre    se   r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubfo22'78&"EA		A1r!ube$	A1r!ube$&'-r
3B 	A1r!ubeRUBrF3	A1r!ubeRVRV467=rCC 88A;"88A>S   r+   c                     [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n [        [        S5      [        S5      /[        S5      [        S	5      //S[        5      n[        [        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      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                  U5      U:X  d   eU R                  X5      U:X  d   eg )Nr   r   r   r    r!   rT   r   rR   r   r  r*  r_  rV  )r    r   )r   r   )r   r   vstackrb  s        r)   test_DomainMatrix_vstackrh    sw   r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubfo22'78&"EA		A1	A1	A1	A1	  	
%B
 	A1	A1	A1	A1	A2	BB "2'C 88A;"88A>S   r+   c                      [        [        S5      [        S5      //S[        5      n [        [        S5      [        S5      //S[        5      nU R                  S 5      U:X  d   eg )Nr   r   rU   r    c                     SU -  $ )Nr   r8   )r   s    r)   r1   -test_DomainMatrix_applyfunc.<locals>.<lambda>  s    1r+   )r   r   	applyfuncr   s     r)   test_DomainMatrix_applyfuncrm    sS    r!uben%vr2Ar!uben%vr2A;;}%***r+   c                  0  ^ [        [        S5      [        S5      /[        S5      [        S5      //S[        5      m[        [        S5      [        S5      -  [        5      n TU -  [        [        SS5      [        S5      /[        SS5      [        S5      //S[        5      :X  d   eTS-  [        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eST-  [        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eT[        [        S	5      [        5      -  [        0 S[        5      :X  d   eT[        [        S5      [        5      -  T:X  d   e[	        [
        U4S
 j5        g )Nr   r   r   r    r!   r  r   r   r   c                     > T S-  $ Ng      ?r8   rN   s   r)   r1   -test_DomainMatrix_scalarmul.<locals>.<lambda>  	    a#gr+   )r   r   r   r   r   rC   )lamdar(   s    @r)   test_DomainMatrix_scalarmulrt    sD   r!ubenr!uben5vrBAAr!ub)Eu9r!QxA&7"Q(BqE9J%KVUWXXXXq5L2a5"Q%.2a5"Q%.!A62NNNNq5L2a5"Q%.2a5"Q%.!A62NNNN|BqE2&&,r62*FFFF|BqE2&&!+++
9o&r+   c            	        ^ [         R                  " [        SS/SS//5      5      m[        [	        S5      [	        S5      -  [        5      n TU -  [        [	        SS5      [	        SS5      S.[	        S5      [	        SS5      S.S.S[        5      :X  d   e[        [        S5      [
        5      nTU-  [        [	        S5      [	        S5      S.[	        S5      [	        S5      S.S.S[        5      :X  d   eTS-  [        [	        S5      [	        S5      S.[	        S5      [	        S5      S.S.S[        5      :X  d   eTS-  [        [	        SS5      [	        S5      S.[	        SS5      [	        S5      S.S.S[        5      :X  d   e[        [        U4S j5        [        [        U4S	 j5        [        [        U4S
 j5        [        [        S5      [        S5      /[        S5      [        S5      //S[
        5      mTR                  5       S-  [        [	        SS5      [	        S5      /[	        SS5      [	        S5      //S[        5      :X  d   eTS-  [        [	        SS5      [	        S5      /[	        SS5      [	        S5      //S[        5      :X  d   eTR                  5       [	        SS5      -  [        [	        SS5      [	        S5      /[	        SS5      [	        S5      //S[        5      :X  d   eg )Nr   r   r   r    r-   r   r!   c                     > T S-  $ rh  r8   rN   s   r)   r1   +test_DomainMatrix_truediv.<locals>.<lambda>  s	    a!er+   c                     > T S-  $ rp  r8   rN   s   r)   r1   rw    rr  r+   c                  <   > T [        [        S5      [        5      -  $ rh  )r   r   rN   s   r)   r1   rw    s    a,r!ub*A&Ar+   r  r   )
r   ro   r   r   r   r   r   rk  rC   r   )rs  r  r(   s     @r)   test_DomainMatrix_truedivrz    sp     !Q!Q(8!9:AAr!ub)Eu9R1X"Q()CBqEVXYZ\]V^H_%`bhjlmmmmRUBAq5LA2a5%9"Q%BqE>R!SU[]_````q5LA2a5%9"Q%BqE>R!SU[]_````q5LAqbe%<R1XRTUVRWAX!Y[aceffff
m,
9o&
ABr!ubenr!uben5vrBA::<!|bAh1->Aq2a5@Q,RTZ\^____q5L2a8RU"3bAh15F!GQSTTTT::<"Qq'!\Bq!Hbe3Dr!QxQSTUQVFW2XZ`bd%eeeer+   c            
      	  ^  [        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S	5      //S
[        5      m T SS 2S S24   [        [        S5      /[        S5      //S[        5      :X  d   eT SS S24   [        [        S5      //S[        5      :X  d   eT S S2S S24   [        [        S5      //S[        5      :X  d   eT S S2SS24   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      :X  d   eT S S 2S4   [        [        S5      /[        S5      /[        S	5      //S[        5      :X  d   eT SS S 24   [        [        S5      [        S5      [        S	5      //S[        5      :X  d   eT S S S2S S 24   [        [        S5      [        S5      [        S	5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S
[        5      :X  d   e[        [        U 4S j5        [        [        U 4S j5        T S   [	        [        S5      [        5      :X  d   eT S   [	        [        S5      [        5      :X  d   eT S   [	        [        S5      [        5      :X  d   eT S   [	        [        S5      [        5      :X  d   e[        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        SS[        S5      00S[        5      m T S   [	        [        S5      [        5      :X  d   eT S   [	        [        S5      [        5      :X  d   e[        SSS00S[        5      m T SS 2S4   [        SSS00S[        5      :X  d   e[        [        U 4S j5        [        S[        S5      0S[        S5      0S .S[        5      m T S S2S S24   [        0 S[        5      :X  d   eT SS 2SS 24   [        SS0SS0S!.S
[        5      :X  d   eT SS 2SS 24   [        SSS00S[        5      :X  d   eT SS 2SS 24   [        0 S"[        5      :X  d   eg )#Nr   r   r   r    rT   r   rR   r   r  r{  r$  rI  r7   r  r   r!   rV   rQ  c                     > T SS S24   $ )Nr    r$  r8   r  s   r)   r1   +test_DomainMatrix_getitem.<locals>.<lambda>  s    r!SbS&zr+   c                     > T S S2S4   $ )Nr$  r    r8   r}  s   r)   r1   r~    s    r#2#q&zr+   rU   )r$  r   )r   r$  )r  r%  c                     > T S   $ )Nr{  r8   r}  s   r)   r1   r~  
  	    r$xr+   c                     > T S   $ )NrW   r8   r}  s   r)   r1   r~    r  r+   c                     > T S   $ )N)r  r   r8   r}  s   r)   r1   r~    s	    r&zr+   )r*  r*  rT   rT   rB   c                     > T S   $ )Nr   r   r8   r}  s   r)   r1   r~    r  r+   r`  )r   r   r  )r   r   r   
IndexErrorr   r}  s   @r)   test_DomainMatrix_getitemr    s)   		A1r!u	A1r!u	A1r!u !'
,B
 ab"f:1wA&8&"EEEEae9r!ugY;;;;crc#2#g;,Ay&"====crc!A#g;,A1A1'GQSTTTTae9r!ug1wA%@&"MMMMb!e9r!ubeRU&;%<fbIIIIddAg;,UBqE2a51UBqE2a51UBqE2a51(3 5;B@ @ @ @
 :)*
:)*d8|BqE2....e9RUB////e9RUB////f:beR0000
:'(
:'(
:)*	q1be*ox	4Bd8|BqE2....d8|BqE2....	q1a&k5"	-Bab!e9a!Q[&"====
:'(	1be*!RU4fb	ABbqb!e9R4444abe9!QQF%;VRHHHHabe9a!Q[&"====ab!"f:b&"5555r+   c                     [        S[        S5      0S[        S5      0S.S[        5      n U R                  SS5      nU[        R                  L d   eU R                  SS5      nUS:X  a  [        U[        5      (       d   eg )Nr   r    r   r`  r  r   )r   r   getitem_sympyr   Zero
isinstancer   )r  val1val2s      r)   test_DomainMatrix_getitem_sympyr    su    	1be*!RU4fb	ABAq!D166>>Aq!D19D'22222r+   c            	      x  ^^^ [        [        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      nU R                  SS/SS/5      U:X  d   eU R                  5       R                  SS/SS/5      UR                  5       :X  d   eU R                  SS/SS/5      U:X  d   eU R                  5       R                  SS/SS/5      UR                  5       :X  d   e[        [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //S
[        5      nU R                  / SQ/ SQ5      U:X  d   eU R                  5       R                  / SQ/ SQ5      UR                  5       :X  d   e/ / S4S// S4/ S/S4/nU H  u  mmnU R                  TT5      [         R                  " U[        5      R                  5       :X  d   eU R                  5       R                  TT5      [         R                  " U[        5      :X  a  M   e   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      mS/S/4S/S/4S/S/4S/S/4/nU H2  u  mm[        [        UUU4S j5        [        [        UUU4S j5        M4     g )Nr   r   r   r    rT   r   rR   r   r  r{  r!   r   r  )r   r   r   rB   r   r-   r%  c                  (   > TR                  TT 5      $ rL   )extractcolsr  r0  s   r)   r1   +test_DomainMatrix_extract.<locals>.<lambda>E  s    2::dD#9r+   c                  D   > TR                  5       R                  TT 5      $ rL   )r   r  r  s   r)   r1   r  F  s    2<<>#9#9$#Er+   )r   r   r  r   r6  r   r   r  )	r  r  dM3emptysizebad_indicesr  r  r0  s	         @@@r)   test_DomainMatrix_extractr  %  s   
	A1r!u	A1r!u	A1r!u !',C 	A1	A1%C ;;1v1v&#---==?""Aq6Aq62cmmoEEE;;2wB(C///==?""Ar7QG4GGG
	A1r!u	A1r!u	A1r!u !',C ;;y),333==?""9i8CMMOKKK 
R
b&	aS&E
 "dD{{4&,*<*<T2*F*O*O*QQQQ}}&&tT2l6H6Hr6RRRR " 
1r!u~1r!u~6	CBC!:aSzRD1#;!rdDK!
dz9:zEF "r+   c                  4  ^ ^ [        S[        S5      0S[        S5      0S.S[        5      m [        S5      T S'   T [        S[        S5      0S[        S5      0S.S[        5      :X  d   eU 4S jm[        [        U4S j5        [        [        U4S	 j5        g )
Nr   r   r    r`  r  r!   c                    > UTX4'   g rL   r8   )rG   jvalr  s      r)   setitem*test_DomainMatrix_setitem.<locals>.setitemM  s    14r+   c                  ,   > T " SS[        SS5      5      $ )Nr   r   )r   r  s   r)   r1   +test_DomainMatrix_setitem.<locals>.<lambda>O  s    gaBq!H5r+   c                  >   > T " [        SS5      S[        S5      5      $ rC  )slicer   r  s   r)   r1   r  P  s    aQ1(Fr+   )r   r   r   rC   rM  )r  r  s   @@r)   test_DomainMatrix_setitemr  I  s{    	1be*!RU4fb	AB!uBtH1be*!RU<fbIIII
956
 FGr+   c                  n   SS K n [        S[        S5      0S[        S5      0S.S[        5      nU R                  U R	                  U5      5      U:X  d   e[        [        S5      [        S5      /[        S5      [        S5      //S[        5      nU R                  U R	                  U5      5      U:X  d   eg )	Nr   r   r   r    r`  r  r   r!   )pickler   r   loadsdumps)r  r  s     r)   test_DomainMatrix_picklingr  S  s    	1be*!RU4fb	AB<<R()R///	1r!u~1r!u~6	CB<<R()R///r+   c                     [        SS/SS//[        5      n U R                  5       u  pp4UR                  U R                  :X  d   eUR                  U R                  :X  d   eUR                  U R                  :X  d   eUR                  U R                  :X  d   eU[        SS/SS//[        5      :X  d   eU[        SS/SS//[        5      :X  d   eU[        SS/SS//[        5      :X  d   eU[        SS/SS//[        5      :X  d   eUR	                  5       u  pVUR                  U 5      R                  U5      UR                  U5      R                  U5      :X  d   eg )Nr   r   r   r    r   r$  )r   r   fflur%   r&  r2  rmul)r(   Pr   Dr5  dids          r)   test_DomainMatrix_fflur  [  sK   
QFQFR AJA!77agg77agg77agg77aggQFQF#R((((QFQG$b))))QFQG$b))))QFQG$b))))IIKEB88A;A!((2,"5"5a"8888r+   N)vsympy.external.gmpyr   sympyr   r   r   r   r   r	   r
   r   r   r   r   !sympy.polys.matrices.domainmatrixr   r   r   sympy.polys.matrices.exceptionsr   r   r   r   r   r   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.sdmr   sympy.testing.pytestr   r*   rI   rP   rZ   rb   rm   rp   rv   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"  r(  r9  r<  rO  r]  re  rl  rs  ry  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r#  r'  r)  r-  r8  rC  rP  rS  rU  rW  rZ  r]  re  rh  rm  rt  rz  r  r  r  r  r  r  r8   r+   r)   <module>r     s   , = = ) ) L L   ) ( '&R8$%P2
I@#LM
=/
L>+<2M;
<
4
B8:	*=C
$? F
".J!H!$HN%3$
0.="	I54':T
#N,.@0.	CA W8(.<BD0D=(")5(p.0b+;\*>!!*+	'f()6X3!GHH09r+   