o
    *ήc                     @   s  d dl mZmZmZmZmZ d dlmZ d dl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mZmZmZ d dl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 dl(m)Z) d dl*m+Z+ eddd\Z,Z-Z.Z/edZ0ede,e-Z1ede-e.Z2ede,e,Z3ede,e,Z4ede-e,Z5dd Z6dd Z7dd Z8dd Z9dd Z:d d! Z;d"d# Z<d$d% Z=d&d' Z>d(d) Z?d*d+ Z@d,d- ZAd.d/ ZBd0d1 ZCd2d3 ZDd4d5 ZEd6d7 ZFd8d9 ZGd:d; ZHe+d<d= ZId>d? ZJd@dA ZKdBdC ZLdDdE ZMdFdG ZNdHS )I    )IsymbolsBasicMulS)mul)adjoint	transpose)IdentityInverseMatrixMatrixSymbol
ZeroMatrixeyeImmutableMatrix)Adjoint	TransposedetMatPow)GenericIdentity)factor_in_front
remove_idsMatMulcombine_powers	any_zerosunpackonly_squares)	null_safe)Q)refine)Symbol)XFAILzn m l kTintegerxABCDEc                   C   s$   t ttddt tt ksJ d S )NTevaluate)r   r'   doit r-   r-   S/tmp/pip-target-vg8gfxp4/lib/python/sympy/matrices/expressions/tests/test_matmul.pytest_evaluate   s   $r/   c                  C   s   t tt tttt ksJ t dt t dtt tt ks$J t dt t dt tt ks6J tddddt ddg} tdddddt dg}t | |ksVJ t d|  d| ksbJ t td| td| ksrJ d S )N            )	r   r%   r&   r   r   r'   r   r   r,   )MMAr-   r-   r.   test_adjoint   s    ($$r7   c                  C   s   t tt tttt ksJ t dt t dtt tt ks$J t dt t dt tt ks6J tddddt ddg} tdddddt dg}t | |ksVJ t d|  d| ksbJ t t|  t| ksnJ t td| td|	 ks~J d S )Nr0   r2   r3   r4   )
r	   r%   r&   r   r   r'   r   r$   r   r,   )r5   MTr-   r-   r.   test_transpose(   s    ($$r9   c                   C   s,   t ttdtddtdttddksJ d S )Nr0   Fr*   )r   r   r%   r&   r-   r-   r-   r.   test_factor_in_front5   s   r:   c                   C   sZ   t tttttddtttddksJ tt tttddtttddks+J d S NFr*   )r   r   r%   r
   mr&   r   nr-   r-   r-   r.   test_remove_ids:   s   r>   c                	   C   s   t tttttddttttddksJ t ttjttt	 tt	tddttjtt
tddks5J t tt	ttt	t tddttttddksOJ d S r;   )r   r   r(   r   r
   r=   r&   Tr)   r%   r<   r-   r-   r-   r.   test_combine_powersA   s    r@   c                   C   s*   t tttttddtttksJ d S r;   )r   r   r%   r   r<   kr=   r-   r-   r-   r.   test_any_zerosJ   s   rB   c                  C   s6   t ttddtksJ ttt} t | | ksJ d S r;   )r   r   r%   r&   )r$   r-   r-   r.   test_unpackO   s   
