
    \h+                     ,   S SK JrJrJrJrJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJrJrJrJrJrJrJr  S SKJrJrJrJr  S SKJr  S SKJrJrJrJ r J!r!J"r"J#r#  S S	K$J%r%  S S
K&J'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-J.r.  \" SSS9u  r/r0r1r2\" S5      r3\" S\/\05      r4\" S\0\15      r5\" S\/\/5      r6\" S\/\/5      r7\" S\0\/5      r8S r9S r:S r;S r<S r=S r>S r?S r@S rAS  rBS! rCS" rDS# rES$ rFS% rGS& rHS' rIS( rJS) rK\-S* 5       rLS+ rMS, rNS- rOS. rPS/ rQS0 rRS1 rSg2)3    )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                  v    [        [        [        SS9[        [        [        5      R                  5       :X  d   eg )NTevaluate)r   r*   doit     d/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/tests/test_matmul.pytest_evaluater4      s(    !Q&&A,*;*;*====r2   c                  v   [        [        [        -  5      [        [        5      [        [        5      -  :X  d   e[        S[        -  [        -  5      S[        [        5      -  [        [        5      -  :X  d   e[        S[        -  [
        -  5      S[        -  [        [
        5      -  :X  d   e[        SSSS[        -   SS/5      n [        SSSSS[        -
  S/5      n[        U 5      U:X  d   e[        SU -  5      SU-  :X  d   e[        [        SU 5      5      [        SU5      R                  5       :X  d   eg )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                     [        [        [        -  5      [        [        5      [        [        5      -  :X  d   e[        S[        -  [        -  5      S[        [        5      -  [        [        5      -  :X  d   e[        S[        -  [
        -  5      S[        -  [        [
        5      -  :X  d   e[        SSSS[        -   SS/5      n [        SSSSS[        -   S/5      n[        U 5      U:X  d   e[        SU -  5      SU-  :X  d   e[        [        U -  5      [        U-  :X  d   e[        [        SU 5      5      [        SU5      R                  5       :X  d   eg )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            	      n    [        [        [        S[        SS95      [        S[        [        SS9:X  d   eg )Nr6   Fr.   )r   r   r(   r)   r1   r2   r3   test_factor_in_frontrB   6   s2    6!QE:;!!QE:; ; ;r2   c            	         [        [        [        [        [        5      [
        SS95      [        [        [
        SS9:X  d   e[        [         5      " [        [        [        5      SS95      [        [        [        5      SS9:X  d   eg NFr.   )r   r   r(   r   mr)   r   nr1   r2   r3   test_remove_idsrG   ;   sl    fQQ?@QE23 3 3Z e!DE!'e!DE E Er2   c                  ,   [        [        [        [        [        5      [        SS95      [        [	        [
        5      [        SS9:X  d   e[        [        [        R                  [        [        [        -  5      [        [        [        SS95      [        [        R                  [	        [        5      [        SS9:X  d   e[        [        [        [        [        [        [        -  5      [        SS95      [        [	        [
        5      [        SS9:X  d   eg 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            	          [        [        [        [        [        [
        5      SS95      [        [        [
        5      :X  d   eg rD   )r   r   r(   r   rE   krF   r1   r2   r3   test_any_zerosrM   K   s3    VAz!Q/%@A1%& & &r2   c                      [        [        [        SS95      [        :X  d   e[        [        [        5      n [        U 5      U :X  d   eg rD   )r   r   r(   r)   )r'   s    r3   test_unpackrO   P   s7    &U+,111q!A!9>>r2   c                     [        [        5      [        /:X  d   e[        [        [        5      [        [        /:X  d   e[        [        [        [        R                  [        5      [        [        [        R                  -  [        /:X  d   eg N)r   r*   r+   r(   rI   r1   r2   r3   test_only_squaresrR   V   sZ    ?qc!!!1!Q'''1acc1%!QqssUA666r2   c                     [        S[        -  5      S[        -  [        [        5      -  :X  d   e[        S[        -  [        -  5      S[        -  [        [        5      -  [        [        5      -  :X  d   e[        S[        -  [        -  [        R
                  -  [        -  5      S[        -  [        [        5      -  [        [        [        R
                  -  5      -  [        [        5      -  :X  d   eg )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                  D   [        [        S[        5      R                  [        S[        4:X  d   e[        [        S[        5      R	                  5       R                  S[        [        4:X  d   e[        [        [        [        [        -  5      5      R                  [        [        [        [        -  5      4:X  d   e[        [        [        [        [        -  5      5      R	                  SS9R                  [        [        R                  [        R                  4:X  d   eg )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                  p   [        SS/SS//5      n [        SS/SS//5      n[        U [        US5      5      R                  5       XS-  -  :X  d   e[        [        [        [        [        -  5      5      R                  5       R                  [        [        R                  [        R                  4:X  d   eg )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\"'')Q!tV333!Yqs^$))+00QQSSMAAAr2   c                      [        [        [        [        [        -  5      S5      R	                  SS9R
                  S[        [        [        [        -  5      4:X  d   eg )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                  l    [        SS/SS//5      n [        SU 5      R                  5       SU -  :X  d   eg )Nr8   r6   r9   r:   )r   r   r0   )r\   s    r3   test_matmul_scalar_Matrix_doitrb   u   s:    AA A!Q<!A#%%%r2   c                      [        [        [        S5      [        S5      5      R                  S   [        5      (       d   eg )Nr8   r   )
isinstancer   r   rX   r   r1   r2   r3   test_matmul_sympifyre   {   s/    fSVSV,11!4e<<<<r2   c                      [        SS/SS//5      n [        SS/SS//5      n[        X5      R                  5       [        SS/SS//5      :X  d   eg )Nr8   r6   r9   r:      )r   r   r0   r   r(   r)   s     r3   test_collapse_MatrixBaseri      s]    AA AAA A!</Aq6Aq62B"CCCCr2   c                  >   [        [        [        R                  -  [        -  [        R
                  " [        5      5      R                  5       [        :X  d   e[        [        -  n [        U [        R                  -  [        R
                  " [        5      5      R                  5       [        [        [        5      -  :X  d   e[        X R                  -  [        R
                  " [        5      5      R                  5       [        S-  [        [        5      -  :X  d   eg )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"dd(ALLO,1131hqk7IIIIr2   c                      [        S5      S:X  d   e[        [        [        5      [        [        -  :X  d   e[        [        [        [        5      [         5      (       a   eg )Nr8   )r   rF   rE   rd   r1   r2   r3   test_matmul_no_matricesro      sF    !9>>!Q<1Q3&A,/////r2   c                  8   [        [        [        [        R                  5      R	                  5       [        /[        [        R                  //:X  d   e[        [        [        R                  5      R	                  5       / [        [        R                  //:X  d   eg rQ   )r   rF   r(   rI   args_cncr1   r2   r3   test_matmul_args_cncrr      sa    !Q%%'QC!QSS?:::!QSS>""$aX666r2   c                  p   [        SSS9u  p[        [        X[        [        R                  5      R                  5       [        /X[        [        R                  //:X  d   e[        [        U [        U[        R                  5      R                  5       [        /U [        U[        R                  //:X  d   eg )Nza bF)commutative)r   r   rF   r(   rI   rq   )abs     r3   test_matmul_args_cnc_symbolsrw      s     5e,DA!Q1acc"++-1#a~1FFFF!Q1acc"++-1#1a~1FFFFr2   c                      [        [        S5      //5      [        SSS5      -  n [        SSS5      R                  5       S   [        S5      -  U R                  5       S   :X  d   eg )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                      [        [        [        5      [        [        [        5      :X  d   e[        [        [        5      [        [        [        5      :X  d   eg rQ   )r   r*   r+   r   r1   r2   r3   test_construction_with_Mulr|      s6    q!9q!$$$q!9q!$$$r2   c                     [        [        [        5      [        [        [        5      :X  d   e[        [        [        5      [        [        [        5      :X  d   e[        [        [        5      [        [        [        5      :w  d   eg rQ   )r   r*   r+   r   r1   r2   r3   test_construction_with_mulr~      sP    q!9q!$$$q!9q!$$$q!9q!$$$r2   c                      [         R                  [        5       :X  d   e[         R                  [        R                  :w  d   eg rQ   )r   identityr   r   Oner1   r2   r3   test_generic_identityr      s-    ??o////??aee###r2   c                      [        SSS9n [        SX 5      n[        SX 5      n[        U 5      nUSX#-   -  U-  -   U-   nUR                  U5      SU-  SU-  -   :X  d   eg )NNTr%   M1M2r6   )r"   r   r   coeff)r   r   r   r   zs        r3   test_issue_23519r      sk    sD!A	dA	!B	dA	!BA	a26lR	!	#A772;!A#"*$$$r2   c                  f   ^ ^ [        SSS5      m [        SSS5      m[        [        U U4S j5        g )Nr(   r6   r)   r9   c                     > [        T T5      $ rQ   )r   rh   s   r3   <lambda>"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   c                      [        SSSS[        -   SS/5      n [        S5      n[        X5      R                  R                  5       U[        SS/S[        -   S//5      -  R                  5       :X  d   eg )Nr6   r8   r9   r:   ru   )r   r   r"   r   rI   expand)r;   ru   s     r3   test_matmul_transposer      si    q!aQ1%&AsA1LNN""$6Aq61q5!*2E+F)F(N(N(PPPPr2   N)T
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   r   r1   r2   r3   <module>r      sO   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%%
$
%-Qr2   