§
    OŠtj  ã                   óŽ   — 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	 ddl
mZ ddlmZ dd	lmZ dd
lmZ  G d„ de¦  «        ZdS )é   )Ú
MatrixExpr)ÚIdentityé    )ÚS)ÚExprBuilder)Úcacheit)ÚPow)Ú_sympify)Ú
MatrixBase)ÚNonSquareMatrixErrorc                   ó¨   ‡ — e Zd Zdˆ fd„	Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚMatPowFc                 ó  •— t          |¦  «        }|j        st          d¦  «        ‚|j        du rt	          d|z  ¦  «        ‚t          |¦  «        }t          ¦   «                              | ||¦  «        }|r|                     d¬¦  «        }|S )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         €ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/matpow.pyr   zMatPow.__new__   sŒ   ø€ Ý˜‰~Œ~ˆØŒ~ð 	>ÝÐ<Ñ=Ô=Ð=àŒ>˜UÐ"Ð"Ý&Ð'FÈÑ'MÑNÔNÐNå�s‰mŒmˆÝ‰gŒg�oŠo˜c 4¨Ñ-Ô-ˆàð 	'Ø—(’( �(Ñ&Ô&ˆCàˆ
ó    c                 ó   — | j         d         S )Nr   ©Úargs©Úselfs    r   r   zMatPow.base   ó   € àŒy˜Œ|Ðr   c                 ó   — | j         d         S )Nr   r!   r#   s    r   r   z
MatPow.exp!   r%   r   c                 ó   — | j         j        S ©N)r   Úshaper#   s    r   r)   zMatPow.shape%   s   € àŒyŒÐr   c                 óD   — | j                              ¦   «         | j        z  S r(   )r   Úas_explicitr   r#   s    r   Ú_get_explicit_matrixzMatPow._get_explicit_matrix)   s   € àŒy×$Ò$Ñ&Ô&¨¬Ñ0Ð0r   c                 ót  ‡— ddl m} |                      ¦   «         Št          ‰t          ¦  «        r‰j        j        r0‰j        j        r$ |ˆfd„t          ‰j        ¦  «        D ¦   «         Ž ŠnC|  	                    ¦   «         s‰ 
                    ¦   «         ||f         S ddlm}  || ||¦  «        S ‰||f         S )Nr   ©ÚMatMulc                 ó   •— g | ]	}‰j         ‘Œ
S © ©r   )Ú.0ÚkÚAs     €r   ú
<listcomp>z!MatPow._entry.<locals>.<listcomp>3   s   ø€ Ð:Ð:Ð:¨˜QœVÐ:Ð:Ð:r   )ÚMatrixElement)Úsympy.matrices.expressionsr/   r   Ú
isinstancer   r   Ú
is_IntegerÚis_positiveÚrangeÚ_is_shape_symbolicr,   Ú"sympy.matrices.expressions.matexprr7   )r$   ÚiÚjÚkwargsr/   r7   r5   s         @r   Ú_entryzMatPow._entry-   sÝ   ø€ Ø5Ð5Ð5Ð5Ð5Ð5Ø�IŠI‰KŒKˆÝ�a�Ñ Ô ð 		1àŒuÔð 1 A¤EÔ$5ð 1Ø�FÐ:Ð:Ð:Ð:­U°1´5©\¬\Ð:Ñ:Ô:Ð;��Ø×,Ò,Ñ.Ô.ð 1Ø×-Ò-Ñ/Ô/°°1°Ô5Ð5ð MÐLÐLÐLÐLÐLØ$�} T¨1¨aÑ0Ô0Ð0Ø��A�Œwˆr   c                 óT  ‡— ‰                      dd¦  «        rˆfd„| j        D ¦   «         \  }}n
| j        \  }}t          |t          ¦  «        r2||j        d         z  }|j        d         }t          |t          ¦  «        °2t          |t          ¦  «        r||z  S |t
          j        k    r|S |t
          j        k    rt          |j	        ¦  «        S |t
          j
        k    rddlm}   ||¦  «        j        di ‰¤ŽS t          |dd ¦  «        }|� ||¦  «        S t          ||¦  «        S )	Nr   Tc              3   ó2   •K  — | ]} |j         di ‰¤ŽV — Œd S )Nr1   )r   )r3   ÚargÚhintss     €r   ú	<genexpr>zMatPow.doit.<locals>.<genexpr>>   s5   øè è € Ð@Ð@¨s˜˜œÐ*Ð* EÐ*Ð*Ð@Ð@Ð@Ð@Ð@Ð@r   r   r   ©ÚInverseÚ_eval_powerr1   )Úgetr"   r9   r   r   r   ÚOneÚZeror   ÚrowsÚNegativeOner8   rI   r   Úgetattr)r$   rF   r   r   rI   Ú
