
    Og9                        d dl mZ d dlmZmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d	 Z d
 Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@d* ZAd+ ZBd, ZCd- ZDd. ZEd/ ZFd0 ZGd1 ZHd2 ZId3 ZJd4 ZKd5 ZLd6 ZMd7 ZNd8 ZOd9 ZPd: ZQd; ZRd< ZSd= ZTd> ZUd? ZVd@ ZWdA ZXdB ZYdC ZZdD Z[dE Z\dF Z]dG Z^dH Z_dI Z`dJ ZadK ZbdL ZcdM ZddN ZedO ZfdP ZgdQ ZhdR ZidS ZjdT ZkdU ZldV ZmdW ZndX ZodY ZpdZ Zqd[ Zrd\ Zsd] Zty^)_    )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                  d   t        t        d      t        d      gt        d      t        d      ggdt              } t        ddgddggt              }t        dk7  r|j                  | k(  s!J |j                  | j                         k(  sJ |j                  dk(  sJ |j                  t        k(  sJ y )N            r   r   flint)r   r   r   r   repto_dfmshapedomain)ddmAs     s/var/www/html/suriana-translation/venv/lib/python3.12/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                     t        d      t        d      gt        d      t        d      ggt        d      t        d      dt        d      t        d      dd} t        dt               t        | dt               t        dt               }t        dk7  r|j
                  k(  s!J |j
                  j                         k(  sJ |j                  dk(  sJ |j                  t         k(  sJ t        | dt               }|j
                  k(  sJ |j                  dk(  sJ |j                  t         k(  sJ t        t        fd       t        t        fd	       t        t        d
        dfdffD ]k  \  }}|dk(  rt        dk(  r|j                         }t        dt         |      }|j
                  |k(  sJ t        | dt         |      }|j
                  |k(  rkJ  t        t        fd       t        t        d        y )Nr   r   r   r    r   r   r!   r"   c                  &    t         dt              S Nr!   r   r   )r'   s   r)   <lambda>z(test_DomainMatrix_init.<locals>.<lambda>/       l3; r+   c                  &    t         dt              S r/   r0   )sdms   r)   r1   z(test_DomainMatrix_init.<locals>.<lambda>0   r2   r+   c                  :    t        t        dgg      dt              S )Nr   r   r   )r   r   r    r+   r)   r1   z(test_DomainMatrix_init.<locals>.<lambda>1   s    l6A3%=&"E r+   sparsedensefmtc                  *    t         dt        d      S )Nr!   invalidr:   r0   )lols   r)   r1   z(test_DomainMatrix_init.<locals>.<lambda>;   s    |CK r+   c                  N    t        t        d      t        d      ggdt              S )Nr   r   r!   r0   r7   r+   r)   r1   z(test_DomainMatrix_init.<locals>.<lambda>=   s    L2a5"Q%.1A62$N r+   )r   r   r   r   r   r#   r$   r%   r&   r   	TypeError
ValueErrorr   )dodr(   r;   r#   r'   r>   r4   s       @@@r)   test_DomainMatrix_initrC      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 S'>lg5**,Cfbc2uu||fbc2uu|| :KL
?NOr+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } t        j                  |       j                  | k(  sJ j
                  dk(  sJ j                  t        k(  sJ t        t        d      t        d      dt        d      t        d      dddt              }t        j                  |      j                  |k(  sJ j
                  dk(  sJ j                  t        k(  sJ t        t        d      ggdt              t        t        fd       y )	Nr   r   r   r    r!   r-   r6   c                  .    t        j                         S N)r   from_repr(   s   r)   r1   z,test_DomainMatrix_from_rep.<locals>.<lambda>O   s    l33A6 r+   )
r   r   r   rG   r#   r%   r&   r   r   r@   )r'   r4   r(   s     @r)   test_DomainMatrix_from_reprI   @   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                     t        t        d      t        d      gt        d      t        d      ggdt              } t        j                  ddgddggt              }t        dk7  r|j
                  | k(  s!J |j
                  | j                         k(  sJ |j                  dk(  sJ |j                  t        k(  sJ t        d      }t         |d       |d      g |d       |d      ggd|      } t        j                  ddgddgg|      }|j
                  | k(  sJ |j                  dk(  sJ |j                  |k(  sJ t        t        dd      t        dd      gt        dd      t        dd      ggdt              } t        j                  d	d
gddggt              }t        dk7  r|j
                  | k(  s!J |j
                  | j                         k(  sJ |j                  dk(  sJ |j                  t        k(  sJ y )Nr   r   r   r    r!   r"         r   r   r   r   r   r    )rL   r   )r   r   r   	from_listr   r#   r$   r%   r&   r
   r   )r'   r(   doms      r)   test_DomainMatrix_from_listrR   R   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55C<<77f88s??
1a"Q(#bAh1a%9:FB
GC 0662BCRHAwuu||uu

$$$77f88r>>r+   c            
         t        t        d      t        d      gt        d      t        d      ggdt              } t        j                  ddddgddgg      }t        dk7  r|j
                  | k(  s!J |j
                  | j                         k(  sJ |j                  dk(  sJ |j                  t        k(  sJ t        j                  t        d            }t        |j                  dt        d      z         |j                  dt        d      z         g|j                  dt        d      z         |j                  dt        d      z         ggd|      } t        j                  dddt        d      z   dt        d      z   gdt        d      z   dt        d      z   ggd      }|j
                  | k(  sJ |j                  dk(  sJ |j                  |k(  sJ y )	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_sympyrZ   n   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                     t        dt        dd      idt        dd      iddt              } dt        dd      idt        dd      id}t        j                  dd|      }|j
                  | k(  sJ |j                  dk(  sJ |j                  t        k(  sJ t        j                  t        t        fd       t        t        fd       y )	Nr   r   r   r   r-   r!   c            
      4      ddddt        dd      ii      S )Nr   r   r   r   r   fdss   r)   r1   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>        C1q1hq!n2E.F$G r+   c            
      4      ddddt        dd      ii      S )Nr   r   r   r   r]   r^   s   r)   r1   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>   r`   r+   )
