
    g                        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# Z5d$S )%    )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                  H   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 d S )	N            r   r   r   r   r      )r   r   Xs    h/var/www/html/ai-engine/env/lib/python3.11/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 d S )Nr   Sumr    r   r!   r   )sympy.concreter*   r   r   
isinstancenr   r)   s    r%   test_entry_symbolr.      s    """"""!Q<<""""!Q<<""""!Q<<4((((fQll4(#.....fQll4(-8888888r'   c            	         t          ddd          } t          | d                                          t          t	          d                    k    sJ t          | d                                          |                                 k    sJ t          | d                                          |                                 dz  k    sJ t          | t
                                                    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  }|                                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             }|                                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                                  |z  }|                                |k    sJ | dz  }| d         | d         z  | d         | d         z  z
  }t          | d         | d          g| d          | d         gg          |z  }|                                |k    sJ | |z  }|                                |                                 |z  k    sJ d S )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EE!Q<<##%%8888!Q<<##%%!--//A)=====!Q<<##%%
q&$!q&$(
q&$!q&$(: * *    
 	S!QAS!QAS!QACEAF?D$qwqw44/PSTUYSZ[\]a[bSb/b*c*c)d(e!f!fffffac!eaf_DQtWQtW_qwqw.44@AAA!D'!)qwqykAdGAI;(O!P!PPPPPacEAF?D441T71T7?2QtWQtW_DEEE!#""$$U*H))))b5D
D'!D'/AdGAdGO
+C$!D'*agXqw,?@AA#EH))))a4D!!3333333r'   c                     t          ddgddgg          } t          | d                                          t          t          d                    k    sJ t          | d                                          | k    sJ t          | d                                          | dz  k    sJ t          | d                                          |                                 k    sJ t          | d                                          |                                 dz  k    sJ t          dg          } t          | t
          j                                                  | t
          j        z  k    sJ d S )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EE!Q<<##%%****!Q<<##%%A----!R==$$&&!%%''1111!R==$$&&15577Q,6666A!QV((**ai777777r'   c                     t          t          d                                          t          t                    k    sJ t          t          d                                          t          k    sJ t          t          d                                          t          j        k    sJ dt          j        t          j        t          fD ]B} t          t          |                                           t          t          |           k    sJ Cd S )Nr   r   r3   r   )	r   r   doitr	   r-   Ir   r6   Pi)rs    r%   test_doit_symbolrF   U   s    !Q<<(1++----!Q<<!####!R==13&&&&q! 3 3a||  ""fQll222223 3r'   c                  p    t          ddgddgg           t           d                                          t          t          d                    k    sJ t           d                                           k    sJ t           d                                           dz  k    sJ t           d                                                                           k    sJ t           d                                                                           dz  k    sJ t          t          dg          t
          j                                                  t          dg          k    sJ t          ddgddgg           t          t           fd           t          t           fd	           d S )
