§
    OŠtjšd  ã                   óÈ   — d dl Z d dlZd dlmZ d dlmZ  ed¦  «        Zerd dlmZmZm	Z	 n' G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z	 G d„ de¦  «        Z
dS )é    N)Úimport_module)ÚLaTeXParsingErrorÚlark)ÚTransformerÚTokenÚTreec                   ó   — e Zd Zd„ ZdS )r   c                 ó   — d S ©N© )ÚselfÚargss     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/parsing/latex/lark/transformer.pyÚ	transformzTransformer.transform   s   € ØˆDó    N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s#   € € € € € ð	ð 	ð 	ð 	ð 	r   r   c                   ó   — e Zd ZdS )r   N©r   r   r   r   r   r   r   r      ó   € € € € € Øˆr   r   c                   ó   — e Zd ZdS )r   Nr   r   r   r   r   r      r   r   r   c                   óL  — e Zd ZdZej        Zej        j        j	        Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ 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-„ Z6d.„ Z7d/„ Z8d0„ Z9d1„ Z:d2„ Z;d3„ Z<d4„ Z=d5„ Z>d6„ Z?d7„ Z@d8„ ZAd9„ ZBd:„ ZCd;„ ZDd<„ ZEd=„ ZFd>„ ZGd?„ ZHd@„ ZIdA„ ZJdB„ ZKdC„ ZLdD„ ZMdE„ ZNdF„ ZOdG„ ZPdH„ ZQdI„ ZRdJ„ ZSdK„ ZTdL„ ZUdM„ ZVdN„ ZWdO„ ZXdP„ ZYdQeZfdR„Z[dS„ Z\dT„ Z]dU„ Z^dV„ Z_dW„ Z`dX„ ZadYS )ZÚTransformToSymPyExpra   Returns a SymPy expression that is generated by traversing the ``lark.Tree``
    passed to the ``.transform()`` function.

    Notes
    =====

    **This class is never supposed to be used directly.**

    In order to tweak the behavior of this class, it has to be subclassed and then after
    the required modifications are made, the name of the new class should be passed to
    the :py:class:`LarkLaTeXParser` class by using the ``transformer`` argument in the
    constructor.

    Parameters
    ==========

    visit_tokens : bool, optional
        For information about what this option does, see `here
        <https://lark-parser.readthedocs.io/en/latest/visitors.html#lark.visitors.Transformer>`_.

        Note that the option must be set to ``True`` for the default parser to work.
    c                 ó   — t           j        S r   )ÚsympyÚoo©r   Útokenss     r   Ú	CMD_INFTYzTransformToSymPyExpr.CMD_INFTY5   s	   € ÝŒxˆr   c                 óf   — t          j        dd|dd …         ¦  «        }t          j        |¦  «        S )NÚvarÚ é   )ÚreÚsubr   ÚSymbol)r   r   Úvariable_names      r   ÚGREEK_SYMBOL_WITH_PRIMESz-TransformToSymPyExpr.GREEK_SYMBOL_WITH_PRIMES8   s/   € õ œ˜u b¨&°°°¬*Ñ5Ô5ˆåŒ|˜MÑ*Ô*Ð*r   c                 óÞ   — |j                              d¦  «        \  }}|                     d¦  «        r"t          j        |›d|dd…         ›d�¦  «        S t          j        |›d|›d�¦  «        S )NÚ_Ú{ú_{r$   éÿÿÿÿÚ})ÚvalueÚsplitÚ
