
    Ries~                        d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZmZ d dlmZmZmZmZmZmZmZ d d	lmZ d d
lmZ d Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d  Z5d! Z6d" Z7d# Z8d$ Z9d% Z:d& Z;d' Z<d( Z=d) Z>d* Z?d+ Z@d, ZAd- ZBd. ZCd/ ZDd0 ZEd1 ZFd2 ZGd3 ZHd4 ZId5 ZJd6 ZKd7 ZLd8 ZMd9 ZNd: ZOd; ZPd< ZQd= ZRd> ZSd? ZTd@ ZUdA ZVdB ZWdC ZXdD ZYdE ZZdFS )G    )raises)IntegerRational)S)sqrt)Matrix)FFZZQQEXRAW)DomainMatrixDomainScalarDM)DMBadInputErrorDMDomainErrorDMShapeErrorDMFormatErrorDMNotAFieldDMNonSquareMatrixErrorDMNonInvertibleMatrixError)DDM)SDMc                  4   t          t          d          t          d          gt          d          t          d          ggdt                    } t          ddgddggt                    }|j        | k    sJ |j        dk    sJ |j        t          k    sJ d S N            r   r   )r   r
   r   repshapedomain)ddmAs     Llib/python3.11/site-packages/sympy/polys/matrices/tests/test_domainmatrix.pytest_DMr&      s    
1r!uu~1r!uu~.
;
;C
QFQFR  A5C<<<<7f8r>>>>>>    c                     t          d          t          d          gt          d          t          d          ggt          d          t          d          dt          d          t          d          dd} t          dt                     t          | dt                     t          dt                     }|j        k    sJ |j        dk    sJ |j        t           k    sJ t          | dt                     }|j        k    sJ |j        dk    sJ |j        t           k    sJ t          t          fd           t          t          fd           t          t          d	            d
fdffD ]O\  }}t          dt           |          }|j        |k    sJ t          | dt           |          }|j        |k    sJ Pt          t          fd           t          t          d            d S )Nr   r   r   r   r   r   r   c                  0    t           dt                    S Nr   r   r
   )r#   s   r%   <lambda>z(test_DomainMatrix_init.<locals>.<lambda>+       l3;; r'   c                  0    t           dt                    S r+   r,   )sdms   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>,   r.   r'   c                  L    t          t          dgg          dt                    S )Nr   r   r   )r   r   r
    r'   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>-   s    l6A3%==&"EE r'   sparsedensefmtc                  4    t           dt          d          S )Nr   invalidr6   r,   )lols   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>5   s    |CKKK r'   c                  h    t          t          d          t          d          ggdt                    S )Nr   r   r   r,   r3   r'   r%   r-   z(test_DomainMatrix_init.<locals>.<lambda>7   s%    L2a55"Q%%.1A62$N$N r'   )r
   r   r   r   r    r!   r"   r   	TypeError
ValueErrorr   )dodr$   r7   r    r#   r:   r0   s       @@@r%   test_DomainMatrix_initr?      s   qEE2a55>BqEE2a55>
*CQ%%2a55!!A"Q%%&8&8
9
9C
c62

C
c62

CS&"%%A5C<<<<7f8r>>>>S&"%%A5C<<<<7f8r>>>>
9;;;;<<<
9;;;;<<<
9EEFFF_wn5  Sfbc222u||||fbc222u|||||
:KKKKLLL
?NNOOOOOr'   c                     t          t          d          t          d          gt          d          t          d          ggdt                    } t          j        |           j        | k    sJ j        dk    sJ j        t          k    sJ t          t          d          t          d          dt          d          t          d          dddt                    }t          j        |          j        |k    sJ j        dk    sJ j        t          k    sJ t          t          d          ggdt                    t          t          fd           d S )	Nr   r   r   r   r   r)   r2   c                  ,    t          j                   S N)r   from_repr$   s   r%   r-   z,test_DomainMatrix_from_rep.<locals>.<lambda>H   s    l3A66 r'   )
r   r
   r   rC   r    r!   r"   r   r   r<   )r#   r0   r$   s     @r%   test_DomainMatrix_from_reprE   :   s7   
1r!uu~1r!uu~.
;
;Cc""A5C<<<<7f8r>>>>
beer!uu%%RUUbee*<*<==vr
J
JCc""A5C<<<<7f8r>>>>r!uugY++A
9666677777r'   c                     t          t          d          t          d          gt          d          t          d          ggdt                    } t          j        ddgddggt                    }|j        | k    sJ |j        dk    sJ |j        t          k    sJ t          d          }t           |d           |d          g |d           |d          ggd|          } t          j        ddgddgg|          }|j        | k    sJ |j        dk    sJ |j        |k    sJ t          t          dd          t          dd          gt          dd          t          dd          ggdt                    } t          j        dd	gd
dggt                    }|j        | k    sJ |j        dk    sJ |j        t          k    sJ d S )Nr   r   r   r   r         r   r   r   r   r   r   )rH   r   )	r   r
   r   	from_listr    r!   r"   r	   r   )r#   r$   doms      r%   test_DomainMatrix_from_listrN   K   s   
1r!uu~1r!uu~.
;
;CAA/44A5C<<<<7f8r>>>>
Q%%C
AA##a&&##a&&!12FC
@
@CAA/55A5C<<<<7f8s????
1a"Q((#bAhh1a%9:FB
G
GC 0662BCRHHA5C<<<<7f8r>>>>>>r'   c            
         t          t          d          t          d          gt          d          t          d          ggdt                    } t          j        ddddgddgg          }|j        | k    sJ |j        dk    sJ |j        t          k    sJ t          j        t          d                    }t          |
                    dt          d          z             |
                    dt          d          z             g|
                    dt          d          z             |
                    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 d S )Nr   r   r   r   r   T	extension)r   r
   r   from_list_sympyr    r!   r"   r   algebraic_fieldr   convert)r#   r$   Ks      r%   !test_DomainMatrix_from_list_sympyrV   `   s   
