ó
    ‰*£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         €Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/matpow.pyr   ÚMatPow.__new__   sm   ø€ Ü˜‹~ˆØ�~�~ÜÐ<Ó=Ð=à�>‰>˜UÒ"Ü&Ð'FÈÑ'MÓNÐNä�s‹mˆÜ‰g‰o˜c¨Ó-ˆæØ—(‘( �(Ð&ˆCàˆ
ó    c                 ó    • U R                   S   $ )Nr   ©Úargs©Úselfs    r   r   ÚMatPow.base   ó   € à�y‰y˜‰|Ð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   € à�y‰y�‰Ðr!   c                 óP   • U R                   R                  5       U R                  -  $ r,   )r   Úas_explicitr   r%   s    r   Ú_get_explicit_matrixÚMatPow._get_explicit_matrix)   s   € à�y‰y×$Ñ$Ó&¨¯©Ñ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Ø�I‰I‹KˆÜ�aœ× Ñ à�u‰u×× A§E¡E×$5×$5Ù¬U°1·5±5¬\Ó:ª\¨ŸVœV©\Ñ:Ð;‘Ø×,Ñ,×.Ñ.Ø×-Ñ-Ó/°°Ñ5Ð5õ MÙ$ T¨aÓ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   øé € Ð@²i¨sŸšÑ* EÖ*²iùs   ƒ!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ÿ   ø€ Ø�9‰9�V˜T×"Ñ"Ü@°d·i²iÓ@‰IˆD�#àŸ	™	‰IˆDô ˜œv×&Ñ&Ø—9‘9˜Q‘<ÑˆCØ—9‘9˜Q‘<ˆDô ˜œv×&Ó&ô �dœJ×'Ñ'à‘;Ðð ”!—%‘%‹<ØˆKØ”!—&‘&‹=Ü˜DŸI™IÓ&Ð&Ø”!—-‘-ÓÝ:Ù˜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   ó!   € Ø—I‘I‰	ˆÜ�d—n‘nÓ&¨Ó,Ð,r!   c                 óR   • U R                   u  p[        UR                  5       U5      $ r,   )r$   r   ÚadjointrZ   s      r   Ú_eval_adjointÚMatPow._eval_adjoint^   s    € Ø—I‘I‰	ˆÜ�d—l‘l“n cÓ*Ð*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  o€R                  PM     sn5      n
OªU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   Téÿÿÿÿz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Ý"Ý$Ø�h‰hˆØ�9‰9�?‰?˜fÓ$¨S¯W©W°Q¯Z©ZØ—‘×8Ñ8¸Ó;ˆBÛ�Ü%Ø$ä#Ø.ä (¨£Ø !§¡¨¡Ø #§I¡I°°A±Ñ$6Ñ 6Ø !§¡¨¡Ü (¨£ðó	ð " 9ðð /×8Ñ8ñ�ð" +2¯,©,°q©/×*>Ñ*>�Ô'Ø)*�Ô&Ø+2¯<©<¸©?×+?Ñ+?�Ô(Ø*+�Ô'Ø#˜9�–ñ- ð. ˆIØ�!‰G˜ÓØ—o‘o¼%À¼*Ó&Eº*°Q§y¤y¹*Ñ&EÓF‰GØ�R‰i˜DÓ Ù˜4Ÿ9™9Ó%×CÑCÀAÓFÐFØ�A‰g˜$ÓØ—o‘oÄ5È#ÈÄ;Ó&OÂ;¸a w¨t¯y©yÖ'9Á;Ñ&OÓP‰GØ�Q‰h˜4ÓØ—9‘9“;×<Ñ<¸QÓ?Ð?å%ËDÒRSÐ&TÓUÐUØ×4Ñ4°QÓ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   € Ü�d—i‘i $§(¡( Ó+Ð+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òò!ò<-ò+ò-ò-ò*8÷X,ð ,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!   