startswithr   r'   )r   r   Úbaser&   s       r   Ú!LATIN_SYMBOL_WITH_LATIN_SUBSCRIPTz6TransformToSymPyExpr.LATIN_SYMBOL_WITH_LATIN_SUBSCRIPT?   sq   € Ø”L×&Ò& sÑ+Ô+‰	ˆˆcØ�>Š>˜#ÑÔð 	9Ý”<¨T¨T¨T°3°q¸°t´9°9°9Ð =Ñ>Ô>Ð>å”<¨T¨T¨T°3°3°3Ð 7Ñ8Ô8Ð8r   c                 ó  — |j                              d¦  «        \  }}t          j        dd|dd …         ¦  «        }|                     d¦  «        r"t          j        |›d|dd…         ›d�¦  «        S t          j        |›d|›d�¦  «        S )	Nr+   r"   r#   r$   r,   r-   r.   r/   ©r0   r1   r%   r&   r2   r   r'   ©r   r   r3   r&   Úgreek_letters        r   Ú!GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTz6TransformToSymPyExpr.GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTF   s�   € Ø”L×&Ò& sÑ+Ô+‰	ˆˆcÝ”v˜e R¨¨a¨b¨b¬Ñ2Ô2ˆà�>Š>˜#ÑÔð 	AÝ”<¨\¨\¨\¸3¸qÀ¸t¼9¸9¸9Ð EÑFÔFÐFå”<¨\¨\¨\¸3¸3¸3Ð ?Ñ@Ô@Ð@r   c                 óð   — |j                              d¦  «        \  }}|                     d¦  «        r|dd…         }n
|dd …         }t          j        dd|¦  «        }t          j        |›d|›d	�¦  «        S )
Nr+   r,   é   r.   r$   r"   r#   r-   r/   )r0   r1   r2   r%   r&   r   r'   r7   s        r   Ú!LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTz6TransformToSymPyExpr.LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTO   s{   € Ø”L×&Ò& sÑ+Ô+‰	ˆˆcØ�>Š>˜#ÑÔð 	#Ø˜q ˜tœ9ˆLˆLà˜q˜r˜rœ7ˆLå”v˜e R¨Ñ6Ô6ˆÝŒ|¨¨¨¨|¨|¨|Ð<Ñ=Ô=Ð=r   c                 ó,  — |j                              d¦  «        \  }}t          j        dd|dd …         ¦  «        }|                     d¦  «        r|dd…         }n
|dd …         }t          j        dd|¦  «        }t          j        |›d|›d	�¦  «        S )
Nr+   r"   r#   r$   r,   r;   r.   r-   r/   r6   )r   r   r3   r&   Ú
greek_baseÚ	greek_subs         r   Ú!GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTz6TransformToSymPyExpr.GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTZ   s–   € Ø”L×&Ò& sÑ+Ô+‰	ˆˆcÝ”V˜E 2 t¨A¨B¨B¤xÑ0Ô0ˆ
à�>Š>˜#ÑÔð 	 Ø˜A˜b˜Dœ	ˆIˆIà˜A˜B˜BœˆIå”F˜5 " iÑ0Ô0ˆ	ÝŒ|¨¨¨°Y°Y°YÐ?Ñ@Ô@Ð@r   c                 óÌ   — t          |¦  «        dk    rt          j        |d         ¦  «        S t          |¦  «        dk    r#t          j        |d         |d         z   ¦  «        S d S )Né   r;   é   )Úlenr   r'   r   s     r   Úmulti_letter_symbolz(TransformToSymPyExpr.multi_letter_symbolf   s]   € Ýˆv‰;Œ;˜!ÒÐÝ”<  q¤	Ñ*Ô*Ð*Ýˆv‰;Œ;˜!ÒÐÝ”<  q¤	¨F°1¬IÑ 5Ñ6Ô6Ð6ð Ðr   c                 óø   — |d         j         dk    rt          j        S d|d         v r*t          j        j                             |d         ¦  «        S t          j        j                             |d         ¦  «        S )Nr   ÚCMD_IMAGINARY_UNITú.)Útyper   ÚIÚcoreÚnumbersÚFloatÚIntegerr   s     r   ÚnumberzTransformToSymPyExpr.numberl   sd   € Ø�!Œ9Œ>Ð1Ò1Ð1Ý”7ˆNà�&˜”)ÐÐÝ”:Ô%×+Ò+¨F°1¬IÑ6Ô6Ð6å”:Ô%×-Ò-¨f°Q¬iÑ8Ô8Ð8r   c                 ó   — |d         S ©Nr   r   r   s     r   Úlatex_stringz!TransformToSymPyExpr.latex_stringu   ó   € Ø�aŒyÐr   c                 ó   — |d         S ©Nr$   r   r   s     r   Úgroup_round_parenthesesz,TransformToSymPyExpr.group_round_parenthesesx   rS   r   c                 ó   — |d         S rU   r   r   s     r   Úgroup_square_bracketsz*TransformToSymPyExpr.group_square_brackets{   rS   r   c                 ó   — |d         S rU   r   r   s     r   Úgroup_curly_parenthesesz,TransformToSymPyExpr.group_curly_parentheses~   rS   r   c                 óD   — t          j        |d         |d         ¦  «        S ©Nr   r;   )r   ÚEqr   s     r   ÚeqzTransformToSymPyExpr.eq�   ó   € ÝŒx˜˜qœ	 6¨!¤9Ñ-Ô-Ð-r   c                 óD   — t          j        |d         |d         ¦  «        S r\   )r   ÚNer   s     r   ÚnezTransformToSymPyExpr.ne„   r_   r   c                 óD   — t          j        |d         |d         ¦  «        S r\   )r   ÚLtr   s     r   ÚltzTransformToSymPyExpr.lt‡   r_   r   c                 óD   — t          j        |d         |d         ¦  «        S r\   )r   ÚLer   s     r   ÚltezTransformToSymPyExpr.lteŠ   r_   r   c                 óD   — t          j        |d         |d         ¦  «        S r\   )r   ÚGtr   s     r   ÚgtzTransformToSymPyExpr.gt�   r_   r   c                 óD   — t          j        |d         |d         ¦  «        S r\   )r   ÚGer   s     r   ÚgtezTransformToSymPyExpr.gte�   r_   r   c                 ó*  — t          |¦  «        dk    r|d         S t          |¦  «        dk    rd|d         }|d         }|                      |¦  «        s|                      |¦  «        rt          j        ||¦  «        S t          j        ||¦  «        S d S )Nr;   r$   é   r   )rD   Ú_obj_is_sympy_Matrixr   ÚMatAddÚAdd©r   r   ÚlhÚrhs       r   ÚaddzTransformToSymPyExpr.add“   s—   € Ýˆv‰;Œ;˜!ÒÐØ˜!”9ÐÝˆv‰;Œ;˜!ÒÐØ˜”ˆBØ˜”ˆBà×(Ò(¨Ñ,Ô,ð ,°×0IÒ0IÈ"Ñ0MÔ0Mð ,Ý”| B¨Ñ+Ô+Ð+å”9˜R Ñ$Ô$Ð$ð Ðr   c                 ó¬  — t          |¦  «        dk    r5|d         }|                      |¦  «        rt          j        d|¦  «        S | S t          |¦  «        dk    rx|d         }|d         }|                      |¦  «        s|                      |¦  «        r(t          j        |t          j        d|¦  «        ¦  «        S t          j        || ¦  «        S d S )Nr;   r$   r.   rp   r   )rD   rq   r   ÚMatMulrr   rs   )r   r   Úxru   rv   s        r   r&   zTransformToSymPyExpr.subŸ   sÓ   € Ýˆv‰;Œ;˜!ÒÐØ�q”	ˆAà×(Ò(¨Ñ+Ô+ð +Ý”| B¨Ñ*Ô*Ð*à�2ˆIÝˆv‰;Œ;˜!ÒÐØ˜”ˆBØ˜”ˆBà×(Ò(¨Ñ,Ô,ð >°×0IÒ0IÈ"Ñ0MÔ0Mð >Ý”| B­¬°R¸Ñ(<Ô(<Ñ=Ô=Ð=å”9˜R " Ñ%Ô%Ð%ð Ðr   c                 óÊ   — |d         }|d         }|                       |¦  «        s|                       |¦  «        rt          j        ||¦  «        S t          j        ||¦  «        S r\   )rq   r   ry   ÚMulrt   s       r   ÚmulzTransformToSymPyExpr.mul°   sc   € Ø�AŒYˆØ�AŒYˆà×$Ò$ RÑ(Ô(ð 	(¨D×,EÒ,EÀbÑ,IÔ,Ið 	(Ý”<  BÑ'Ô'Ð'åŒy˜˜RÑ Ô Ð r   c                 óF   — |                       |d         |d         ¦  «        S r\   )Ú_handle_divisionr   s     r   ÚdivzTransformToSymPyExpr.div¹   s    € Ø×$Ò$ V¨A¤Y°°q´	Ñ:Ô:Ð:r   c                 óÈ  — ddl m}m} t          |d         |¦  «        r4t          |d         |¦  «        rddl m}  ||d         |d         ¦  «        S |d         t          j        d¦  «        k    r|d         |d         fS t          |d         t          ¦  «        r't          j        |d         |d         d         ¦  «        S t          j	        |d         |d         ¦  «        S )Nr   )ÚBraÚKetr$   )ÚOuterProductÚd)
Úsympy.physics.quantumr‚   rƒ   Ú
isinstancer„   r   r'   ÚtupleÚ
Derivativer|   )r   r   r‚   rƒ   r„   s        r   Úadjacent_expressionsz)TransformToSymPyExpr.adjacent_expressions¼   sî   € ð 	3Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ý�f˜Q”i Ñ%Ô%ð 
	3­*°V¸A´YÀÑ*DÔ*Dð 
	3Ø:Ð:Ð:Ð:Ð:Ð:Ø�<  q¤	¨6°!¬9Ñ5Ô5Ð5Ø�AŒY�%œ, sÑ+Ô+Ò+Ð+à˜!”9˜f QœiÐ'Ð'Ý˜˜qœ	¥5Ñ)Ô)ð 	3åÔ# F¨1¤I¨v°a¬y¸¬|Ñ<Ô<Ð<å”9˜V AœY¨¨q¬	Ñ2Ô2Ð2r   c                 ó–  — d„ }d„ }d„ }d„ }|d         }t          |¦  «        dk    r|d         }t          |¦  «        dk    r|d         }|                      |¦  «        �r”|t          j        d	¦  «        k    rt          j        |¦  «        S |t          j        d