eval_powers    `    r   r   zMatPow.doit<   sH  ø€ Ø�9Š9�V˜TÑ"Ô"ð 	"Ø@Ð@Ð@Ð@°d´iÐ@Ñ@Ô@‰IˆD�#�#àœ	‰IˆD�#õ ˜�vÑ&Ô&ð 	 Ø�4”9˜Q”<ÑˆCØ”9˜Q”<ˆDõ ˜�vÑ&Ô&ð 	 õ �d�JÑ'Ô'ð 	à˜3‘;Ðð •!”%Š<ˆ<ØˆKØ•!”&Š=ˆ=Ý˜DœIÑ&Ô&Ð&Ø•!”-ÒÐØ:Ð:Ð:Ð:Ð:Ð:Ø%�7�7˜4‘=”=Ô%Ð.Ð.¨Ð.Ð.Ð.å˜T =°$Ñ7Ô7ˆ
ØÐ!Ø�:˜c‘?”?Ð"å�d˜CÑ Ô Ð r   c                 óZ   — | j         \  }}t          |                     ¦   «         |¦  «        S r(   )r"   r   Ú	transpose©r$   r   r   s      r   Ú_eval_transposezMatPow._eval_transposeZ   ó'   € Ø”I‰	ˆˆcÝ�d—n’nÑ&Ô&¨Ñ,Ô,Ð,r   c                 óZ   — | j         \  }}t          |                     ¦   «         |¦  «        S r(   )r"   r   ÚadjointrT   s      r   Ú_eval_adjointzMatPow._eval_adjoint^   s%   € Ø”I‰	ˆˆcÝ�d—l’l‘n”n cÑ*Ô*Ð*r   c                 óZ   — | j         \  }}t          |                     ¦   «         |¦  «        S r(   )r"   r   Ú	conjugaterT   s      r   Ú_eval_conjugatezMatPow._eval_conjugateb   rV   r   c                 ó,   — t          j        | |¦  «        S r(   )r	   Ú_eval_derivative)r$   Úxs     r   r^   zMatPow._eval_derivativef   s   € ÝÔ# D¨!Ñ,Ô,Ð,r   c                 ó&  ‡ ‡
— ddl m} ddlm} ddlm} ddlmŠ
 ‰ j        }‰ j	        j
        dk    rå|                     |¦  «        sÐ‰ j	                             |¦  «        }|D ]±}t          |t          |t          d¦  «        |j        d         |‰ j	        |dz
  z  z  |j        d         t          d¦  «        g¦  «        d	d
g|j        ¬¦  «        }|j        d         j        |_        d|_        |j        d         j        |_        d|_        |g|_        Œ²|S |dk    dk    r/|                     ˆ fd„t/          |¦  «        D ¦   «         ¦  «        }	n®|dk    dk    r# ‰
‰ j	        ¦  «                             |¦  «        S |dk     dk    r1|                     ˆ
ˆ fd„t/          | ¦  «        D ¦   «         ¦  «        }	nF|dk    dk    r'‰                      ¦   «                              |¦  «        S t3          d‰ ›d|›�¦  «        ‚|	                     |¦  «        S )Nr   )ÚArrayContractioné   )ÚArrayTensorProductr   r.   rH   )r   r   )r   rb   é   )é   é   é   )Ú	validatorrd   Tc                 ó   •— g | ]	}‰j         ‘Œ
S r1   r2   )r3   r?   r$   s     €r   r6   z8MatPow._eval_derivative_matrix_lines.<locals>.<listcomp>Š   s   ø€ Ð&EÐ&EÐ&E°Q t¤yÐ&EÐ&EÐ&Er   éÿÿÿÿc                 ó0   •— g | ]} ‰‰j         ¦  «        ‘ŒS r1   r2   )r3   r?   rI   r$   s     €€r   r6   z8MatPow._eval_derivative_matrix_lines.<locals>.<listcomp>Ž   s%   ø€ Ð&OÐ&OÐ&O¸a w w¨t¬yÑ'9Ô'9Ð&OÐ&OÐ&Or   zcannot evaluate z derived by )Ú0sympy.tensor.array.expressions.array_expressionsra   Ú*tensor.array.expressions.array_expressionsrc   Úmatmulr/   ÚinverserI   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$   r_   ra   rc   r/   r   Úlrr?   ÚsubexprÚnewexprrI   s   `         @r   rq   z$MatPow._eval_derivative_matrix_linesi   s[  øø€ ØUÐUÐUÐUÐUÐUØTÐTÐTÐTÐTÐTØ"Ð"Ð"Ð"Ð"Ð"Ø$Ð$Ð$Ð$Ð$Ð$ØŒhˆØŒ9Œ?˜fÒ$Ð$¨S¯WªW°Q©Z¬ZÐ$Ø”×8Ò8¸Ñ;Ô;ˆBØð %ð %�Ý%Ø$å#Ø.å (¨¡¤Ø !¤¨¤Ø # D¤I°°A±Ñ$6Ñ 6Ø !¤¨¤Ý (¨¡¤ðñ	ô 	ð " 9ðð /Ô8ðñ ô �ð" +2¬,°q¬/Ô*>�Ô'Ø)*�Ô&Ø+2¬<¸¬?Ô+?�Ô(Ø*+�Ô'Ø#˜9�”�ØˆIØ�!ŠG˜ÒÐØ—o’oÐ&EÐ&EÐ&EÐ&E½%À¹*¼*Ð&EÑ&EÔ&EÑFÔFˆGˆGØ�RŠi˜DÒ Ð Ø�7˜4œ9Ñ%Ô%×CÒCÀAÑFÔFÐFØ�AŠg˜$ÒÐØ—o’oÐ&OÐ&OÐ&OÐ&OÐ&OÅ5È#ÈÁ;Ä;Ð&OÑ&OÔ&OÑPÔPˆGˆGØ�QŠh˜4ÒÐØ—9’9‘;”;×<Ò<¸QÑ?Ô?Ð?å%Ð%ÈDÈDÈDÐRSÐRSÐ&TÑUÔUÐUØ×4Ò4°QÑ7Ô7Ð7r   c                 ó8   — t          | j        | j         ¦  «        S r(   )r   r   r   r#   s    r   Ú_eval_inversezMatPow._eval_inverse•   s   € Ý�d”i $¤( Ñ+Ô+Ð+r   )F)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r)   r   r,   rB   r   rU   rY   r\   r^   rq   r~   Ú__classcell__)r   s   @r   r   r      s"  ø€ € € € € ðð ð ð ð ð ð  ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ð1ð 1ñ „Wð1ðð ð ð!ð !ð !ð<-ð -ð -ð+ð +ð +ð-ð -ð -ð-ð -ð -ð*8ð *8ð *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   r1   r   r   ú<module>r�      så   ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %Ø :Ð :Ð :Ð :Ð :Ð :ðJ,ð J,ð J,ð J,ð J,ˆZñ J,ô J,ð J,ð J,ð J,r   