
    sgO                     ,   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      \  Z/Z0Z1Z2 ed      Z3 ede/e0      Z4 ede0e1      Z5 ede/e/      Z6 ede/e/      Z7 ede0e/      Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd  ZBd! ZCd" ZDd# ZEd$ ZFd% ZGd& ZHd' ZId( ZJd) ZKe-d*        ZLd+ ZMd, ZNd- ZOd. ZPd/ ZQd0 ZRy1)2    )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                  z    t        t        t        d      t        t        t              j                         k(  sJ y )NTevaluate)r   r*   doit     _/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/tests/test_matmul.pytest_evaluater4      s(    !Q&&A,*;*;*====r2   c                  j   t        t        t        z        t        t              t        t              z  k(  sJ t        dt        z  t        z        dt        t              z  t        t              z  k(  sJ t        dt        z  t
        z        dt        z  t        t
              z  k(  sJ t        ddddt        z   ddg      } t        dddddt        z
  dg      }t        |       |k(  sJ t        d| z        d|z  k(  sJ t        t        d|             t        d|      j                         k(  sJ y )N            )	r	   r(   r)   r   r   r*   r   r   r0   )MMAs     r3   test_adjointr=      s    1Q3<71:gaj00001Q3q5>Qwqz\'!*44441Q3q5>RT'!*_,,,q!aQ1%&A	1q!QUA&	'B1:1Q3<1R46!Q< F1bM$6$6$8888r2   c                     t        t        t        z        t        t              t        t              z  k(  sJ t        dt        z  t        z        dt        t              z  t        t              z  k(  sJ t        dt        z  t
        z        dt        z  t        t
              z  k(  sJ t        ddddt        z   ddg      } t        dddddt        z   dg      }t        |       |k(  sJ t        d| z        d|z  k(  sJ t        t        | z        t        |z  k(  sJ t        t        d|             t        d|      j                         k(  sJ y )Nr6   r8   r9   r:   )
r
   r(   r)   r   r   r*   r   r'   r   r0   )r;   MTs     r3   test_transposer@   )   s   QqS>Yq\)A,6666QqSUq1~il::::QqSUqs9Q<////q!aQ1%&A	1q!QUA&	'BQ<2QqS>QrT!!!QqS>QrT!!!VAq\"fQm&8&8&::::r2   c                  x    t        t        t        dt        d            t        dt        t        d      k(  sJ y )Nr6   Fr.   )r   r   r(   r)   r1   r2   r3   test_factor_in_frontrB   6   s2    6!QE:;!!QE:; ; ;r2   c                  $   t        t        t        t        t              t
        d            t        t        t
        d      k(  sJ  t        t               t        t        t              d            t        t        t              d      k(  sJ y NFr.   )r   r   r(   r   mr)   r   nr1   r2   r3   test_remove_idsrG   ;   sn    fQQ?@QE23 3 3 9Z e!DE!'e!DE E Er2   c            
      J   t        t        t        t        t              t        d            t        t	        t
              t        d      k(  sJ t        t        t        j                  t        t        t        z        t        t        t        d            t        t        j                  t	        t              t        d      k(  sJ t        t        t        t        t        t        t        z        t        d            t        t	        t
              t        d      k(  sJ y rD   )r   r   r+   r   r   rF   r)   Tr,   r(   rE   r1   r2   r3   test_combine_powersrJ   B   s    &GAJEBCQ78 8 8&gaclAq!eLMqssHQKU34 4 4&Awqs|QGHx{A./ / /r2   c            	          t        t        t        t        t        t
              d            t        t        t
              k(  sJ y rD   )r   r   r(   r   rE   krF   r1   r2   r3   test_any_zerosrM   K   s3    VAz!Q/%@A1%& & &r2   c                      t        t        t        d            t        k(  sJ t        t        t              } t        |       | k(  sJ y rD   )r   r   r(   r)   )r'   s    r3   test_unpackrO   P   s7    &U+,111q!A!9>>r2   c                     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                  z  t        gk(  sJ y N)r   r*   r+   r(   rI   r1   r2   r3   test_only_squaresrR   V   sZ    ?qc!!!1!Q'''1acc1%!QqssUA666r2   c                     t        dt        z        dt        z  t        t              z  k(  sJ t        dt        z  t        z        dt        z  t        t              z  t        t              z  k(  sJ t        dt        z  t        z  t        j
                  z  t        z        dt        z  t        t              z  t        t        t        j
                  z        z  t        t              z  k(  sJ y )Nr6   r9   )r   r*   rF   r+   r(   rI   r1   r2   r3   test_determinantrT   \   s    qs8q!tCF{"""qs1u:Ac!fSV++++qs1uQSSy{q!tCF{3qu:5c!f<<<<r2   c                  B   t        t        dt              j                  t        dt        fk(  sJ t        t        dt              j	                         j                  dt        t        fk(  sJ t        t        t        t        t        z              j                  t        t        t        t        z        fk(  sJ t        t        t        t        t        z              j	                  d      j                  t        t        j                  t        j                  fk(  sJ y )Nr6   Tdeep)r   r*   r+   argsr0   r   rI   r1   r2   r3   	test_doitrY   b   s    !Q?Aq!9,,,!Q?!&&1a)333!Yqs^$))a1Q3-@@@@!Yqs^$))t)499aacc]JJJr2   c                  n   t        ddgddgg      } t        ddgddgg      }t        | t        |d            j                         | |dz  z  k(  sJ t        t        t        t        t        z              j                         j                  t        t        j                  t        j                  fk(  sJ y )Nr8   r6   r9   r:      )	r   r   r   r0   r*   r   r+   rX   rI   )XYs     r3   test_doit_drills_downr^   i   s    !Q!Q()A!Q!Q()A!VAq\"'')Qq!tV333!Yqs^$))+00QQSSMAAAr2   c                      t        t        t        t        t        z        d      j	                  d      j
                  dt        t        t        t        z        fk(  sJ y )Nr6   FrV   )r   r*   r   r+   r0   rX   r1   r2   r3   $test_doit_deep_false_still_canonicalr`   p   sK    1i!na(--5-9>>9QqS>"# $ #r2   c                  j    t        ddgddgg      } t        d|       j                         d| z  k(  sJ y )Nr8   r6   r9   r:   )r   r   r0   )r\   s    r3   test_matmul_scalar_Matrix_doitrb   u   s:    AA A!Q<!A#%%%r2   c                  z    t        t        t        d      t        d            j                  d   t              sJ y )Nr8   r   )
isinstancer   r   rX   r   r1   r2   r3   test_matmul_sympifyre   {   s,    fSVSV,11!4e<<<r2   c                      t        ddgddgg      } t        ddgddgg      }t        | |      j                         t        ddgddgg      k(  sJ y )Nr8   r6   r9   r:      )r   r   r0   r   r(   r)   s     r3   test_collapse_MatrixBaseri      s_    AA AAA A!Q</Aq6Aq62B"CCCCr2   c                  4   t        t        t        j                  z  t        z  t	        j
                  t                    j                         t        k(  sJ t        t        z  } t        | t        j                  z  t	        j
                  t                    j                         t        t        t              z  k(  sJ t        | | j                  z  t	        j
                  t                    j                         t        dz  t        t              z  k(  sJ y )Nr6   )
r!   r*   rI   r+   r    
orthogonalr0   rL   r   rF   )kCs    r3   test_refinerm      s    !ACC%'1<<?+002a777	
1B"QSS&!,,q/*//1Qx{]BBB"bdd(ALLO,1131hqk7IIIIr2   c                      t        d      dk(  sJ t        t        t              t        t        z  k(  sJ t        t        t        t              t               rJ y )Nr8   )r   rF   rE   rd   r1   r2   r3   test_matmul_no_matricesro      sC    !9>>!Q<1Q3&A,////r2   c                  4   t        t        t        t        j                        j	                         t        gt        t        j                  ggk(  sJ t        t        t        j                        j	                         g t        t        j                  ggk(  sJ y rQ   )r   rF   r(   rI   args_cncr1   r2   r3   test_matmul_args_cncrr      sa    !Q%%'QC!QSS?:::!QSS>""$aX666r2   c                  x   t        dd      \  } }t        t        | |t        t        j                        j                         t        g| |t        t        j                  ggk(  sJ t        t        | t        |t        j                        j                         t        g| t        |t        j                  ggk(  sJ y )Nza bF)commutative)r   r   rF   r(   rI   rq   )abs     r3   test_matmul_args_cnc_symbolsrw      s     5e,DAq!Q1acc"++-1#1a~1FFFF!Q1acc"++-1#1a~1FFFFr2   c                      t        t        d      gg      t        ddd      z  } t        ddd      j                         d   t        d      z  | j                         d   k(  sJ y )Nr'   r(   r8   r   )r   r"   r   as_explicit)r;   s    r3   test_issue_12950rz      s\    ,sAq"99AQ"..03F3K?1==?STCUUUUr2   c                      t        t        t              t        t        t              k(  sJ t        t        t              t        t        t              k(  sJ y rQ   )r   r*   r+   r   r1   r2   r3   test_construction_with_Mulr|      s6    q!9q!$$$q!9q!$$$r2   c                     t        t        t              t        t        t              k(  sJ t        t        t              t        t        t              k(  sJ t        t        t              t        t        t              k7  sJ y rQ   )r   r*   r+   r   r1   r2   r3   test_construction_with_mulr~      sP    q!9q!$$$q!9q!$$$q!9q!$$$r2   c                      t         j                  t               k(  sJ t         j                  t        j                  k7  sJ y rQ   )r   identityr   r   Oner1   r2   r3   test_generic_identityr      s-    ??o////??aee###r2   c                      t        dd      } t        d| |       }t        d| |       }t        |       }|d||z   z  |z  z   |z   }|j                  |      d|z  d|z  z   k(  sJ y )NNTr%   M1M2r6   )r"   r   r   coeff)r   r   r   r   zs        r3   test_issue_23519r      sq    sD!A	dAq	!B	dAq	!BA	a26lR	!	#A772;!A#"*$$$r2   c                  d     t        ddd       t        ddd      t        t         fd       y )Nr(   r6   r)   r9   c                      t               S rQ   )r   rh   s   r3   <lambda>z"test_shape_error.<locals>.<lambda>   s    va| r2   )r   r$   r   rh   s   @@r3   test_shape_errorr      s*    S!QAS!QA
:+,r2   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$   rF   rE   lrL   r'   r(   r)   r*   r+   r,   r4   r=   r@   rB   rG   rJ   rM   rO   rR   rT   rY   r^   r`   rb   re   ri   rm   ro   rr   rw   rz   r|   r~   r   r   r   r1   r2   r3   <module>r      sI   0 0  . 0   F F >A A A & # + $ .Y-
1aCLaaaaa>	9
;;
E/&
7=KB$
&=DJ0
7 G GV%%
$
%-r2   