
    MZds~                        d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dl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 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/ ZDd0 ZEd1 ZFd2 ZGd3 ZHd4 ZId5 ZJd6 ZKd7 ZLd8 ZMd9 ZNd: ZOd; ZPd< ZQd= ZRd> ZSd? ZTd@ ZUdA ZVdB ZWdC ZXdD ZYdE ZZyF)G    )raises)IntegerRational)S)sqrt)Matrix)FFZZQQEXRAW)DomainMatrixDomainScalarDM)DMBadInputErrorDMDomainErrorDMShapeErrorDMFormatErrorDMNotAFieldDMNonSquareMatrixErrorDMNonInvertibleMatrixError)DDM)SDMc                     t        t        d      t        d      gt        d      t        d      ggdt              } t        ddgddggt              }|j                  | k(  sJ |j                  dk(  sJ |j
                  t        k(  sJ y N            r   r   )r   r
   r   repshapedomain)ddmAs     N/usr/lib/python3/dist-packages/sympy/polys/matrices/tests/test_domainmatrix.pytest_DMr&      sx    
1r!u~1r!u~.
;C
QFQFR A55C<<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               }|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 ]M  \  }}t        dt         |      }|j                  |k(  sJ t        | dt         |      }|j                  |k(  rMJ  t        t        fd       t        t        d        y )Nr   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+   r,   )sdms   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>,   r.   r'   c                  :    t        t        dgg      dt              S )Nr   r   r   )r   r   r
    r'   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>-   s    l6A3%=&"E r'   sparsedensefmtc                  *    t         dt        d      S )Nr   invalidr6   r,   )lols   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>5   s    |CK r'   c                  N    t        t        d      t        d      ggdt              S )Nr   r   r   r,   r3   r'   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>7   s    L2a5"Q%.1A62$N r'   )r
   r   r   r   r    r!   r"   r   	TypeError
ValueErrorr   )dodr$   r7   r    r#   r:   r0   s       @@@r%   test_DomainMatrix_initr?      s~   qE2a5>BqE2a5>
*CQ%2a5!A"Q%&8
9C
c62
C
c62
CS&"%A55C<<77f88r>>S&"%A55C<<77f88r>>
9;<
9;<
9EF_wn5 S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)   r2   c                  .    t        j                         S N)r   from_repr$   s   r%   r-   z,test_DomainMatrix_from_rep.<locals>.<lambda>H   s    l33A6 r'   )
r   r
   r   rC   r    r!   r"   r   r   r<   )r#   r0   r$   s     @r%   test_DomainMatrix_from_reprE   :   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              }|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              }|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   )rH   r   )	r   r
   r   	from_listr    r!   r"   r	   r   )r#   r$   doms      r%   test_DomainMatrix_from_listrN   K   s   
1r!u~1r!u~.
;CAA/4A55C<<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55C<<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      }|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   T	extension)r   r
   r   from_list_sympyr    r!   r"   r   algebraic_fieldr   convert)r#   r$   Ks      r%   !test_DomainMatrix_from_list_sympyrV   `   s|   
