U
    L?hèP  ã                   @   sˆ  d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 ddl
mZ d Z ZZz,edd	d
gidjZedd	dgidjZW n ek
r”   Y nX eddd	dgidZerÀG dd„ dejƒZdEdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZdFd!d"„Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%d?d@„ Z&dAdB„ Z'dCdD„ Z(dS )Gé    )ÚversionN)Úimport_module)Ú
StrPrinter)ÚBraÚKeté   )ÚLaTeXParsingErrorz&sympy.parsing.latex._antlr.latexparserÚfromlistÚLaTeXParser)Úimport_kwargsz%sympy.parsing.latex._antlr.latexlexerÚ
LaTeXLexerzantlr4.error.ErrorListenerTÚErrorListener)Zwarn_not_installedr   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚMathErrorListenerc                    s   t tj| ƒ ¡  || _d S ©N)Úsuperr   Ú__init__Úsrc)Úselfr   ©Ú	__class__© úX/var/www/html/venv/lib/python3.8/site-packages/sympy/parsing/latex/_parse_latex_antlr.pyr       s    zMathErrorListener.__init__c                    sÈ   d}d| d }|  d¡r,||| j|f }	n|  d¡rH|d| j|f }	nt|  d¡r¬tj‰ ‡ fdd	„| ¡ D ƒ}
t|
ƒd
k ršd |
¡}
|d|
 | j|f }	q¼|d| j|f }	n|d| j|f }	t|	ƒ‚d S )Nz%s
%s
%sú~ú^Úmissingz	no viablezI expected something else hereZ
mismatchedc                    s    g | ]}|t ˆ ƒk rˆ | ‘qS r   )Úlen)Ú.0Úi©Únamesr   r   Ú
<listcomp>.   s     z1MathErrorListener.syntaxError.<locals>.<listcomp>é
   ú zI expected one of these: zI don't understand this)Ú
startswithr   r
   ZliteralNamesZgetExpectedTokensr   Újoinr   )r   ZrecogÚsymbolÚlineÚcolÚmsgÚeÚfmtÚmarkerÚerrÚexpectedr   r   r   ÚsyntaxError$   s*    



ÿ
ÿÿzMathErrorListener.syntaxError)Ú__name__Ú
__module__Ú__qualname__r   r.   Ú__classcell__r   r   r   r   r      s   r   Fc           
      C   sÆ   t dƒ}d |tfks"tdƒ d¡s*tdƒ‚|  ¡ } t| ƒ}| | ¡}t|ƒ}| ¡  | 	|¡ | 
|¡}t|ƒ}| ¡  | 	|¡ | ¡  ¡ }|rº|jjdks²|jjt| ƒd krºtdƒ‚t|ƒ}	|	S )NÚantlr4zantlr4-python3-runtimez4.11zˆLaTeX parsing requires the antlr4 Python package, provided by pip (antlr4-python3-runtime) or conda (antlr-python-runtime), version 4.11r   r   zInvalid LaTeX)r   r   r   r#   ÚImportErrorÚstripZInputStreamr   ZremoveErrorListenersZaddErrorListenerZCommonTokenStreamr
   ÚmathÚrelationÚstartÚstopr   r   Úconvert_relation)
ÚsympyÚstrictr3   Z	matherrorÚstreamÚlexÚtokensÚparserr7   Úexprr   r   r   Úparse_latex=   s(    ÿ



$rB   c                 C   s¬   |   ¡ rt|   ¡ ƒS t|  d¡ƒ}t|  d¡ƒ}|  ¡ rDt ||¡S |  ¡ rXt ||¡S |  	¡ rlt 
||¡S |  ¡ r€t ||¡S |  ¡ r”t ||¡S |  ¡ r¨t ||¡S d S ©Nr   r   )rA   Úconvert_exprr:   r7   ÚLTr;   ZStrictLessThanZLTEZLessThanÚGTZStrictGreaterThanZGTEZGreaterThanÚEQUALÚEqZNEQZNe)ÚrelÚlhÚrhr   r   r   r:   ]   s     r:   c                 C   s   t |  ¡ ƒS r   )Úconvert_addÚadditive)rA   r   r   r   rD   q   s    rD   c                 C   s¨   |   ¡ r4t|  d¡ƒ}t|  d¡ƒ}tj||ddS |  ¡ r˜t|  d¡ƒ}t|  d¡ƒ}t|dƒr||jr|tj|d| ddS tj|tjd|ddddS t	|  
¡ ƒS d S )Nr   r   F©ÚevaluateÚis_Atoméÿÿÿÿ)ÚADDrL   rM   r;   ÚAddÚSUBÚhasattrrP   ÚMulÚ
convert_mpÚmp)ÚaddrJ   rK   r   r   r   rL   u   s    rL   c                 C   sÖ   t | dƒr |  d¡}|  d¡}n|  d¡}|  d¡}|  ¡ sL|  ¡ sL|  ¡ rlt|ƒ}t|ƒ}tj||ddS |  	¡ s„|  
¡ s„|  ¡ r°t|ƒ}t|ƒ}tj|tj|dddddS t | dƒrÆt|  ¡ ƒS t|  ¡ ƒS d S )NrX   r   r   FrN   rQ   Úunary)rU   rX   Ú	mp_nofuncZMULZ	CMD_TIMESZCMD_CDOTrW   r;   rV   ZDIVZCMD_DIVÚCOLONÚPowÚconvert_unaryrZ   Úunary_nofunc)rX   Zmp_leftZmp_rightrJ   rK   r   r   r   rW   „   s     