r   r   r   r   from_dict_sympyr#   r%   r&   r   r   )r4   
sympy_dictr(   r_   s      @r)   !test_DomainMatrix_from_dict_sympyrd      s    
1bAh-Q1aM2FB
?C!Q(a!Q-@AJ$$Q:6A55C<<77f88r>>

&
&C
?GH
?GHr+   c            
      `   t        t        d      t        d      dt        d      t        d      dddt              } t        j                  t	        ddgddgg            }|j
                  | k(  sJ |j                  dk(  sJ |j                  t        k(  sJ t        j                  t        d            }t        |j                  dt        d      z         |j                  dt        d      z         d|j                  dt        d      z         |j                  dt        d      z         ddd|      } t        j                  t	        dt        d      z   dt        d      z   gdt        d      z   dt        d      z   gg      d      }|j
                  | k(  sJ |j                  dk(  sJ |j                  |k(  sJ t        j                  t	        t        dd      t        dd      gt        d	d      t        d	d      gg      d
      }t        t        dd      t        dd      gt        d	d      t        d	d      ggdt              }t        dk7  r|j
                  |k(  s!J |j
                  |j                         k(  sJ |j                  dk(  sJ |j                  t        k(  sJ y )Nr   r   r-   r   r    r!   TrT   r   r9   r:   r"   )r   r   r   from_Matrixr   r#   r%   r&   r   rW   r   rX   r   r   r$   )r4   r(   rY   r'   s       r)   test_DomainMatrix_from_Matrixrg      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   t        t        d      t        d      gt        d      t        d      ggdt              } | | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              }| |k7  sJ t        d      t        d      gt        d      t        d      gg}| |k7  sJ y Nr   r   r   r    r!   r0   r(   BCs      r)   test_DomainMatrix_eqrm      s    r!ubenr!uben5vrBA6M6r!ubenr!uben5vrBA6M6
Q%A"Q%A(A6M6r+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }t        t        d      t        d      gt        d      t        d      ggdt              }t        t        d      ggdt              }| j                  |      du sJ | j                  |      du sJ | j                  |      du sJ y )	Nr   r   r   r    r!   r6   TF)r   r   r   unify_eq)r(   B1B2B3s       r)   test_DomainMatrix_unify_eqrs      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            	      n   t        j                  g d      \  } }|t        d      t        d      t        d      t        d      gk(  sJ | t        k(  sJ t        j                  dddt        dd      g      \  } }|t	        d      t	        d      t	        d      t	        dd      gk(  sJ | t        k(  sJ y )N)r   r   r   r    r   r   r   r    )r   
get_domainr   r   r   )rY   itemss     r)   test_DomainMatrix_get_domainrw      s    &&|4HAuRUBqE2a5"Q%00007N7&&1a!Q'@AHAuRUBqE2a5"Q(33337N7r+   c                  $   t        t        d      t        d      gt        d      t        d      ggdt              } | j                  t              }|t        t        d      t        d      gt        d      t        d      ggdt              k(  sJ y ri   )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                     ddgddgg} t        | t              j                         t        | t              k(  sJ t        | t              j                  d      t        | t              k(  sJ t        | t              j                  d      t        | t              k(  sJ t	        d      }d|g|dz  |dz  gg}t        |t        |         j                  d      t        |t        j
                  |            k(  sJ y )Nr   r   r   r   T)fieldx)r   r   choose_domainr   r	   
frac_field)r(   r   rk   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                  &   t        ddgddggt              } | j                  j                         }| j                  j	                         }| ||fD ]  }|j                         \  }}|j                  |||j                        |k(  sJ |D cg c]  }t        |       }}|j                  ||t              |j                  t              k(  sJ |D cg c]  }d|z  	 }}|j                  |||j                        d|z  k(  rJ  y c c}w c c}w )Nr   r   r   r   )
r   r   r#   to_ddmto_sdm
to_flat_nzfrom_flat_nzr&   r   ry   )	AdmAddmAsdmr(   elemsdataeelemsqelems2s	            r)   test_DomainMatrix_to_flat_nzr      s    
q!fq!fr
"C77>>D77>>D4 =llnt~~eT1884999!&'A"Q%''~~fdB/1<<3CCCC$%!!A#%%~~fdAHH51<<<= (%s   D	Dc                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         | j                  t              k(  sJ y ri   )r   r   to_sympyry   r   rH   s    r)   test_DomainMatrix_to_sympyr      sJ    r!ubenr!uben5vrBA::<1<<....r+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } | j                         }|t        t        d      t        d      gt        d      t        d      ggdt              k(  sJ y ri   )r   r   to_fieldr   rz   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                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         }|j                  dddddddk(  sJ y )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                      t        ddddddddt              } | j                         }t        ddgddggdt              }t        dk7  r|j
                  |k(  sJ y |j
                  |j                         k(  sJ y )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                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                  |       | | fk(  sJ | j                  |      ||fk(  sJ |j                  |       ||fk(  sJ |j                  |      ||fk(  sJ t        dt        d      idt        d      iddt              t        t        d      t        d      gt        d      t        d      ggdt              j                        fk(  sJ j                        fk(  sJ j                  d	      \  }}|j                  t        ddgddggdt              j                         k(  sJ |j                  t        ddgddggdt              j                         k(  sJ j                  d
	      \  }}|j                  t        ddiddiddt              k(  sJ |j                  t        ddddddddt              k(  sJ t        t        fd       y )Nr   r   r   r    r!   r   r-   r9   r:   r8   c                  *    j                   d      S )Nr=   r:   )unifyAdAss   r)   r1   z)test_DomainMatrix_unify.<locals>.<lambda>   s    rxx	x: r+   )
r   r   r   r   r#   r   to_dfm_or_ddmr   r   rA   )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<B8###88B<B8###88B<B8###88B<B8###	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                     t        t        d      t        d      gt        d      t        d      ggdt              } t        ddgddgg      }| j                         |k(  sJ | j	                         j                         |k(  sJ | j                  t              j                         |k(  sJ | j                  t        j                  t        d                  j                         |k(  sJ y ri   )	r   r   r   	to_Matrixr   ry   r   rW   r   )r(   A_Matrixs     r)   test_DomainMatrix_to_Matrixr   #  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                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d      gt        d      t        d      ggk(  sJ y ri   )r   r   to_listrH   s    r)   test_DomainMatrix_to_listr   ,  s^    r!ubenr!uben5vrBA99;BqE2a5>BqE2a5>::::r+   c                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d      t        d      t        d      gk(  sJ y ri   )r   r   to_list_flatrH   s    r)   test_DomainMatrix_to_list_flatr   1  s[    r!ubenr!uben5vrBA>>1r!ubeRU;;;;r+   c                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d      t        d      t        d      gk(  sJ y ri   )r   r   flatrH   s    r)   test_DomainMatrix_flatr   6  sZ    r!ubenr!uben5vrBA6681r!ubeRU3333r+   c                  @   t        d      t        d      t        d      t        d      g} t        t        d      t        d      gt        d      t        d      ggdt               }t        j                  | dt               |k(  sJ t        j                  | dt               |j                  j                         k(  sJ t        j                  | dt               |j                  j                         k(  sJ ||j                  |j                         |j                  |j                        k(  sJ t        t        t        j                  | dt                t        t        t        j                  | dt                t        t        t        j                  | dt                y )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   ;  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                     t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d      dt        d      t        d      ddk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              } | j                         dt        d      idt        d      idk(  sJ y )Nr   r   r   r    r!   r-   r   )r   r   to_dodrH   s    r)   test_DomainMatrix_to_dodr   J  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                  r   t        d      t        d      dt        d      t        d      dd} t        ddgddggt               }t        j                  | dt               |j	                         k(  sJ |j                  |       |k(  sJ |j                  | t              |j                  t              k(  sJ y )Nr   r   r-   r   r    r!   )r   r   r   from_dodr   from_dod_liker   ry   rv   r(   s     r)   test_DomainMatrix_from_dodr   Q  s    qERU#2a5BqE(:;E
QFQFR A  3q{{}DDD??5!Q&&&??5"%b)9999r+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d      t        d      t        d      dk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              } t        d      t        d      d}| j                         |k(  sJ | j                         j                         |k(  sJ | j	                         j                         |k(  sJ | j
                  j                         j                         |k(  sJ | j
                  j                         j                         |k(  sJ y )	Nr   r   r   r    r!   )r   r   r-   r   r   r6   r   r   r6   )r   r   to_dokr   r   r#   r   r   )r(   doks     r)   test_DomainMatrix_to_dokr   Y  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                     t        d      t        d      d} t        ddgddggt               }t        j                  | dt               |j	                         k(  sJ t        j                  | dt               |j                  j                         k(  sJ t        j                  | dt               |j                  j                         k(  sJ y )Nr   r   r   r   r!   )
r   r   r   from_dokr   r   r#   r   r   r   r   s     r)   test_DomainMatrix_from_dokr   e  s    UBqE*E
QFQFR A  3q{{}DDD<<vr*aeelln<<<<<vr*aeelln<<<r+   c                      t        t        d      t        d      gt        d      t        d      ggdt              } t        |       dk(  sJ y )Nr   r   r   r    r!   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r   reprrH   s    r)   test_DomainMatrix_reprr   m  s@    r!ubenr!uben5vrBA7BBBBr+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                         |k(  sJ y ri   )r   r   	transpose)r(   ATs     r)   test_DomainMatrix_transposer   r  sl    r!ubenr!uben5vrBA	1r!u~1r!u~6	CB;;=Br+   c                      t        t        d      ggdt              } t        t        d      ggdt              }| j                  du sJ |j                  du sJ y )Nr   r6   r   FT)r   r   is_zero_matrixr(   rk   s     r)    test_DomainMatrix_is_zero_matrixr   x  sV    r!ugY+Ar!ugY+Au$$$t###r+   c                  0   t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                  du sJ |j                  du sJ y )	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                  0   t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                  du sJ |j                  du sJ y )	Nr   r   r   r    r!   r   TF)r   r   is_lowerr   s     r)   test_DomainMatrix_is_lowerr     r   r+   c                     t        ddgddggt              } t        ddgddggt              }| j                  | j                         j                  cxu rdu sJ  J |j                  |j                         j                  cxu rdu sJ  J y )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                  Z   t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      gt        d      t        d      ggdt              }| j                  d	u sJ |j                  d
u sJ y )Nr   r   r   r    r!   rL      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                  b   t        ddgddggt              } | j                         | j                         j                         cxk(  rt        d      t        d      gk(  sJ  J t        ddgddgddggt              } | j                         | j                         j                         cxk(  rt        d      t        d      gk(  sJ  J t        g dg dgt              } | j                         | j                         j                         cxk(  rt        d      t        d      gk(  sJ  J y )	Nr   r   r   r    rL   r   )r   r   r   )r    rL   r   )r   r   diagonalr   rH   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                      t        t        d      t        d      gt        d      t        d      gt        d      t        d      ggdt              } | j                         dk(  sJ y )Nr   r   r   r    r      r   )r   r   rankrH   s    r)   test_DomainMatrix_rankr     sM    r!ubenr!ubenr!ubenEvrRA668q==r+   c                    	
 t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } z   j                        cxk(  r| k(  sJ  J t        t        d      t        d      gt        d      t        d      ggdt              ddgddggt        t        fd       t        t        fd	       t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      ggd
t              t        t
        fd       t        t
        fd       t        t
        fd       t        t
        fd       t        t        d      t        d      gt        d      t        d      ggdt              
t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              }
z   |k(  sJ 
z   |k(  sJ t        t        
fd       t        t        
fd       t        dt        d      idt        d      iddt              	t        t        d      t        d      gt        d      t        d      ggdt              	z   }	z   }|t        ddgddggdt              k(  sJ |j                  t        ddgddggdt              j                         k(  sJ |t        ddgddggdt              k(  sJ |j                  t        ddgddggdt              j                         k(  sJ t        t        	fd       y )Nr   r   r   r    r!   r   r   c                       z   S rF   r7   r(   Ls   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      a!e r+   c                       z   S rF   r7   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   rM   c                       z   S rF   r7   A1A2s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      b r+   c                       z   S rF   r7   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   c                  &     j                        S rF   addr   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>       r+   c                  &    j                         S rF   r   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   c                  &    j                         S rF   r   r{   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      "&&* r+   c                  &     j                        S rF   r   r  s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   r   r-   rL   c                  &    j                         S rF   r   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   )r   r   r   r   r@   r   r   r   r#   r   r   r   )rk   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                    	
 t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } z
  j                        cxk(  r| k(  sJ  J t        t        d      t        d      gt        d      t        d      ggdt              ddgddggt        t        fd       t        t        fd       t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      ggd	t              t        t
        fd
       t        t
        fd       t        t
        fd       t        t
        fd       t        t        d      t        d      gt        d      t        d      ggdt              
t        t        d      t        d      gt        d      t        d      ggdt              	t        t        d      t        d      gt        d      t        d      ggdt              }
	z
  |k(  sJ 	
z
  |k(  sJ t        t        	
fd       t        t        	
fd       t        dt        d      idt        d      iddt              }t        t        d      t        d      gt        d      t        d      ggdt              }||z
  }||z
  }|t        ddgddggdt              k(  sJ |j                  t        ddgddggdt              j                         k(  sJ || k(  sJ |j                  |j                   k(  sJ y )Nr   r   r   r    r!   r   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   rM   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                  &     j                        S rF   subr   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                  &    j                         S rF   r  r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                  &    j                         S rF   r  r  s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  &     j                        S rF   r  r  s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   r-   )r   r   r  r   r@   r   r   r   r#   r   r   )rk   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
r'C
r'C,R2r(3VR@@@@77cB8b"X.;IIKKKK3$;;77swwhr+   c                  .   t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d	      ggdt              }|  | j                         cxk(  r|k(  sJ  J y )
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                    	
 t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d	      ggdt              } z  j                        cxk(  r| k(  sJ  J t        t        d      t        d      gt        d      t        d      ggdt              ddgddggt        t        fd
       t        t        fd       t        t        d      t        d      gt        d      t        d      ggdt              
t        t        d      t        d      gt        d      t        d      ggdt
              	t        t        d      t        d      gt        d      t        d	      ggdt
              }
	z  |k(  sJ 	
z  |k(  sJ t        t        	
fd       t        t        	
fd       t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              }t        d      }|z  |z  cxk(  rj                  |      cxk(  r|k(  sJ  J t        t        d      t        d      gt        d      t        d      ggdt              t        j                  dt              }t        d      }|z  |z  cxk(  r)j                  |      j                         cxk(  r|k(  sJ  J t        dt        d      idt        d      iddt              }t        t        d      t        d      gt        d      t        d      ggdt              }||z  }||z  }|t        ddgddggdt              k(  sJ |j                  t        ddgddggdt              j                         k(  sJ |t        ddgddggdt              k(  sJ |j                  t        ddgddggdt              j                         k(  sJ y )Nr   r   r   r    r!   rK   
         c                       z  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r+   c                       z  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>   r   r+   c                  &    j                         S rF   matmulr  s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>      "))B- r+   c                  &     j                        S rF   r%  r  s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r'  r+   r   r   r   r-   )r   r   r&  r   r@   r   r   mulzerosr   r#   r   r   )r   AprodAAr   r   r   r  r  r(   r{   r   r   s           @@@@r)   test_DomainMatrix_mulr-    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
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Gr+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }t        t        d      t        d      gt        d      t        d      ggdt              }| j                  |      |k(  sJ |j                  |       |k(  sJ y )Nr   r   r!   r    r   r   )r   r   mul_elementwiserj   s      r)   !test_DomainMatrix_mul_elementwiser0    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                  x   t        j                  dt              } t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d	      ggdt              }t        t        d
      t        d      gt        d      t        d      ggdt              }dz  j                  d      cxk(  r| k(  sJ  J dz  j                  d      cxk(  rk(  sJ  J dz  j                  d      cxk(  r|k(  sJ  J dz  j                  d      cxk(  r|k(  sJ  J t	        t
        fd       t	        t        fd       t	        t        fd       t        j                  dt              t	        t        fd       y )Nr   r   r   r    r!   rK   r  r   r!  %   6   Q   v   r   c                  "     t        dd      z  S Nr   r   r]   rH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>1  s    a8Aq>1 r+   c                       dz  S Nr  r7   rH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>2  s    R r+   c                  &     j                  d      S r9  )powrH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>3  s    b	 r+   r   r   c                       dz  S Nr   r7   rH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>6  s    16 r+   )	r   eyer   r;  r   r@   NotImplementedErrorr*  r   )r?  r   A3r(   s      @r)   test_DomainMatrix_powrB  '  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                  @   t        ddgddggt              } t        t        d      t              }t        ddgdd	ggt              }|j	                  t              }| j                         ||fk(  sJ | j                  d
      ||fk(  sJ | |z  |k(  sJ | ||z  k(  sJ y )NrM   r   r   rO   r   rL   <         r      TrX   )r   r   r   r   ry   clear_denomsr(   den_ZAnum_ZAnum_Qs       r)   test_DomainMatrix_clear_denomsrP  9  s    
U5M5-("-AB$E"bB8$b)Fr"F>>v...>>$>'E6?:::u9r+   c                  ,   t        ddgddggt              } t        ddgddggt              j                         }t        dd	gd
dggt              }t        dd	gd
dggt              }| j	                         ||fk(  sJ | j	                  d      ||fk(  sJ || z  |k(  sJ | |j                         j                         |z  k(  sJ t        g dg dg dgt              } t        g dg dg dgt              j                         }t        g dg dg dgt              }|j                  t              }| j	                         ||fk(  sJ | j	                  d      ||fk(  sJ || z  |k(  sJ | |j                         j                         |z  k(  sJ y )NrM   rD  rO   rE  r   r   rH  r   r   rL   r    TrJ  )rM   rD  r   r   r   r   r   r   )rO   rE  )r   r   )r   rK   )r   r   r   )r   r   r   )r   r   i  )r   r   r   r   )i   T   F   rF  )r   r   r   r   clear_denoms_rowwiser   invry   rL  s       r)   &test_DomainMatrix_clear_denoms_rowwiserX  F  s   
U5M5-("-AAB "%//1E!Q!Q "%F!Q!Q "%F!!#v666!!$!/E6?BBB19 $$&////
i)BCRHA	9k2B7AACE|->?DFr"F!!#v666!!$!/E6?BBB19 $$&////r+   c                  >    t        ddgddggt                j                  t        d            t        ddgddggt              t        d      fk(  sJ  j                  t        d            t        ddgddggt              t        d      fk(  sJ  j                  t        d            t        ddgddggt              t        d      fk(  sJ t        ddgddggt                j                  t        d             t        d      fk(  sJ  j                  t        d              t        d      fk(  sJ t        ddgddggt                j                  t        dd            t        dd	       z  t        d      fk(  sJ t	        t
         fd
       y )Nr   r    r   r   r   r   r  r   r  c                  8     j                  t        d            S Nr   )cancel_denomr   rH   s   r)   r1   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>k  s    annRU&; r+   )r   r   r\  r   r   ZeroDivisionErrorrH   s   @r)   test_DomainMatrix_cancel_denomr^  ]  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                     t        ddgddggt              j                  t        d            \  } }| t        ddgddggt              k(  sJ |t        ddgddggt              k(  sJ j                  t        d            \  } }| t        ddgddggt              k(  sJ |t        ddgddggt              k(  sJ t        t        fd       y )Nr   r    r   r   r   r   c                  8     j                  t        d            S r[  )cancel_denom_elementwiser   rH   s   r)   r1   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>w  s    a&@&@A&G r+   )r   r   ra  r   r]  )numersdenomsr(   s     @r)   *test_DomainMatrix_cancel_denom_elementwiserd  n  s    
QFQFR A//16NFFR!Q!Q("----R!Q!Q("----//16NFFR!Q!Q("----R!Q!Q("----
GHr+   c                      t        ddgddggt              } t        ddgddggt              }t        d      }| j                         |k(  sJ | j                         ||fk(  sJ y )Nr   r    r   r   r   r   )r   r   content	primitive)r(   A_primitive	A_contents      r)   #test_DomainMatrix_content_primitiverj  z  sj    
QFQFR Aq!fq!f%r*K1I99;)###;;=Y4444r+   c            	          t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d      ggdt              } | j                         }| j                  }|j                  }| |||fD ]  | j	                         dgddggk(  rJ  t        t        d      t        d      t        d      ggt              t        t        fd       y )Nr   r   r   r   r    r   r   c                  $     j                         S rF   )sccrH   s   r)   r1   z'test_DomainMatrix_scc.<locals>.<lambda>  s    1557 r+   )r   r   r   r#   rn  r   r   r   )r   r   r   r   r(   s       @r)   test_DomainMatrix_sccro    s    	1r!ube,1r!ube,1r!ube,./5r
;B 
B66D66D"dD! )vvxQC!Q=((() 	RUBqE2a5!"B'A
!?3r+   c            	      V   t        g dt              } | j                         | dfk(  sJ t        t        d      ggdt              } | j                         | dfk(  sJ t        t        d      ggdt              } | j                         | dfk(  sJ t        t        d      t        d      gt        d      t        d	      ggd
t              } | j                         \  }}|t        t        d      t        d      gt        d      t        d      ggd
t              k(  sJ |dk(  sJ t        t        d      t        d      gt        d      t        d	      ggd
t              } | j                         \  }}|t        t        d      t        d      gt        d      t        d      ggd
t              k(  sJ |dk(  sJ t        t        d      t        d      gt        d      t        d	      ggd
t              } | j                         \  }}|t        t        d      t        d      gt        d      t        d      ggd
t              k(  sJ |dk(  sJ t        t        d      t        d      gt        d      t        d	      ggd
t              j                         \  }}|t        t        d      t        d      gt        d      t        d      ggd
t              k(  sJ |dk(  sJ d}t        t        d      t        d      gt        d      t        d	      ggd
t              |D ]^  }j                  |      \  }}|t        t        d      t        d      gt        d      t        d      ggd
t              k(  sJ |dk(  r^J  t	        t
        fd       t	        t
        fd       y )Nr-   r7   r   r6   )r   r   r   r   r    r!   )r   )autoGJr
   CDGJ_denseFF_denseCD_densemethodc                  (     j                  d      S Nfoorw  )rrefr   s   r)   r1   z(test_DomainMatrix_rref.<locals>.<lambda>  s    rwwew4 r+   c                  (     j                  d      S rz  )rref_denr}  s   r)   r1   z(test_DomainMatrix_rref.<locals>.<lambda>  s    r{{%{8 r+   )r   r   r|  r   r   rA   )r(   Arpivotsmethodsrx  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+
F\BqE2a5>BqE2a5>"BFBOOOO 
 :45
:89r+   c                  P   t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                         |k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt              t	        t
        fd       t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt        d	
      } t        t        d      t        d      dt        d      t        d      dddt              }| j                         |k(  sJ y )Nr   r  r   r  r   r   r!   c                  $     j                         S rF   )columnspacer}  s   r)   r1   z/test_DomainMatrix_columnspace.<locals>.<lambda>  s     0 r+   r8   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                  ^   t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt              } | j                         | k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt              t	        t
        fd       t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt        d	      } | j                         | k(  sJ y )
Nr   r  r   r  r   r   c                  $     j                         S rF   )rowspacer}  s   r)   r1   z,test_DomainMatrix_rowspace.<locals>.<lambda>  s     r+   r8   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                  *   t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      ggdt              } j                         | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      ggdt              } j                         | k(  sJ t	        t
        fd       t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      ggdt              } j                         \  }}}|t        d      k(  sJ |j                         | k(  sJ |j                  |      | k(  sJ |j                         j                         | j                         k(  sJ |j                         j                  |      | j                         k(  sJ y )Nr   r!   r  rM   c                  (     j                  d      S )NT)divide_last)	nullspacerH   s   r)   r1   z-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E3"Q%<<$$&%///$$V,555??002eoo6GGGG??008EOO<MMMMr+   c                  P   t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              } t        ddggdt              }t        ddggdt              }j                  |       ||fk(  sJ t        t        d      gt        d      gt        d      ggd	t              t        t        fd
       t        t        d      gt        d      ggdt
              t        t        fd       y )Nr   r   r    r!   r<  r   rM   r  rN   c                  &     j                        S rF   _solve)r(   b3s   r)   r1   z)test_DomainMatrix_solve.<locals>.<lambda>  s    " r+   c                  &     j                        S rF   r  )r(   bzs   r)   r1   z)test_DomainMatrix_solve.<locals>.<lambda>  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;:y1111	1wA"Q%162	>B
<-.	1wA(&"	5B
;,-r+   c                     t        g dt              } | j                         | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        dd      t        dd      ggdt              }| j                         |k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t	        t
        fd	       t        t        d      t        d      ggd
t              t	        t        fd       t        t        d      t        d      gt        d      t        d      ggdt              t	        t        fd       y )Nr   r   r   r   r    r!   r  r  c                  $     j                         S rF   rW  r}  s   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>   s     r+   rM   c                  $     j                         S rF   r  Anss   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>      3779 r+   r   c                  $     j                         S rF   r  )Aninvs   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>  s    uyy{ r+   )r   r   rW  r   r   r   r   r   )r(   Ainvr  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
%':;r+   c            	         t        g dt              } | j                         dk(  sJ t        dggdt              } | j                         dk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d	      ggd
t              } | j                         t        d      k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d	      ggd
t              } | j                         t        d      k(  sJ t        t        d      t        d      ggdt              t	        t
        fd       t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      k(  sJ y )Nr   r   r6   r   r   r    r!   r  rL   rl  r  r   rM   c                  $     j                         S rF   )detr  s   r)   r1   z'test_DomainMatrix_det.<locals>.<lambda>  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                     t        t        d      t        d      gt        d      t        d      ggdt              } t        d      t        d      t        d      g}t        t        d      t        d      gt        d      t        d	      ggdt              }| j                  |      |cxk(  r$|d
   | dz  z  |d   | z  z   |d   | d
z  z  z   k(  sJ  J | j                  g       | j                  | j                  | j
                        k(  sJ | j                  t        d      g      d| j                  d| j
                        z  k(  sJ t        t        d      t        d      ggdt              t        t        fd       y )Nr   r   r   r    r!   rI        !   r   rM   c                  :     j                  t        d      g      S r>  )	eval_polyr   )dM2s   r)   r1   z-test_DomainMatrix_eval_poly.<locals>.<lambda>)  s    3=="Q%+A r+   )	r   r   r  r*  r%   r&   r?  r   r   )dMpresultr  s      @r)   test_DomainMatrix_eval_polyr     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                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      gt        d      ggdt              t        d      t        d      t        d      g}t        t        d      gt        d      ggdt              }| j                  |      |cxk(  r'|d	   | dz  z  z  |d   | z  z  z   |d   z  z   k(  sJ  J t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              t        t        fd
       t        t        d      t        d      ggdt              t        t
        fd       t        t        d      gt        d      ggdt              t        t        fd       y )Nr   r   r   r    r!   r<  (   W   r   c                  <    j                  t        d      g       S r>  eval_poly_mulr   )r  dM1s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>5  s    3+<+<beWa+H r+   rM   c                  <    j                  t        d      g       S r>  r  )b1r  s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>7  s    !1!12a5'2!> r+   c                  <    j                  t        d      g       S r>  r  )bqr  s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>9  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  ,  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                    | |f}| j                         |j                         j                         f}||fD ]  \  }}|z  ||z  k(  sJ ||f| | fg}j                        |v sJ j                  d      |v sJ j                        |v sJ j                  \  }	}
|	|
k(  r3j                  |d      ||fk(  sJ j	                  |      ||fk(  rJ t        t        fd       t        t        fd        y )Nr|  rw  charpolyc                  &     j                        S rF   solve_den_charpolyAir  s   r)   r1   z"_check_solve_den.<locals>.<lambda>T  s    23H3H3K r+   c                  *     j                  d      S )Nr  rw  	solve_denr  s   r)   r1   z"_check_solve_den.<locals>.<lambda>U  s    2<<*<3U r+   )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-    aLE[[]DNN,akkm<E!5> WFC&yDH$$$ D>VGdU#34||A')))||Af|-888  #w... xx16<<J<7FD>III((-&$???)+KL)+UV%Wr+   c            	      $   t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      gt        d      ggdt              }t        t        d      gt        d      ggdt              }t        d	      }t        | |||       t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d
      ggdt              } t        t        d      gt        d      gt        d      ggdt              }t        t        d      gt        d      gt        d      ggdt              }t        d      }t        | |||       t        t        d      gt        d      ggdt              } t        t        d      gt        d      ggdt              }t        t        d      ggdt              }t        d      }t        | |||       y )Nr   r   r   r    r!   r<  r   r  r  rL   rl  rN   r6   )r   r   r  )r(   r  r  r  s       r)   test_DomainMatrix_solve_denr  X  s   r!ubenr!uben5vrBAr!ug1w'4ABqE7RVH-vr:F
R&CQ63'	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Q63'r!ug1w'4Ar!ug1w'4ABqE7)VR0F
Q%CQ63'r+   c                  0    t        t        d      t        d      gt        d      t        d      ggdt               t        t        d      gt        d      ggdt              t        t        d      t        d      ggdt              t        t        fd       t        t        d      t        d      ggdt              t        t         fd	       t        t        d      gt        d      ggdt
              t        t         fd
       y )Nr   r   r   r    r!   r<  rM   c                  &     j                        S rF   r  )r   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>s  s    2+@+@+C r+   c                  &     j                        S rF   r  r(   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>u  s    !5!5b!9 r+   c                  &     j                        S rF   r  )r(   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>w  s    !"6"6r": r+   )r   r   r   r   r   r   r   )r(   r   r  r  r  s   @@@@@r)   $test_DomainMatrix_solve_den_charpolyr  o  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                     t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              t        t        fd       t        t        d      gt        d      ggdt              } j	                         z  | k(  sJ j                  d	
      | t        d      fk(  sJ y )Nr   r   r    r!   r   r<  c                  &     j                        S rF   r  r(   r  s   r)   r1   z<test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>~  s    q/C/CA/F r+   r  F)checkr   )r   r   r   r   adjugater  )adjAbr(   r  s    @@r)   *test_DomainMatrix_solve_den_charpoly_checkr  z  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                  "    t        t        d      t        d      ggdt               t        t        d      gt        d      ggdt              t        t         fd       t        t         fd       t        t        d      t        d      ggdt               t        t        d      t        d      ggdt              t        t         fd       t        t         fd       t        t        d      t        d      gt        d	      t        d
      ggdt               t        t        d      t        d      ggdt              t        t         fd       t        t        d      ggdt               t        t        d      ggdt              t        t         fd       t        t        d      gt        d      ggdt               t        t        d      gt        d      ggdt              t        t
         fd       y )Nr   r   rM   r<  c                  &     j                        S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      Q r+   c                  &     j                        S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      !1!1!!4 r+   c                  &     j                        S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  r  r+   c                  &     j                        S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  r  r+   r   r    r!   c                  &     j                        S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    R r+   r6   c                  *     j                  d      S )Nr=   rw  r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    AKK9K$E r+   c                  &     j                        S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    1+?+?+B r+   )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                      t        t        d      t        d      gt        d      t        d      ggdt               t        t        d      gt        d      ggdt              t        t         fd       t        t         fd       y )Nr   r   r!   r<  c                  &     j                        S rF   r  r  s   r)   r1   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>  s    q{{1~ r+   c                  &     j                        S rF   r  r  s   r)   r1   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>  s    q/?/?/B r+   )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            	         t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d	      ggt              j                         \  } }| t        d      t        d
      t        d      gk(  sJ j                         | d   dz  z  | d   dz  z  z   | d   dz  z  z   cxk(  rj	                  |       k(  sJ  J j                         |k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d	      ggt              t        t        fd       y )Nr   r   r   r    rL   r   rK   r   	   r   c                  $     j                         S rF   )adj_poly_detrH   s   r)   r1   z0test_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    s9   
RUBqE2a5!UBqE2a5!UBqE2a5!#$&	(A nnGAt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   t        t        d      t        d      gt        d      t        d      ggdt              } t        d      }t        t        d      t        d      gt        d      t        d      ggdt              }| j                         ||fk(  sJ y Nr   r   r   r    r!   r  r  )r   r   inv_den)r(   r  r  s      r)   test_DomainMatrix_inv_denr    sy    r!ubenr!uben5vrBA
R&CBqE2b6?RVRUO<fbIF99;63-'''r+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                         |k(  sJ y 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                  0   t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }| j                         |t        d      fk(  sJ y 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            	         t        g dt              j                         g fk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }g }j                         | ||fk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }d	g}j                         | ||fk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }g }j                         | ||fk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      ggdt              }g }j                         | ||fk(  sJ t        t        d      t        d      t        d      gt        d      t        d
      t        d      ggdt              t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      t        d      gt        d      t        d      t        d      ggdt              }g }j                         | ||fk(  sJ t        t        d      t        d      gt        d      t        d      gt        d
      t        d      ggdt              t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d
      t        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d      gt        d      t        d      ggdt              }g }j                         | ||fk(  sJ g dg dg dg dgg dg dg dg dg} g dg dg dg dg}d }t         |t              dt              t         || t              dt              } t         ||t              dt              }j                         | |g fk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t	        t
        fd       y )Nr   r   r   r   r    r!   r   r  r-   rL   r   r   r  ir   rl  )r   r   r   r   rR  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c           
      d    | D cg c]  }|D cg c]
  } ||       c} c}}S c c}w c c}}w rF   r7   )rowsrQ   rowr   s       r)   r1   z&test_DomainMatrix_lu.<locals>.<lambda>  s&    F# 5AQ 5F  5Fs   	,',,)r    r    c                  $     j                         S rF   )lurH   s   r)   r1   z&test_DomainMatrix_lu.<locals>.<lambda>  s     r+   )r   r   r  r   r   r   )r   Uswapsto_domr(   s       @r)   test_DomainMatrix_lur    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446aE]"""r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAHE446aE]"""r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAE446aE]"""r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAE446aE]"""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446aE]"""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446aE]"""	|\<@A	|\<@A	|\<@AFFVAr]FB/AVAr]FB/AVAr]FB/A446aBZr!ubenr!uben5vrBA
;'r+   c                     t        g dt              xx} j                        | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              t        t        d      gt        dd      ggdt              } j                        | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              t        t        d      gt        dd      ggdt              } j                        | k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              t        t        fd	       t        t        d      t        d      gt        d      t        d      gt        d
      t        d      ggdt              t        t        d      gt        d      gt        d      ggdt              t        t        d      gt        dd      ggdt              } j                        | k(  sJ t        t        d      t        d      gt        d      t        d      gt        d
      t        d      ggdt              t        t        d      gt        d      gt        d      ggdt              t        t        fd       t        t        d      t        d      ggdt              t        t        d      ggdt              t        t
        fd       t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      gt        d      ggdt              t        t        fd       t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      ggdt              t        t        fd       y )Nr   r   r   r   r    r!   r<  r   c                  &     j                        S rF   lu_solver  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>      qzz!} r+   rL   r   r   rN   c                  &     j                        S rF   r  r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  r  r+   rM   r6   c                  &     j                        S rF   r  r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>   s    

1 r+   c                  &     j                        S rF   r  r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>%  s    

1 r+   c                  &     j                        S rF   r  r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>*  s    A r+   )	r   r   r  r   r   r@  r   r   r   )r   r(   r  s    @@r)   test_DomainMatrix_lu_solver    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                  D   t        g dt              } t        d      g}| j                         |k(  sJ | j                         j                         |k(  sJ t        dggdt              } t        d      t        d      g}| j                         |k(  sJ | j                         j                         |k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              } t        d      t        d	      t        d
      g}| j                         |k(  sJ | j                         j                         |k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d      ggdt              } t        d      t        d      t        d      t        d      g}| j                         |k(  sJ | j                         j                         |k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d      ggdt              } t        d      t        d      t        d
      t        d      g}| j                         |k(  sJ | j                         j                         |k(  sJ t	        g dg dg dg dg dg dg dg dg dg dg
t              } t        j
                  g d      }| j                         |k(  sJ | j                         j                         |k(  sJ t        t        d      t        d      ggdt              t        t        fd       y )Nr   r   r6   r  r   r   r    r!   r  rL   r   rK   r   r  rl  r  r  r   )
   r   rG  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   r2  C   r   r   r   r   )r   iir   i:r   r   r   r   r   r   rM   c                  $     j                         S rF   )r  r  s   r)   r1   z,test_DomainMatrix_charpoly.<locals>.<lambda>X  s    3<<> r+   )	r   r   r  r   r   mapr   r   r   )r(   r  r  s     @r)   test_DomainMatrix_charpolyr+  -  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                  0   t        g dt              } | j                         g k(  sJ t        dggt              } | j                         t        d      t        d      gdfgk(  sJ t        ddgddggt              } | j                         t        d      t        d      t        d      gdfgk(  sJ t        g d	g d
g dgt              } | j                         t        d      t        d      gdft        d      t        d      t        d      gdfgk(  sJ y )Nr   r   r  r   r   r    r!  r  )r   r   r   )r   r    r   )r   r   r   )r   r   charpoly_factor_listr   rH   s    r)   &test_DomainMatrix_charpoly_factor_listr.  [  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                      t        j                  dt              } | j                  t	        j                  dt              k(  sJ | j
                  dk(  sJ | j                  t        k(  sJ y )Nr   rl  )r   r?  r   r#   r   r%   r&   rH   s    r)   test_DomainMatrix_eyer0  p  sS    BA55CGGFB''''77f88r>>r+   c                      t        j                  dt              } | j                  t	        j                  dt              k(  sJ | j
                  dk(  sJ | j                  t        k(  sJ y )NrM   )r   r*  r   r#   r   r%   r&   rH   s    r)   test_DomainMatrix_zerosr2  w  sS    62&A55CIIfb))))77f88r>>r+   c                  V   t        j                  dt              } t        dk7  r)| j                  t        j                  dt              k(  s9J | j                  t        j                  dt              j                         k(  sJ | j                  dk(  sJ | j                  t        k(  sJ y )Nr   r"   )
r   onesr   r   r#   r   r   r$   r%   r&   rH   s    r)   test_DomainMatrix_onesr5  ~  s    &"%Awuu,,,,uu,33555577f88r>>r+   c                  z   t        dt        d      idt        d      iddt              } t        j                  t        d      t        d      gt              | k(  sJ t        dt        d      idt        d      iddt              } t        j                  t        d      t        d      gt        d      | k(  sJ y )Nr   r   r   r   r-   r!   )r   r    )r   r   diagrH   s    r)   test_DomainMatrix_diagr8    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                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d	      ggdt              }t        t        d
      t        d      gt        d      t        d      ggdt              }t        t        d      t        d      t        d      t        d      gt        d      t        d      t        d      t        d	      ggdt              }t        t        d      t        d      t        d      t        d      t        d
      t        d      gt        d      t        d      t        d      t        d	      t        d      t        d      ggdt              }| j                  |      |k(  sJ | j                  ||      |k(  sJ y )Nr   r   r   r    r!   rL   r   rK   r   r  r     rI  r   r    )r   r   )r   r   hstackr(   rk   rl   ABABCs        r)   test_DomainMatrix_hstackr@    sg   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;"88Aq>S   r+   c                     t        t        d      t        d      gt        d      t        d      ggdt              } t        t        d      t        d      gt        d      t        d	      ggdt              }t        t        d
      t        d      gt        d      t        d      ggdt              }t        t        d      t        d      gt        d      t        d      gt        d      t        d      gt        d      t        d	      ggdt              }t        t        d      t        d      gt        d      t        d      gt        d      t        d      gt        d      t        d	      gt        d
      t        d      gt        d      t        d      ggdt              }| j                  |      |k(  sJ | j                  ||      |k(  sJ y )Nr   r   r   r    r!   rL   r   rK   r   r  r  r:  rI  )r    r   )r   r   )r   r   vstackr=  s        r)   test_DomainMatrix_vstackrC    sy   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;"88Aq>S   r+   c                      t        t        d      t        d      ggdt              } t        t        d      t        d      ggdt              }| j                  d       |k(  sJ y )Nr   r   rM   r    c                     d| z  S )Nr   r7   )r   s    r)   r1   z-test_DomainMatrix_applyfunc.<locals>.<lambda>  s
    1 r+   )r   r   	applyfuncr   s     r)   test_DomainMatrix_applyfuncrG    sS    r!uben%vr2Ar!uben%vr2A;;}%***r+   c                  $   t        t        d      t        d      gt        d      t        d      ggdt              t        t        d      t        d      z  t              } | z  t        t        dd      t        d      gt        dd      t        d      ggdt              k(  sJ dz  t        t        d      t        d      gt        d      t        d      ggdt              k(  sJ dz  t        t        d      t        d      gt        d      t        d      ggdt              k(  sJ t        t        d	      t              z  t        i dt              k(  sJ t        t        d      t              z  k(  sJ t	        t
        fd
       y )Nr   r   r   r    r!   r  r   r   r   c                       dz  S Ng      ?r7   rH   s   r)   r1   z-test_DomainMatrix_scalarmul.<locals>.<lambda>      a#g r+   )r   r   r   r   r   r@   )lamdar(   s    @r)   test_DomainMatrix_scalarmulrM    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            	         t        j                  t        ddgddgg            t        t	        d      t	        d      z  t              } | z  t        t	        dd      t	        dd      dt	        d      t	        dd      dddt              k(  sJ t        t        d      t
              }|z  t        t	        d      t	        d      dt	        d      t	        d      dddt              k(  sJ dz  t        t	        d      t	        d      dt	        d      t	        d      dddt              k(  sJ dz  t        t	        dd      t	        d      dt	        dd      t	        d      dddt              k(  sJ t        t        fd       t        t        fd	       t        t        fd
       t        t        d      t        d      gt        d      t        d      ggdt
              j                         dz  t        t	        dd      t	        d      gt	        dd      t	        d      ggdt              k(  sJ dz  t        t	        dd      t	        d      gt	        dd      t	        d      ggdt              k(  sJ j                         t	        dd      z  t        t	        dd      t	        d      gt	        dd      t	        d      ggdt              k(  sJ y )Nr   r   r   r    r-   r   r!   c                       dz  S r[  r7   rH   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  s    a!e r+   c                       dz  S rJ  r7   rH   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  rK  r+   c                  <     t        t        d      t              z  S r[  )r   r   rH   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  s    a,r!ub*A&A r+   r  r   )
r   rf   r   r   r   r   r   r]  r@   r   )rL  r  r(   s     @r)   test_DomainMatrix_truedivrR    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            
          t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d	      ggd
t                dd d df   t        t        d      gt        d      ggdt              k(  sJ  dd df   t        t        d      ggdt              k(  sJ  d dd df   t        t        d      ggdt              k(  sJ  d dddf   t        t        d      t        d      gt        d      t        d      ggdt              k(  sJ  d d df   t        t        d      gt        d      gt        d	      ggdt              k(  sJ  dd d f   t        t        d      t        d      t        d	      ggdt              k(  sJ  d d dd d f   t        t        d      t        d      t        d	      gt        d      t        d      t        d      gt        d      t        d      t        d      ggd
t              k(  sJ t        t         fd       t        t         fd        d   t	        t        d      t              k(  sJ  d   t	        t        d      t              k(  sJ  d   t	        t        d      t              k(  sJ  d   t	        t        d      t              k(  sJ t        t         fd       t        t         fd       t        t         fd       t        ddt        d      iidt                d   t	        t        d      t              k(  sJ  d   t	        t        d      t              k(  sJ t        dddiidt                dd df   t        dddiidt              k(  sJ t        t         fd       t        dt        d      idt        d      id dt                d dd df   t        i dt              k(  sJ  dd dd f   t        ddiddid!d
t              k(  sJ  dd dd f   t        dddiidt              k(  sJ  dd dd f   t        i d"t              k(  sJ y )#Nr   r   r   r    rL   r   rK   r   r  rl  r  r<  r6   r  r   r!   rN   rD  c                       dd df   S )Nr    r  r7   r  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  s    r!SbS&z r+   c                       d ddf   S )Nr  r    r7   rU  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  s    r#2#q&z r+   rM   )r  r   )r   r  )r  r  c                       d   S )Nrl  r7   rU  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>      r$x r+   c                       d   S )NrO   r7   rU  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  rX  r+   c                       d   S )N)r  r  r7   rU  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  s    r&z r+   )r  r  rL   rL   r   c                       d   S )Nr   r   r7   rU  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  rX  r+   r;  )r   r   r]  )r   r   r   
IndexErrorr   rU  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                      t        dt        d      idt        d      iddt              } | j                  dd      }|t        j                  u sJ | j                  dd      }|dk(  rt        |t              sJ y )Nr   r    r   r;  r[  r   )r   r   getitem_sympyr   Zero
isinstancer   )r  val1val2s      r)   test_DomainMatrix_getitem_sympyrf    sr    	1be*!RU4fb	ABAq!D166>>Aq!D19D'2222r+   c            	      X   t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d	      ggd
t              } t        t        d      t        d      gt        d      t        d	      ggdt              }| j                  ddgddg      |k(  sJ | j                         j                  ddgddg      |j                         k(  sJ | j                  ddgddg      |k(  sJ | j                         j                  ddgddg      |j                         k(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      t        d      ggd
t              }| j                  g dg d      |k(  sJ | j                         j                  g dg d      |j                         k(  sJ g g dfdgg dfg dgdfg}|D ]  \  }| j                        t        j                  |t              j                         k(  sJ | j                         j                        t        j                  |t              k(  rJ  t        t        d      t        d      gt        d      t        d      ggdt              dgdgfdgdgfdgdgfdgdgfg}|D ]/  \  t        t        fd       t        t        fd       1 y )Nr   r   r   r    rL   r   rK   r   r  rl  r!   r   r  )r   r   r   r   r   r-   r  c                  (    j                         S rF   )extractcolsr  r  s   r)   r1   z+test_DomainMatrix_extract.<locals>.<lambda>.  s    2::dD#9 r+   c                  D    j                         j                         S rF   )r   ri  rj  s   r)   r1   z+test_DomainMatrix_extract.<locals>.<lambda>/  s    2<<>#9#9$#E r+   )r   r   ri  r   r*  r   r   r^  )	r  r  dM3emptysizebad_indicesrk  r  r  s	         @@@r)   test_DomainMatrix_extractrq    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
 " SdD{{4&,*<*<T2*F*O*O*QQQQ}}&&tT2l6H6Hr6RRRRS 
1r!u~1r!u~6	CBC!:aSzRD1#;!rdDK! G
dz9:zEFGr+   c                  ,    t        dt        d      idt        d      iddt               t        d       d<    t        dt        d      idt        d      iddt              k(  sJ  fdt        t        fd       t        t        fd	       y )
Nr   r   r    r;  r[  r!   c                     || |f<   y rF   r7   )ijvalr  s      r)   setitemz*test_DomainMatrix_setitem.<locals>.setitem6  s    1a4r+   c                  ,      ddt        dd            S )Nr   r   )r   rw  s   r)   r1   z+test_DomainMatrix_setitem.<locals>.<lambda>8  s    gaBq!H5 r+   c                  >      t        dd      dt        d            S r7  )slicer   ry  s   r)   r1   z+test_DomainMatrix_setitem.<locals>.<lambda>9  s    aQ1(F r+   )r   r   r   r@   r@  )r  rw  s   @@r)   test_DomainMatrix_setitemr|  2  s{    	1be*!RU4fb	AB!uBtH1be*!RU<fbIIII
956
 FGr+   c                  j   dd l } t        dt        d      idt        d      iddt              }| j                  | j	                  |            |k(  sJ t        t        d      t        d      gt        d      t        d      ggdt              }| j                  | j	                  |            |k(  sJ y )	Nr   r   r   r    r;  r[  r   r!   )pickler   r   loadsdumps)r~  r  s     r)   test_DomainMatrix_picklingr  <  s    	1be*!RU4fb	AB<<R()R///	1r!u~1r!u~6	CB<<R()R///r+   N)u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*   rC   rI   rR   rZ   rd   rg   rm   rs   rw   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-  r0  rB  rP  rX  r^  rd  rj  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r.  r0  r2  r5  r8  r@  rC  rG  rM  rR  r_  rf  rq  r|  r  r7   r+   r)   <module>r     s   , = = ) ) L L   ) ( '!PH8$82
I@#LM
=/
L>+<2M;
<
4
B8:	*=C
$? F
".J!H!$HN%3$
0.="	I54':T
#N,.<$.	CA W8(.<BD0D=(")5(p.0b+;\*>!!*+	'f()6X3!GHH0r+   