1r!uu~1r!uu~.
;
;C$QQFQF+;<<A5C<<<<7f8r>>>>
477##A

))AQK
 
 !))AQK"8"8	9
))AQK
 
 !))AQK"8"8	9	;		 C 	$	1DGGQa[)AQKT!WW+EF	 	 	A 5C<<<<7f8q======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           d S )	Nr   r   r   r   r)   r   c            
      B      ddddt          dd          ii          S )Nr   r   r   r   r   fdss   r%   r-   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>   '    CC1q1hq!nn2E.F$G$G r'   c            
      B      ddddt          dd          ii          S )Nr   r   r   r   rY   rZ   s   r%   r-   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>   r\   r'   )
r   r   r   r   from_dict_sympyr    r!   r"   r   r   )r0   
sympy_dictr$   r[   s      @r%   !test_DomainMatrix_from_dict_sympyr`   v   s    
1bAhh-Q1aM22FB
?
?C!Q(a!Q-@AAJ$Q:66A5C<<<<7f8r>>>>

&C
?GGGGHHH
?GGGGHHHH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          |                    dt          d          z             |                    dt          d          z             d|                    dt          d          z             |                    dt          d          z             ddd|          } t          j        t	          dt          d          z   dt          d          z   gdt          d          z   dt          d          z   gg          d          }|j        | k    sJ |j        dk    sJ |j        |k    sJ t          j        t	          t          dd          t          dd          gt          d	d          t          d	d          gg          d
          }t          t          dd          t          dd          gt          d	d          t          d	d          ggdt                    }|j        |k    sJ |j        dk    sJ |j        t          k    sJ d S )Nr   r   r)   r   r   r   TrP   r   r5   r6   )r   r
   r   from_Matrixr   r    r!   r"   r   rS   r   rT   r   )r0   r$   rU   r#   s       r%   test_DomainMatrix_from_Matrixrc      s   
bee1&&r!uuA+?+?@@&"
M
MC !Q!Q(8!9!9::A5C<<<<7f8r>>>>
477##A
		!d1gg+&&199Qa[+A+ABB		!d1gg+&&199Qa[+A+ABB	D 	D		 C 	 T!WWa$q''k*Qa[!d1gg+,FGHH	 	 	A 5C<<<<7f8q==== "Q((Bq!HH)=1a"QPQ((?S(T!U!U[bcccA
1a"Q((#bAhh1a%9:FB
G
GC5C<<<<7f8r>>>>>>r'   c                     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                    }| |k    sJ t          d          t          d          gt          d          t          d          gg}| |k    sJ d S r   r,   r$   BCs      r%   test_DomainMatrix_eqrh      s    r!uubeenr!uubeen5vrBBA6666r!uubeenr!uubeen5vrBBA6666
Q%%A"Q%%A(A666666r'   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                    }|                     |          du sJ |                     |          du sJ |                     |          du sJ d S )	Nr   r   r   r   r   r2   TF)r   r
   r   unify_eq)r$   B1B2B3s       r%   test_DomainMatrix_unify_eqrn      s   r!uubeenr!uubeen5vrBBA	1r!uu~1r!uu~6	C	CB	1r!uu~1r!uu~6	C	CB	1wi	,	,B::b>>T!!!!::b>>U""""::b>>U""""""r'   c            	         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 d S )N)r   r   r   r   r   r   r   r   )r   
get_domainr
   r   r   )rU   itemss     r%   test_DomainMatrix_get_domainrr      s    &|||44HAuRUUBqEE2a55"Q%%000007777&1a!Q'@AAHAuRUUBqEE2a55"Q((33333777777r'   c                     t          t          d          t          d          gt          d          t          d          ggdt                    } |                     t                    }|t          t          d          t          d          gt          d          t          d          ggdt                    k    sJ |                     d           }|| k    r|| usJ d S r   )r   r
   
convert_tor   )r$   AqAcopys      r%   test_DomainMatrix_convert_torw      s    r!uubeenr!uubeen5vrBBA	
b		B1r!uu~1r!uu~>KKKKKKLLEA::%q......r'   c                  
   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 |                     t                    k    sJ d S r   )r   r
   to_sympyrt   r   rD   s    r%   test_DomainMatrix_to_sympyrz      sc    r!uubeenr!uubeen5vrBBA::<<1<<........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gdt                    k    sJ d S r   )r   r
   to_fieldr   )r$   ru   s     r%   test_DomainMatrix_to_fieldr}      s    r!uubeenr!uubeen5vrBBA	
B1r!uu~1r!uu~>KKKKKKKKr'   c                      t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 }|j        dddddddk    sJ d S )Nr   r   r   r   r   r)   )r   r
   	to_sparser    )r$   A_sparses     r%   test_DomainMatrix_to_sparser      sr    r!uubeenr!uubeen5vrB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                    k    sJ d S )Nr   r   r)   r   r   r   )r   r
   to_denser    r   )r$   A_denses     r%   test_DomainMatrix_to_denser      sf    Q1aA,,77DDAjjllG;#1v1v.;;;;;;;;r'   c                     t          t          d          t          d          gt          d          t          d          ggdt                    } t          t          d          t          d          gt          d          t          d          ggdt                    }|                     |           | | fk    sJ |                     |          ||fk    sJ |                    |           ||fk    s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                                                  fk    sJ                               fk    sJ                     d	          \  }}|j        t          ddgddggdt                    k    sJ |j        t          ddgddggdt                    k    sJ                     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           d S )Nr   r   r   r   r   r   r)   r5   r6   r4   c                  2                          d          S )Nr9   r6   )unifyAdAss   r%   r-   z)test_DomainMatrix_unify.<locals>.<lambda>   s    rxx	x:: r'   )	r   r
   r   r   r    r   r   r   r=   )Azru   BsBdr   r   s       @@r%   test_DomainMatrix_unifyr      s   	1r!uu~1r!uu~6	C	CB	1r!uu~1r!uu~6	C	CB88B<<B8####88B<<B8####88B<<B8####88B<<B8####	1bee*2a55	22FB	?	?B	1r!uu~1r!uu~6	C	CB88B<<B8####88B<<B8####XXbgX&&FB6S1a&1a&)626666666S1a&!Q&"555555XXbhX''FB6SaVA//<<<<<<6Sq\\!ll;;VRHH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          k    sJ d S r   )r   r
   	to_Matrixr   rD   s    r%   test_DomainMatrix_to_Matrixr      sl    r!uubeenr!uubeen5vrBBA;;==FQFQF#344444444r'   c                  N   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 t          d          t          d          gt          d          t          d          ggk    sJ d S r   )r   r
   to_listrD   s    r%   test_DomainMatrix_to_listr      s|    r!uubeenr!uubeen5vrBBA99;;BqEE2a55>BqEE2a55>:::::::r'   c                  J   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 t          d          t          d          t          d          t          d          gk    sJ d S r   )r   r
   to_list_flatrD   s    r%   test_DomainMatrix_to_list_flatr      sz    r!uubeenr!uubeen5vrBBA>>1r!uubeeRUU;;;;;;;r'   c                  L   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 t          d          t          d          t          d          t          d          dk    sJ d S )Nr   r   r   r   r   )r   r   r)   r   r   r2   )r   r
   to_dokrD   s    r%   test_DomainMatrix_to_dokr     s{    r!uubeenr!uubeen5vrBBA88::Ar!uuRUU2a55QQQQQQQQr'   c                      t          t          d          t          d          gt          d          t          d          ggdt                    } t          |           dk    sJ d S )Nr   r   r   r   r   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r
   reprrD   s    r%   test_DomainMatrix_reprr   	  sV    r!uubeenr!uubeen5vrBBA77BBBBBBBr'   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gdt                    }|                                 |k    sJ d S r   )r   r
   	transpose)r$   ATs     r%   test_DomainMatrix_transposer     s    r!uubeenr!uubeen5vrBBA	1r!uu~1r!uu~6	C	CB;;==Br'   c                  J   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 t          d          t          d          t          d          t          d          gk    sJ d S r   )r   r
   flatrD   s    r%   test_DomainMatrix_flatr     sx    r!uubeenr!uubeen5vrBBA66881r!uubeeRUU3333333r'   c                      t          t          d          ggdt                    } t          t          d          ggdt                    }| j        du sJ |j        du sJ d S )Nr   r2   r   FT)r   r
   is_zero_matrixr$   rf   s     r%    test_DomainMatrix_is_zero_matrixr     sf    r!uugY++Ar!uugY++Au$$$$t######r'   c                  r   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 d S )	Nr   r   r   r   r   r   TF)r   r
   is_upperr   s     r%   test_DomainMatrix_is_upperr          r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBA::r'   c                  r   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 d S )	Nr   r   r   r   r   r   TF)r   r
   is_lowerr   s     r%   test_DomainMatrix_is_lowerr   '  r   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t          d          t          d          ggdt                    }| j        d	u sJ |j        d
u sJ d S )Nr   r   r   r   r   rH      r   r   TF)r   r
   	is_squarer   s     r%   test_DomainMatrix_is_squarer   .  s    r!uubeenr!uubeen5vrBBAr!uubeenr!uubeenr!uubeenEvrRRA;$;%r'   c                     t          t          d          t          d          gt          d          t          d          gt          d          t          d          ggdt                    } |                                 dk    sJ d S )Nr   r   r   r   r      r   )r   r   rankrD   s    r%   test_DomainMatrix_rankr   5  sc    r!uubeenr!uubeenr!uubeenEvrRRA6688q======r'   c                  n	  	
 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                                 cxk    r| k    sn J t          t          d          t          d          gt          d          t          d          ggdt                    ddgddggt          t          fd           t          t          fd	           t          t          d          t          d          gt          d          t          d          ggdt                    t          t          d          t          d          ggd
t                    t          t
          fd           t          t
          fd           t          t
          fd           t          t
          fd           t          t          d          t          d          gt          d          t          d          ggdt                    
t          t          d          t          d          gt          d          t          d          ggdt                    t          t          d          t          d          gt          d          t          d          ggdt                    }
z   |k    sJ 
z   |k    sJ t          t          
fd           t          t          
fd           t          dt          d          idt          d          iddt                    	t          t          d          t          d          gt          d          t          d          ggdt                    	z   }	z   }|t          ddgddggdt                    k    sJ |j        t          ddgddggdt                    k    sJ |t          ddgddggdt                    k    sJ |j        t          ddgddggdt                    k    sJ t          t          	fd           d S )Nr   r   r   r   r   r   r   c                       z   S rB   r3   r$   Ls   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>A      a!e r'   c                       z   S rB   r3   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>B  r   r'   rI   c                       z   S rB   r3   A1A2s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>F      b r'   c                       z   S rB   r3   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>G  r   r'   c                  .                                    S rB   addr   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>H       r'   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>I  r   r'   c                  .                                    S rB   r   ru   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>P      "&&** r'   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>Q  r   r'   r   r)   rH   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_add.<locals>.<lambda>\  r   r'   )r   r
   r   r   r<   r   r   r   r    r   r   )rf   AsumAsdAdsr$   r   r   r   ru   r   r   r   s       @@@@@@@@r%   test_DomainMatrix_addr   :  s'   r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAq5AEE!HH!!!!!!!!!!r!uubeenr!uubeen5vrBBA
Q!QA
9mmmmm$$$
9mmmmm$$$	1r!uu~1r!uu~6	C	CB	1r!uu~&	3	3B
<)))
<)))
<+++++,,,
<+++++,,,	1r!uu~1r!uu~6	C	CB	1r!uu~1r!uu~6	C	CB"Q%%A"Q%%A8&"EED7d????7d????
=,,,,,---
=,,,,,---	1bee*!RUU44fb	A	AB	1r!uu~1r!uu~6	C	CB
r'C
r'C,AA/<<<<<<7cAq6Aq6*FB777777,AA/<<<<<<7cAq6Aq6*FB777777
=,,,,,-----r'   c                    	
 t          t          d          t          d          gt          d          t          d          ggdt                    t          t          d          t          d          gt          d          t          d          ggdt                    } z
                                cxk    r| k    sn J t          t          d          t          d          gt          d          t          d          ggdt                    ddgddggt          t          fd           t          t          fd           t          t          d          t          d          gt          d          t          d          ggdt                    t          t          d          t          d          ggd	t                    t          t
          fd
           t          t
          fd           t          t
          fd           t          t
          fd           t          t          d          t          d          gt          d          t          d          ggdt                    
t          t          d          t          d          gt          d          t          d          ggdt                    	t          t          d          t          d          gt          d          t          d          ggdt                    }
	z
  |k    sJ 	
z
  |k    sJ t          t          	
fd           t          t          	
fd           t          dt          d          idt          d          iddt                    }t          t          d          t          d          gt          d          t          d          ggdt                    }||z
  }||z
  }|t          ddgddggdt                    k    sJ |j        t          ddgddggdt                    k    sJ || k    sJ |j        |j         k    sJ d S )Nr   r   r   r   r   r   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>f  r   r'   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>g  r   r'   rI   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>k  r   r'   c                       z
  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>l  r   r'   c                  .                                    S rB   subr   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>m  r   r'   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>n  r   r'   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>u  r   r'   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_sub.<locals>.<lambda>v  r   r'   r)   )
r   r
   r   r   r<   r   r   r   r    r   )rf   Adiffr   r   r   r   r$   r   r   ru   r   r   s         @@@@@@r%   test_DomainMatrix_subr   _  s   r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAq5AEE!HH!!!!!!!!!!r!uubeenr!uubeen5vrBBA
Q!QA
9mmmmm$$$
9mmmmm$$$	1r!uu~1r!uu~6	C	CB	1r!uu~&	3	3B
<)))
<)))
<+++++,,,
<+++++,,,	1r!uu~1r!uu~6	C	CB	1r!uu~1r!uu~6	C	CB2a55"Q%%.2a55"Q%%.962FFE7e7e
=,,,,,---
=,,,,,---	1bee*!RUU44fb	A	AB	1r!uu~1r!uu~6	C	CB
r'C
r'C,R2r(3VR@@@@@@7cB8b"X.;;;;;;3$;;;;7swh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                    }|  |                                 cxk    r|k    sn J d S )
Nr   r   r   r   r   r   r   )r   r
   neg)r$   Anegs     r%   test_DomainMatrix_negr     s    r!uubeenr!uubeen5vrBBA"R&&"R&&)BrFFBrFF+;<fbI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                                cxk    r| k    sn 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                     |          cxk    r|k    sn 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    r2                    |          	                                cxk    r|k    sn J t          dt          d          idt          d          iddt                    }t          t          d          t          d          gt          d          t          d          ggdt                    }||z  }||z  }|t          ddgddggdt                    k    sJ |j
        t          ddgddggdt                    k    sJ |t          ddgddggdt                    k    sJ |j
        t          ddgddggdt                    k    sJ d S )Nr   r   r   r   r   rG   
         c                       z  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r'   c                       z  S rB   r3   r   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r'   c                  .                                    S rB   matmulr   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>      "))B-- r'   c                  .                                    S rB   r   r   s   r%   r-   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r'   r   r   r   r)   )r   r
   r   r   r<   r   r   mulzerosr   r    r   )r   AprodAAxr   r   r   r   r$   ru   r   r   s           @@@@r%   test_DomainMatrix_mulr     s   r!uubeenr!uubeen5vrBBA	1r"vvBB(8962	F	FBQ3!((1++##########r!uubeenr!uubeen5vrBBA
Q!QA
9mmmmm$$$
9mmmmm$$$	1r!uu~1r!uu~6	C	CB	1r!uu~1r!uu~6	C	CB2a55"R&&/BrFFBrFF+;<fbIIE7e7e
=/////000
=/////000r!uubeenr!uubeen5vrBBA	1r!uu~1r!uu~6	C	CB
1Aq5AE++++QUU1XX++++++++++r!uubeenr!uubeen5vrBBA		FB	'	'B
1Aq5AE7777QUU1XX//117777R777777	1bee*!RUU44fb	A	AB	1r!uu~1r!uu~6	C	CB
r'C
r'C,AA/<<<<<<7cAq6Aq6*FB777777,AA/<<<<<<7cAq6Aq6*FB77777777r'   c                  R   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                    }|                     |          |k    sJ |                    |           |k    sJ d S )Nr   r   r   r   r   r   )r   r
   mul_elementwisere   s      r%   !test_DomainMatrix_mul_elementwiser     s    r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAQ1$$$$Q1$$$$$$r'   c                  H   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                      d          cxk    r| k    sn J dz                      d          cxk    rk    sn J dz                      d          cxk    r|k    sn J dz                      d          cxk    r|k    sn J t	          t
          fd           t	          t          fd           t	          t          fd           t          j        dt                    t	          t          fd           d S )Nr   r   r   r   r   rG   r   r   r   %   6   Q   v   r   c                  *     t          dd          z  S Nr   r   rY   rD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    a8Aq>>1 r'   c                       dz  S Nr   r3   rD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    R r'   c                  .                          d          S r  )powrD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    b		 r'   r   r   c                       dz  S )Nr   r3   rD   s   r%   r-   z'test_DomainMatrix_pow.<locals>.<lambda>  s    16 r'   )	r   eyer
   r	  r   r<   NotImplementedErrorr   r   )r  r   A3r$   s      @r%   test_DomainMatrix_powr    s   

1b
!
!Cr!uubeenr!uubeen5vrBBA	1r"vvBB(8962	F	FB	22'"R&&"S''):;VR	H	HBa415588""""s""""""a415588    q      a415588!!!!r!!!!!!a415588!!!!r!!!!!!
91111222
000
 1 1 1 122262&&A
!>>>>22222r'   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        }| |||fD ]!}|                                 dgddggk    sJ "d S )Nr   r   r   r   r   r   r   )r   r
   r   r    scc)r   r   AddmAsdmr$   s        r%   test_DomainMatrix_sccr    s    	1r!uubee,1r!uubee,1r!uubee,./5r
; 
;B 
B6D6D"dD! ) )vvxxQC!Q=((((() )r'   c                     t          g dt                    } |                                 | dfk    sJ t          t          d          ggdt                    } |                                 | dfk    sJ t          t          d          ggdt                    } |                                 | d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                    k    sJ |d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                    k    sJ |d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                    k    sJ |dk    sJ t          t          d          t          d          gt          d          t          d	          ggd
t                    t	          t
          fd           d S )Nr)   r3   r   r2   )r   r   r   r   r   r   )r   c                  ,                                      S rB   )rrefr   s   r%   r-   z(test_DomainMatrix_rref.<locals>.<lambda>  s    		 r'   )r   r   r  r
   r   r   )r$   Arpivotsr   s      @r%   test_DomainMatrix_rrefr    s   R$$A66882wr!uugY++A66884y    r!uugY++A66882wr!uubeenr!uubeen5vrBBAJB1r!uu~1r!uu~>KKKKKKVr!uubeenr!uubeen5vrBBAJB1r!uu~1r!uu~>KKKKKKVr!uubeenr!uubeen5vrBBAJB1r!uu~1r!uu~>KKKKKKT>>>>	1r!uu~1r!uu~6	C	CB
;))))*****r'   c                  r   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                    }|                                 |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                    }|                                 |k    sJ d S )Nr   r   r   r   r   r   r   r   c                  ,                                      S rB   )columnspacer  s   r%   r-   z/test_DomainMatrix_columnspace.<locals>.<lambda>  s     0 0 r'   r4   r6   r)   )r   r   r   r
   r   r   )r$   Acolr   s     @r%   test_DomainMatrix_columnspacer"    s   r!uubffbee,r!uubffbee.DEvrRRA"Q%%A"Q%%A8&"EED==??d""""	1r"vvr!uu-1r"vvr!uu/EFPR	S	SB
;0000111r!uubffbee,r!uubffbee.DEvrW_```A1"Q%%00A2a555I5IJJFTVWWD==??d""""""r'   c                  ,   t          t          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    } |                                 | 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	          } |                                 | k    sJ d S )
Nr   r   r   r   r   r  c                  ,                                      S rB   )rowspacer  s   r%   r-   z,test_DomainMatrix_rowspace.<locals>.<lambda>  s     r'   r4   r6   )r   r   r%  r
   r   r   )r$   r   s    @r%   test_DomainMatrix_rowspacer&    s4   r!uubffbee,r!uubffbee.DEvrRRA::<<1	1r"vvr!uu-1r"vvr!uu/EFPR	S	SB
;----...r!uubffbee,r!uubffbee.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                    }|                                 |k    sJ t          t          d          t          d          gt          d          t          d          ggdt                    t	          t
          fd           d S )Nr   r   r   rI   c                  ,                                      S rB   )	nullspacer  s   r%   r-   z-test_DomainMatrix_nullspace.<locals>.<lambda>  s     r'   )r   r   r)  r
   r   r   )r$   Anullr   s     @r%   test_DomainMatrix_nullspacer+  
  s    r!uubeenr!uubeen5vrBBA2b662a55/*FB77E;;==E!!!!	1r!uu~1r!uu~6	C	CB
;..../////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          ddggdt                    }t          ddggdt                    }                    |           ||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           d S )Nr   r   r   r   r
  r   rI   r   rJ   c                  .                                    S rB   _solve)r$   b3s   r%   r-   z)test_DomainMatrix_solve.<locals>.<lambda>  s    " r'   c                  .                                    S rB   r.  )r$   bzs   r%   r-   z)test_DomainMatrix_solve.<locals>.<lambda>  s     r'   )r   r   r/  r   r   r
   r   )b
particularr)  r$   r0  r2  s      @@@r%   test_DomainMatrix_solver5    sE   r!uubeenr!uubeen5vrBBAr!uug1w'44A1vh33Jr1gY33I88A;;:y11111	1wA"Q%%162	>	>B
<-----...	1wA(&"	5	5B
;,,,,,-----r'   c                     t          g dt                    } |                                 | 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                    }|                                 |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           d S )Nr   r   r   r   r   r   r   r   c                  ,                                      S rB   invr  s   r%   r-   z'test_DomainMatrix_inv.<locals>.<lambda>+  s     r'   rI   c                  ,                                      S rB   r8  Anss   r%   r-   z'test_DomainMatrix_inv.<locals>.<lambda>.      37799 r'   r   c                  ,                                      S rB   r8  )Aninvs   r%   r-   z'test_DomainMatrix_inv.<locals>.<lambda>1  s    uyy{{ r'   )r   r   r9  r
   r   r   r   r   )r$   Ainvr?  r<  r   s     @@@r%   test_DomainMatrix_invrA  "  s   R$$A5577a<<<<r!uubeenr!uubeen5vrBBA"R&&"Q%%2a88RAYY*?@&"MMD5577d????	1r!uu~1r!uu~6	C	CB
;(((()))
A1'
4
4C
!#4#4#4#45552a55"Q%%.2a55"Q%%.962FFE
%':':':':;;;;;r'   c            	      6   t          g dt                    } |                                 dk    sJ t          dggdt                    } |                                 dk    sJ t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 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                    } |                                 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                    } |                                 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                    } |                                 t          d          k    sJ d S )Nr   r   r2   r   r   r   r   r   rH   r  r   r   rI   c                  ,                                      S rB   )detr;  s   r%   r-   z'test_DomainMatrix_det.<locals>.<lambda>E  r=  r'   )r   r
   rD  r   r   r   r$   r<  s    @r%   test_DomainMatrix_detrF  4  sR   R$$A5577a<<<<qcUFB''A5577a<<<<r!uubeenr!uubeen5vrBBA5577bffr!uubeeRUU+beeRUUBqEE-BRUUBqEESUVWSXSXDYZ\bdfggA5577bffr!uubeeRUU+beeRUUBqEE-BRUUBqEESUVWSXSXDYZ\bdfggA5577bee
A1'
4
4C
!#4#4#4#4555r!uubeenr!uubeen5vrBBA5577bffr'   c            	         t          g dt                                                    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 }                                | ||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}                                | ||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 }                                | ||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 }                                | ||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 }                                | ||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 }                                | ||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                    }                                | |g fk    sJ t          t          d          t          d          gt          d          t          d          ggdt                    t	          t
          fd           d S )Nr   r   r   r   r   r   r   r   r)   rH   r   r  r   ir   r  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                      fd| D             S )Nc                 ,    g | ]}fd |D             S )c                 &    g | ]} |          S r3   r3   ).0erM   s     r%   
<listcomp>zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>y  s!     5 5 5AQ 5 5 5r'   r3   )rK  rowrM   s     r%   rM  z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>y  s.    FFF# 5 5 5 5 5 5 5FFFr'   r3   )rowsrM   s    `r%   r-   z&test_DomainMatrix_lu.<locals>.<lambda>y  s    FFFFFFF r'   )r   r   c                  ,                                      S rB   )lurD   s   r%   r-   z&test_DomainMatrix_lu.<locals>.<lambda>  s     r'   )r   r   rQ  r
   r   r   )r   Uswapsto_domr$   s       @r%   test_DomainMatrix_lurU  K  s   R$$A4466aBZr!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubeenr!uubffo6CCAE4466aE]""""r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAHE4466aE]""""r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAE4466aE]""""r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAE4466aE]""""r!uubeeRUU+beeRUUBqEE-BCVRPPAr!uubeenr!uubeen5vrBBAr!uubeeRUU+beeRVVRVV-DEvrRRAE4466aE]""""r!uubeenr!uubeenr!uubeenEvrRRA	A1r!uu	A1r!uu	A1r!uu !'	, 	,A 	r!uubeenr!uubffo1r!uu~FPRSSAE4466aE]""""	|||\\\<<<@A	|||\\\<<<@A	|||\\\<<<@AFFFVVAr]]FB//AVVAr]]FB//AVVAr]]FB//A4466aBZr!uubeenr!uubeen5vrBBA
;'''''r'   c                     t          g dt                    xx}                               | 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                    }                               | 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                    }                               | 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                    }                               | 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           d S )Nr   r   r   r   r   r   r
  r   c                  .                                    S rB   lu_solver$   r3  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>      qzz!}} r'   rH   r   r   rJ   c                  .                                    S rB   rX  rZ  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  r[  r'   rI   r2   c                  .                                    S rB   rX  rZ  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  s    

1 r'   c                  .                                    S rB   rX  rZ  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  s    

1 r'   c                  .                                    S rB   rX  rZ  s   r%   r-   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  s    A r'   )	r   r   rY  r   r   r  r
   r   r   )r   r$   r3  s    @@r%   test_DomainMatrix_lu_solver`    s   R,,,A,A::a==A 	r!uubeenr!uubeen5vrBBAr!uug1w'44Ar!uug1az*FB77A::a==A 	r!uubeenr!uubeen5vrBBAr!uug1w'44Ar!uug1az*FB77A::a==A 	r!uubeenr!uubeen5vrBBAr!uug1w'44A
%'<'<'<'<'<=== 	r!uubeenr!uubeenr!uubeenEvrRRAr!uug1wA0&"==Ar!uug1az*FB77A::a==A 	r!uubeenr!uubeenr!uubeenEvrRRAr!uug1wA0&"==A
%'<'<'<'<'<=== 	r!uubeen%vr22Ar!uugY++A
 5 5 5 5 5666 	r!uubeenr!uubeen5vrBBAr!uug1w'44A
;-----... 	r!uubeenr!uubeen5vrBBAr!uubeen%vr22A
<...../////r'   c            	         t          g dt                    } |                                 t          d          gk    sJ t          dggdt                    } |                                 t          d          t          d          gk    sJ t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 t          d          t          d	          t          d
          gk    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    } |                                 t          d          t          d          t          d          t          d          gk    sJ t          t          d          t          d          ggdt                    t	          t
          fd           d S )Nr   r   r2   r   r   r   r   r   r   rH   r   rG   r   	   r  iir   rI   c                  ,                                      S rB   )charpolyr;  s   r%   r-   z,test_DomainMatrix_charpoly.<locals>.<lambda>  s    3<<>> r'   )r   r
   re  r   r   r   rE  s    @r%   test_DomainMatrix_charpolyrf    s   R$$A::<<BqEE7""""qcUFB''A::<<BqEE2b66?****r!uubeenr!uubeen5vrBBA::<<BqEE2b662b6622222r!uubeeRUU+beeRUUBqEE-BRUUBqEESUVWSXSXDYZ\bdfggA::<<BqEE2c77BsGGRUU;;;;;
A1'
4
4C
!#9#9#9#9:::::r'   c                      t          j        dt                    } | j        t	          j        dt                    k    sJ | j        dk    sJ | j        t          k    sJ d S )Nr   r  )r   r  r   r    r   r!   r"   rD   s    r%   test_DomainMatrix_eyerh    sY    BA5CGFB''''''7f8r>>>>>>r'   c                      t          j        dt                    } | j        t	          j        dt                    k    sJ | j        dk    sJ | j        t          k    sJ d S )NrI   )r   r   r   r    r   r!   r"   rD   s    r%   test_DomainMatrix_zerosrj    sY    62&&A5CIfb))))))7f8r>>>>>>r'   c                      t          j        dt                    } | j        t	          j        dt                    k    sJ | j        dk    sJ | j        t          k    sJ d S )Nr  )r   onesr   r    r   r!   r"   rD   s    r%   test_DomainMatrix_onesrm    sY    &"%%A5CHVR((((((7f8r>>>>>>r'   c                     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 d S )Nr   r   r   r   r)   r   )r   r   )r   r
   diagrD   s    r%   test_DomainMatrix_diagrp    s    2a55	a1Y//<<AbeeRUU^R00A55552a55	a1Y//<<AbeeRUU^R8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                    }|                     |          |k    sJ |                     ||          |k    sJ d S )Nr   r   r   r   r   rH   r   rG   r   rc  r         r   r   )r   r   )r   r
   hstackr$   rf   rg   ABABCs        r%   test_DomainMatrix_hstackry    s   r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubffo22'78&"EEA		A1r!uubee$	A1r!uubee$&'-r
3 
3B 	A1r!uubeeRUUBrFF3	A1r!uubeeRVVRVV467=rC 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                    }|                     |          |k    sJ |                     ||          |k    sJ d S )Nr   r   r   r   r   rH   r   rG   r   rc  r   rr  rs  )r   r   )r   r   )r   r
   vstackrv  s        r%   test_DomainMatrix_vstackr|    s   r!uubeenr!uubeen5vrBBAr!uubeenr!uubeen5vrBBAr!uubffo22'78&"E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                    }|                     d           |k    sJ d S )Nr   r   rI   r   c                     d| z  S )Nr   r3   )r   s    r%   r-   z-test_DomainMatrix_applyfunc.<locals>.<lambda>	  s
    1 r'   )r   r
   	applyfuncr   s     r%   test_DomainMatrix_applyfuncr    so    r!uubeen%vr22Ar!uubeen%vr2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
           d S )Nr   r   r   r   r   rc  r   r   r   c                       dz  S Ng      ?r3   rD   s   r%   r-   z-test_DomainMatrix_scalarmul.<locals>.<lambda>      a#g r'   )r   r
   r   r   r   r<   )lamdar$   s    @r%   test_DomainMatrix_scalarmulr    s   r!uubeenr!uubeen5vrBBAAr!uub))Eu9r!QxxA&7"Q((BqEE9J%KVUWXXXXXXq5L2a55"Q%%.2a55"Q%%.!A62NNNNNNq5L2a55"Q%%.2a55"Q%%.!A62NNNNNN|BqEE2&&&,r62*F*FFFFF|BqEE2&&&!++++
