
    g9                        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^S )_    )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                     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k    r|j        | k    sJ n|j        |                                 k    sJ |j        dk    sJ |j        t          k    sJ d S )N            r   r   flint)r   r   r   r   repto_dfmshapedomain)ddmAs     h/var/www/html/ai-engine/env/lib/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wu|||||u

$$$$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                     }t          dk    r|j        k    sJ n|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 ]t\  }}|dk    rt          dk    r|                                }t          dt           |          }|j        |k    sJ t          | dt           |          }|j        |k    sJ ut          t          fd           t          t          d            d S )Nr   r   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/   r0   )sdms   r)   r1   z(test_DomainMatrix_init.<locals>.<lambda>0   r2   r+   c                  L    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E r+   sparsedensefmtc                  4    t           dt          d          S )Nr!   invalidr:   r0   )lols   r)   r1   z(test_DomainMatrix_init.<locals>.<lambda>;   s    |CKKK r+   c                  h    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%    L2a55"Q%%.1A62$N$N r+   )r   r   r   r   r   r#   r$   r%   r&   r   	TypeError
ValueErrorr   )dodr(   r;   r#   r'   r>   r4   s       @@@r)   test_DomainMatrix_initrC      s:   qEE2a55>BqEE2a55>
*CQ%%2a55!!A"Q%%&8&8
9
9C
c62

C
c62

CS&"%%Awu|||||u

$$$$7f8r>>>>S&"%%A5C<<<<7f8r>>>>
9;;;;<<<
9;;;;<<<
9EEFFF_wn5  S'>>lg55**,,C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-   r6   c                  ,    t          j                   S N)r   from_repr(   s   r)   r1   z,test_DomainMatrix_from_rep.<locals>.<lambda>O   s    l3A66 r+   )
r   r   r   rG   r#   r%   r&   r   r   r@   )r'   r4   r(   s     @r)   test_DomainMatrix_from_reprI   @   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                  B   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k    r|j        | k    sJ n|j        |                                 k    sJ |j        dk    sJ |j        t          k    sJ t          d          }t           |d           |d          g |d           |d          ggd|          } t          j        ddgddgg|          }|j        | k    sJ |j        dk    sJ |j        |k    sJ t          t          dd          t          dd          gt          dd          t          dd          ggdt                    } t          j        d	d
gddggt                    }t          dk    r|j        | k    sJ n|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   r    )rL   r   )r   r   r   	from_listr   r#   r$   r%   r&   r
   r   )r'   r(   doms      r)   test_DomainMatrix_from_listrR   R   s	   
1r!uu~1r!uu~.
;
;CAA/44Awu|||||u

$$$$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wu|||||u

$$$$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          }t          dk    r|j        | k    sJ n|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!   r"   T	extension)r   r   r   from_list_sympyr   r#   r$   r%   r&   r   algebraic_fieldr   convert)r'   r(   Ks      r)   !test_DomainMatrix_from_list_sympyrZ   n   s   
1r!uu~1r!uu~.
;
;C$QQFQF+;<<Awu|||||u