rW   c                 C   s€   t | dƒr|  ¡ }n|  ¡ }t | dƒrB|  ¡ }|  ¡ }|g| }n|  ¡ }|  ¡ rZt|ƒS |  ¡ rpt|ƒ}| S |r|t|ƒS d S )NrZ   Úpostfix_nofunc)	rU   rZ   r_   Úpostfixr`   rR   r^   rT   Úconvert_postfix_list)rZ   Znested_unaryÚfirstÚtailra   Znumabsr   r   r   r^   ›   s    


r^   c           	      C   s0  |t | ƒkrtdƒ‚t| | ƒ}t|tjƒrî|t | ƒd kr@|S |dkrÒt| |d  ƒ}t| |d  ƒ}t|tjƒrÒt|tjƒrÒt| |d  ƒ tj¡}t| |d  ƒ tj¡}|sÒ|sÒt|ƒdkrÒt	| |d ƒS tj
|t	| |d ƒddS n>|d }|t | ƒd krtdƒ‚nt	| |d ƒ}t ||¡S d S )NzIndex out of boundsr   r   ÚxFrN   z"Expected expression for derivative)r   r   Úconvert_postfixÚ
isinstancer;   ÚExprÚatomsÚSymbolÚstrrb   rV   Ú
Derivative)	Zarrr   ÚresÚleftÚrightZ	left_symsZ
right_symsÚwrtrA   r   r   r   rb   ±   s:     ÿÿ  ÿ
rb   c                 C   s’   |  ¡ rVt|  ¡ ƒ}| tj¡}t|ƒdkr0| S t|ƒdkrŽtt|ƒƒ}|  ||¡S n8| 	¡ rŽt| 	¡   d¡ƒ}t| 	¡   d¡ƒ}|  ||¡S d S rC   )
rA   rD   ri   r;   rj   r   ÚnextÚiterÚsubsÚequality)rA   ÚatZat_exprZsymsÚsymrJ   rK   r   r   r   Údo_subsÒ   s    rw   c                 C   sä   t | dƒr|  ¡ }n|  ¡ }t|ƒ}|  ¡ D ]²}| ¡ rZt|tƒrJtdƒ‚t	j
|dd}q,| ¡ r,| ¡ }d }d }| ¡ rˆt|| ¡ ƒ}| ¡ ržt|| ¡ ƒ}|d k	rÄ|d k	rÄt	j|d| dd}q,|d k	rÒ|}q,|d k	r,|}q,|S )NÚexpz"Cannot apply postfix to derivativeFrN   rQ   )rU   rx   Ú
exp_nofuncÚconvert_expZ
postfix_opZBANGrg   Úlistr   r;   Ú	factorialZeval_atZeval_at_suprw   Zeval_at_subrS   )ra   Ú
exp_nestedrx   ÚopZevZat_bZat_ar   r   r   rf   á   s0    


rf   c                 C   sš   t | dƒr|  ¡ }n|  ¡ }|rtt|ƒ}t|tƒr:tdƒ‚|  ¡ rPt|  ¡ ƒ}n|  	¡ rdt
|  	¡ ƒ}tj||ddS t | dƒrŠt|  ¡ ƒS t|  ¡ ƒS d S )Nrx   z Cannot raise derivative to powerFrN   Úcomp)rU   rx   ry   rz   rg   r{   r   ÚatomÚconvert_atomrA   rD   r;   r]   Úconvert_compr   Zcomp_nofunc)rx   r}   ÚbaseÚexponentr   r   r   rz   ÿ   s    



rz   c                 C   sŽ   |   ¡ rt|   ¡  ¡ ƒS |  ¡ r:tjt|  ¡  ¡ ƒddS |  ¡ rNt|  ¡ ƒS |  ¡ rbt	|  ¡ ƒS |  
¡ rvt|  
¡ ƒS |  ¡ rŠt|  ¡ ƒS d S ©NFrN   )ÚgrouprD   rA   Z	abs_groupr;   ZAbsr€   r   ÚfloorÚconvert_floorÚceilÚconvert_ceilÚfuncÚconvert_func)r   r   r   r   r‚     s    r‚   c                 C   sú  |   ¡ r„|   ¡  ¡ }|  ¡ rb|  ¡  ¡ r:t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dtƒ  |¡ d 7 }|  	¡ rz||  	¡  ¡ 7 }t
 |¡S |  ¡ r|  ¡  ¡ dd … }|dkr°t
jS |  ¡ rd }|  ¡  ¡ rÜt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}tƒ  |¡}|d| d 7 }t
 |¡S nâ|  ¡ r<|  ¡  ¡  dd¡}t
 |¡S |  ¡ rbt|  ¡ ƒ}t
 d|j ¡S |  ¡ r†t|  ¡  ¡ ƒ}t
 |¡S |  ¡ rœt|  ¡ ƒS |  ¡ r²t|  ¡ ƒS |  ¡ rÔt|  ¡  ¡ ƒ}t|ƒS |  ¡ röt|  ¡  ¡ ƒ}t|ƒS d S )Nú_{Ú}r   Zinftyú,Ú Úd)ÚLETTERÚgetTextÚsubexprrA   rD   r   r€   r   ÚdoprintÚSINGLE_QUOTESr;   rj   ÚSYMBOLZooÚnumberÚreplaceÚNumberÚDIFFERENTIALÚget_differential_varÚnameZmathitÚ	rule2textZmathit_textÚfracÚconvert_fracÚbinomÚconvert_binomZbrar   Zketr   )r€   ZsnameÚ	subscriptÚsÚsubscriptNameÚvarÚtextÚvalr   r   r   r   $  sR    











r   c                 C   s&   | j  ¡ }| j j }| jj}| ||¡S r   )r8   ZgetInputStreamr9   r“   )Úctxr=   ZstartIdxZstopIdxr   r   r   rž   S  s    
rž   c           
      C   sR  d}d}| j rÜ| jrÜ| j  ¡ }|d |d  d }| j j| j jkrj| j jjtjkrjt| j jj	ƒ}d}np|dkrÚ| j jjtj
krÚ| j jj	dkrÚ| j jjtjks°| j jjtj
krÚd}| j jj	}| j jjtj
krÚ|dd … }|sä|rÜt |¡}|r.| jj| jjkr.| jjjtjkr.| jjj	dkr.|gS |rn| jj| jjkrn| jjjtj
krn| jjj	dkrn|gS t| jƒ}d }|r | d¡r t|dd … ƒ}n*|rÊ| jjj	dkrÊt|tdƒd … ƒ}|rÜt ||¡S | jrðt| jƒ}nt | jj	¡}| j rt| j ƒ}nt | jj	¡}tj|ddd	}	|dkr>|	S tj||	dd	S d S )
NFr   r   Té   z\partialr‘   rQ   rN   )ÚlowerÚupperZgetSourceIntervalr8   r9   Útyper   r›   Úget_differential_var_strr§   r—   r’   r;   rj   rž   r#   rB   r   rl   rD   rš   ZupperdZlowerdr]   rV   )
rŸ   Zdiff_opZ
partial_opZ	lower_itvZlower_itv_lenrp   Z
upper_textZexpr_topZexpr_botZinverse_denomr   r   r   r    ]  sj    
ÿÿþý


ÿþÿþ

r    c                 C   s$   t | jƒ}t | jƒ}tj||ddS r…   )rD   ÚnÚkr;   Zbinomial)r¡   Zexpr_nZexpr_kr   r   r   r¢   ‘  s    

r¢   c                 C   s   t | jƒ}tj|ddS r…   )rD   r¨   r;   r‡   )r‡   r¨   r   r   r   rˆ   –  s    
rˆ   c                 C   s   t | jƒ}tj|ddS r…   )rD   r¨   r;   Zceiling)r‰   r¨   r   r   r   rŠ   š  s    
rŠ   c                 C   s‚  |   ¡ r´|  ¡ r t|  ¡ ƒ}nt|  ¡ ƒ}|   ¡ jjdd … }|dkrld|dd …  }ttj	|ƒ|dd}|dkr˜d|dd …  }ttj	|ƒ|dd}|d	kr®tj
|dd}|d
kr|  ¡ rð|  ¡  ¡ rÞt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}n|dkrþd}n|dkrtj}tj||dd}d }d}|  ¡ r`|  ¡  ¡ rPt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dkr”|dkr€d| }d}ttj	|ƒ|dd}|r°|r°tj||dd}|S |  ¡ sÈ|  ¡ rÊ|  ¡ rà|  ¡  ¡ }n|  ¡ rþ|  ¡  ¡ dd … }t|ƒ}|  ¡ r\|  ¡  ¡ r0t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}tƒ  |¡}	|d|	 d 7 }|  ¡ rv||  ¡  ¡ 7 }|  ¡ }
g }|
 ¡ rª| t|
 ¡ ƒ¡ |
 ¡ }
