o
    GZh+                     @   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/   [/var/www/auris/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.   )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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   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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    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sJ 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s&J 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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'   r?   r/   r/   r/   r0   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 )Nr2   Tdeep)r   r)   r*   argsr.   r   r?   r/   r/   r/   r0   	test_doitb   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 )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sJ 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s'J 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s,J t | | j tt td tt	 ksCJ d S )Nr2   )
r    r)   r?   r*   r   Z
orthogonalr.   rA   r   r=   )ZkCr/   r/   r0   test_refine   s   &*2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s$J 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s6J d S )Nza bF)Zcommutative)r   r   r=   r'   r?   rX   )abr/   r/   r0   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'   r4   r   )r   r!   r   Zas_explicit)r7   r/   r/   r0   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/   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sJ t tttttks$J 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s1J 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>   s   
 z"test_shape_error.<locals>.<lambda>)r   r#   r
   r/   r/   rT   r0   test_shape_error   s   rh   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s*J d S )Nr2   r4   r5   r6   rZ   )r   r   r!   r   r?   expand)r7   rZ   r/   r/   r0   test_matmul_transpose   s   8rj   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   rh   rj   r/   r/   r/   r0   <module>   s`    $$	
	