
    oVhV                        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] Ztd^ Zuy_)`    )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     \/home/dcms/DCMS/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        D cg c]  }|j                          }}t        d      |d<   |k(  sJ y c c}w )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%   r&   r   	TypeError
ValueErrorr   copy)	dodr(   r;   r#   iwasr'   r>   r4   s	         @@@r)   test_DomainMatrix_initrH      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O !
!1668
!C
!VAcF#:: "s   H=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>T   s    l33A6 r+   )
r   r   r   rL   r#   r%   r&   r   r   rB   )r'   r4   r(   s     @r)   test_DomainMatrix_from_reprN   E   s    
1r!u~1r!u~.
;Cc"A55C<<77f88r>>
ber!u%RUbe*<=vr
JCc"A55C<<77f88r>>r!ugY+A
967r+   c                     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|      }t        dk7  r|j
                  | k(  s!J |j
                  | j                         k(  sJ |j                  dk(  sJ |j                  |k(  sJ t        ddz  dz
        }t         |d       |d      g |d       |d      ggd|      } t        j                  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                  |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    )rR   r   )r   r   r   	from_listr   r#   r$   r%   r&   r
   r   )r'   r(   doms      r)   test_DomainMatrix_from_listrX   W   s   
1r!u~1r!u~.
;CAA/4Awuu||uu

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

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

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

$$$77f88r>>r+   c            
         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_sympyr`      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   rc   rd   s   r)   r1   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>   rf   r+   )