Nr   r   r   r   r   r3   r>   c                  H    t           d                                          S Nr3   r   rB   r#   s   r%   <lambda>z"test_doit_matrix.<locals>.<lambda>g       va||0022 r'   c                  H    t           d                                          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==15577****!R==AEEGGa</////1#&&//4466/1#:N:NNNNN!Q!Q())A
:2222333
:222233333r'   c                      t          ddd           t          g dg dg          ddddt          j        t          j        t
          fD ]4t          t           fd	           t          t          fd
           5d S )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III.//A!Q1614+ ; ;#%9%9%9%9%9:::#%9%9%9%9%9::::; ;r'   c                      t          ddgddgg          } t          | t                                                    | t          z  cxk    r| k    sn J d S )Nr   r   )r   r   r-   rB   r#   s    r%   test_doit_equals_powr[   s   s^    1Q%1''A!Q<<!Q$++++!++++++++r'   c                  J   t          ddgddgg          } t          ddgddgg          }t          t          | |          d                                          | |z  dz  k    sJ t          t	          | |          d                                          | |z   dz  k    sJ d S )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5&A,,""''))a!eaZ777777r'   c                     t          t                    } t          | d                                          | k    sJ t          | t                                                    | k    sJ t          | d                                          | k    sJ t          | d                                          | k    sJ t          d          }t          |t                                                    |k    sJ t          |d                                          |k    sJ t          |d                                          |k    sJ d S )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                  P    t          t          t                     t           d                                           k    sJ t	          t
           fd           t           d                                          t          t                    k    sJ t           t                                                     k    sJ t	          t
           fd           t          dd          t          t                                                    k    sJ t	          t
          fd           t          d                                          k    sJ t          d                                          t          d          k    sJ t	          t
          fd           d S )	Nr   c                  H    t           d                                          S rI   rJ   z1s   r%   rK   z!test_zero_power.<locals>.<lambda>       fRnn1133 r'   r   c                  H    t           d                                          S rN   rJ   rf   s   r%   rK   z!test_zero_power.<locals>.<lambda>   rh   r'   r   c                  H    t           d                                          S )Nr`   rJ   z2s   r%   rK   z!test_zero_power.<locals>.<lambda>   rh   r'   r   c                  H    t           d                                          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      sz   	Aq		B"a==2%%%%
:3333444"a==8A;;...."a==2%%%%
:3333444	Aq		B"a==2%%%%
:3333444"a==2%%%%"a==8A;;....
:33334444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n J | | z  | z  | dz  cxk    r	d| z  k    sn J t          t          t                    } | | z  | dz  cxk    rt          | z  k    sn J t          | t          dz
  z  | z            | t          z  cxk    rt          t          dz
  z  | z  k    sn J d S )Nr   r   r   r   	   )r   r	   r-   r   )os    r%   test_OneMatrix_powerrr      s0   !QA6Xa[[    6Q;;;;q5AF####a!e######q519Q''''!a%''''''!QAq5AF####a!e######1Q<!#$$QBBBB!A,2BBBBBBBBBr'   c                  p   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n 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            
                                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 d S )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DDDDDaC7A:1Q3(7777!#)a777777qSGQJ>acAX%%%%CEGa<1b5    CF:q=A!H$$$$S13YN!A#))))qSGQJ>11r	))))2bbA1ooq !!&&((QTAqD[1,<<<<<qS2I="!A#----cAXL!O1Q3!A#,......r'   c                     t          t          t          d                                                    t	          t
                    k    sJ t          t          t          d                                                    t          t                    k    sJ t          t          t          d                                                    t          t          d          k    sJ t          t          t          d                                                    t          k    sJ t          t          t                    d                                          t	          t
                    k    sJ t          t          t                    d                                          t          t                    k    sJ t          t          t                    d                                          t          t          d          k    sJ t          t          t                    d                                          t          k    sJ d S )Nr   r   r   r>   r3   )r   r   r   rB   r	   r-    r'   r%   test_Inverser}      s   6!Q<<  %%''8A;;66666!Q<<  %%''71::55556!Q<<  %%''6!R==88886!R==!!&&((A----'!**a  %%''8A;;6666'!**a  %%''71::5555'!**a  %%''6!R==8888'!**b!!&&((A------r'   c                     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 d S )Nr   r   r   rS   r>   r`   r3   r   rR   x   )r   r   r-   r|   r'   r%   test_combine_powersr      s    Fq=AFq=F1aLL((((G?fQll****G?a1f]q Q&&C..8888Fq=A!q&M))))))r'   c                     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 d S )Nr   r   r3   )r   r   r   r   r|   r'   r%   test_unchangedr      s    VQ"""""VQ"""""VWQZZ,,,,,WfQmmR00000VVAr]]B/////VVAq\\1-------r'   c                  2    t          t          d            d S )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 12222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      sq   9 9 9 9 9 9 * * * * * * ' ' ' ' ' ' % % % % % % ! ! ! ! ! ! ! ! a a a a a a a a a a a a a a a a : : : : : : = = = = = = = = = = 6 6 6 6 6 6 < < < < < <WY---
1aLaLaLaLaLa# # #9 9 9 4  4  4F	8 	8 	83 3 34 4 4; ; ;, , ,
8 8 8	$ 	$ 	$5 5 5
C 
C 
C/ / /"	. 	. 	.* * *. . .3 3 3 3 3r'   