q‚| t|
 ¡ ƒ¡ t |¡|Ž S |  ¡ rÜt| ƒS |   ¡ r"t| j!ƒ}| j"rt| j"ƒ}tj"||ddS tj#|ddS n\|  $¡ rDt| j!ƒ}tj%|ddS |  &¡ rXt'| dƒS |  (¡ rlt'| dƒS |  )¡ r~t*| ƒS d S )Nr   )ZarcsinZarccosZarctanZarccscZarcsecZarccotÚaé   FrN   )ZarsinhZarcoshZartanhrª   rx   )ÚlogÚlgÚlnr´   r!   )rµ   r³   T)	ÚsinÚcosÚtanZcscÚsecZcotÚsinhÚcoshÚtanhrQ   r   rŽ   Ú	summationÚproduct)+Zfunc_normalZL_PARENÚconvert_func_argZfunc_argZfunc_arg_noparensr8   r§   Úgetattrr;   Z	functionsrx   r”   rA   rD   r   r€   ÚEr³   Úsupexprr]   r’   r—   r“   rk   r   r•   r–   ÚargsÚappendÚFunctionZFUNC_INTÚhandle_integralZ	FUNC_SQRTrƒ   ÚrootÚsqrtZFUNC_OVERLINEÚ	conjugateZFUNC_SUMÚhandle_sum_or_prodZ	FUNC_PRODZFUNC_LIMÚhandle_limit)r‹   Úargr   rA   rƒ   Zfunc_powZ