9oooo&&&&&r'   c            	      x   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
           d S )Nr   r   r   r   r)   r   r   c                       dz  S Nr   r3   rD   s   r%   r-   z+test_DomainMatrix_truediv.<locals>.<lambda>"  s    a!e r'   c                       dz  S r  r3   rD   s   r%   r-   z+test_DomainMatrix_truediv.<locals>.<lambda>#  r  r'   c                  N     t          t          d          t                    z  S r  )r   r
   rD   s   r%   r-   z+test_DomainMatrix_truediv.<locals>.<lambda>$  s    a,r!uub*A*A&A r'   )	r   rb   r   r   r   r
   r   ZeroDivisionErrorr<   )r  r3  r$   s     @r%   test_DomainMatrix_truedivr    s	    !Q!Q(8!9!9::AAr!uub))Eu9R1XX"Q(()C)CBqEEVXYZ\]V^V^H_H_%`%`bhjlmmmmmmRUUBAq5LA2a55%9%9"Q%%BqEE>R>R!S!SU[]_``````q5LA2a55%9%9"Q%%BqEE>R>R!S!SU[]_``````q5LAqbee%<%<R1XXRTUVRWRWAXAX!Y!Y[aceffffff
mmmm,,,
9oooo&&&
AAAABBBBBr'   c            
          t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          ggd
