a
    kh+                     @   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 ZRdKdL ZSdMS )N    )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/   Z/var/www/auris/lib/python3.9/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sHJ t dt t dt tt kslJ tddddt ddg} tdddddt dg}t | |ksJ t d|  d| ksJ t td| td| ksJ d S )N            )	r   r'   r(   r   r   r)   r   r   r.   )MZMAr/   r/   r0   test_adjoint   s     ($r8   c                  C   s   t tt tttt ks J t dt t dtt tt ksHJ t dt t dt tt kslJ tddddt ddg} tdddddt dg}t | |ksJ t d|  d| ksJ t t|  t| ksJ t td| td|	 ksJ d S )Nr2   r4   r5   r6   )
r	   r'   r(   r   r   r)   r   r&   r   r.   )r7   ZMTr/   r/   r0   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 )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sVJ 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sjJ t tt	ttt	t tddttttddksJ d S r;   )r   r   r*   r   r   r=   r(   Tr+   r'   r<   r/   r/   r/   r0   test_combine_powersB   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/   r0   test_any_zerosK   s    rB   c                  C   s6   t ttddtksJ ttt} t | | ks2J d S r;   )r   r   r'   r(   )r&   r/   r/   r0   test_unpackP   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sLJ d S N)r   r)   r*   r'   r?   r/   r/   r/   r0   test_only_squaresV   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sLJ t dt t tj t dt t t t ttj  t t ksJ d S )Nr2   r5   )r   r)   r=   r*   r'   r?   r/   r/   r/   r0   test_determinant\   s     ,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sdJ t tttt jddjttjtjfksJ d S )Nr2   Tdeep)r   r)   r*   argsr.   r   r?   r/   r/   r/   r0   	test_doitb   s     (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sLJ ttttt  jttjtjfksvJ d S )Nr4   r2   r5   r6      )	r   r   r   r.   r)   r   r*   rI   r?   )XYr/   r/   r0   test_doit_drills_downi   s    $rN   c                   C   s8   t tttt djddjdtttt fks4J d S )Nr2   FrG   )r   r)   r   r*   r.   rI   r/   r/   r/   r0   $test_doit_deep_false_still_canonicalp   s    rO   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.   )rL   r/   r/   r0   test_matmul_scalar_Matrix_doitu   s    rP   c                   C   s&   t ttdtdjd ts"J d S )Nr4   r   )
isinstancer   r   rI   r   r/   r/   r/   r0   test_matmul_sympify{   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sNJ d S )Nr4   r2   r5   r6      )r   r   r.   r   r'   r(   r/   r/   r0   test_collapse_MatrixBase   s    rU   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sXJ t | | j tt td tt	 ksJ d S )Nr2   )
r    r)   r?   r*   r   Z
orthogonalr.   rA   r   r=   )ZkCr/   r/   r0   test_refine   s    &*rV   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<   rQ   r/   r/   r/   r0   test_matmul_no_matrices   s    rW   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sHJ d S rD   )r   r=   r'   r?   args_cncr/   r/   r/   r0   test_matmul_args_cnc   s    &rY   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slJ d S )Nza bF)Zcommutative)r   r   r=   r'   r?   rX   )abr/   r/   r0   test_matmul_args_cnc_symbols   s    .r\   c                  C   sL   t tdggtddd } tddd d td |  d ksHJ d S )Nr&   r'   r4   r   )r   r!   r   Zas_explicit)r7   r/   r/   r0   test_issue_12950   s    r]   c                   C   s4   t tttttksJ t tttttks0J d S rD   )r   r)   r*   r   r/   r/   r/   r0   test_construction_with_Mul   s    r^   c                   C   sL   t tttttksJ t tttttks0J t tttttksHJ d S rD   )r   r)   r*   r   r/   r/   r/   r0   test_construction_with_mul   s    r_   c                   C   s$   t jt ksJ t jtjks J d S rD   )r   identityr   r   ZOner/   r/   r/   r0   test_generic_identity   s    ra   c                  C   sf   t ddd} td| | }td| | }t| }|d||  |  | }||d| d|  ksbJ d S )NNTr$   M1M2r2   )r!   r   r   Zcoeff)rb   rc   rd   r   zr/   r/   r0   test_issue_23519   s    rf   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 rD   )r   r/   rT   r/   r0   <lambda>       z"test_shape_error.<locals>.<lambda>)r   r#   r
   r/   r/   rT   r0   test_shape_error   s    ri   c                  C   sX   t ddddt ddg} td}t|| j |t ddgdt dgg  ksTJ d S )Nr2   r4   r5   r6   rZ   )r   r   r!   r   r?   expand)r7   rZ   r/   r/   r0   test_matmul_transpose   s    rk   N)TZ
sympy.corer   r   r   r   r   Zsympy.core.mulr   Zsympy.functionsr   r	   Zsympy.matrices.exceptionsr
   Zsympy.matricesr   r   r   r   r   r   r   Zsympy.matrices.expressionsr   r   r   r   Z"sympy.matrices.expressions.specialr   Z!sympy.matrices.expressions.matmulr   r   r   r   r   r   r   Zsympy.strategiesr   Zsympy.assumptions.askr   Zsympy.assumptions.refiner    Zsympy.core.symbolr!   Zsympy.testing.pytestr"   r#   r=   r<   lrA   r&   r'   r(   r)   r*   r+   r1   r8   r9   r:   r>   r@   rB   rC   rE   rF   rJ   rN   rO   rP   rR   rU   rV   rW   rY   r\   r]   r^   r_   ra   rf   ri   rk   r/   r/   r/   r0   <module>   s^   $$	
	