¦  «        k    rt          j        |¦  «        S  ||¦  «        r3|j        }t          |¦  «        dz  dk    r|S t          j        |¦  «        S  ||¦  «        rC|j        }t          |¦  «        t          d¦  «        z  dz  dk    r|S t          j        |¦  «        S  ||¦  «        rE|j        }t          |¦  «        dz  dk    r|                     ¦   «         S t          j        |¦  «        S  ||¦  «        rU|j        }t          |¦  «        t          d¦  «        z  dz  dk    r|                     ¦   «         S t          j        |¦  «        S  ||¦  «        s! ||¦  «        s ||¦  «        s ||¦  «        rt          |› d|› d�¦  «        ‚t          j	        ||¦  «        S )Nc                 óB   — t          | t          ¦  «        o
| j        dk    S )NÚPRIMES©r‡   r   rI   ©rz   s    r   Úisprimez1TransformToSymPyExpr.superscript.<locals>.isprimeÍ   s   € Ý˜a¥Ñ'Ô'Ð>¨A¬F°hÒ,>Ð>r   c                 óX   — t          | t          ¦  «        o| j        dk    p
| j        dk    S )NÚPRIMES_VIA_CMDÚ	CMD_PRIMErŽ   r�   s    r   Ú
iscmdprimez4TransformToSymPyExpr.superscript.<locals>.iscmdprimeÐ   s5   € Ý˜a¥Ñ'Ô'ð G¨Q¬VÐ7GÒ-Gð .FØ01´¸+Ò0EðGr   c                 óB   — t          | t          ¦  «        o
| j        dk    S )NÚSTARSrŽ   r�   s    r   Úisstarz0TransformToSymPyExpr.superscript.<locals>.isstarÔ   s   € Ý˜a¥Ñ'Ô'Ð=¨A¬F°gÒ,=Ð=r   c                 óX   — t          | t          ¦  «        o| j        dk    p
| j        dk    S )NÚSTARS_VIA_CMDÚCMD_ASTERISKrŽ   r�   s    r   Ú	iscmdstarz3TransformToSymPyExpr.superscript.<locals>.iscmdstar×   s4   € Ý˜a¥Ñ'Ô'ð J¨Q¬V°Ò-Fð .IØ01´¸.Ò0HðJr   r   rp   r;   rC   ÚTÚHz\primez\astz with superscript ú is not understood.)
rD   rq   r   r'   Ú	TransposeÚadjointr0   Údoitr   ÚPow)r   r   r�   r”   r—   r›   r3   Úsups           r   Úsuperscriptz TransformToSymPyExpr.superscriptÌ   s‡  € ð	?ð 	?ð 	?ð	Gð 	Gð 	Gð	>ð 	>ð 	>ð	Jð 	Jð 	Jð �aŒyˆÝˆv‰;Œ;˜!ÒÐØ˜”)ˆCÝˆv‰;Œ;˜!ÒÐð
 ˜”)ˆCà×$Ò$ TÑ*Ô*ñ 	+Ø•e”l 3Ñ'Ô'Ò'Ð'Ý” tÑ,Ô,Ð,Ø•e”l 3Ñ'Ô'Ò'Ð'Ý”} TÑ*Ô*Ð*Øˆw�s‰|Œ|ð -Ø”i�Ý�s‘8”8˜a‘< 1Ò$Ð$Ø�KÝ” tÑ,Ô,Ð,Øˆz˜#‰Œð -Ø”i�Ý˜‘H”H�S ™^œ^Ñ+¨qÑ0°AÒ5Ð5Ø�KÝ” tÑ,Ô,Ð,Øˆv�c‰{Œ{ð +Ø”i�õ �s‘8”8˜a‘< 1Ò$Ð$ØŸ9š9™;œ;Ð&Ý”} TÑ*Ô*Ð*Øˆy˜‰~Œ~ð +Ø”i�å˜‘H”H�S ™\œ\Ñ)¨QÑ.°!Ò3Ð3ØŸ9š9™;œ;Ð&Ý”} TÑ*Ô*Ð*àˆ7�3‰<Œ<ð 	Y˜:˜: c™?œ?ð 	Y¨f¨f°S©k¬kð 	Y¸Y¸YÀs¹^¼^ð 	YÝ# tÐ$WÐ$W¸sÐ$WÐ$WÐ$WÑXÔXÐXåŒy˜˜sÑ#Ô#Ð#r   c                 óÚ   — |d         }|d         j         }|                      |¦  «        st          d|› d|› d�¦  «        ‚t          |¦  «        dz  dk    r|S t	          j        |¦  «        S )Nr   r$   ú(ú)rž   r;   )r0   rq   r   rD   r   rŸ   ©r   r   r3   Úprimess       r   Úmatrix_primez!TransformToSymPyExpr.matrix_prime  sy   € Ø�aŒyˆØ˜””ˆà×(Ò(¨Ñ.Ô.ð 	LÝ#Ð$J¨Ð$JÐ$J¨vÐ$JÐ$JÐ$JÑKÔKÐKåˆv‰;Œ;˜‰?˜aÒÐØˆKåŒ˜tÑ$Ô$Ð$r   c                 óf   — |d         }|d         j         }t          j        |j        › |› �¦  «        S )Nr   r$   )r0   r   r'   Únamer¨   s       r   Úsymbol_primez!TransformToSymPyExpr.symbol_prime  s3   € Ø�aŒyˆØ˜””ˆåŒ|˜tœyÐ2¨&Ð2Ð2Ñ3Ô3Ð3r   c                 ó¢   — |d         }t          |d         t          ¦  «        r|d         \  }}d|fS |d         }|                      ||¦  «        S )Nr$   r;   Ú