t                      dd d df         t          t          d          gt          d          ggdt                    k    sJ  dd df         t          t          d          ggdt                    k    sJ  d dd df         t          t          d          ggdt                    k    sJ  d dddf         t          t          d          t          d          gt          d          t          d          ggdt                    k    sJ  d d df         t          t          d          gt          d          gt          d	          ggdt                    k    sJ  dd d f         t          t          d          t          d          t          d	          ggdt                    k    sJ  d d dd d f         t          t          d          t          d          t          d	          gt          d          t          d          t          d          gt          d          t          d          t          d          ggd
t                    k    sJ t          t           fd           t          t           fd            d         t	          t          d          t                    k    sJ  d         t	          t          d          t                    k    sJ  d         t	          t          d          t                    k    sJ  d         t	          t          d          t                    k    sJ t          t           fd           t          t           fd           t          t           fd           t          ddt          d          iidt                      d         t	          t          d          t                    k    sJ  d         t	          t          d          t                    k    sJ t          dddiidt                      dd df         t          dddiidt                    k    sJ t          t           fd           t          dt          d          idt          d          id dt                      d dd df         t          i dt                    k    sJ  dd dd f         t          ddiddid!d
t                    k    sJ  dd dd f         t          dddiidt                    k    sJ  dd dd f         t          i d"t                    k    sJ d S )#Nr   r   r   r   rH   r   rG   r   rc  r  r   r
  r2   r   r   r   rJ   )r   r   c                       dd df         S )Nr   r   r3   dMs   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>8  s    r!SbS&z r'   c                       d ddf         S )Nr   r   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>9  s    r#2#q&z r'   rI   )r   r   )r   r   )r   r   c                       d         S )Nr  r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>@      r$x r'   c                       d         S )NrK   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>A  r  r'   c                       d         S )N)r   r   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>B  s    r&z r'   )r   r   rH   rH   r   c                       d         S )Nr   r   r3   r  s   r%   r-   z+test_DomainMatrix_getitem.<locals>.<lambda>J  r  r'   rt  )r   r   r  )r   r
   r   