rC   c                   C   sP   t ttgks	J t ttttgksJ t tttjttttj tgks&J d S N)r   r'   r(   r%   r?   r-   r-   r-   r.   test_only_squaresU   s   (rE   c                   C   s   t dt dt t t ksJ t dt t dt t t t t ks&J t dt t tj t dt t t t ttj  t t ksHJ d S )Nr0   r3   )r   r'   r=   r(   r%   r?   r-   r-   r-   r.   test_determinant[   s    ,HrF   c                   C   s   t tdtjtdtfksJ t tdt jdttfksJ t tttt jtttt fks2J t tttt jddjttjtjfksIJ d S )Nr0   Tdeep)r   r'   r(   argsr,   r   r?   r-   r-   r-   r.   	test_doita   s    (2rJ   c                  C   sz   t ddgddgg} t ddgddgg}t| t|d | |d  ks&J ttttt  jttjtjfks;J d S )Nr2   r0   r3   r4      )	r   r   r   r,   r'   r   r(   rI   r?   )XYr-   r-   r.   test_doit_drills_downh   s   $.rN   c                   C   s8   t tttt djddjdtttt fksJ d S )Nr0   FrG   )r   r'   r   r(   r,   rI   r-   r-   r-   r.   $test_doit_deep_false_still_canonicalo   s   rO   c                  C   s2   t ddgddgg} td|  d|  ksJ d S )Nr2   r0   r3   r4   )r   r   r,   )rL   r-   r-   r.   test_matmul_scalar_Matrix_doitt   s   rP   c                   C   s&   t ttdtdjd tsJ d S )Nr2   r   )
isinstancer   r   rI   r   r-   r-   r-   r.   test_matmul_sympifyz   s   &rR   c                  C   sR   t ddgddgg} t ddgddgg}t| | tddgddggks'J d S )Nr2   r0   r3   r4      )r   r   r,   r   )r%   r&   r-   r-   r.   test_collapse_MatrixBase~   s   *rT   c                  C   s   t ttj t tt tksJ tt } t | tj tt ttt	 ks,J t | | j tt td tt	 ksCJ d S )Nr0   )
r   r'   r?   r(   r   
orthogonalr,   rA   r
   r=   )kCr-   r-   r.   test_refine   s   &*2rW   c                   C   s>   t ddksJ t tttt ksJ tt ttt rJ d S )Nr2   )r   r=   r<   rQ   r-   r-   r-   r.   test_matmul_no_matrices   s   rX   c                   C   sL   t tttj tgttjggksJ t ttj g ttjggks$J d S rD   )r   r=   r%   r?   args_cncr-   r-   r-   r.   test_matmul_args_cnc   s   &&rZ   c                  C   sp   t ddd\} }tt| |ttj tg| |ttjggksJ tt| t|tj tg| t|tjggks6J d S )Nza bF)commutative)r   r   r=   r%   r?   rY   )abr-   r-   r.   test_matmul_args_cnc_symbols   s   .2r^   c                  C   sL   t tdggtddd } tddd d td |  d ks$J d S )Nr$   r%   r2   r   )r   r    r   as_explicit)r5   r-   r-   r.   test_issue_12950   s   0r`   c                   C   s4   t tttttksJ t tttttksJ d S rD   )r   r'   r(   r   r-   r-   r-   r.   test_construction_with_Mul   s   ra   c                   C   sL   t tttttksJ t tttttksJ t tttttks$J d S rD   )r   r'   r(   r   r-   r-   r-   r.   test_construction_with_mul   s   rb   c                   C   s$   t jt ksJ t jtjksJ d S rD   )r   identityr   r   Oner-   r-   r-   r.   test_generic_identity   s   re   c                  C   sf   t ddd} td| | }td| | }t| }|d||  |  | }||d| d|  ks1J d S )NNTr"   M1M2r0   )r    r   r
   coeff)rf   rg   rh   r   zr-   r-   r.   test_issue_23519   s   "rk   N)O
sympy.corer   r   r   r   r   sympy.core.mulr   sympy.functionsr   r	   sympy.matricesr
   r   r   r   r   r   r   sympy.matrices.expressionsr   r   r   r   "sympy.matrices.expressions.specialr   !sympy.matrices.expressions.matmulr   r   r   r   r   r   r   sympy.strategiesr   sympy.assumptions.askr   sympy.assumptions.refiner   sympy.core.symbolr    sympy.testing.pytestr!   r=   r<   lrA   r$   r%   r&   r'   r(   r)   r/   r7   r9   r:   r>   r@   rB   rC   rE   rF   rJ   rN   rO   rP   rR   rT   rW   rX   rZ   r^   r`   ra   rb   re   rk   r-   r-   r-   r.   <module>   sZ    $$	