r   r   r   r   from_dict_sympyr#   r%   r&   r   r   )r4   
sympy_dictr(   re   s      @r)   !test_DomainMatrix_from_dict_sympyrj      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!   TrZ   r   r9   r:   r"   )r   r   r   from_Matrixr   r#   r%   r&   r   r]   r   r^   r   r   r$   )r4   r(   r_   r'   s       r)   test_DomainMatrix_from_Matrixrm      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_eqrs      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_eqry      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   )r_   itemss     r)   test_DomainMatrix_get_domainr}      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 ro   )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   rq   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   r   )	AdmAddmAsdmr(   elemsdataeelemsqelems2s	            r)   test_DomainMatrix_to_flat_nzr      s    
q!fq!fr
"C77>>D77>>D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 ro   )r   r   to_sympyr   r   rM   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 ro   )r   r   to_fieldr   r   s     r)   test_DomainMatrix_to_fieldr     sl    r!ubenr!uben5vrBA	
B1r!u~1r!u~>KKKKr+   c                      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>1  s    rxx	x: r+   )
r   r   r   r   r#   r   to_dfm_or_ddmr   r   rC   )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 ro   )	r   r   r   	to_Matrixr   r   r   r]   r   )r(   A_Matrixs     r)   test_DomainMatrix_to_Matrixr   4  s    r!ubenr!uben5vrBA1v1v&'H;;=H$$$;;=""$000<<%%'8333<<**4734>>@HLLLr+   c                      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 ro   )r   r   to_listrM   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 ro   )r   r   to_list_flatrM   s    r)   test_DomainMatrix_to_list_flatr   B  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 ro   )r   r   flatrM   s    r)   test_DomainMatrix_flatr   G  sZ    r!ubenr!uben5vrBA6681r!ubeRU3333r+   c                  @   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   L  s$   qE2a5"Q%A'Dr!ubenr!uben5vrBA&&tVR8A===dFB/155<<>AAAdFB/155<<>AAA  !1177AHHEEEE
?L77vrJ
?C..fbA
?C..fbAr+   c                     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_dodrM   s    r)   test_DomainMatrix_to_dodr   [  s    r!ubenr!uben5vrBA88:A"Q%01A5GHHHHr!ubenr!uben5vrBA88:aAZQ1J7777r+   c                  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   r   r|   r(   s     r)   test_DomainMatrix_from_dodr   b  s    qERU#2a5BqE(:;E
QFQFR A  3q{{}DDD??5!Q&&&??5"%b)9999r+   c                     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!   )rA   r-   r   r   r6   r   rA   r6   )r   r   to_dokr   r   r#   r   r   )r(   doks     r)   test_DomainMatrix_to_dokr   j  s'   r!ubenr!uben5vrBA88:Ar!uRU2a5QQQQr!ubenr!uben5vrBAQ%1
&C88:::< C''';;=!S(((55<<>  "c)))55<<>  "c)))r+   c                     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   v  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   reprrM   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 ro   )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      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(   rq   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                     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!   rR      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    rR   r   )r   r   r   )r    rR   r   )r   r   diagonalr   rM   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   rankrM   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 rK   r7   r(   Ls   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      a!e r+   c                       z   S rK   r7   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   rS   c                       z   S rK   r7   A1A2s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      b r+   c                       z   S rK   r7   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   c                  &     j                        S rK   addr   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>       r+   c                  &    j                         S rK   r  r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   c                  &    j                         S rK   r  r   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      "&&* r+   c                  &     j                        S rK   r  r  s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   r   r-   rR   c                  &    j                         S rK   r  r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   )r   r   r  r   rB   r   r   r   r#   r   r   r   )rq   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 rK   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                       z
  S rK   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   rS   c                       z
  S rK   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                       z
  S rK   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                  &     j                        S rK   subr   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  &    j                         S rK   r  r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  &    j                         S rK   r  r  s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  &     j                        S rK   r  r  s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   r-   )r   r   r  r   rB   r   r   r   r#   r   r   )rq   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!   rP   
         c                       z  S rK   r7   r   s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r+   c                       z  S rK   r7   r   s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r+   c                  &    j                         S rK   matmulr  s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>      "))B- r+   c                  &     j                        S rK   r*  r  s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r,  r+   r   r   r   r-   )r   r   r+  r   rB   r   r   mulzerosr   r#   r   r   )r   AprodAAr   r   r   r  r  r(   r   r   r   s           @@@@r)   test_DomainMatrix_mulr2  	  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_elementwiserp   s      r)   !test_DomainMatrix_mul_elementwiser5  0  s    r!ubenr!uben5vrBAr!ubenr!uben5vrBAr!ubenr!uben5vrBAQ1$$$Q1$$$r+   c                  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!   rP   r$  r%  r&  %   6   Q   v   r   c                  "     t        dd      z  S Nr   r   rc   rM   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>B  s    a8Aq>1 r+   c                       dz  S Nr  r7   rM   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>C  s    R r+   c                  &     j                  d      S r>  )powrM   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>D  s    b	 r+   r   r   c                       dz  S Nr   r7   rM   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>G  s    16 r+   )	r   eyer   r@  r   rB   NotImplementedErrorr/  r   )rD  r   A3r(   s      @r)   test_DomainMatrix_powrG  8  sl   


1b
!Cr!ubenr!uben5vrBA	1r"vBB(8962	FB	22'"R&"S'):;VR	HBa41558"s"""""a41558 q     a41558!r!!!!!a41558!r!!!!!
912
0
 1262&A
!>2r+   c                  @   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 )NrS   r   r   rU   r   rR   <         r%     Tr^   )r   r   r   r   r   clear_denomsr(   den_ZAnum_ZAnum_Qs       r)   test_DomainMatrix_clear_denomsrU  J  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 )NrS   rI  rU   rJ  r   r   rM  r   r   rR   r    TrO  )rS   rI  r   r   r   r   r   r   )rU   rJ  )r   r   )r   rP   )r   r   r   )r   r   r   )r   r   i  )r   r   r   r   )i   T   F   rK  )r   r   r   r   clear_denoms_rowwiser   invr   rQ  s       r)   &test_DomainMatrix_clear_denoms_rowwiser]  W  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   rM   s   r)   r1   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>|  s    annRU&; r+   )r   r   ra  r   r   ZeroDivisionErrorrM   s   @r)   test_DomainMatrix_cancel_denomrc  n  s|   
QFQFR A>>"Q% R!Q!Q(8"%=r!u$EEEE>>"Q% R!Q!Q(8"%=r!u$EEEE>>"Q% R!Q!Q(8"%=r!u$EEEE
QFQFR A>>"Q% Q1J...>>"R&!qb"Q%[000 	QFQFT"A>>$q)$aAtAw(????
;<r+   c                     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   rM   s   r)   r1   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>  s    a&@&@A&G r+   )r   r   rf  r   rb  )numersdenomsr(   s     @r)   *test_DomainMatrix_cancel_denom_elementwiseri    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_primitivero    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 rK   )sccrM   s   r)   r1   z'test_DomainMatrix_scc.<locals>.<lambda>  s    1557 r+   )r   r   r   r#   rs  r   r   r   )r   r   r   r   r(   s       @r)   test_DomainMatrix_sccrt    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foor|  )rrefr   s   r)   r1   z(test_DomainMatrix_rref.<locals>.<lambda>  s    rwwew4 r+   c                  (     j                  d      S r  )rref_denr  s   r)   r1   z(test_DomainMatrix_rref.<locals>.<lambda>  s    r{{%{8 r+   )r   r   r  r   r   rC   )r(   Arpivotsmethodsr}  r   s        @r)   test_DomainMatrix_rrefr    s    R$A6682wr!ugY+A6684y   r!ugY+A6682wr!ubenr!uben5vrBAJB1r!u~1r!u~>KKKKVr!ubenr!uben5vrBAJB1r!u~1r!u~>KKKKVr!ubenr!uben5vrBAJB1r!u~1r!u~>KKKKT>>	1r!u~1r!u~6	CBJB1r!u~1r!u~>KKKKVLG	1r!u~1r!u~6	CB  WWFW+
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 rK   )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 rK   )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  rS   c                  (     j                  d      S )NT)divide_last)	nullspacerM   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!   rA  r   rS   r  rT   c                  &     j                        S rK   _solve)r(   b3s   r)   r1   z)test_DomainMatrix_solve.<locals>.<lambda>  s    " r+   c                  &     j                        S rK   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       t        d      }t        ddgddgg|      j                         t        ddgddgg|      k(  sJ t        d      t	        t
        fd       y )NrA   r   r   r   r    r!   r  r  c                  $     j                         S rK   r\  r  s   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>  s     r+   rS   c                  $     j                         S rK   r  Anss   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>      3779 r+   r   c                  $     j                         S rK   r  )Aninvs   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>  s    uyy{ r+   r   c                  D    t        ddgddgg       j                         S )Nr   r   r   r    )r   r\  )Z6s   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>  s$    QFQF#3R 8 < < > r+   )
r   r   r\  r   r   r   r   r   r
   r   )r(   AinvZ3r  r  r   r  s      @@@@r)   test_DomainMatrix_invr    s   R$A557a<<r!ubenr!uben5vrBA"R&"Q%2a8RAY*?@&"MD557d??	1r!u~1r!u~6	CB
;()
A1'
4C
!#452a5"Q%.2a5"Q%.962FE
%':;	AB1v1v#'')R!Q!Q0@"-EEEE	AB
;>?r+   c            	         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 )NrA   r   r6   r   r   r    r!   r  rR   rq  r  r   rS   c                  $     j                         S rK   )detr  s   r)   r1   z'test_DomainMatrix_det.<locals>.<lambda>1  r  r+   )r   r   r  r   r   r   )r(   r  s    @r)   test_DomainMatrix_detr     s   R$A557a<<qcUFB'A557a<<r!ubenr!uben5vrBA557bfr!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA557bfr!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA557be
A1'
4C
!#45r!ubenr!uben5vrBA557bfr+   c                     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!   rN        !   r   rS   c                  :     j                  t        d      g      S rC  )	eval_polyr   )dM2s   r)   r1   z-test_DomainMatrix_eval_poly.<locals>.<lambda>@  s    3=="Q%+A r+   )	r   r   r  r/  r%   r&   rD  r   r   )dMpresultr  s      @r)   test_DomainMatrix_eval_polyr  7  sB   	1r!u~1r!u~6	CB	A1r!uABrFBrF+bfbf-=>KF<<?fI!RU
QqT"W(<qtBEz(IIIIII<<rxx"))<<<<<<A AbffQ		&:$::::
A1'
4C
!#ABr+   c                     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!   rA  (   W   r   c                  <    j                  t        d      g       S rC  eval_poly_mulr   )r  dM1s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>L  s    3+<+<beWa+H r+   rS   c                  <    j                  t        d      g       S rC  r  )b1r  s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>N  s    !1!12a5'2!> r+   c                  <    j                  t        d      g       S rC  r  )bqr  s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>P  s    ""2"2BqE7B"? r+   )r   r   r  r   r   r   r   r   )r(   r  r  r  r  r  r  r  s      @@@@@r)   test_DomainMatrix_eval_poly_mulr  C  s~   r!ubenr!uben5vrBAr!ug1w'4A	A1r!uABrF8bfX.;F??1a FMad1a4ikAaDF1H.DqtAv.MMMMMM	1r!u~1r!u~6	CB
A"Q%)62
6C
!#HI	1r!u~&	3B
<>?	1wA(&"	5B
=?@r+   c                    | |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  r|  charpolyc                  &     j                        S rK   solve_den_charpolyAir  s   r)   r1   z"_check_solve_den.<locals>.<lambda>k  s    23H3H3K r+   c                  *     j                  d      S )Nr  r|  	solve_denr  s   r)   r1   z"_check_solve_den.<locals>.<lambda>l  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  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!   rA  r   r  r  rR   rq  rT   r6   )r   r   r  )r(   r  r  r  s       r)   test_DomainMatrix_solve_denr  o  s   r!ubenr!uben5vrBAr!ug1w'4ABqE7RVH-vr:F
R&C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!   rA  rS   c                  &     j                        S rK   r  )r   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>  s    2+@+@+C r+   c                  &     j                        S rK   r  r(   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>  s    !5!5b!9 r+   c                  &     j                        S rK   r  )r(   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>  s    !"6"6r": r+   )r   r   r   r   r   r   r   )r(   r   r  r  r  s   @@@@@r)   $test_DomainMatrix_solve_den_charpolyr    s    r!ubenr!uben5vrBAr!ug1w'4A	1r!u~&	3B
!#CD	1r!u~&	3B
<9:	1wA(&"	5B
=:;r+   c                     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   rA  c                  &     j                        S rK   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    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   rS   rA  c                  &     j                        S rK   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      Q r+   c                  &     j                        S rK   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      !1!1!!4 r+   c                  &     j                        S rK   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  r  r+   c                  &     j                        S rK   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  r  r+   r   r    r!   c                  &     j                        S rK   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    R r+   r6   c                  *     j                  d      S )Nr=   r|  r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    AKK9K$E r+   c                  &     j                        S rK   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!   rA  c                  &     j                        S rK   r  r  s   r)   r1   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>  s    q{{1~ r+   c                  &     j                        S rK   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    rR   r   rP   r   	   r   c                  $     j                         S rK   )adj_poly_detrM   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 )NrA   r   r   r   r    r!   r   r  r-   rR   r   r   r  ir   rq  )r   r   r   r   rW  )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 rK   r7   )rowsrW   rowr   s       r)   r1   z&test_DomainMatrix_lu.<locals>.<lambda>	  s&    F# 5AQ 5F  5Fs   	,',,)r    r    c                  $     j                         S rK   )lurM   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 )NrA   r   r   r   r    r!   rA  r   c                  &     j                        S rK   lu_solver  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>'      qzz!} r+   rR   r   r   rT   c                  &     j                        S rK   r   r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>2  r"  r+   rS   r6   c                  &     j                        S rK   r   r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>7  s    

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

1 r+   c                  &     j                        S rK   r   r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>A  s    A r+   )	r   r   r!  r   r   rE  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 )NrA   r   r6   r  r   r   r    r!   r  rR   r   rP   r   r  rq  r  r  r   )
   r   rL  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   r7  C   r   r   r   r   )r   iir   i:r   r   r   r   r   r   rS   c                  $     j                         S rK   )r  r  s   r)   r1   z,test_DomainMatrix_charpoly.<locals>.<lambda>o  s    3<<> r+   )	r   r   r  r   r   mapr   r   r   )r(   r  r  s     @r)   test_DomainMatrix_charpolyr3  D  s   R$A	AA::<1;;=!!#q(((qcUFB'A	A2A::<1;;=!!#q(((r!ubenr!uben5vrBA	A22A::<1;;=!!#q(((r!ubeRU+beRUBqE-BRUBqESUVWSXDYZ\bdfgA	A3C"Q%(A::<1;;=!!#q(((r!ubeRU+!ubeRU+!ubeRU+-.4b	:A 
A1r"vr!u%A::<1;;=!!#q(((
0000000000	2 46		7A 	<=A::<1;;=!!#q(((
A1'
4C
!#9:r+   c                  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 )NrA   r   r  r   r   r    r)  r  )r   r   r   )r   r    r   )r   r   r   )r   r   charpoly_factor_listr   rM   s    r)   &test_DomainMatrix_charpoly_factor_listr6  r  s$   R$A!!#r)))
QC5"A!!#
Q%B!(    	QFQFR A!!#
Q%BB	 !$(    	Iy),b1A!!#
Q%B!
Q%BB	 !$(   r+   c                      t        j                  dt              } | j                  t	        j                  dt              k(  sJ | j
                  dk(  sJ | j                  t        k(  sJ y )Nr   rq  )r   rD  r   r#   r   r%   r&   rM   s    r)   test_DomainMatrix_eyer8    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 )NrS   )r   r/  r   r#   r   r%   r&   rM   s    r)   test_DomainMatrix_zerosr:    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&   rM   s    r)   test_DomainMatrix_onesr=    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   diagrM   s    r)   test_DomainMatrix_diagr@    s    2a5	a1Y/<AbeRU^R0A5552a5	a1Y/<AbeRU^R8A===r+   c                     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!   rR   r   rP   r   r  r$     rN  r   r    )r   r   )r   r   hstackr(   rq   rr   ABABCs        r)   test_DomainMatrix_hstackrH    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!   rR   r   rP   r   r  r$  rB  rN  )r    r   )r   r   )r   r   vstackrE  s        r)   test_DomainMatrix_vstackrK    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   rS   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_applyfuncrO    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   rM   s   r)   r1   z-test_DomainMatrix_scalarmul.<locals>.<lambda>      a#g r+   )r   r   r   r   r   rB   )lamdar(   s    @r)   test_DomainMatrix_scalarmulrU    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   rM   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  s    a!e r+   c                       dz  S rR  r7   rM   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  rS  r+   c                  <     t        t        d      t              z  S r`  )r   r   rM   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  s    a,r!ub*A&A r+   r  r   )
r   rl   r   r   r   r   r   rb  rB   r   )rT  r  r(   s     @r)   test_DomainMatrix_truedivrZ    sp     !Q!Q(8!9:AAr!ub)Eu9R1X"Q()CBqEVXYZ\]V^H_%`bhjlmmmmRUBAq5LA2a5%9"Q%BqE>R!SU[]_````q5LA2a5%9"Q%BqE>R!SU[]_````q5LAqbe%<R1XRTUVRWAX!Y[aceffff
m,
9o&
ABr!ubenr!uben5vrBA::<!|bAh1->Aq2a5@Q,RTZ\^____q5L2a8RU"3bAh15F!GQSTTTT::<"Qq'!\Bq!Hbe3Dr!QxQSTUQVFW2XZ`bd%eeeer+   c            
          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    rR   r   rP   r   r  rq  r  rA  r6   r  r   r!   rT   rI  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   r]  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  s    r#2#q&z r+   rS   )r  r   )r   r  )r  r  c                       d   S )Nrq  r7   r]  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>
      r$x r+   c                       d   S )NrU   r7   r]  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  r`  r+   c                       d   S )N)r  r  r7   r]  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  s    r&z r+   )r$  r$  rR   rR   rA   c                       d   S )Nr   r   r7   r]  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>  r`  r+   rC  )r   r   re  )r   r   r   
IndexErrorr   r]  s   @r)   test_DomainMatrix_getitemrg    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   rC  rc  r   )r   r   getitem_sympyr   Zero
isinstancer   )r  val1val2s      r)   test_DomainMatrix_getitem_sympyrn    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    rR   r   rP   r   r  rq  r!   r   r  )r   r   r   rA   r   r-   r  c                  (    j                         S rK   )extractcolsr  r  s   r)   r1   z+test_DomainMatrix_extract.<locals>.<lambda>E  s    2::dD#9 r+   c                  D    j                         j                         S rK   )r   rq  rr  s   r)   r1   z+test_DomainMatrix_extract.<locals>.<lambda>F  s    2<<>#9#9$#E r+   )r   r   rq  r   r/  r   r   rf  )	r  r  dM3emptysizebad_indicesrs  r  r  s	         @@@r)   test_DomainMatrix_extractry  %  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    rC  rc  r!   c                     || |f<   y rK   r7   )rF   jvalr  s      r)   setitemz*test_DomainMatrix_setitem.<locals>.setitemM  s    1a4r+   c                  ,      ddt        dd            S )Nr   r   )r   r~  s   r)   r1   z+test_DomainMatrix_setitem.<locals>.<lambda>O  s    gaBq!H5 r+   c                  >      t        dd      dt        d            S r<  )slicer   r  s   r)   r1   z+test_DomainMatrix_setitem.<locals>.<lambda>P  s    aQ1(F r+   )r   r   r   rB   rE  )r  r~  s   @@r)   test_DomainMatrix_setitemr  I  s{    	1be*!RU4fb	AB!uBtH1be*!RU<fbIIII
956
 FGr+   c                  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    rC  rc  r   r!   )pickler   r   loadsdumps)r  r  s     r)   test_DomainMatrix_picklingr  S  s    	1be*!RU4fb	AB<<R()R///	1r!u~1r!u~6	CB<<R()R///r+   c                     t        ddgddggt              } | j                         \  }}}}|j                  | j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ |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        ddgddggt              k(  sJ |t        ddgddggt              k(  sJ |j	                         \  }}|j                  |       j                  |      |j                  |      j                  |      k(  sJ y )Nr   r   r   r    r   r  )r   r   fflur%   r  r+  rmul)r(   Pr   Dr  dids          r)   test_DomainMatrix_fflur  [  sQ   
QFQFR AJAq!Q77agg77agg77agg77aggQFQF#R((((QFQG$b))))QFQG$b))))QFQG$b))))IIKEB88A;A!((2,"5"5a"8888r+   N)vsympy.external.gmpyr   sympyr   r   r   r   r   r	   r
   r   r   r   r   !sympy.polys.matrices.domainmatrixr   r   r   sympy.polys.matrices.exceptionsr   r   r   r   r   r   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.sdmr   sympy.testing.pytestr   r*   rH   rN   rX   r`   rj   rm   rs   ry   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  r5  rG  rU  r]  rc  ri  ro  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r'  r3  r6  r8  r:  r=  r@  rH  rK  rO  rU  rZ  rg  rn  ry  r  r  r  r7   r+   r)   <module>r     s   , = = ) ) L L   ) ( '&R8$%P2
I@#LM
=/
L>+<2M;
<
4
B8:	*=C
$? F
".J!H!$HN%3$
0.="	I54':T
#N,.@0.	CA W8(.<BD0D=(")5(p.0b+;\*>!!*+	'f()6X3!GHH09r+   