IndexErrorr   r  s   @r%   test_DomainMatrix_getitemr  '  s   		A1r!uu	A1r!uu	A1r!uu !'
, 
,B
 abb"f:1wA&8&"EEEEEEae9r!uugY;;;;;;crc#2#g;,Ay&"======crc!A#g;,A1A1'GQSTTTTTTaaae9r!uug1wA%@&"MMMMMMb!!!e9r!uubeeRUU&;%<fbIIIIIIdddAAAg;,UUBqEE2a551UUBqEE2a551UUBqEE2a551(3 5;B@ @ @ @ @ @
 :))))***
:))))***d8|BqEE2......e9RUUB//////e9RUUB//////f:beeR000000
:''''(((
:''''(((
:))))***	q1bee*ox	4	4Bd8|BqEE2......d8|BqEE2......	q1a&k5"	-	-Babb!e9a!Q[&"======
:''''(((	1bee*!RUU44fb	A	ABbqb!e9R444444abbe9!QQF%;%;VRHHHHHHabbe9a!Q[&"======abb!""f:b&"55555555r'   c                  &   t          dt          d          idt          d          iddt                    } |                     dd          }|t          j        u sJ |                     dd          }|dk    rt          |t                    sJ d S )Nr   r   r   rt  r  r   )r   r
   getitem_sympyr   Zero
isinstancer   )r  val1val2s      r%   test_DomainMatrix_getitem_sympyr  S  s    	1bee*!RUU44fb	A	ABAq!!D16>>>>Aq!!D199D'2299999r'   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                    } t          t          d          t          d          gt          d          t          d	          ggdt                    }|                     ddgddg          |k    sJ |                                                     ddgddg          |                                k    sJ |                     ddgddg          |k    sJ |                                                     ddgddg          |                                k    sJ t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          ggd
t                    }|                     g dg d          |k    sJ |                                                     g dg d          |                                k    sJ g g dfdgg dfg dgdfg}|D ]\  }|                               t          j        |t                                                    k    sJ |                                                               t          j        |t                    k    s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 ]9\  t          t          fd           t          t          fd           :d S )Nr   r   r   r   rH   r   rG   r   rc  r  r   r   r   )r   r   r   r   r   r)   r   c                  0                                    S rB   )extractcolsr  rO  s   r%   r-   z+test_DomainMatrix_extract.<locals>.<lambda>{  s    2::dD#9#9 r'   c                  T                                                                    S rB   )r   r  r  s   r%   r-   z+test_DomainMatrix_extract.<locals>.<lambda>|  s    2<<>>#9#9$#E#E r'   )r   r
   r  r   r   r   r   r  )	dM1dM2dM3emptysizebad_indicesr  r  rO  s	         @@@r%   test_DomainMatrix_extractr  [  s   
	A1r!uu	A1r!uu	A1r!uu !', ,C 	A1	A1% %C ;;1v1v&&#----==??""Aq6Aq622cmmooEEEE;;2wB((C////==??""Ar7QG44GGGG
	A1r!uu	A1r!uu	A1r!uu !', ,C ;;yyy))),,3333==??""999iii88CMMOOKKKK 
R
b&	aS&E
 " S SdD{{4&&,*<T2*F*F*O*O*Q*QQQQQ}}&&tT22l6Hr6R6RRRRRR	1r!uu~1r!uu~6	C	CBC!:aSzRD1#;!rdDK! G G
dz999999:::zEEEEEEFFFFG 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	           d S )
Nr   r   r   rt  r  r   c                     || |f<   d S rB   r3   )ijvalr  s      r%   setitemz*test_DomainMatrix_setitem.<locals>.setitem  s    1a4r'   c                  :      ddt          dd                    S )Nr   r   )r   r  s   r%   r-   z+test_DomainMatrix_setitem.<locals>.<lambda>  s    ggaBq!HH55 r'   c                  T      t          dd          dt          d                    S r  )slicer
   r  s   r%   r-   z+test_DomainMatrix_setitem.<locals>.<lambda>  s#    aQ1(F(F r'   )r   r
   r   r<   r  )r  r  s   @@r%   test_DomainMatrix_setitemr    s    	1bee*!RUU44fb	A	AB!uuBtH1bee*!RUU<<fbIIIIII    
95555666
 F F F FGGGGGr'   c                     dd l } t          dt          d          idt          d          iddt                    }|                     |                     |                    |k    sJ t          t          d          t          d          gt          d          t          d          ggdt                    }|                     |                     |                    |k    sJ d S )	Nr   r   r   r   rt  r  r   r   )pickler   r
   loadsdumps)r  r  s     r%   test_DomainMatrix_picklingr    s    MMM	1bee*!RUU44fb	A	AB<<R(())R////	1r!uu~1r!uu~6	C	CB<<R(())R//////r'   N)[sympy.testing.pytestr   sympy.core.numbersr   r   sympy.core.singletonr   sympy.functionsr   sympy.matrices.denser   sympy.polys.domainsr	   r
   r   r   !sympy.polys.matrices.domainmatrixr   r   r   sympy.polys.matrices.exceptionsr   r   r   r   r   r   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.sdmr   r&   r?   rE   rN   rV   r`   rc   rh   rn   rr   rw   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r"  r&  r+  r5  rA  rF  rU  r`  rf  rh  rj  rm  rp  ry  r|  r  r  r  r  r  r  r  r  r3   r'   r%   <module>r     s   ' ' ' ' ' ' 0 0 0 0 0 0 0 0 " " " " " "             ' ' ' ' ' ' 1 1 1 1 1 1 1 1 1 1 1 1 L L L L L L L L L L                  ) ( ( ( ( ( ( ( ( ( ( (  P P P>8 8 8"  *  ,
I 
I 
I  :  # # #  ) ) )/ / /
L L L> > >< < << < <25 5 5
; ; ;
< < <
R R R
C C C
  4 4 4
$ $ $           
". ". ".J! ! !H! ! !$8 $8 $8N% % %3 3 3$) ) )+ + +:
# 
# 
#  0 0 0. . .< < <$  .5( 5( 5(p.0 .0 .0b; ; ;"      > > >! ! !! ! !*+ + +	' 	' 	'C C C)6 )6 )6X3 3 3!G !G !GHH H H0 0 0 0 0r'   