1r!u~1r!u~.
;C$$QQFQF+;<A55C<<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%   r-   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   rY   rZ   s   r%   r-   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>   r\   r'   )
r   r   r   r   from_dict_sympyr    r!   r"   r   r   )r0   
sympy_dictr$   r[   s      @r%   !test_DomainMatrix_from_dict_sympyr`   v   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              }|j
                  |k(  sJ |j                  dk(  sJ |j                  t        k(  sJ y )Nr   r   r)   r   r   r   TrP   r   r5   r6   )r   r
   r   from_Matrixr   r    r!   r"   r   rS   r   rT   r   )r0   r$   rU   r#   s       r%   test_DomainMatrix_from_Matrixrc      s(   
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55C<<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 r   r,   r$   BCs      r%   test_DomainMatrix_eqrh      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   r2   TF)r   r
   r   unify_eq)r$   B1B2B3s       r%   test_DomainMatrix_unify_eqrn      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   )rU   itemss     r%   test_DomainMatrix_get_domainrr      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 | j                  d       }|| k(  r|| usJ y r   )r   r
   
convert_tor   )r$   AqAcopys      r%   test_DomainMatrix_convert_torw      s    r!ubenr!uben5vrBA	
b	B1r!u~1r!u~>KKKKLLEA:%q.((.r'   c                      t        t        d      t        d      gt        d      t        d      ggdt              } | j                         | j                  t              k(  sJ y r   )r   r
   to_sympyrt   r   rD   s    r%   test_DomainMatrix_to_sympyrz      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 r   )r   r
   to_fieldr   )r$   ru   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                         }|j                  t	        ddgddggdt              k(  sJ y )Nr   r   r)   r   r   r   )r   r
   to_denser    r   )r$   A_denses     r%   test_DomainMatrix_to_denser      sP    Q1aA,7DAjjlG;;#1v1v.;;;;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              k(  sJ |j                  t        ddgddggdt              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)   r5   r6   r4   c                  *    j                   d      S )Nr9   r6   )unifyAdAss   r%   r-   z)test_DomainMatrix_unify.<locals>.<lambda>   s    rxx	x: r'   )	r   r
   r   r   r    r   r   r   r=   )Azru   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66666S1a&!Q&"5555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              } | j                         t        ddgddgg      k(  sJ y r   )r   r
   	to_Matrixr   rD   s    r%   test_DomainMatrix_to_Matrixr      sS    r!ubenr!uben5vrBA;;=FQFQF#34444r'   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 r   )r   r
   to_listrD   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 r   )r   r
   to_list_flatrD   s    r%   test_DomainMatrix_to_list_flatr      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      dk(  sJ y )Nr   r   r   r   r   )r   r   r)   r   r   r2   )r   r
   to_dokrD   s    r%   test_DomainMatrix_to_dokr     sZ    r!ubenr!uben5vrBA88:Ar!uRU2a5QQQQr'   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
   reprrD   s    r%   test_DomainMatrix_reprr   	  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 r   )r   r
   	transpose)r$   ATs     r%   test_DomainMatrix_transposer     sl    r!ubenr!uben5vrBA	1r!u~1r!u~6	CB;;=Br'   c                      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 r   )r   r
   flatrD   s    r%   test_DomainMatrix_flatr     sZ    r!ubenr!uben5vrBA6681r!ubeRU3333r'   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   r2   r   FT)r   r
   is_zero_matrixr$   rf   s     r%    test_DomainMatrix_is_zero_matrixr     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                  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   rH      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                      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   rankrD   s    r%   test_DomainMatrix_rankr   5  sM    r!ubenr!ubenr!ubenEvrRA668q==r'   c                  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              } 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              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              k(  sJ t        t        	fd       y )Nr   r   r   r   r   r   r   c                       z   S rB   r3   r$   Ls   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>A      a!e r'   c                       z   S rB   r3   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>B  r   r'   rI   c                       z   S rB   r3   A1A2s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>F      b r'   c                       z   S rB   r3   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>G  r   r'   c                  &     j                        S rB   addr   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>H       r'   c                  &    j                         S rB   r   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>I  r   r'   c                  &    j                         S rB   r   ru   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>P      "&&* r'   c                  &     j                        S rB   r   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>Q  r   r'   r   r)   rH   c                  &    j                         S rB   r   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>\  r   r'   )r   r
   r   r   r<   r   r   r   r    r   r   )rf   AsumAsdAdsr$   r   r   r   ru   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777,AA/<<<<77cAq6Aq6*FB7777
=,-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              k(  sJ || k(  sJ |j                  |j                   k(  sJ y )Nr   r   r   r   r   r   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>f  r   r'   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>g  r   r'   rI   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>k  r   r'   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>l  r   r'   c                  &     j                        S rB   subr   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>m  r   r'   c                  &    j                         S rB   r   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>n  r   r'   c                  &    j                         S rB   r   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>u  r   r'   c                  &     j                        S rB   r   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>v  r   r'   r)   )
r   r
   r   r   r<   r   r   r   r    r   )rf   Adiffr   r   r   r   r$   r   r   ru   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.;;;;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              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              k(  sJ y )Nr   r   r   r   r   rG   
         c                       z  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r'   c                       z  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r'   c                  &    j                         S rB   matmulr   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>      "))B- r'   c                  &     j                        S rB   r   r   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r'   r   r   r   r)   )r   r
   r   r   r<   r   r   mulzerosr   r    r   )r   AprodAAxr   r   r   r   r$   ru   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777,AA/<<<<77cAq6Aq6*FB7777r'   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_elementwisere   s      r%   !test_DomainMatrix_mul_elementwiser     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   rG   r   r   r   %   6   Q   v   r   c                  "     t        dd      z  S Nr   r   rY   rD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    a8Aq>1 r'   c                       dz  S Nr   r3   rD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    R r'   c                  &     j                  d      S r  )powrD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    b	 r'   r   r   c                       dz  S )Nr   r3   rD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    16 r'   )	r   eyer
   r	  r   r<   NotImplementedErrorr   r   )r  r   A3r$   s      @r%   test_DomainMatrix_powr    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            	      z   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  y )Nr   r   r   r   r   r   r   )r   r
   r   r    scc)r   r   AddmAsdmr$   s        r%   test_DomainMatrix_sccr    s    	1r!ube,1r!ube,1r!ube,./5r
;B 
B66D66D"dD! )vvxQC!Q=((()r'   c                  <   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              t	        t
        fd       y )Nr)   r3   r   r2   )r   r   r   r   r   r   )r   c                  $     j                         S rB   )rrefr   s   r%   r-   z(test_DomainMatrix_rref.<locals>.<lambda>  s    	 r'   )r   r   r  r
   r   r   )r$   Arpivotsr   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
;)*r'   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   r   c                  $     j                         S rB   )columnspacer  s   r%   r-   z/test_DomainMatrix_columnspace.<locals>.<lambda>  s     0 r'   r4   r6   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 rB   )rowspacer  s   r%   r-   z,test_DomainMatrix_rowspace.<locals>.<lambda>  s     r'   r4   r6   )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
        fd       y )Nr   r   r   rI   c                  $     j                         S rB   )	nullspacer  s   r%   r-   z-test_DomainMatrix_nullspace.<locals>.<lambda>  s     r'   )r   r   r)  r
   r   r   )r$   Anullr   s     @r%   test_DomainMatrix_nullspacer+  
  s    r!ubenr!uben5vrBA2b62a5/*FB7E;;=E!!!	1r!u~1r!u~6	CB
;./r'   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   rI   r   rJ   c                  &     j                        S rB   _solve)r$   b3s   r%   r-   z)test_DomainMatrix_solve.<locals>.<lambda>  s    " r'   c                  &     j                        S rB   r.  )r$   bzs   r%   r-   z)test_DomainMatrix_solve.<locals>.<lambda>  s     r'   )r   r   r/  r   r   r
   r   )b
particularr)  r$   r0  r2  s      @@@r%   test_DomainMatrix_solver5    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 rB   invr  s   r%   r-   z'test_DomainMatrix_inv.<locals>.<lambda>+  s     r'   rI   c                  $     j                         S rB   r8  Anss   r%   r-   z'test_DomainMatrix_inv.<locals>.<lambda>.      3779 r'   r   c                  $     j                         S rB   r8  )Aninvs   r%   r-   z'test_DomainMatrix_inv.<locals>.<lambda>1  s    uyy{ r'   )r   r   r9  r
   r   r   r   r   )r$   Ainvr?  r<  r   s     @@@r%   test_DomainMatrix_invrA  "  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   r2   r   r   r   r   r   rH   r  r   r   rI   c                  $     j                         S rB   )detr;  s   r%   r-   z'test_DomainMatrix_det.<locals>.<lambda>E  r=  r'   )r   r
   rD  r   r   r   r$   r<  s    @r%   test_DomainMatrix_detrF  4  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        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)   rH   r   r  r   ir   r  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c           
      d    | D cg c]  }|D cg c]
  } ||       c} c}}S c c}w c c}}w rB   r3   )rowsrM   rowes       r%   r-   z&test_DomainMatrix_lu.<locals>.<lambda>y  s&    F# 5AQ 5F  5Fs   	,',,)r   r   c                  $     j                         S rB   )lurD   s   r%   r-   z&test_DomainMatrix_lu.<locals>.<lambda>  s     r'   )r   r   rM  r
   r   r   )r   Uswapsto_domr$   s       @r%   test_DomainMatrix_lurQ  K  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 rB   lu_solver$   r3  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>      qzz!} r'   rH   r   r   rJ   c                  &     j                        S rB   rT  rV  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  rW  r'   rI   r2   c                  &     j                        S rB   rT  rV  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  s    

1 r'   c                  &     j                        S rB   rT  rV  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  s    

1 r'   c                  &     j                        S rB   rT  rV  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  s    A r'   )	r   r   rU  r   r   r  r
   r   r   )r   r$   r3  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            	         t        g dt              } | j                         t        d      gk(  sJ t        dggdt              } | j                         t        d      t        d      gk(  sJ t        t        d      t        d      gt        d      t        d      ggdt              } | j                         t        d      t        d	      t        d
      g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      t        d      t        d      t        d      gk(  sJ t        t        d      t        d      ggdt              t	        t
        fd       y )Nr   r   r2   r   r   r   r   r   r   rH   r   rG   r   	   r  iir   rI   c                  $     j                         S rB   )charpolyr;  s   r%   r-   z,test_DomainMatrix_charpoly.<locals>.<lambda>  s    3<<> r'   )r   r
   ra  r   r   r   rE  s    @r%   test_DomainMatrix_charpolyrb    sX   R$A::<BqE7"""qcUFB'A::<BqE2b6?***r!ubenr!uben5vrBA::<BqE2b62b62222r!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA::<BqE2c7BsGRU;;;;
A1'
4C
!#9: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   r  )r   r  r   r    r   r!   r"   rD   s    r%   test_DomainMatrix_eyerd    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 )NrI   )r   r   r   r    r   r!   r"   rD   s    r%   test_DomainMatrix_zerosrf    sS    62&A55CIIfb))))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 )Nr  )r   onesr   r    r   r!   r"   rD   s    r%   test_DomainMatrix_onesri    sS    &"%A55CHHVR((((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
   diagrD   s    r%   test_DomainMatrix_diagrl    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   rH   r   rG   r   r_  r         r   r   )r   r   )r   r
   hstackr$   rf   rg   ABABCs        r%   test_DomainMatrix_hstackru    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   rH   r   rG   r   r_  r   rn  ro  )r   r   )r   r   )r   r
   vstackrr  s        r%   test_DomainMatrix_vstackrx    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   rI   r   c                     d| z  S )Nr   r3   )r   s    r%   r-   z-test_DomainMatrix_applyfunc.<locals>.<lambda>	  s
    1 r'   )r   r
   	applyfuncr   s     r%   test_DomainMatrix_applyfuncr|    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      ?r3   rD   s   r%   r-   z-test_DomainMatrix_scalarmul.<locals>.<lambda>      a#g r'   )r   r
   r   r   r   r<   )lamdar$   s    @r%   test_DomainMatrix_scalarmulr    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            	      v   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
       y )Nr   r   r   r   r)   r   r   c                       dz  S Nr   r3   rD   s   r%   r-   z+test_DomainMatrix_truediv.<locals>.<lambda>"  s    a!e r'   c                       dz  S r  r3   rD   s   r%   r-   z+test_DomainMatrix_truediv.<locals>.<lambda>#  r  r'   c                  <     t        t        d      t              z  S r  )r   r
   rD   s   r%   r-   z+test_DomainMatrix_truediv.<locals>.<lambda>$  s    a,r!ub*A&A r'   )	r   rb   r   r   r   r
   r   ZeroDivisionErrorr<   )r  r3  r$   s     @r%   test_DomainMatrix_truedivr    so     !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Br'   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   rH   r   rG   r   r_  r  r   r
  r2   r   r   r   rJ   )r   r   c                       dd df   S )Nr   r   r3   dMs   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>8  s    r!SbS&z r'   c                       d ddf   S )Nr   r   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>9  s    r#2#q&z r'   rI   )r   r   )r   r   )r   r   c                       d   S )Nr  r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>@      r$x r'   c                       d   S )NrK   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>A  r  r'   c                       d   S )N)r   r   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>B  s    r&z r'   )r   r   rH   rH   r   c                       d   S )Nr   r   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>J  r  r'   rp  )r   r   r  )r   r
   r   
IndexErrorr   r  s   @r%   test_DomainMatrix_getitemr  '  s)   		A1r!u	A1r!u	A1r!u !'
,B
 ab"f:1wA&8&"EEEEae9r!ugY;;;;crc#2#g;,Ay&"====crc!A#g;,A1A1'GQSTTTTae9r!ug1wA%@&"MMMMb!e9r!ubeRU&;%<fbIIIIddAg;,UBqE2a51UBqE2a51UBqE2a51(3 5;B@ @ @ @
 :)*
:)*d8|BqE2....e9RUB////e9RUB////f:beR0000
:'(
:'(
:)*	q1be*ox	4Bd8|BqE2....d8|BqE2....	q1a&k5"	-Bab!e9a!Q[&"====
:'(	1be*!RU4fb	ABbqb!e9R4444abe9!QQF%;VRHHHHabe9a!Q[&"====ab!"f:b&"5555r'   c                      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   rp  r  r   )r   r
   getitem_sympyr   Zero
isinstancer   )r  val1val2s      r%   test_DomainMatrix_getitem_sympyr  S  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   rH   r   rG   r   r_  r  r   r   r   )r   r   r   r   r   r)   r   c                  (    j                         S rB   )extractcolsr  rI  s   r%   r-   z+test_DomainMatrix_extract.<locals>.<lambda>{  s    2::dD#9 r'   c                  D    j                         j                         S rB   )r   r  r  s   r%   r-   z+test_DomainMatrix_extract.<locals>.<lambda>|  s    2<<>#9#9$#E r'   )r   r
   r  r   r   r   r   r  )	dM1dM2dM3emptysizebad_indicesr  r  rI  s	         @@@r%   test_DomainMatrix_extractr  [  s   
	A1r!u	A1r!u	A1r!u !',C 	A1	A1%C ;;1v1v&#---==?""Aq6Aq62cmmoEEE;;2wB(C///==?""Ar7QG4GGG
	A1r!u	A1r!u	A1r!u !',C ;;y),333==?""9i8CMMOKKK 
R
b&	aS&E
 " 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   rp  r  r   c                     || |f<   y rB   r3   )ijvalr  s      r%   setitemz*test_DomainMatrix_setitem.<locals>.setitem  s    1a4r'   c                  ,      ddt        dd            S )Nr   r   )r   r  s   r%   r-   z+test_DomainMatrix_setitem.<locals>.<lambda>  s    gaBq!H5 r'   c                  >      t        dd      dt        d            S r  )slicer
   r  s   r%   r-   z+test_DomainMatrix_setitem.<locals>.<lambda>  s    aQ1(F r'   )r   r
   r   r<   r  )r  r  s   @@r%   test_DomainMatrix_setitemr    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   rp  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)[sympy.testing.pytestr   sympy.core.numbersr   r   sympy.core.singletonr   sympy.functionsr   sympy.matrices.denser   sympy.polys.domainsr	   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   r&   r?   rE   rN   rV   r`   rc   rh   rn   rr   rw   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r"  r&  r+  r5  rA  rF  rQ  r\  rb  rd  rf  ri  rl  ru  rx  r|  r  r  r  r  r  r  r  r3   r'   r%   <module>r     sm   ' 0 "   ' 1 1 L L   ) (P>8"*,
I:#)/
L><<25
;
<
R
C
4
$ 
".J!H!$8N%3$)+:
#0.<$.5(p.0b;">!!*+	'C)6X3!GHH0r'   