derivative)r‡   rˆ   r   )r   r   Ú	numeratorr+   ÚvariableÚdenominators         r   ÚfractionzTransformToSymPyExpr.fraction  s[   € Ø˜1”Iˆ	Ý�f˜Q”i¥Ñ'Ô'ð 	Aà  œ)‰KˆAˆxð   Ð)Ð)à  œ)ˆKØ×(Ò(¨°KÑ@Ô@Ð@r   c                 óD   — t          j        |d         |d         ¦  «        S )Nr$   r;   )r   Úbinomialr   s     r   rµ   zTransformToSymPyExpr.binomial&  s   € ÝŒ~˜f Qœi¨°¬Ñ3Ô3Ð3r   c                 ó@  — d }d }d|v r|                      d¦  «        }d|v r|                      d¦  «        }|r||dz            nd }|r||dz            nd }|                      |¦  «        }|€t          d¦  «        ‚|                      |¦  «        dz   }||         }|�|€t          d¦  «        ‚|�|€t          d¦  «        ‚|�||dz
  k    rd}	n"|�||dz
  k    rd}	n|dk    rd}	n||dz
           }	|�t          j        |	|||f¦  «        S t          j        |	|¦  «        S )	Nr+   ú^r$   ztDifferential symbol was not found in the expression.Valid differential symbols are "d", "\text{d}, and "\mathrm{d}".úFLower bound for the integral was found, but upper bound was not found.úFUpper bound for the integral was found, but lower bound was not found.rp   r;   )ÚindexÚ_extract_differential_symbolr   r   ÚIntegral)
r   r   Úunderscore_indexÚcaret_indexÚlower_boundÚupper_boundÚdifferential_symbolÚdifferential_variable_indexÚdifferential_variableÚ	integrands
             r   Únormal_integralz$TransformToSymPyExpr.normal_integral)  sª  € ØÐØˆà�&ˆ=ˆ=ð  &Ÿ|š|¨CÑ0Ô0Ðà�&ˆ=ˆ=ð !Ÿ,š, sÑ+Ô+ˆKà6FÐP�fÐ-°Ñ1Ô2Ð2ÈDˆØ1<ÐF�f˜[¨1™_Ô-Ð-À$ˆà"×?Ò?ÀÑGÔGÐàÐ&Ý#ð %nñ oô oð oð '-§l¢lÐ3FÑ&GÔ&GÈ!Ñ&KÐ#Ø &Ð'BÔ CÐð Ð" {Ð':å#Ð$lÑmÔmÐmàÐ" {Ð':å#Ð$lÑmÔmÐmð Ð'Ð,<Ð@[Ð^_Ñ@_Ò,_Ð,_ð ˆIˆIØÐ$¨Ð8SÐVWÑ8WÒ)WÐ)Wð ˆIˆIØ(¨AÒ-Ð-ð ˆIˆIð Ð:¸QÑ>Ô?ˆIàÐ"õ
 ”> )Ð.CÀ[ÐR]Ð-^Ñ_Ô_Ð_õ ”> )Ð-BÑCÔCÐCr   c                 ó†   — t          |¦  «        dk    r
