
    gO                     ^   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 ZRd1S )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                      t          t          t          d          t          t          t                                                    k    sJ d S )NTevaluate)r   r*   doit     h/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_matmul.pytest_evaluater4      s<    !Q&&&&A,,*;*;*=*=======r2   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          d|                     t          d|                                          k    sJ d S )N            )	r	   r(   r)   r   r   r*   r   r   r0   )MMAs     r3   test_adjointr=      s<   1Q3<<71::gajj000001Q3q5>>Qwqzz\'!**444441Q3q5>>RT'!**_,,,,q!aQ1%&&A	1q!QUA&	'	'B1::1Q3<<1R46!Q<<  F1bMM$6$6$8$888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|          	                                k    sJ d S )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6QqSUq1~ill:::::QqSUqs9Q<</////q!aQ1%&&A	1q!QUA&	'	'BQ<<2QqS>>QrT!!!!QqS>>QrT!!!!VAq\\""fQmm&8&8&:&:::::::r2   c                      t          t          t          dt          d                    t          dt          t          d          k    sJ d S )Nr6   Fr.   )r   r   r(   r)   r1   r2   r3   test_factor_in_frontrB   6   sP    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 d S NFr.   )r   r   r(   r   mr)   r   nr1   r2   r3   test_remove_idsrG   ;   s    fQQ???@@QE2223 3 3 3 9Z  e!D!D!DEE!'e!D!D!DE E E E E Er2   c            
         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 d S rD   )r   r   r+   r   r   rF   r)   Tr,   r(   rE   r1   r2   r3   test_combine_powersrJ   B   s
   &GAJJEBBBCCQ7778 8 8 8&gacllAq!eLLLMMqsHQKKU3334 4 4 4&Awqs||QGGGHHx{{A.../ / / / / /r2   c            	          t          t          t          t          t          t
                    d                    t          t          t
                    k    sJ d S rD   )r   r   r(   r   rE   krF   r1   r2   r3   test_any_zerosrM   K   sQ    VAz!Q//%@@@AA1%%& & & & & &r2   c                      t          t          t          d                    t          k    sJ t          t          t                    } t          |           | k    sJ d S rD   )r   r   r(   r)   )r'   s    r3   test_unpackrO   P   sL    &U+++,,1111q!A!99>>>>>>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 d S N)r   r*   r+   r(   rI   r1   r2   r3   test_only_squaresrR   V   sm    ??qc!!!!1!Q''''1ac1%%!QqsUA666666r2   c                  D   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 d S )Nr6   r9   )r   r*   rF   r+   r(   rI   r1   r2   r3   test_determinantrT   \   s    qs88q!tCFF{""""qs1u::Ac!ffSVV+++++qs1uQSy{q!tCFF{3qu::5c!ff<<<<<<<r2   c                     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          z                      j        t          t          t          t          z            fk    sJ t          t          t          t          t          z                                          d          j        t          t          j        t          j        fk    sJ d S )Nr6   Tdeep)r   r*   r+   argsr0   r   rI   r1   r2   r3   	test_doitrY   b   s    !Q??Aq!9,,,,!Q??!!&1a)3333!Yqs^^$$)a1Q3-@@@@@!Yqs^^$$))t)449aac]JJJJJJr2   c                     t          ddgddgg          } t          ddgddgg          }t          | t          |d                                                    | |dz  z  k    sJ t          t          t          t          t          z                                                      j        t          t          j        t          j        fk    sJ d S )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3!Yqs^^$$))++0QQSMAAAAAAr2   c                      t          t          t          t          t          z            d                              d          j        dt          t          t          t          z            fk    sJ d S )Nr6   FrV   )r   r*   r   r+   r0   rX   r1   r2   r3   $test_doit_deep_false_still_canonicalr`   p   sa    1i!nna((--5-99>9QqS>>"# # # # # #r2   c                      t          ddgddgg          } t          d|                                           d| z  k    sJ d S )Nr8   r6   r9   r:   )r   r   r0   )r\   s    r3   test_matmul_scalar_Matrix_doitrb   u   sK    AA  A!Q<<!A#%%%%%%r2   c                      t          t          t          d          t          d                    j        d         t                    sJ d S )Nr8   r   )
isinstancer   r   rX   r   r1   r2   r3   test_matmul_sympifyre   {   s<    fSVVSVV,,1!4e<<<<<<<r2   c                      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 )Nr8   r6   r9   r:      )r   r   r0   r   r(   r)   s     r3   test_collapse_MatrixBaseri      sv    AA  AAA  A!Q<</Aq6Aq62B"C"CCCCCCCr2   c                  t   t          t          t          j        z  t          z  t	          j        t                                                              t          k    sJ t          t          z  } t          | t          j        z  t	          j        t                                                              t          t          t                    z  k    sJ t          | | j        z  t	          j        t                                                              t          dz  t          t                    z  k    sJ d S )Nr6   )
r!   r*   rI   r+   r    
orthogonalr0   rL   r   rF   )kCs    r3   test_refinerm      s    !AC%'1<??++0022a7777	
1B"QS&!,q//**//11Qx{{]BBBB"bd(ALOO,,11331hqkk7IIII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 d S )Nr8   )r   rF   rE   rd   r1   r2   r3   test_matmul_no_matricesro      sV    !99>>>>!Q<<1Q3&A,,///////r2   c                  F   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 rQ   )r   rF   r(   rI   args_cncr1   r2   r3   test_matmul_args_cncrr      sp    !Q%%''QC!QS?::::!QS>>""$$aX666666r2   c                     t          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    sJ d S )Nza bF)commutative)r   r   rF   r(   rI   rq   )abs     r3   test_matmul_args_cnc_symbolsrw      s     5e,,,DAq!Q1ac""++--1#1a~1FFFFF!Q1ac""++--1#1a~1FFFFFFFr2   c                     t          t          d          gg          t          ddd          z  } t          ddd                                          d         t          d          z  |                                 d         k    sJ d S )Nr'   r(   r8   r   )r   r"   r   as_explicit)r;   s    r3   test_issue_12950rz      sw    ,sAq"9"99AQ""..003F3KK?1==??STCUUUUUUUr2   c                      t          t          t                    t          t          t                    k    sJ t          t          t                    t          t          t                    k    sJ d S rQ   )r   r*   r+   r   r1   r2   r3   test_construction_with_Mulr|      sJ    q!99q!$$$$q!99q!$$$$$$r2   c                  V   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 rQ   )r   r*   r+   r   r1   r2   r3   test_construction_with_mulr~      sk    q!99q!$$$$q!99q!$$$$q!99q!$$$$$$r2   c                  z    t           j        t                      k    sJ t           j        t          j        k    sJ d S rQ   )r   identityr   r   Oner1   r2   r3   test_generic_identityr      s6    ?o//////?ae######r2   c                      t          dd          } t          d| |           }t          d| |           }t          |           }|d||z   z  |z  z   |z   }|                    |          d|z  d|z  z   k    sJ d S )NNTr%   M1M2r6   )r"   r   r   coeff)r   r   r   r   zs        r3   test_issue_23519r      s    sD!!!A	dAq	!	!B	dAq	!	!BA	a26lR	!	#A772;;!A#"*$$$$$$r2   c                       t          ddd           t          ddd          t          t           fd           d S )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      sI    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      s    0 0 0 0 0 0 0 0 0 0 0 0 0 0       . . . . . . . . 0 0 0 0 0 0                  F F F F F F F F F F F F > > > > > >A A A A A A A A A A A A A A A A A A & & & & & & # # # # # # + + + + + + $ $ $ $ $ $ . . . . . . . .WY---
1aGCLLLaLaLaLaLa> > >	9 	9 	9
; 
; 
;; ; ;
E E E/ / /& & &
  7 7 7= = =K K KB B B$ $ $
& & &= = =D D DJ J J0 0 0
7 7 7 G G GV V V% % %% % %
$ $ $
% % %- - - - -r2   