
    \h                         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	  SSK
Jr  SSKJr  SS	KJr  SS
KJr   " S S\5      rg)   )
MatrixExpr)Identity    )S)ExprBuilder)cacheit)Pow)_sympify)
MatrixBase)NonSquareMatrixErrorc                      ^  \ rS rSrSU 4S jjr\S 5       r\S 5       r\S 5       r\	S 5       r
S rS rS	 rS
 rS rS rS rS rSrU =r$ )MatPow   c                    > [        U5      nUR                  (       d  [        S5      eUR                  SL a  [	        SU-  5      e[        U5      n[
        TU ]  XU5      nU(       a  UR                  SS9nU$ )NzMatPow base should be a matrixFzPower of non-square matrix %s)deep)r
   	is_Matrix	TypeError	is_squarer   super__new__doit)clsbaseexpevaluateoptionsobj	__class__s         Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/matpow.pyr   MatPow.__new__   sm    ~~~<==>>U"&'F'MNNsmgoc-(((&C
    c                      U R                   S   $ )Nr   argsselfs    r   r   MatPow.base       yy|r!   c                      U R                   S   $ )Nr   r#   r%   s    r   r   
MatPow.exp!   r(   r!   c                 .    U R                   R                  $ N)r   shaper%   s    r   r-   MatPow.shape%   s    yyr!   c                 P    U R                   R                  5       U R                  -  $ r,   )r   as_explicitr   r%   s    r   _get_explicit_matrixMatPow._get_explicit_matrix)   s    yy$$&00r!   c                    SSK Jn  U R                  5       n[        U[        5      (       a  UR
                  R                  (       aN  UR
                  R                  (       a3  U" [        UR
                  5       Vs/ s H  oeR                  PM     sn6 nO8U R                  5       (       d  UR                  5       X4   $ SSKJn  U" XU5      $ XQU4   $ s  snf )Nr   MatMul)MatrixElement)sympy.matrices.expressionsr5   r   
isinstancer   r   
is_Integeris_positiveranger   _is_shape_symbolicr1   "sympy.matrices.expressions.matexprr6   )r&   ijkwargsr5   Akr6   s           r   _entryMatPow._entry-   s    5IIKa  uuAEE$5$5U155\:\VV\:;,,..--/55 M$Ta00Aw ;s   ;Cc                 r  ^ TR                  SS5      (       a  U4S jU R                   5       u  p#OU R                  u  p#[        U[        5      (       a7  X2R                  S   -  nUR                  S   n[        U[        5      (       a  M7  [        U[        5      (       a  X#-  $ U[
        R                  :X  a  U$ U[
        R                  :X  a  [        UR                  5      $ U[
        R                  :X  a  SSKJn  U" U5      R                  " S0 TD6$ [        USS 5      nUb  U" U5      $ [        X#5      $ )	Nr   Tc              3   F   >#    U  H  oR                   " S0 TD6v   M     g 7f)N )r   ).0arghintss     r   	<genexpr>MatPow.doit.<locals>.<genexpr>>   s     @is*E*is   !r   r   Inverse_eval_powerrG   )getr$   r8   r   r   r   OneZeror   rowsNegativeOner7   rN   r   getattr)r&   rJ   r   r   rN   
eval_powers    `    r   r   MatPow.doit<   s    99VT""@dii@ID#		ID v&&99Q<C99Q<D v&& dJ''; !%%<K!&&=DII&&!--:4=%%...T=$7
!c?"d  r!   c                 R    U R                   u  p[        UR                  5       U5      $ r,   )r$   r   	transposer&   r   r   s      r   _eval_transposeMatPow._eval_transposeZ   !    II	dnn&,,r!   c                 R    U R                   u  p[        UR                  5       U5      $ r,   )r$   r   adjointrZ   s      r   _eval_adjointMatPow._eval_adjoint^   s     II	dllnc**r!   c                 R    U R                   u  p[        UR                  5       U5      $ r,   )r$   r   	conjugaterZ   s      r   _eval_conjugateMatPow._eval_conjugateb   r]   r!   c                 .    [         R                  " X5      $ r,   )r	   _eval_derivative)r&   xs     r   rg   MatPow._eval_derivativef   s    ##D,,r!   c                 j   SSK Jn  SSKJn  SSKJn  SSKJn  U R                  nU R                  R                  S:X  a  UR                  U5      (       d  U R                  R                  U5      nU H  n[        U[        U[        S5      UR                  S   X`R                  US-
  -  -  UR                  S   [        S5      /5      S	S
/UR                   S9n	U	R"                  S   R"                  Ul        SUl        U	R"                  S   R"                  Ul        SUl        U	/Ul        M     U$ US:  S:X  a5  UR-                  [/        U5       Vs/ s H  oR                  PM     sn5      n
OUS:H  S:X  a!  U" U R                  5      R                  U5      $ US:  S:X  a<  UR-                  [/        U* 5       Vs/ s H  o" U R                  5      PM     sn5      n
O;US:H  S:X  a  U R1                  5       R                  U5      $ [3        SU < SU< 35      eU
R                  U5      $ s  snf s  snf )Nr   )ArrayContraction   )ArrayTensorProductr   r4   rM   )r   r   )r   rl      )         )	validatorrn   Tzcannot evaluate z derived by )0sympy.tensor.array.expressions.array_expressionsrk   *tensor.array.expressions.array_expressionsrm   matmulr5   inverserN   r   r   r-   has_eval_derivative_matrix_linesr   r   _lines	_validater$   _first_pointer_parent_first_pointer_index_second_pointer_parent_second_pointer_indexfromiterr;   r   NotImplementedError)r&   rh   rk   rm   r5   rN   r   lrr>   subexprnewexprs              r   ry   $MatPow._eval_derivative_matrix_linesi   s   UT"$hh99??f$SWWQZZ88;B%$#. ( ! #IIA$6 6 ! (	 "9 /88" +2,,q/*>*>')*&+2<<?+?+?(*+'#9- . I!Goo%*&E*Qyy*&EFGRiD 499%CCAFFAg$oo5#;&O;awtyy'9;&OPGQh499;<<Q??%DRS&TUU44Q77 'F 'Ps   H+<H0c                 D    [        U R                  U R                  * 5      $ r,   )r   r   r   r%   s    r   _eval_inverseMatPow._eval_inverse   s    dii$((++r!   rG   )F)__name__
__module____qualname____firstlineno__r   propertyr   r   r-   r   r1   rC   r   r[   r`   rd   rg   ry   r   __static_attributes____classcell__)r   s   @r   r   r      s            1 1!<-+--*8X, ,r!   r   N)matexprr   specialr   
sympy.corer   sympy.core.exprr   sympy.core.cacher   sympy.core.powerr	   sympy.core.sympifyr
   sympy.matricesr   sympy.matrices.exceptionsr   r   rG   r!   r   <module>r      s.       ' $   ' % :J,Z J,r!   