d|d         fS t          |¦  «        dk    r|d         |d         fS d S )Nrp   r$   rB   r;   )rD   r   s     r   Úgroup_curly_parentheses_intz0TransformToSymPyExpr.group_curly_parentheses_intl  sO   € õ ˆv‰;Œ;˜!ÒÐØ�f˜Q”i�<ÐÝ�‰[Œ[˜AÒÐØ˜!”9˜f QœiÐ'Ð'ð Ðr   c                 ó|   — |d         \  }}|d         }t          j        |t          j        |d¦  «        ¦  «        |fS )Nr$   r;   r.   )r   r|   r¢   )r   r   r°   r±   r²   s        r   Úspecial_fractionz%TransformToSymPyExpr.special_fractionu  s>   € Ø$ QœiÑˆ	�8Ø˜Q”iˆõ Œy˜¥E¤I¨k¸2Ñ$>Ô$>Ñ?Ô?ÀÐIÐIr   c                 ój  — d }d }d|v r|                      d¦  «        }d|v r|                      d¦  «        }|r||dz            nd }|r||dz            nd }|�|€t          d¦  «        ‚|�|€t          d¦  «        ‚|d         \  }}|�t          j        ||||f¦  «        S t          j        ||¦  «        S )Nr+   r·   r$   r¸   r¹   r.   )rº   r   r   r¼   )r   r   r½   r¾   r¿   rÀ   rÄ   rÃ   s           r   Úintegral_with_special_fractionz3TransformToSymPyExpr.integral_with_special_fraction|  sõ   € ØÐØˆà�&ˆ=ˆ=ð  &Ÿ|š|¨CÑ0Ô0Ðà�&ˆ=ˆ=ð !Ÿ,š, sÑ+Ô+ˆKà6FÐP�fÐ-°Ñ1Ô2Ð2ÈDˆØ1<ÐF�f˜[¨1™_Ô-Ð-À$ˆð Ð" {Ð':å#Ð$lÑmÔmÐmàÐ" {Ð':å#Ð$lÑmÔmÐmà+1°"¬:Ñ(ˆ	Ð(àÐ"õ
 ”> )Ð.CÀ[ÐR]Ð-^Ñ_Ô_Ð_õ ”> )Ð-BÑCÔCÐCr   c                 ó  — |                      d¦  «        }|                      d¦  «        }|                      d|¦  «        }|                      d|¦  «        }||dz   |…         }||dz   d …         }|d         }|d         }	|d         }