should_powÚfnamer£   r¥   Z
input_argsZoutput_argsÚrr   r   r   rŒ   ž  s–    





















rŒ   c                 C   s&   t | dƒrt|  ¡ ƒS t|  ¡ ƒS d S )NrA   )rU   rD   rA   rW   r[   )rÌ   r   r   r   r¿   ÿ  s    
r¿   c                 C   sX  |   ¡ rt|   ¡ ƒ}n|  ¡ r,t|  ¡ ƒ}nd}d }|  ¡ rJt|  ¡ ƒ}n„| tj¡D ]Z}t	|ƒ}t
|ƒdkrV|d dkrV|d dkršt |dd … ¡}nt |dd … ¡}|}qV|rÄ| |d¡}n
t d¡}|  ¡ rH|  ¡  ¡ röt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|  ¡  ¡ r&t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}t ||||f¡S t ||¡S d S )Nr   r   r‘   ú\rª   re   )rM   rL   rŸ   r    r›   rœ   ri   r;   rj   rk   r   rs   r”   r€   r   rD   rA   rÂ   ÚIntegral)r‹   Z	integrandZint_varrv   r¤   Zint_symr«   r¬   r   r   r   rÆ     s6    

rÆ   c                 C   sž   t |  ¡ ƒ}t|  ¡  ¡  d¡ƒ}t|  ¡  ¡  d¡ƒ}|  ¡  ¡ rVt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dkr€t	 
||||f¡S |dkršt	 ||||f¡S d S )Nr   r   r½   r¾   )rW   rX   rD   Zsubeqrt   rA   rÂ   r   r€   r;   ZSumZProduct)r‹   r   r¨   Ziter_varr8   Úendr   r   r   rÊ   .  s    rÊ   c                 C   sš   |   ¡ }| ¡ r$t | ¡  ¡ ¡}n.| ¡ rHt | ¡  ¡ dd … ¡}n
t d¡}| ¡ r`d}n| ¡ rnd}nd}t| 	¡ ƒ}t
|  ¡ ƒ}t ||||¡S )Nr   re   ú-ú+z+-)Z	limit_subr’   r;   rj   r“   r—   rT   rR   rD   rA   rW   rX   ZLimit)r‹   Úsubr¦   Ú	directionZapproachingÚcontentr   r   r   rË   =  s    
rË   c                 C   s   t |  ¡ ƒ}t |¡S r   )r®   r“   r;   rj   )r‘   r§   r   r   r   rœ   Q  s    rœ   c                 C   sl   t dt| ƒƒD ]4}| | }|dks|dks|dks|dks|} qDq| |d … } | d dkrh| dd … } | S )Nr   r"   úÚ
ú	r   rÏ   )Úranger   )r§   r   ÚcÚidxr   r   r   r®   V  s     r®   )F)r   ))Úimportlib.metadatar   r;   Zsympy.externalr   Zsympy.printing.strr   Zsympy.physics.quantum.stater   r   Úerrorsr   r
   r   r   Ú	Exceptionr   rB   r:   rD   rL   rW   r^   rb   rw   rf   rz   r‚   r   rž   r    r¢   rˆ   rŠ   rŒ   r¿   rÆ   rÊ   rË   rœ   r®   r   r   r   r   Ú<module>   sZ   ÿÿþ
 
!/
4a(