o
    gO                     @   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 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-m.Z. eddd\Z/Z0Z1Z2edZ3ede/e0Z4ede0e1Z5ede/e/Z6ede/e/Z7ede0e/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* ZBd+d, ZCd-d. ZDd/d0 ZEd1d2 ZFd3d4 ZGd5d6 ZHd7d8 ZId9d: ZJd;d< ZKe-d=d> ZLd?d@ ZMdAdB ZNdCdD ZOdEdF ZPdGdH ZQdIdJ ZRdKS )L    )IsymbolsBasicMulS)mul)adjoint	transpose)
ShapeError)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)XFAILraisesz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/   c/var/www/visachat/venv/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_matmul.pytest_evaluate   s   $r1   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/   r0   test_adjoint   s    ($$r9   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 )Nr2   r4   r5   r6   )
r	   r'   r(   r   r   r)   r   r&   r   r.   )r7   MTr/   r/   r0   test_transpose)   s    ($$r;   c                   C   s,   t ttdtddtdttddksJ d S )Nr2   Fr,   )r   r   r'   r(   r/   r/   r/   r0   test_factor_in_front6   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/   r0   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/   r0   test_combine_powersB   s    rB   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/   r0   test_any_zerosK   s   rD   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/   r0   test_unpackP   s   
rE   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'   rA   r/   r/   r/   r0   test_only_squaresV   s   (rG   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 )Nr2   r5   )r   r)   r?   r*   r'   rA   r/   r/   r/   r0   test_determinant\   s    ,HrH   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 )Nr2   Tdeep)r   r)   r*   argsr.   r   rA   r/   r/   r/   r0   	test_doitb   s    (2rL   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 )Nr4   r2   r5   r6      )	r   r   r   r.   r)   r   r*   rK   rA   )XYr/   r/   r0   test_doit_drills_downi   s   $.rP   c                   C   s8   t tttt djddjdtttt fksJ d S )Nr2   FrI   )r   r)   r   r*   r.   rK   r/   r/   r/   r0   $test_doit_deep_false_still_canonicalp   s   rQ   c                  C   s2   t ddgddgg} td|  d|  ksJ d S )Nr4   r2   r5   r6   )r   r   r.   )rN   r/   r/   r0   test_matmul_scalar_Matrix_doitu   s   rR   c                   C   s&   t ttdtdjd tsJ d S )Nr4   r   )
isinstancer   r   rK   r   r/   r/   r/   r0   test_matmul_sympify{   s   &rT   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 )Nr4   r2   r5   r6      )r   r   r.   r   r'   r(   r/   r/   r0   test_collapse_MatrixBase   s   *rW   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 )Nr2   )
r    r)   rA   r*   r   
orthogonalr.   rC   r   r?   )kCr/   r/   r0   test_refine   s   &*2rZ   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 )Nr4   )r   r?   r>   rS   r/   r/   r/   r0   test_matmul_no_matrices   s   r[   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 rF   )r   r?   r'   rA   args_cncr/   r/   r/   r0   test_matmul_args_cnc   s   &&r]   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'   rA   r\   )abr/   r/   r0   test_matmul_args_cnc_symbols   s   .2ra   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'   r4   r   )r   r!   r   as_explicit)r7   r/   r/   r0   test_issue_12950   s   0rc   c                   C   s4   t tttttksJ t tttttksJ d S rF   )r   r)   r*   r   r/   r/   r/   r0   test_construction_with_Mul   s   rd   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 rF   )r   r)   r*   r   r/   r/   r/   r0   test_construction_with_mul   s   re   c                   C   s$   t jt ksJ t jtjksJ d S rF   )r   identityr   r   Oner/   r/   r/   r0   test_generic_identity   s   rh   c                  C   sf   t ddd} td| | }td| | }t| }|d||  |  | }||d| d|  ks1J d S )NNTr$   M1M2r2   )r!   r   r   coeff)ri   rj   rk   r   zr/   r/   r0   test_issue_23519   s   "rn   c                      s0   t ddd t dddtt fdd d S )Nr'   r2   r(   r5   c                      s
   t  S rF   )r   r/   rV   r/   r0   <lambda>   s   
 z"test_shape_error.<locals>.<lambda>)r   r#   r
   r/   r/   rV   r0   test_shape_error   s   rp   N)S
sympy.corer   r   r   r   r   sympy.core.mulr   sympy.functionsr   r	   sympy.matrices.exceptionsr
   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?   r>   lrC   r&   r'   r(   r)   r*   r+   r1   r9   r;   r<   r@   rB   rD   rE   rG   rH   rL   rP   rQ   rR   rT   rW   rZ   r[   r]   ra   rc   rd   re   rh   rn   rp   r/   r/   r/   r0   <module>   s^    $$	
	