||	|
fS )Nr+   r·   r,   r/   r$   r   r.   ©rº   )r   r   r½   r¾   Úleft_brace_indexÚright_brace_indexÚbottom_limitÚ	top_limitÚindex_variableÚlower_limitÚupper_limits              r   Úgroup_curly_parentheses_specialz4TransformToSymPyExpr.group_curly_parentheses_special£  sª   € Ø!Ÿ<š<¨Ñ,Ô,ÐØ—l’l 3Ñ'Ô'ˆð "Ÿ<š<¨Ð-=Ñ>Ô>ÐØ"ŸLšL¨Ð.>Ñ?Ô?ÐàÐ.°Ñ2Ð4EÐEÔFˆð ˜;¨™?Ð+Ð+Ô,ˆ	ð & aœˆØ" 2Ô&ˆØ ”lˆð ˜{¨KÐ7Ð7r   c                 óD   — t          j        |d         |d         ¦  «        S ©Nr;   r$   )r   ÚSumr   s     r   Ú	summationzTransformToSymPyExpr.summationÆ  s   € ÝŒy˜ œ F¨1¤IÑ.Ô.Ð.r   c                 óD   — t          j        |d         |d         ¦  «        S r×   )r   ÚProductr   s     r   ÚproductzTransformToSymPyExpr.productÉ  s   € ÝŒ}˜V AœY¨¨q¬	Ñ2Ô2Ð2r   c                 óâ   — |                      d¦  «        }d|v r"|                      d|¦  «        }||dz            }n||dz            }|dk    r
|d         dfS |dk    r
|d         dfS |d         dfS )Nr·   r,   r$   ú+r   ú-ú+-rÍ   )r   r   r¾   Úleft_curly_brace_indexÚ	directions        r   Úlimit_dir_exprz#TransformToSymPyExpr.limit_dir_exprÌ  s�   € Ø—l’l 3Ñ'Ô'ˆà�&ˆ=ˆ=Ø%+§\¢\°#°{Ñ%CÔ%CÐ"ØÐ5¸Ñ9Ô:ˆIˆIà˜{¨Q™Ô/ˆIà˜ÒÐØ˜!”9˜c�>Ð!Ø˜#ÒÐØ˜!”9˜c�>Ð!à˜!”9˜d�?Ð"r   c                 ó~   — |d         }t          |d         t          ¦  «        r|d         \  }}n
|d         }d}|||fS )Nr$   rp   rà   )r‡   rˆ   ©r   r   Úlimit_variableÚdestinationrâ   s        r   Úgroup_curly_parentheses_limz0TransformToSymPyExpr.group_curly_parentheses_limÜ  sL   € Ø œˆÝ�f˜Q”i¥Ñ'Ô'ð 	Ø%+¨A¤YÑ"ˆK˜˜à  œ)ˆKØˆIà˜{¨IÐ5Ð5r   c                 óT   — |d         \  }}}t          j        |d         |||¦  «        S ©Nr;   r.   )r   ÚLimitrå   s        r   ÚlimitzTransformToSymPyExpr.limitæ  s,   € Ø17¸´Ñ.ˆ˜ YåŒ{˜6 "œ: ~°{ÀIÑNÔNÐNr   c                 ó   — |d         S rU   r   r   s     r   Údifferentialz!TransformToSymPyExpr.differentialë  rS   r   c                 óD   — t          j        |d         |d         ¦  «        S )Nr.   rC   )r   r‰   r   s     r   r¯   zTransformToSymPyExpr.derivativeî  s   € ÝÔ  r¤
¨F°1¬IÑ6Ô6Ð6r   c                 óR   — t          |¦  «        dk    r|S d„ }t          ||¦  «        S )Nr$   c                 óh   — t          | t          ¦  «        r| j        dk    rt          d¦  «        ‚dS dS )NÚCOMMAzAA comma token was expected, but some other token was encountered.FT)r‡   r   rI   r   )r   s    r   Úremove_tokensz?TransformToSymPyExpr.list_of_expressions.<locals>.remove_tokens÷  s:   € Ý˜d¥EÑ*Ô*ð !Ø”y GÒ+Ð+å/Ð0sÑtÔtÐtØ ˜5Ø�tr   )rD   Úfilter)r   r   ró   s      r   Úlist_of_expressionsz(TransformToSymPyExpr.list_of_expressionsñ  s;   € Ýˆv‰;Œ;˜!ÒÐð ˆMðð ð õ ˜-¨Ñ0Ô0Ð0r   c                 óH   —  t          j        |d         ¦  «        |d         Ž S r\   )r   ÚFunctionr   s     r   Úfunction_appliedz%TransformToSymPyExpr.function_applied  s!   € Ø(�uŒ~˜f QœiÑ(Ô(¨&°¬)Ð4Ð4r   c                 ó*   — t          j        |d         Ž S ©Nr;   )r   ÚMinr   s     r   ÚminzTransformToSymPyExpr.min  ó   € ÝŒy˜& œ)Ð$Ð$r   c                 ó*   — t          j        |d         Ž S rú   )r   ÚMaxr   s     r   ÚmaxzTransformToSymPyExpr.max  rý   r   c                 ó0   — ddl m}  ||d         ¦  «        S )Nr   )r‚   r$   )r†   r‚   )r   r   r‚   s      r   ÚbrazTransformToSymPyExpr.bra
  ó&   € Ø-Ð-Ð-Ð-Ð-Ð-Øˆs�6˜!”9‰~Œ~Ðr   c                 ó0   — ddl m}  ||d         ¦  «        S )Nr   )rƒ   r$   )r†   rƒ   )r   r   rƒ   s      r   ÚketzTransformToSymPyExpr.ket  r  r   c                 ój   — ddl m}m}m}  | ||d         ¦  «         ||d         ¦  «        ¦  «        S )Nr   )r‚   rƒ   ÚInnerProductr$   rp   )r†   r‚   rƒ   r  )r   r   r‚   rƒ   r  s        r   Úinner_productz"TransformToSymPyExpr.inner_product  sJ   € Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Øˆ|˜C˜C  q¤	™NœN¨C¨C°°q´	©N¬NÑ;Ô;Ð;r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úsinr   s     r   r
  zTransformToSymPyExpr.sin  ó   € ÝŒy˜ œÑ#Ô#Ð#r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úcosr   s     r   r  zTransformToSymPyExpr.cos  r  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Útanr   s     r   r  zTransformToSymPyExpr.tan  r  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úcscr   s     r   r  zTransformToSymPyExpr.csc  r  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úsecr   s     r   r  zTransformToSymPyExpr.sec"  r  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úcotr   s     r   r  zTransformToSymPyExpr.cot%  r  r   c                 ó¬   — |d         }|dk    rt          j        |d         ¦  «        S t          j        t          j        |d         ¦  «        |¦  «        S rê   )r   Úasinr¢   r
  ©r   r   Úexponents      r   Ú	sin_powerzTransformToSymPyExpr.sin_power(  óH   € Ø˜!”9ˆØ�rŠ>ˆ>Ý”:˜f RœjÑ)Ô)Ð)å”9�UœY v¨b¤zÑ2Ô2°HÑ=Ô=Ð=r   c                 ó¬   — |d         }|dk    rt          j        |d         ¦  «        S t          j        t          j        |d         ¦  «        |¦  «        S rê   )r   Úacosr¢   r  r  s      r   Ú	cos_powerzTransformToSymPyExpr.cos_power/  r  r   c                 ó¬   — |d         }|dk    rt          j        |d         ¦  «        S t          j        t          j        |d         ¦  «        |¦  «        S rê   )r   Úatanr¢   r  r  s      r   Ú	tan_powerzTransformToSymPyExpr.tan_power6  r  r   c                 ó¬   — |d         }|dk    rt          j        |d         ¦  «        S t          j        t          j        |d         ¦  «        |¦  «        S rê   )r   Úacscr¢   r  r  s      r   Ú	csc_powerzTransformToSymPyExpr.csc_power=  r  r   c                 ó¬   — |d         }|dk    rt          j        |d         ¦  «        S t          j        t          j        |d         ¦  «        |¦  «        S rê   )r   Úasecr¢   r  r  s      r   Ú	sec_powerzTransformToSymPyExpr.sec_powerD  r  r   c                 ó¬   — |d         }|dk    rt          j        |d         ¦  «        S t          j        t          j        |d         ¦  «        |¦  «        S rê   )r   Úacotr¢   r  r  s      r   Ú	cot_powerzTransformToSymPyExpr.cot_powerK  r  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   r  r   s     r   ÚarcsinzTransformToSymPyExpr.arcsinR  ó   € ÝŒz˜& œ)Ñ$Ô$Ð$r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   r  r   s     r   ÚarccoszTransformToSymPyExpr.arccosU  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   r   r   s     r   ÚarctanzTransformToSymPyExpr.arctanX  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   r#  r   s     r   ÚarccsczTransformToSymPyExpr.arccsc[  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   r&  r   s     r   ÚarcseczTransformToSymPyExpr.arcsec^  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   r)  r   s     r   ÚarccotzTransformToSymPyExpr.arccota  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úsinhr   s     r   r9  zTransformToSymPyExpr.sinhd  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úcoshr   s     r   r;  zTransformToSymPyExpr.coshg  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Útanhr   s     r   r=  zTransformToSymPyExpr.tanhj  r-  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úasinhr   s     r   r?  zTransformToSymPyExpr.asinhm  ó   € ÝŒ{˜6 !œ9Ñ%Ô%Ð%r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úacoshr   s     r   rB  zTransformToSymPyExpr.acoshp  r@  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úatanhr   s     r   rD  zTransformToSymPyExpr.atanhs  r@  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   ÚAbsr   s     r   ÚabszTransformToSymPyExpr.absv  r  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úfloorr   s     r   rI  zTransformToSymPyExpr.floory  r@  r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úceilingr   s     r   ÚceilzTransformToSymPyExpr.ceil|  s   € ÝŒ}˜V AœYÑ'Ô'Ð'r   c                 ó6   — t          j        |d         ¦  «        S rQ   )r   Ú	factorialr   s     r   rN  zTransformToSymPyExpr.factorial  ó   € ÝŒ˜v aœyÑ)Ô)Ð)r   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Ú	conjugater   s     r   rQ  zTransformToSymPyExpr.conjugate‚  rO  r   c                 óÈ   — t          |¦  «        dk    rt          j        |d         ¦  «        S t          |¦  «        dk    r!t          j        |d         |d         ¦  «        S d S )Nr;   r$   rp   )rD   r   ÚsqrtÚrootr   s     r   Úsquare_rootz TransformToSymPyExpr.square_root…  sZ   € Ýˆv‰;Œ;˜!ÒÐå”:˜f QœiÑ(Ô(Ð(Ý�‰[Œ[˜AÒÐå”:˜f Qœi¨°¬Ñ3Ô3Ð3ð Ðr   c                 ó6   — t          j        |d         ¦  «        S rU   )r   Úexpr   s     r   Úexponentialz TransformToSymPyExpr.exponential�  r  r   c                 óT  — |d         j         dk    rt          j        |d         d¦  «        S |d         j         dk    rt          j        |d         ¦  «        S |d         j         dk    r?d|v r!t          j        |d         |d	         ¦  «        S t          j        |d         ¦  «        S d S )