$$$$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)   r1   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   r]   r^   s   r)   r1   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>   r`   r+   )
r   r   r   r   from_dict_sympyr#   r%   r&   r   r   )r4   
sympy_dictr(   r_   s      @r)   !test_DomainMatrix_from_dict_sympyrd      s    
1b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                    }t          dk    r|j        |k    sJ n|j        |                                k    sJ |j        dk    sJ |j        t          k    sJ d S )Nr   r   r-   r   r    r!   TrT   r   r9   r:   r"   )r   r   r   from_Matrixr   r#   r%   r&   r   rW   r   rX   r   r   r$   )r4   r(   rY   r'   s       r)   test_DomainMatrix_from_Matrixrg      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wu|||||u

$$$$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 Nr   r   r   r    r!   r0   r(   BCs      r)   test_DomainMatrix_eqrm      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!   r6   TF)r   r   r   unify_eq)r(   B1B2B3s       r)   test_DomainMatrix_unify_eqrs      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   )rY   itemss     r)   test_DomainMatrix_get_domainrw      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 S ri   )r   r   
convert_tor   r(   Aqs     r)   test_DomainMatrix_convert_tor|      s    r!uubeenr!uubeen5vrBBA	
b		B1r!uu~1r!uu~>KKKKKKKKr+   c                     ddgddgg} t          | t                                                    t          | t                    k    sJ t          | t                                        d          t          | t                    k    sJ t          | t                                        d          t          | t                    k    sJ t	          d          }d|g|dz  |dz  gg}t          |t          |                                       d          t          |t          j        |                    k    sJ d S )Nr   r   r   r   T)fieldx)r   r   choose_domainr   r	   
frac_field)r(   r   rk   s      r)   test_DomainMatrix_choose_domainr      s   
Q!QAa99""$$1b		1111a99""".."Q));;;;a99""".."Q));;;;A
Q!Q$1AaA<<%%D%11R2=;K;K5L5LLLLLLLr+   c                     t          ddgddggt                    } | j                                        }| j                                        }| ||fD ]}|                                \  }}|                    |||j                  |k    sJ d |D             }|                    ||t                    |	                    t                    k    sJ d |D             }|                    |||j                  d|z  k    sJ d S )Nr   r   r   r   c                 ,    g | ]}t          |          S r7   r   .0es     r)   
<listcomp>z0test_DomainMatrix_to_flat_nz.<locals>.<listcomp>   s    '''A"Q%%'''r+   c                     g | ]}d |z  S )r   r7   r   s     r)   r   z0test_DomainMatrix_to_flat_nz.<locals>.<listcomp>   s    %%%!!A#%%%r+   )
r   r   r#   to_ddmto_sdm
to_flat_nzfrom_flat_nzr&   r   ry   )AdmAddmAsdmr(   elemsdataelemsqelems2s           r)   test_DomainMatrix_to_flat_nzr      s   
q!fq!fr
"
"C7>>D7>>D4 = =llnnt~~eT18449999'''''~~fdB//1<<3C3CCCCC%%u%%%~~fdAH551<<<<<= =r+   c                  
   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 |                     t                    k    sJ d S ri   )r   r   to_sympyry   r   rH   s    r)   test_DomainMatrix_to_sympyr      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 ri   )r   r   to_fieldr   rz   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                    } |                                 }t          ddgddggdt                    }t          dk    r|j        |k    sJ d S |j        |                                k    sJ d S )Nr   r   r-   r   r    r!   r"   )r   r   to_denser   r   r#   r$   )r(   A_denser'   s      r)   test_DomainMatrix_to_denser      s    Q1aA,,77DDAjjllG
1v1v
+
+Cw{c!!!!!!{cjjll******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-   r9   r:   r8   c                  2                          d          S )Nr=   r:   )unifyAdAss   r)   r1   z)test_DomainMatrix_unify.<locals>.<lambda>   s    rxx	x:: r+   )
r   r   r   r   r#   r   to_dfm_or_ddmr   r   rA   )Azr{   BsBdr   r   s       @@r)   test_DomainMatrix_unifyr   
  s   	1r!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DDFFFFFF6S1a&!Q&"55CCEEEEEEXXbhX''FB6SaVA//<<<<<<6Sq\\!ll;;VRHHHHHH
::::::;;;;;r+   c                  X   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 |                                                                 |k    sJ |                     t                                                    |k    sJ |                     t          j        t          d                                                              |k    sJ d S ri   )	r   r   r   	to_Matrixr   ry   r   rW   r   )r(   A_Matrixs     r)   test_DomainMatrix_to_Matrixr   #  s    r!uubeenr!uubeen5vrBBA1v1v&''H;;==H$$$$;;==""$$0000<<%%''83333<<*4773344>>@@HLLLLLLr+   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 ri   )r   r   to_listrH   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 ri   )r   r   to_list_flatrH   s    r)   test_DomainMatrix_to_list_flatr   1  sz    r!uubeenr!uubeen5vrBBA>>1r!uubeeRUU;;;;;;;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 ri   )r   r   flatrH   s    r)   test_DomainMatrix_flatr   6  sx    r!uubeenr!uubeen5vrBBA66881r!uubeeRUU333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                                        k    sJ t          j        | dt                     |j                                        k    sJ ||                    |                                |j	        |j
                  k    sJ t          t          t          j        | dt                      t          t          t          j        | dt                      t          t          t          j        | dt                      d S )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   ;  sT   qEE2a55"Q%%A'Dr!uubeenr!uubeen5vrBBA&tVR88A====dFB//15<<>>AAAAdFB//15<<>>AAAA  !1!117AHEEEEEE
?L7vrJJJ
?C.fbAAA
?C.fbAAAAAr+   c                  j   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 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                    } |                                 dt          d          idt          d          idk    sJ d S )Nr   r   r   r    r!   r-   r   )r   r   to_dodrH   s    r)   test_DomainMatrix_to_dodr   J  s    r!uubeenr!uubeen5vrBBA88::A"Q%%001A5G5GHHHHHHr!uubeenr!uubeen5vrBBA88::aAZQ1J77777777r+   c                     t          d          t          d          dt          d          t          d          dd} t          ddgddggt                     }t          j        | dt                     |                                k    sJ |                    |           |k    sJ |                    | t                    |                    t                    k    sJ d S )Nr   r   r-   r   r    r!   )r   r   r   from_dodr   from_dod_liker   ry   rv   r(   s     r)   test_DomainMatrix_from_dodr   Q  s    qEERUU##2a55BqEE(:(:;;E
QFQFR  A 33q{{}}DDDD??5!!Q&&&&??5"%%b)9)9999999r+   c                     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 t          t          d          t          d          gt          d          t          d          ggdt                    } t          d          t          d          d}|                                 |k    sJ |                                                                 |k    sJ |                                                                 |k    sJ | j                                                                        |k    sJ | j                                                                        |k    sJ d S )	Nr   r   r   r    r!   )r   r   r-   r   r   r6   r   r   r6   )r   r   to_dokr   r   r#   r   r   )r(   doks     r)   test_DomainMatrix_to_dokr   Y  s{   r!uubeenr!uubeen5vrBBA88::Ar!uuRUU2a55QQQQQQr!uubeenr!uubeen5vrBBAQ%%1
&
&C88::::<<  C'''';;==!!S((((5<<>>  ""c))))5<<>>  ""c))))))r+   c                     t          d          t          d          d} t          ddgddggt                     }t          j        | dt                     |                                k    sJ t          j        | dt                     |j                                        k    sJ t          j        | dt                     |j        	                                k    sJ d S )Nr   r   r   r   r!   )
r   r   r   from_dokr   r   r#   r   r   r   r   s     r)   test_DomainMatrix_from_dokr   e  s    UUBqEE**E
QFQFR  A 33q{{}}DDDD<vr**aellnn<<<<<vr**aellnn<<<<<<r+   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   reprrH   s    r)   test_DomainMatrix_reprr   m  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 ri   )r   r   	transpose)r(   ATs     r)   test_DomainMatrix_transposer   r  s    r!uubeenr!uubeen5vrBBA	1r!uu~1r!uu~6	C	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 d S )Nr   r6   r   FT)r   r   is_zero_matrixr(   rk   s     r)    test_DomainMatrix_is_zero_matrixr   x  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          ddgddggt                    } t          ddgddggt                    }| j        |                                 j        cxu rdu sn J |j        |                                j        cxu rdu sn J d S )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=AKKMM5===========AKKMM5>>>>>>>>>>>>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!   rL      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          ddgddggt                    } |                                 |                                                                 cxk    r"t          d          t          d          gk    sn J t          ddgddgddggt                    } |                                 |                                                                 cxk    r"t          d          t          d          gk    sn J t          g dg dgt                    } |                                 |                                                                 cxk    r"t          d          t          d          gk    sn J d S )	Nr   r   r   r    rL   r   )r   r   r   )r    rL   r   )r   r   diagonalr   rH   s    r)   test_DomainMatrix_diagonalr     sU   
QFQFR  A::<<1;;==1133EEEE1r!uu~EEEEEE
QFQFQF#R((A::<<1;;==1133EEEE1r!uu~EEEEEE
IIIyyy!2&&A::<<1;;==1133EEEE1r!uu~EEE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                    } |                                 dk    sJ d S )Nr   r   r   r    r      r   )r   r   rankrH   s    r)   test_DomainMatrix_rankr     sc    r!uubeenr!uubeenr!uubeenEvrRRA6688q======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 |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 rF   r7   r(   Ls   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      a!e r+   c                       z   S rF   r7   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   rM   c                       z   S rF   r7   A1A2s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      b r+   c                       z   S rF   r7   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r   r+   c                  .                                    S rF   addr   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>       r+   c                  .                                    S rF   r  r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   c                  .                                    S rF   r  r{   r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>      "&&** r+   c                  .                                    S rF   r  r  s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   r   r-   rL   c                  .                                    S rF   r  r   s   r)   r1   z'test_DomainMatrix_add.<locals>.<lambda>  r  r+   )r   r   r  r   r@   r   r   r   r#   r   r   r   )rk   AsumAsdAdsr(   r   r   r   r{   r   r   r   s       @@@@@@@@r)   test_DomainMatrix_addr    s?   r!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EEGGGGGG,AA/<<<<<<7cAq6Aq6*FB77EEGG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
                                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 rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   rM   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                       z
  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r   r+   c                  .                                    S rF   subr   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  .                                    S rF   r  r   s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  .                                    S rF   r  r  s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   c                  .                                    S rF   r  r  s   r)   r1   z'test_DomainMatrix_sub.<locals>.<lambda>  r  r+   r-   )r   r   r  r   r@   r   r   r   r#   r   r   )rk   Adiffr   r   r  r  r(   r   r   r{   r   r   s         @@@@@@r)   test_DomainMatrix_subr    s   r!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.;;IIKKKKKK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!   rK   
         c                       z  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r   r+   c                       z  S rF   r7   r   s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>   r   r+   c                  .                                    S rF   matmulr  s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>      "))B-- r+   c                  .                                    S rF   r+  r  s   r)   r1   z'test_DomainMatrix_mul.<locals>.<lambda>  r-  r+   r   r   r   r-   )r   r   r,  r   r@   r   r   mulzerosr   r#   r   r   )r   AprodAAr   r   r   r  r  r(   r{   r   r   s           @@@@r)   test_DomainMatrix_mulr3    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EEGGGGGG,AA/<<<<<<7cAq6Aq6*FB77EEGGGGGGGGr+   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_elementwiserj   s      r)   !test_DomainMatrix_mul_elementwiser6    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!   rK   r%  r&  r'  %   6   Q   v   r   c                  *     t          dd          z  S Nr   r   r]   rH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>1  s    a8Aq>>1 r+   c                       dz  S Nr  r7   rH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>2  s    R r+   c                  .                          d          S r?  )powrH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>3  s    b		 r+   r   r   c                       dz  S Nr   r7   rH   s   r)   r1   z'test_DomainMatrix_pow.<locals>.<lambda>6  s    16 r+   )	r   eyer   rA  r   r@   NotImplementedErrorr0  r   )rE  r   A3r(   s      @r)   test_DomainMatrix_powrH  '  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          ddgddggt                    } t          t          d          t                    }t          ddgdd	ggt                    }|                    t                    }|                                 ||fk    sJ |                     d
          ||fk    sJ | |z  |k    sJ | ||z  k    sJ d S )NrM   r   r   rO   r   rL   <         r&     TrX   )r   r   r   r   ry   clear_denomsr(   den_ZAnum_ZAnum_Qs       r)   test_DomainMatrix_clear_denomsrV  9  s    
U5M5-("--AB$$E"bB8$b))Fr""F>>v....>>$>''E6?::::u9r+   c                     t          ddgddggt                    } t          ddgddggt                                                    }t          dd	gd
dggt                    }t          dd	gd
dggt                    }|                                 ||fk    sJ |                     d          ||fk    sJ || z  |k    sJ | |                                                                |z  k    sJ t          g dg dg dgt                    } t          g dg dg dgt                                                    }t          g dg dg dgt                    }|                    t                    }|                                 ||fk    sJ |                     d          ||fk    sJ || z  |k    sJ | |                                                                |z  k    sJ d S )NrM   rJ  rO   rK  r   r   rN  r   r   rL   r    TrP  )rM   rJ  r   r   r   r   r   r   )rO   rK  )r   r   )r   rK   )r   r   r   )r   r   r   )r   r   i  )r   r   r   r   )i   T   F   rL  )r   r   r   r   clear_denoms_rowwiser   invry   rR  s       r)   &test_DomainMatrix_clear_denoms_rowwiser^  F  s"   
U5M5-("--AAB "%%//11E!Q!Q "%%F!Q!Q "%%F!!##v6666!!$!//E6?BBBB19  $$&&/////
iii)B)B)BCRHHA			999kkk2B77AACCE|||->->->?DDFr""F!!##v6666!!$!//E6?BBBB19  $$&&///////r+   c                  *    t          ddgddggt                                          t          d                    t          ddgddggt                    t          d          fk    sJ                      t          d                    t          ddgddggt                    t          d          fk    s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                                          t          d                     t          d          fk    sJ                      t          d                      t          d          fk    sJ t          ddgddggt                                          t          dd                    t          dd	           z  t          d          fk    sJ t	          t
           fd
           d S )Nr   r    r   r   r   r   r  r   r  c                  H                          t          d                    S Nr   )cancel_denomr   rH   s   r)   r1   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>k  s    annRUU&;&; r+   )r   r   rb  r   r   ZeroDivisionErrorrH   s   @r)   test_DomainMatrix_cancel_denomrd  ]  s   
QFQFR  A>>"Q%%  R!Q!Q(8"%=%=r!uu$EEEEE>>"Q%%  R!Q!Q(8"%=%=r!uu$EEEEE>>"Q%%  R!Q!Q(8"%=%=r!uu$EEEEE
QFQFR  A>>"Q%%  Q1J....>>"R&&!!qb"Q%%[0000 	QFQFT""A>>$q))$$aAtAww(?????
;;;;<<<<<r+   c                  
   t          ddgddggt                                        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          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           d S )Nr   r    r   r   r   r   c                  H                          t          d                    S ra  )cancel_denom_elementwiser   rH   s   r)   r1   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>w  s    a&@&@A&G&G r+   )r   r   rg  r   rc  )numersdenomsr(   s     @r)   *test_DomainMatrix_cancel_denom_elementwiserj  n  s   
QFQFR  A//166NFFR!Q!Q("------R!Q!Q("------//166NFFR!Q!Q("------R!Q!Q("------
GGGGHHHHHr+   c                      t          ddgddggt                    } t          ddgddggt                    }t          d          }|                                 |k    sJ |                                 ||fk    sJ d S )Nr   r    r   r   r   r   )r   r   content	primitive)r(   A_primitive	A_contents      r)   #test_DomainMatrix_content_primitiverp  z  s    
QFQFR  Aq!fq!f%r**K1I99;;)####;;==Y4444444r+   c            	      z   t          t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          ggdt                    } |                                 }| j        }|j        }| |||fD ]!|                                 dgddggk    sJ "t          t          d          t          d          t          d          ggt                    t          t          fd           d S )Nr   r   r   r   r    r   r   c                  ,                                      S rF   )sccrH   s   r)   r1   z'test_DomainMatrix_scc.<locals>.<lambda>  s    15577 r+   )r   r   r   r#   rt  r   r   r   )r   r   r   r   r(   s       @r)   test_DomainMatrix_sccru    s   	1r!uubee,1r!uubee,1r!uubee,./5r
; 
;B 
B6D6D"dD! ) )vvxxQC!Q=(((((
RUUBqEE2a55!"B''A
!????33333r+   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          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 ]y}                    |          \  }}|t          t          d          t          d          gt          d          t          d          ggd
t                    k    sJ |dk    sJ zt	          t
          fd           t	          t
          fd           d S )Nr-   r7   r   r6   )r   r   r   r   r    r!   )r   )autoGJr
   CDGJ_denseFF_denseCD_densemethodc                  0                          d          S Nfoor}  )rrefr   s   r)   r1   z(test_DomainMatrix_rref.<locals>.<lambda>  s    rwwew44 r+   c                  0                          d          S r  )rref_denr  s   r)   r1   z(test_DomainMatrix_rref.<locals>.<lambda>  s    r{{%{88 r+   )r   r   r  r   r   rA   )r(   Arpivotsmethodsr~  r   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JB1r!uu~1r!uu~>KKKKKKVLG	1r!uu~1r!uu~6	C	CB    WWFW++
F\BqEE2a55>BqEE2a55>"BFBOOOOOO
:4444555
:888899999r+   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!   c                  ,                                      S rF   )columnspacer  s   r)   r1   z/test_DomainMatrix_columnspace.<locals>.<lambda>  s     0 0 r+   r8   r:   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 rF   )rowspacer  s   r)   r1   z,test_DomainMatrix_rowspace.<locals>.<lambda>  s     r+   r8   r:   )r   r   r  r   r   r   )r(   r   s    @r)   test_DomainMatrix_rowspacer    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                  p   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          d          t          d          ggdt                    }                                 | 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                    }                                 \  }}}|t          d          k    sJ |                                | k    sJ |                    |          | k    sJ |                                                                |                                 k    sJ |                                                    |          |                                 k    sJ d S )Nr   r!   r  rM   c                  0                          d          S )NT)divide_last)	nullspacerH   s   r)   r1   z-test_DomainMatrix_nullspace.<locals>.<lambda>  s     = = r+   r   r  )	r   r   r  r   r   r   r  nullspace_from_rrefr   )AnullArrefdenr  r(   s       @r)   test_DomainMatrix_nullspacer    s*   r!uubeenr!uubeen5vrBBA2b662a55/*FB77E;;==E!!!!r!uubeenr!uubeen5vrBBA2b662a55/*FB77E;;==E!!!!
;====>>>r!uubeenr!uubeen5vrBBA2b662a55/*FB77EE3"Q%%<<<<$$&&%////$$V,,5555??0022eoo6G6GGGGG??0088EOO<M<MMMMMMMr+   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!   rB  r   rM   r  rN   c                  .                                    S rF   _solve)r(   b3s   r)   r1   z)test_DomainMatrix_solve.<locals>.<lambda>  s    " r+   c                  .                                    S rF   r  )r(   bzs   r)   r1   z)test_DomainMatrix_solve.<locals>.<lambda>  s     r+   )r   r   r  r   r   r   r   )b
particularr  r(   r  r  s      @@@r)   test_DomainMatrix_solver    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 rF   r]  r  s   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>   s     r+   rM   c                  ,                                      S rF   r  Anss   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>      37799 r+   r   c                  ,                                      S rF   r  )Aninvs   r)   r1   z'test_DomainMatrix_inv.<locals>.<lambda>  s    uyy{{ r+   )r   r   r]  r   r   r   r   r   )r(   Ainvr  r  r   s     @@@r)   test_DomainMatrix_invr    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   r6   r   r   r    r!   r  rL   rr  r  r   rM   c                  ,                                      S rF   )detr  s   r)   r1   z'test_DomainMatrix_det.<locals>.<lambda>  r  r+   )r   r   r  r   r   r   )r(   r  s    @r)   test_DomainMatrix_detr  	  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          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                    }|                     |          |cxk    r-|d
         | dz  z  |d         | z  z   |d         | d
z  z  z   k    sn J |                     g           |                     | j        | j                  k    sJ |                     t          d          g          d|                     d| j                  z  k    sJ t          t          d          t          d          ggdt                    t          t          fd           d S )Nr   r   r   r    r!   rO        !   r   rM   c                  J                          t          d          g          S rD  )	eval_polyr   )dM2s   r)   r1   z-test_DomainMatrix_eval_poly.<locals>.<lambda>)  s    3=="Q%%+A+A r+   )	r   r   r  r0  r%   r&   rE  r   r   )dMpresultr  s      @r)   test_DomainMatrix_eval_polyr     s   	1r!uu~1r!uu~6	C	CB	A1r!uuABrFFBrFF+bffbff-=>KKF<<??fIIII!RU
QqT"W(<qtBEz(IIIIIII<<rxx")<<<<<<<<A  AbffQ	&:&:$:::::
A1'
4
4C
!#A#A#A#ABBBB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                    }|                     |          |cxk    r0|d	         | dz  z  z  |d         | z  z  z   |d         z  z   k    sn 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           d S )Nr   r   r   r    r!   rB  (   W   r   c                  L                         t          d          g           S rD  eval_poly_mulr   )r  dM1s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>5  s    3+<+<beeWa+H+H r+   rM   c                  L                         t          d          g           S rD  r  )b1r  s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>7  s    !1!12a55'2!>!> r+   c                  L                         t          d          g           S rD  r  )bqr  s   r)   r1   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>9  s    ""2"2BqEE7B"?"? r+   )r   r   r  r   r   r   r   r   )r(   r  r  r  r  r  r  r  s      @@@@@r)   test_DomainMatrix_eval_poly_mulr  ,  s   r!uubeenr!uubeen5vrBBAr!uug1w'44A	A1r!uuABrFF8bffX.;;F??1a  FMMMMad1a4ikAaDF1H.DqtAv.MMMMMMM	1r!uu~1r!uu~6	C	CB
A"Q%%)62
6
6C
!#H#H#H#H#HIII	1r!uu~&	3	3B
<>>>>>???	1wA(&"	5	5B
=?????@@@@@r+   c                 h   | |f}|                                  |                                                                  f}||fD ]\  }}|z  ||z  k    sJ ||f| | fg}                              |v sJ                     d          |v sJ                               |v sJ j        \  }	}
|	|
k    r=                    |d          ||fk    sJ                     |          ||fk    sJ t          t          fd           t          t          fd           d S )Nr  r}  charpolyc                  .                                    S rF   solve_den_charpolyAir  s   r)   r1   z"_check_solve_den.<locals>.<lambda>T  s    23H3H3K3K r+   c                  2                          d          S )Nr  r}  	solve_denr  s   r)   r1   z"_check_solve_den.<locals>.<lambda>U  s    2<<*<3U3U r+   )r   r  solve_den_rrefr%   r  r   r   )r(   r  xnumxdencase1case2xnum_ib_ianswersmnr  s    `         @r)   _check_solve_denr  <  s    aLE[[]]DNN,,akkmm<E!5> W WFC&yDH$$$$ D>VGdU#34||A'))))||Af|--8888  ##w.... x166<<J<77FD>IIII((--&$?????)+K+K+K+K+KLLL)+U+U+U+U+UVVVV%W 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          | |||           d S )Nr   r   r   r    r!   rB  r   r  r  rL   rr  rN   r6   )r   r   r  )r(   r  r  r  s       r)   test_DomainMatrix_solve_denr  X  s   r!uubeenr!uubeen5vrBBAr!uug1w'44ABqEE7RVVH-vr::F
R&&CQ63'''	A1r!uu	A1r!uu	A1r!uu !'	, 	,A 	r!uug1wA0&"==ABqEE7RUUGbffX6CCF
R&&CQ63'''r!uug1w'44Ar!uug1w'44ABqEE7)VR00F
Q%%CQ63'''''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          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
           d S )Nr   r   r   r    r!   rB  rM   c                  .                                    S rF   r  )r   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>s  s    2+@+@+C+C r+   c                  .                                    S rF   r  r(   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>u  s    !5!5b!9!9 r+   c                  .                                    S rF   r  )r(   r  s   r)   r1   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>w  s    !"6"6r":": r+   )r   r   r   r   r   r   r   )r(   r   r  r  r  s   @@@@@r)   $test_DomainMatrix_solve_den_charpolyr  o  s/   r!uubeenr!uubeen5vrBBAr!uug1w'44A	1r!uu~&	3	3B
!#C#C#C#C#CDDD	1r!uu~&	3	3B
<99999:::	1wA(&"	5	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                    }                                 z  | k    sJ                     d	
          | t          d          fk    sJ d S )Nr   r   r    r!   r   rB  c                  .                                    S rF   r  r(   r  s   r)   r1   z<test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>~  s    q/C/CA/F/F r+   r  F)checkr   )r   r   r   r   adjugater  )adjAbr(   r  s    @@r)   *test_DomainMatrix_solve_den_charpoly_checkr  z  s    r!uubeenr!uubeen5vrBBAr!uug1w'44A
%'F'F'F'F'FGGG2b66(RUUG,fb99E::<<!u$$$$//E2a55>AAAAAAr+   c                  n    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           d S )Nr   r   rM   rB  c                  .                                    S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      Q r+   c                  .                                    S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>      !1!1!!4!4 r+   c                  .                                    S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  r  r+   c                  .                                    S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  r  r+   r   r    r!   c                  .                                    S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    R r+   r6   c                  2                          d          S )Nr=   r}  r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    AKK9K$E$E r+   c                  .                                    S rF   r  r  s   r)   r1   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>  s    1+?+?+B+B r+   )r   r   r   r   r   r   )r(   r  r  s   @@@r)   "test_DomainMatrix_solve_den_errorsr    sE   r!uubeen%vr22Ar!uug1w'44A
</////000
<44444555r!uubeen%vr22Ar!uubeen%vr22A
</////000
<44444555r!uubeenr!uubeen5vrBBA	1r!uu~&	3	3B
<00000111r!uugY++Ar!uugY++A
?EEEEEFFFr!uug1w'44Ar!uug1w'44A
!#B#B#B#B#BCCCCCr+   c                  v    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           d S )Nr   r   r!   rB  c                  .                                    S rF   r  r  s   r)   r1   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>  s    q{{1~~ r+   c                  .                                    S rF   r  r  s   r)   r1   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>  s    q/?/?/B/B r+   )r   r   r   r   r  s   @@r)   0test_DomainMatrix_solve_den_rref_underdeterminedr    s    r!uubeenr!uubeen5vrBBAr!uug1w'44A
%'='='='='=>>>
%'B'B'B'B'BCCCC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                                                    \  } }| t          d          t          d
          t          d          gk    sJ                                 | d         dz  z  | d         dz  z  z   | d         dz  z  z   cxk    r                    |           k    sn 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           d S )Nr   r   r   r    rL   r   rK   r   	   r   c                  ,                                      S rF   )adj_poly_detrH   s   r)   r1   z0test_DomainMatrix_adj_poly_det.<locals>.<lambda>  s    1>>+;+; r+   )r   r   r  r  r  r  r   r   )r  detAr(   s     @r)   test_DomainMatrix_adj_poly_detr    s   
RUUBqEE2a55!UUBqEE2a55!UUBqEE2a55!#$&	( 	(A nnGAtA3C)))))::<<1Q419qtAqDy01Q419<NNNNANNNNNN5577d????
RUUBqEE2a55!UUBqEE2a55!#$&	( 	(A
!#;#;#;#;<<<<<r+   c                     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                    }|                                 ||fk    sJ d S Nr   r   r   r    r!   r  r   )r   r   inv_den)r(   r  r  s      r)   test_DomainMatrix_inv_denr    s    r!uubeenr!uubeen5vrBBA
R&&CBqEE2b66?RVVRUUO<fbIIF99;;63-''''''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   r  )r(   r  s     r)   test_DomainMatrix_adjugater    s    r!uubeenr!uubeen5vrBBABqEE2b66?RVVRUUO<fbIIF::<<6!!!!!!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          d          fk    sJ d S r	  )r   r   adj_det)r(   adjAs     r)   test_DomainMatrix_adj_detr    s    r!uubeenr!uubeen5vrBBA"Q%%B2b662a55/:FBGGD99;;4B.((((((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-   rL   r   r   r   ir   rr  )r   r   r   r   rX  )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 r7   r7   )r   r   rQ   s     r)   r   zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>  s!     5 5 5AQ 5 5 5r+   r7   )r   rowrQ   s     r)   r   z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>  s.    FFF# 5 5 5 5 5 5 5FFFr+   r7   )rowsrQ   s    `r)   r1   z&test_DomainMatrix_lu.<locals>.<lambda>  s    FFFFFFF r+   )r    r    c                  ,                                      S rF   )lurH   s   r)   r1   z&test_DomainMatrix_lu.<locals>.<lambda>  s     r+   )r   r   r  r   r   r   )r   Uswapsto_domr(   s       @r)   test_DomainMatrix_lur    s   R$$A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!   rB  r   c                  .                                    S rF   lu_solver  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>      qzz!}} r+   rL   r   r   rN   c                  .                                    S rF   r   r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>  r"  r+   rM   r6   c                  .                                    S rF   r   r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>   s    

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

1 r+   c                  .                                    S rF   r   r  s   r)   r1   z,test_DomainMatrix_lu_solve.<locals>.<lambda>*  s    A r+   )	r   r   r!  r   r   rF  r   r   r   )r   r(   r  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                  l	   t          g dt                    } t          d          g}|                                 |k    sJ |                                                                 |k    sJ t          dggdt                    } t          d          t          d          g}|                                 |k    s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}|                                 |k    s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}|                                 |k    s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}|                                 |k    s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          }|                                 |k    sJ |                                                                 |k    sJ t          t          d          t          d          ggdt                    t          t          fd           d S )Nr   r   r6   r  r   r   r    r!   r  rL   r   rK   r   r  rr  r  r  r   )
   r   rM  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   r8  C   r   r   r   r   )r   iir   i:r   r   r   r   r   r   rM   c                  ,                                      S rF   )r  r  s   r)   r1   z,test_DomainMatrix_charpoly.<locals>.<lambda>X  s    3<<>> r+   )	r   r   r  r   r   mapr   r   r   )r(   r  r  s     @r)   test_DomainMatrix_charpolyr3  -  s   R$$A	AA::<<1;;==!!##q((((qcUFB''A	A2A::<<1;;==!!##q((((r!uubeenr!uubeen5vrBBA	A22A::<<1;;==!!##q((((r!uubeeRUU+beeRUUBqEE-BRUUBqEESUVWSXSXDYZ\bdfggA	A3C"Q%%(A::<<1;;==!!##q((((r!uubeeRUU+!uubeeRUU+!uubeeRUU+-.4b	: 	:A 
A1r"vvr!uu%A::<<1;;==!!##q((((
000000000000000000000000000000	2 46		7 		7A 	<<<==A::<<1;;==!!##q((((
A1'
4
4C
!#9#9#9#9:::::r+   c                     t          g dt                    } |                                 g k    sJ t          dggt                    } |                                 t          d          t          d          gdfgk    sJ t          ddgddggt                    } |                                 t          d          t          d          t          d          gdfgk    sJ t          g d	g d
g dgt                    } |                                 t          d          t          d          gdft          d          t          d          t          d          gdfgk    sJ d S )Nr   r   r  r   r   r    r)  r  )r   r   r   )r   r    r   )r   r   r   )r   r   charpoly_factor_listr   rH   s    r)   &test_DomainMatrix_charpoly_factor_listr6  [  sw   R$$A!!##r))))
QC5"A!!##
Q%%B!(     	QFQFR  A!!##
Q%%BB	 !$(     	IIIyyy))),b1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 d S )Nr   rr  )r   rE  r   r#   r   r%   r&   rH   s    r)   test_DomainMatrix_eyer8  p  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 )NrM   )r   r0  r   r#   r   r%   r&   rH   s    r)   test_DomainMatrix_zerosr:  w  sY    62&&A5CIfb))))))7f8r>>>>>>r+   c                  H   t          j        dt                    } t          dk    r&| j        t          j        dt                    k    sJ n7| j        t          j        dt                                                    k    sJ | j        dk    sJ | j	        t          k    sJ d S )Nr   r"   )
r   onesr   r   r#   r   r   r$   r%   r&   rH   s    r)   test_DomainMatrix_onesr=  ~  s    &"%%Awu,,,,,,,u,,33555555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   diagrH   s    r)   test_DomainMatrix_diagr@    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!   rL   r   rK   r   r  r%     rO  r   r    )r   r   )r   r   hstackr(   rk   rl   ABABCs        r)   test_DomainMatrix_hstackrH    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!   rL   r   rK   r   r  r%  rB  rO  )r    r   )r   r   )r   r   vstackrE  s        r)   test_DomainMatrix_vstackrK    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   rM   r    c                     d| z  S )Nr   r7   )r   s    r)   r1   z-test_DomainMatrix_applyfunc.<locals>.<lambda>  s
    1 r+   )r   r   	applyfuncr   s     r)   test_DomainMatrix_applyfuncrO    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!   r  r   r   r   c                       dz  S Ng      ?r7   rH   s   r)   r1   z-test_DomainMatrix_scalarmul.<locals>.<lambda>      a#g r+   )r   r   r   r   r   r@   )lamdar(   s    @r)   test_DomainMatrix_scalarmulrU    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            	         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
                    	                                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 	                                t	          dd          z  t          t	          dd          t	          d          gt	          dd          t	          d          ggdt                    k    sJ d S )Nr   r   r   r    r-   r   r!   c                       dz  S ra  r7   rH   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  s    a!e r+   c                       dz  S rR  r7   rH   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  rS  r+   c                  N     t          t          d          t                    z  S ra  )r   r   rH   s   r)   r1   z+test_DomainMatrix_truediv.<locals>.<lambda>  s    a,r!uub*A*A&A r+   r  r   )
r   rf   r   r   r   r   r   rc  r@   r   )rT  r  r(   s     @r)   test_DomainMatrix_truedivrZ    sF    !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r!uubeenr!uubeen5vrBBA::<<!|bAhh1->Aq2a55@Q,RTZ\^______q5L2a88RUU"3bAhh15F!GQSTTTTTT::<<"Qq''!\Bq!HHbee3Dr!QxxQSTUQVQVFW2XZ`bd%e%eee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 d S )#Nr   r   r   r    rL   r   rK   r   r  rr  r  rB  r6   r  r   r!   rN   rJ  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+   rM   )r  r   )r   r  )r  r   c                       d         S )Nrr  r7   r]  s   r)   r1   z+test_DomainMatrix_getitem.<locals>.<lambda>      r$x r+   c                       d         S )NrO   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%  rL   rL   r   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!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   rC  rc  r   )r   r   getitem_sympyr   Zero
isinstancer   )r  val1val2s      r)   test_DomainMatrix_getitem_sympyrn    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    rL   r   rK   r   r  rr  r!   r   r  )r   r   r   r   r   r-   r   c                  0                                    S rF   )extractcolsr  r  s   r)   r1   z+test_DomainMatrix_extract.<locals>.<lambda>.  s    2::dD#9#9 r+   c                  T                                                                    S rF   )r   rq  rr  s   r)   r1   z+test_DomainMatrix_extract.<locals>.<lambda>/  s    2<<>>#9#9$#E#E r+   )r   r   rq  r   r0  r   r   rf  )	r  r  dM3emptysizebad_indicesrs  r  r  s	         @@@r)   test_DomainMatrix_extractry    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    rC  rc  r!   c                     || |f<   d S rF   r7   )ijvalr  s      r)   setitemz*test_DomainMatrix_setitem.<locals>.setitem6  s    1a4r+   c                  :      ddt          dd                    S )Nr   r   r   r  s   r)   r1   z+test_DomainMatrix_setitem.<locals>.<lambda>8  s    ggaBq!HH55 r+   c                  T      t          dd          dt          d                    S r=  )slicer   r  s   r)   r1   z+test_DomainMatrix_setitem.<locals>.<lambda>9  s#    aQ1(F(F r+   )r   r   r   r@   rF  )r  r  s   @@r)   test_DomainMatrix_setitemr  2  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    rC  rc  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)usympy.external.gmpyr   sympyr   r   r   r   r   r	   r
   r   r   r   r   !sympy.polys.matrices.domainmatrixr   r   r   sympy.polys.matrices.exceptionsr   r   r   r   r   r   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.sdmr   sympy.testing.pytestr   r*   rC   rI   rR   rZ   rd   rg   rm   rs   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r#  r3  r6  rH  rV  r^  rd  rj  rp  ru  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  r7   r+   r)   <module>r     sp   , , , , , , = = = = = = = = = = = = = = = = ) ) ) ) ) ) ) ) ) ) ) ) ) ) L L L L L L L L L L                  ) ( ( ( ( ( ( ( ( ( ( ( ' ' ' ' ' '  !P !P !PH8 8 8$  8  2
I 
I 
I  @  # # #  L L LM M M
= 
= 
=/ / /
L L L> > >+ + +< < <2M M M; ; ;
< < <
4 4 4
B B B8 8 8: : :	* 	* 	*= = =C C C
  $ $ $    ? ? ?     F F F  
". ". ".J! ! !H! ! !$H $H $HN% % %3 3 3$
 
 
0 0 0.= = ="	I 	I 	I5 5 54 4 4': ': ':T
# 
# 
#  N N N,. . .< < <$  .	C 	C 	CA A A W W W8( ( (.< < <B B BD D D0D D D= = =( ( (" " ") ) )5( 5( 5(p.0 .0 .0b+; +; +;\  *      > > >! ! !! ! !*+ + +	' 	' 	'f f f()6 )6 )6X3 3 3!G !G !GHH H H0 0 0 0 0r+   