
    sg                        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
 d dlmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ  e	dd      \  ZZZZ edee      Z  edee      Z! edee      Z" edee      Z# edee      Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d  Z2d! Z3d" Z4d# Z5y$)%    )sqrt)powsimp)raises)	unchanged)symbolsS)IdentityMatrixSymbolImmutableMatrix
ZeroMatrix	OneMatrixMatrix)NonSquareMatrixError)MatPowMatAddMatMul)Inverse)MatrixElementzn m l kT)integerABCDEc                      t        ddgddgg      } t        | d      d   dk(  sJ t        | d      d   dk(  sJ t        | d      d   dk(  sJ t        | d      d   dk(  sJ t        | d      d   dk(  sJ y )	N            r   r   r   r   r      )r   r   Xs    _/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/tests/test_matpow.pytest_entry_matrixr&      s    !Q!Q()A!Q<"""!Q<"""!Q<"""!Q<"""!Q<"""    c                  :   ddl m}  t        t        d      d   dk(  sJ t        t        d      d   dk(  sJ t        t        d      d   t        d   k(  sJ t	        t        t        d      d   |       sJ t	        t        t        t
              d   t              sJ y )Nr   Sumr    r   r!   r   )sympy.concreter*   r   r   
isinstancenr   r)   s    r%   test_entry_symbolr.      s    "!Q<"""!Q<"""!Q<4(((fQl4(#...fQl4(-888r'   c            	         t        ddd      } t        | d      j                         t        t	        d            k(  sJ t        | d      j                         | j                         k(  sJ t        | d      j                         | j                         dz  k(  sJ t        | t
              j                         t        | t
        z  d   | t
        z  d   g| t
        z  d   | t
        z  d   gg      k(  sJ t        d	d
d      }t        dd
d      }t        dd
d      }|j                  |z  t        j                  z  }|j                         t        t        |d   |d   z  |d   |d   z  z   |d   |d   z  z         gg      k(  sJ ||j                  |z  t        j                  z  z  }t        |d   |d   z  |d   |d   z  z   |d   |d   z  z         }|j                         t        |d   |z  g|d   |z  g|d   |z  gg      k(  sJ ||j                  z  t        j                  z  }t        |d   |d   z  |d   |d   z  z   |d   |d   z  z         }||j                  z  j                         |z  }|j                         |k(  sJ | dz  }| d   | d   z  | d   | d   z  z
  }t        | d   | d    g| d    | d   gg      |z  }|j                         |k(  sJ | |z  }|j                         | j                         |z  k(  sJ y )Nr$   r   r   r   r    r!   )r   r   )r   r   ar   bc)r   r   )r
   r   as_explicitr   r	   r-   Tr   Halfr   r   )	r$   r0   r1   r2   exprmdenomexpecteddets	            r%   test_as_explicit_symbolr<   &   s,   S!QA!Q<##%!)EEEE!Q<##%888!Q<##%!--/A)====!Q<##%
q&$!q&$(
q&$!q&$(: *   
 	S!QAS!QAS!QACCEAFF?D$qwqw44/PSTUYSZ[\]a[bSb/b*c)d(e!ffffacc!eaff_DQtWQtW_qwqw.44@AA!D'!)qwqykAdGAI;(O!PPPPaccEAFF?D441T71T7?2QtWQtW_DEE!##""$U*H)))b5D
D'!D'/AdGAdGO
+C$!D'*agXqw,?@A#EH)))a4D!!3333r'   c                  X   t        ddgddgg      } t        | d      j                         t        t        d            k(  sJ t        | d      j                         | k(  sJ t        | d      j                         | dz  k(  sJ t        | d      j                         | j	                         k(  sJ t        | d      j                         | j	                         dz  k(  sJ t        dg      } t        | t
        j                        j                         | t
        j                  z  k(  sJ y )Nr   r   r   r   r   r3   )r   r   r4   r	   invr   r6   )r   s    r%   test_as_explicit_matrixr@   I   s    !Q!Q()A!Q<##%!)EEEE!Q<##%***!Q<##%A---!R=$$&!%%'111!R=$$&1557Q,666A!QVV((*ai777r'   c                     t        t        d      j                         t        t              k(  sJ t        t        d      j                         t        k(  sJ t        t        d      j                         t        j
                  k(  sJ dt        j                  t        j                  t        fD ]3  } t        t        |       j                         t        t        |       k(  r3J  y )Nr   r   r3   r   )	r   r   doitr	   r-   Ir   r6   Pi)rs    r%   test_doit_symbolrF   U   s    !Q<(1+---!Q<!###!R=133&&&q! 3a|  "fQl2223r'   c                      t        ddgddgg       t         d      j                         t        t        d            k(  sJ t         d      j                          k(  sJ t         d      j                          dz  k(  sJ t         d      j                          j	                         k(  sJ t         d      j                          j	                         dz  k(  sJ t        t        dg      t
        j                        j                         t        dg      k(  sJ t        ddgddgg       t        t         fd       t        t         fd	       y )
Nr   r   r   r   r   r3   r>   c                  8    t         d      j                         S Nr3   r   rB   r#   s   r%   <lambda>z"test_doit_matrix.<locals>.<lambda>g       va|002 r'   c                  8    t         d      j                         S Nr>   rJ   r#   s   r%   rK   z"test_doit_matrix.<locals>.<lambda>h   rL   r'   )	r   r   rB   r	   r?   r   r6   r   
ValueErrorr#   s   @r%   test_doit_matrixrP   ]   s%   !Q!Q()A!Q</(1+">>>>!Q<!###!Q<!Q$&&&!R=1557***!R=AEEGa<////1#&/446/1#:NNNN!Q!Q()A
:23
:23r'   c                       t        ddd       t        g dg dg      ddddt        j                  t        j                  t
        fD ]*  t        t         fd	       t        t        fd
       , y )Nr   r   r   )r   r   r   )r         r3   r   r   c                      t               S Nr   )r   rE   s   r%   rK   z test_nonsquare.<locals>.<lambda>o       VAq\ r'   c                      t               S rU   rV   )r   rE   s   r%   rK   z test_nonsquare.<locals>.<lambda>p   rW   r'   )r
   r   r   r6   rD   r-   r   r   )r   r   rE   s   @@@r%   test_nonsquarerY   k   s^    S!QAI./A!Q166144+ ;#%9:#%9:;r'   c                      t        ddgddgg      } t        | t              j                         | t        z  cxk(  r| k(  sJ  J y )Nr   r   )r   r   r-   rB   r#   s    r%   test_doit_equals_powr[   s   sD    1Q%1'A!Q<!Q$+!+++++r'   c                     t        ddgddgg      } t        ddgddgg      }t        t        | |      d      j                         | |z  dz  k(  sJ t        t	        | |      d      j                         | |z   dz  k(  sJ y )Nr   r   r   r   rR   )r   r   r   rB   r   )r$   Ys     r%   test_doit_nested_MatrixExprr^   x   s    !Q!Q()A!Q!Q()A&A,"'')acAX555&A,"'')a!eaZ777r'   c                     t        t              } t        | d      j                         | k(  sJ t        | t              j                         | k(  sJ t        | d      j                         | k(  sJ t        | d      j                         | k(  sJ t        d      }t        |t              j                         |k(  sJ t        |d      j                         |k(  sJ t        |d      j                         |k(  sJ y )Nr   r   r   r3   )r	   r-   r   rB   )kls     r%   test_identity_powerrc      s    A!Q<!###!Q<!###!R=1$$$!Q<!###A!Q<!###!R=1$$$!Q<!###r'   c                      t        t        t               t         d      j                          k(  sJ t	        t
         fd       t         d      j                         t        t              k(  sJ t         t              j                          k(  sJ t	        t
         fd       t        dd      t        t              j                         k(  sJ t	        t
        fd       t        d      j                         k(  sJ t        d      j                         t        d      k(  sJ t	        t
        fd       y )	Nr   c                  8    t         d      j                         S rI   rJ   z1s   r%   rK   z!test_zero_power.<locals>.<lambda>       fRn113 r'   r   c                  8    t         d      j                         S rN   rJ   rf   s   r%   rK   z!test_zero_power.<locals>.<lambda>   rh   r'   r   c                  8    t         d      j                         S )Nr`   rJ   z2s   r%   rK   z!test_zero_power.<locals>.<lambda>   rh   r'   r   c                  8    t         d      j                         S rI   rJ   rk   s   r%   rK   z!test_zero_power.<locals>.<lambda>   rh   r'   )r   r-   r   rB   r   rO   r	   )rg   rl   s   @@r%   test_zero_powerrn      s    	Aq	B"a=2%%%
:34"a=8A;..."a=2%%%
:34	Aq	B"a=2%%%
:34"a=2%%%"a=8A;...
:34r'   c                     t        dd      } | dz  t        d      k(  sJ | dz  | k(  sJ | | z  | dz  cxk(  r	d| z  k(  sJ  J | | z  | z  | dz  cxk(  r	d| z  k(  sJ  J t        t        t              } | | z  | dz  cxk(  rt        | z  k(  sJ  J t        | t        dz
  z  | z        | t        z  cxk(  rt        t        dz
  z  | z  k(  sJ  J y )Nr   r   r   r   	   )r   r	   r-   r   )os    r%   test_OneMatrix_powerrr      s    !QA6Xa[   6Q;;q5AF#a!e#####q519Q'!a%'''''!QAq5AF#a!e#####1Q<!#$QB!A,2BBBBBBr'   c                     ddl m}  t        t        z  j                  dz  t        t        z  dz  j                  cxk(  r(t        j                  t        j                  z  dz  k(  sJ  J t        t        z  j                  dz  j                  t        t        z  dz  k(  sJ t        j                  j
                  j                  dz  t        dz  k(  sJ t        j                  t        z  j                  t        z  t        t        t        z  z  k(  sJ t        j                  t        j                  z  dz  j                  t        t        z  dz  k(  sJ t        t        z  j                  dz  j                  dz  t        t        z  dz  k(  sJ  |  | t        dz  t        dz  z        dz        j                         t        dz  t        dz  z  dz  k(  sJ t        t        z  d	z  j                  d	z  t        t        z  d
z  j                  k(  sJ t        t        z  t        z  j                  t        z  j                  t        t        z  t        t        z  z  k(  sJ y )Nr   )	TransposerR   r"   i#   r   r      )$sympy.matrices.expressions.transposert   r   r   r5   rC   rb   ra   r   r   rB   )TPs    r%   test_transpose_powerrz      s   DaC77A:1Q3(7!##)a77777qSGGQJ>>acAX%%%CCEEGGa<1b5   CCF::q=A!H$$$SS133YN!A#)))qSGGQJ>>11r	)))bA1oq !&&(QTAqD[1,<<<<qS2I=="!A#---cAXLL!O1Q3!A#,...r'   c                  t   t        t        t        d            j                         t	        t
              k(  sJ t        t        t        d            j                         t        t              k(  sJ t        t        t        d            j                         t        t        d      k(  sJ t        t        t        d            j                         t        k(  sJ t        t        t              d      j                         t	        t
              k(  sJ t        t        t              d      j                         t        t              k(  sJ t        t        t              d      j                         t        t        d      k(  sJ t        t        t              d      j                         t        k(  sJ y )Nr   r   r   r>   r3   )r   r   r   rB   r	   r-    r'   r%   test_Inverser}      s.   6!Q< %%'8A;6666!Q< %%'71:5556!Q< %%'6!R=8886!R=!&&(A---'!*a %%'8A;666'!*a %%'71:555'!*a %%'6!R=888'!*b!&&(A---r'   c                  l   t         dz  dz  t         k(  sJ t         dz  dz  t        t         d      k(  sJ t         dz  dz  t        t         d      k(  sJ t         dz  dz  t         k(  sJ t         dz  dz  dz  d	z  t        t         d
      k(  sJ t         t        z  t        z  t         t        dz  z  k(  sJ y )Nr   r   r   rS   r>   r`   r3   r   rR   x   )r   r   r-   r|   r'   r%   test_combine_powersr      s    Fq=AFq=F1aL(((G?fQl***G?a1f]q Q&&C.888Fq=A!q&M)))r'   c                  f   t        t        t        d      sJ t        t        t        d      sJ t        t        t        t              d      sJ t        t        t        t        d      d      sJ t        t        t        t        d      d      sJ t        t        t        t        d      d      sJ y )Nr   r   r3   )r   r   r   r   r|   r'   r%   test_unchangedr      s    VQ"""VQ"""VWQZ,,,WfQmR000VVAr]B///VVAq\1---r'   c                  &    t        t        d        y )Nc                      ddt         z  z  S )Nr   r>   )r   r|   r'   r%   rK   z(test_no_exponentiation.<locals>.<lambda>   s    BqD	 r'   )r   NotImplementedErrorr|   r'   r%   test_no_exponentiationr      s      12r'   N)6(sympy.functions.elementary.miscellaneousr   sympy.simplify.powsimpr   sympy.testing.pytestr   sympy.core.exprr   
sympy.corer   r   sympy.matricesr	   r
   r   r   r   r   sympy.matrices.exceptionsr   sympy.matrices.expressionsr   r   r   "sympy.matrices.expressions.inverser   "sympy.matrices.expressions.matexprr   r-   r8   rb   ra   r   r   r   r   r   r&   r.   r<   r@   rF   rP   rY   r[   r^   rc   rn   rr   rz   r}   r   r   r   r|   r'   r%   <module>r      s    9 * ' % ! a a : = = 6 <Y-
1aaaaaa#9 4F	834;,
8	$5
C/"	.*.3r'   