Nr   ÚFUNC_LGr$   é
   ÚFUNC_LNÚFUNC_LOGr+   rp   r;   )rI   r   Úlogr   s     r   r^  zTransformToSymPyExpr.log�  s¢   € Ø�!Œ9Œ>˜YÒ&Ð&õ ”9˜V AœY¨Ñ+Ô+Ð+Ø�AŒYŒ^˜yÒ(Ð(Ý”9˜V AœYÑ'Ô'Ð'Ø�AŒYŒ^˜zÒ)Ð)à�fˆ}ˆ}å”y ¨¤¨F°1¬IÑ6Ô6Ð6õ ”y ¨¤Ñ+Ô+Ð+ð *Ð)r   Úsc                 óH   ‡— h d£}t          ˆfd„|D ¦   «         d ¦  «        }|S )N>   ú\text{d}ú
\mathrm{d}r…   c              3   ó$   •K  — | ]
}|‰v ¯|V — Œd S r   r   )Ú.0Úsymbolr_  s     €r   ú	<genexpr>zDTransformToSymPyExpr._extract_differential_symbol.<locals>.<genexpr>¤  s/   øè è € Ð#]Ð#]¨vÐQWÐ[\ÐQ\ÐQ\ FÐQ\ÐQ\ÐQ\ÐQ\Ð#]Ð#]r   )Únext)r   r_  Údifferential_symbolsrÁ   s    `  r   r»   z1TransformToSymPyExpr._extract_differential_symbol¡  s<   ø€ Ø@Ð@Ð@Ðå"Ð#]Ð#]Ð#]Ð#]Ð9MÐ#]Ñ#]Ô#]Ð_cÑdÔdÐà"Ð"r   c                 ón   ‡‡— d„ Šd„ Š|d         j         }t          j        ˆˆfd„|D ¦   «         ¦  «        S )Nc                 óB   — t          | t          ¦  «        o
| j        dk    S )NÚ
matrix_row)r‡   r   Údatar�   s    r   Úis_matrix_rowz2TransformToSymPyExpr.matrix.<locals>.is_matrix_row©  s   € Ý˜q¥$Ñ'Ô'ÐB¨A¬F°lÒ,BÐCr   c                 óD   — t          | t          ¦  «         p
| j        dk    S )NÚMATRIX_COL_DELIMrŽ   )Úys    r   Úis_not_col_delimz5TransformToSymPyExpr.matrix.<locals>.is_not_col_delim¬  s"   € Ý" 1¥eÑ,Ô,Ð,ÐL°´Ð:LÒ0LÐMr   r$   c                 óL   •— g | ] } ‰|¦  «        ¯ˆfd „|j         D ¦   «         ‘Œ!S )c                 ó*   •— g | ]} ‰|¦  «        ¯|‘ŒS r   r   )rd  rp  rq  s     €r   ú
<listcomp>z:TransformToSymPyExpr.matrix.<locals>.<listcomp>.<listcomp>°  s*   ø€ ÐKÐKÐK AÐ7GÐ7GÈÑ7JÔ7JÐK˜aÐKÐKÐKr   )Úchildren)rd  rz   rm  rq  s     €€r   rt  z/TransformToSymPyExpr.matrix.<locals>.<listcomp>°  sU   ø€ ð Gð Gð GØ!"°]°]À1Ñ5EÔ5EðGÐKÐKÐKÐK¨¬ÐKÑKÔKð Gð Gð Gr   )ru  r   ÚMatrix)r   r   Úmatrix_bodyrm  rq  s      @@r   ÚmatrixzTransformToSymPyExpr.matrix¨  s€   øø€ ð	Dð 	Dð 	Dð	Nð 	Nð 	Nð ˜Q”iÔ(ˆÝŒ|ð Gð Gð Gð Gð GØ&1ðGñ Gô Gñ Hô Hð 	Hr   c                 ó(  — t          |¦  «        dk    rD|                      |d         ¦  «        st          d¦  «        ‚|d                              ¦   «         S t          |¦  «        dk    r'|                      |¦  «                             ¦   «         S d S )Nr;   r$   z&Cannot take determinant of non-matrix.rp   )rD   rq   r   Údetrx  r   s     r   Údeterminantz TransformToSymPyExpr.determinant³  s†   € Ýˆv‰;Œ;˜!ÒÐØ×,Ò,¨V°A¬YÑ7Ô7ð RÝ'Ð(PÑQÔQÐQà˜!”9—=’=‘?”?Ð"åˆv‰;Œ;˜!ÒÐØ—;’;˜vÑ&Ô&×*Ò*Ñ,Ô,Ð,ð Ðr   c                 óŠ   — |                       |d         ¦  «        st          d¦  «        ‚t          j        |d         ¦  «        S )Nr$   z Cannot take trace of non-matrix.)rq   r   r   ÚTracer   s     r   ÚtracezTransformToSymPyExpr.trace½  s@   € Ø×(Ò(¨°¬Ñ3Ô3ð 	HÝ#Ð$FÑGÔGÐGåŒ{˜6 !œ9Ñ%Ô%Ð%r   c                 ó®   — |                       |d         ¦  «        st          d¦  «        ‚|d                              ¦   «                              ¦   «         S )Nr$   z#Cannot take adjugate of non-matrix.)rq   r   r¡   Úadjugater   s     r   r€  zTransformToSymPyExpr.adjugateÃ  sN   € Ø×(Ò(¨°¬Ñ3Ô3ð 	KÝ#Ð$IÑJÔJÐJð �aŒy�~Š~ÑÔ×(Ò(Ñ*Ô*Ð*r   c                 ód   — t          |d¦  «        r|j        S t          |t          j        ¦  «        S )NÚ	is_Matrix)Úhasattrr‚  r‡   r   rv  )r   Úobjs     r   rq   z)TransformToSymPyExpr._obj_is_sympy_MatrixÊ  s.   € Ý�3˜Ñ$Ô$ð 	!Ø”=Ð å˜#�uœ|Ñ,Ô,Ð,r   c                 ó  — |                       |¦  «        rt          d¦  «        ‚|                       |¦  «        r(t          j        |t          j        |d¦  «        ¦  «        S t          j        |t          j        |d¦  «        ¦  «        S )Nz¨Cannot divide by matrices like this since it is not clear if left or right multiplication by the inverse is intended. Try explicitly multiplying by the inverse instead.r.   )rq   r   r   ry   r¢   r|   )r   r°   r²   s      r   r   z%TransformToSymPyExpr._handle_divisionÐ  s‰   € Ø×$Ò$ [Ñ1Ô1ð 	KÝ#ð %Jñ Kô Kð Kð
 ×$Ò$ YÑ/Ô/ð 	GÝ”< 	­5¬9°[À"Ñ+EÔ+EÑFÔFÐFåŒy˜¥E¤I¨k¸2Ñ$>Ô$>Ñ?Ô?Ð?r   N)br   r   r   Ú__doc__r   r'   ÚSYMBOLrK   rL   rN   ÚDIGITr    r)   r4   r9   r<   r@   rE   rO   rR   rV   rX   rZ   r^   rb   re   rh   rk   rn   rw   r&   r}   r€   rŠ   r¤   rª   r­   r³   rµ   rÅ   rÇ   rÉ   rË   rÕ   rÙ   rÜ   rã   rè   rì   rî   r¯   rõ   rø   rü   r   r  r  r  r
  r  r  r  r  r  r  r  r!  r$  r'  r*  r,  r/  r1  r3  r5  r7  r9  r;  r=  r?  rB  rD  rG  rI  rL  rN  rQ  rU  rX  r^  Ústrr»   rx  r{  r~  r€  rq   r   r   r   r   r   r      sn  € € € € € ðð ð. Œ\€FØŒJÔÔ&€Eðð ð ð+ð +ð +ð9ð 9ð 9ðAð Að Að>ð >ð >ð
Að 
Að 
Að7ð 7ð 7ð9ð 9ð 9ðð ð ðð ð ðð ð ðð ð ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð
%ð 
%ð 
%ð&ð &ð &ð"!ð !ð !ð;ð ;ð ;ð3ð 3ð 3ð :$ð :$ð :$ðx
%ð 
%ð 
%ð4ð 4ð 4ð
Að 
Að 
Að4ð 4ð 4ðADð ADð ADðF(ð (ð (ðJð Jð Jð%Dð %Dð %DðN!8ð !8ð !8ðF/ð /ð /ð3ð 3ð 3ð#ð #ð #ð 6ð 6ð 6ðOð Oð Oð
ð ð ð7ð 7ð 7ð1ð 1ð 1ð 5ð 5ð 5ð%ð %ð %ð%ð %ð %ðð ð ðð ð ð<ð <ð <ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð>ð >ð >ð>ð >ð >ð>ð >ð >ð>ð >ð >ð>ð >ð >ð>ð >ð >ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð&ð &ð &ð&ð &ð &ð&ð &ð &ð$ð $ð $ð&ð &ð &ð(ð (ð (ð*ð *ð *ð*ð *ð *ð4ð 4ð 4ð$ð $ð $ð,ð ,ð ,ð"#¨cð #ð #ð #ð #ð	Hð 	Hð 	Hð-ð -ð -ð&ð &ð &ð+ð +ð +ð-ð -ð -ð
@ð 
@ð 
@ð 
@ð 
@r   r   )r%   r   Úsympy.externalr   Úsympy.parsing.latex.errorsr   r   r   r   r   r   r   r   r   ú<module>rŒ     s3  ðØ 	€	€	€	à €€€Ø (Ð (Ð (Ð (Ð (Ð (Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8à€}�VÑÔ€àð Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ðð ð ð ð ñ ô ð ð
ð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ð
@@ð @@ð @@ð @@ð @@˜;ñ @@ô @@ð @@ð @@ð @@r   