Ë
    O/æjà©  ã                   óÔ  — d dl mZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZ d dlmZmZ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$ G d„ de«      Z% G d„ de«      Z& G d„ de«      Z' G d„ de«      Z( G d„ de«      Z) G d„ de«      Z* G d„ de«      Z+ G d„ de«      Z, G d„ de«      Z-d „ Z. G d!„ d"e«      Z/d(d#„Z0d)d$„Z1d(d%„Z2d*d'„Z3y&)+é    )ÚTuple)ÚSÚAddÚMulÚsympifyÚSymbolÚDummyÚBasic)ÚExpr)Úfactor_terms)ÚFunctionÚ
DerivativeÚArgumentIndexErrorÚAppliedUndefÚ
expand_mul)Ú	fuzzy_notÚfuzzy_or)ÚpiÚIÚoo)ÚPow)ÚEq)Úsqrt)Ú	Piecewisec                   ój   — e Zd ZU dZee   ed<   dZdZdZ	e
d„ «       Zdd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zy)Úrea÷  
    Returns real part of expression. This function performs only
    elementary analysis and so it will fail to decompose properly
    more complicated expressions. If completely simplified result
    is needed then use ``Basic.as_real_imag()`` or perform complex
    expansion on instance of this function.

    Examples
    ========

    >>> from sympy import re, im, I, E, symbols
    >>> x, y = symbols('x y', real=True)
    >>> re(2*E)
    2*E
    >>> re(2*I + 17)
    17
    >>> re(2*I)
    0
    >>> re(im(x) + x*I + 2)
    2
    >>> re(5 + I + 2)
    7

    Parameters
    ==========

    arg : Expr
        Real or complex expression.

    Returns
    =======

    expr : Expr
        Real part of expression.

    See Also
    ========

    im
    ÚargsTc                 ó²  — |t         j                  u rt         j                  S |t         j                  u rt         j                  S |j                  r|S |j                  st
        |z  j                  rt         j                  S |j                  r|j                  «       d   S |j                  r(t        |t        «      rt        |j                  d   «      S g g g }}}t        j                  |«      }|D ]¥  }|j!                  t
        «      }|�|j                  rŒ'|j#                  |«       Œ9|j%                  t
        «      s|j                  r|j#                  |«       Œl|j                  |¬«      }|r|j#                  |d   «       Œ•|j#                  |«       Œ§ t'        |«      t'        |«      k7  r'd„ |||fD «       \  }	}
} | |	«      t)        |
«      z
  |z   S y )Nr   ©Úignorec              3   ó,   K  — | ]  }t        |Ž –— Œ y ­w©N©r   ©Ú.0Úxss     úg/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/functions/elementary/complexes.pyú	<genexpr>zre.eval.<locals>.<genexpr>i   ó   è ø€ ÒM¨œ3 œ8ÑMùó   ‚)r   ÚNaNÚComplexInfinityÚis_extended_realÚis_imaginaryr   ÚZeroÚ	is_MatrixÚas_real_imagÚis_FunctionÚ
isinstanceÚ	conjugater   r   r   Ú	make_argsÚas_coefficientÚappendÚhasÚlenÚim©ÚclsÚargÚincludedÚrevertedÚexcludedr   ÚtermÚcoeffÚ	real_imagÚaÚbÚcs               r'   Úevalzre.evalD   s…  € à”!—%‘%‰<Ü—5‘5ˆLØ”A×%Ñ%Ñ%Ü—5‘5ˆLØ×!Ò!ØˆJØ×Ò¤! C¡%×!9Ò!9Ü—6‘6ˆMØ�]Š]Ø×#Ñ#Ó% aÑ(Ð(Ø�_Š_¤¨C´Ô!;Ü�c—h‘h˜q‘k“?Ð"ð ,.¨r°2 �hˆHÜ—=‘= Ó%ˆDØò .�Ø×+Ñ+¬AÓ.�àÐ$Ø ×1Ó1Ø Ÿ™¨Õ.ØŸ™¤!œ¨×)>Ò)>Ø—O‘O DÕ)ð
 !%× 1Ñ 1¸Ð 1Ó =�IÙ Ø Ÿ™¨	°!©Õ5à Ÿ™¨Õ-ð!.ô$ �4‹yœC ›MÒ)ÙM¨x¸À8Ð.LÔM‘��1�aá˜1“v¤ 1£‘~¨Ñ)Ð)ð *ó    c                 ó&   — | t         j                  fS )zF
        Returns the real number with a zero imaginary part.

        ©r   r/   ©ÚselfÚdeepÚhintss      r'   r1   zre.as_real_imagm   ó   € ð
 ”a—f‘fˆ~ÐrH   c                 ó8  — |j                   s| j                  d   j                   r$t        t        | j                  d   |d¬«      «      S |j                  s| j                  d   j                  r,t
         t        t        | j                  d   |d¬«      «      z  S y ©Nr   T©Úevaluate)r-   r   r   r   r.   r   r:   ©rL   Úxs     r'   Ú_eval_derivativezre._eval_derivativet   ó}   € Ø×Ò §¡¨1¡×!>Ò!>Ü”j §¡¨1¡¨q¸4Ô@ÓAÐAØ�>Š>˜TŸY™Y q™\×6Ò6Ü�2Ü”Z §	¡	¨!¡¨a¸$Ô?Ó@ñAð Að 7rH   c                 ó`   — | j                   d   t        t        | j                   d   «      z  z
  S ©Nr   )r   r   r:   ©rL   r=   Úkwargss      r'   Ú_eval_rewrite_as_imzre._eval_rewrite_as_im{   s'   € Ø�y‰y˜‰|œa¤ 4§9¡9¨Q¡<Ó 0Ñ0Ñ0Ð0rH   c                 ó4   — | j                   d   j                  S rY   ©r   Úis_algebraic©rL   s    r'   Ú_eval_is_algebraiczre._eval_is_algebraic~   ó   € Ø�y‰y˜‰|×(Ñ(Ð(rH   c                 óx   — t        | j                  d   j                  | j                  d   j                  g«      S rY   )r   r   r.   Úis_zeror`   s    r'   Ú_eval_is_zerozre._eval_is_zero�   s.   € ä˜Ÿ™ 1™×2Ñ2°D·I±I¸a±L×4HÑ4HÐIÓJÐJrH   c                 ó8   — | j                   d   j                  ryy ©Nr   T©r   Ú	is_finiter`   s    r'   Ú_eval_is_finitezre._eval_is_finite…   ó   € Ø�9‰9�Q‰<×!Ò!Øð "rH   c                 ó8   — | j                   d   j                  ryy rg   rh   r`   s    r'   Ú_eval_is_complexzre._eval_is_complex‰   rk   rH   N©T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚtTupler   Ú__annotations__r-   Ú
unbranchedÚ_singularitiesÚclassmethodrG   r1   rV   r\   ra   re   rj   rm   © rH   r'   r   r      s\   … ñ'ðR �‰,ÓàÐØ€JØ€Nàñ&*ó ð&*óPòAò1ò)òKòórH   r   c                   ój   — e Zd ZU dZee   ed<   dZdZdZ	e
d„ «       Zdd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zy)r:   aï  
    Returns imaginary part of expression. This function performs only
    elementary analysis and so it will fail to decompose properly more
    complicated expressions. If completely simplified result is needed then
    use ``Basic.as_real_imag()`` or perform complex expansion on instance of
    this function.

    Examples
    ========

    >>> from sympy import re, im, E, I
    >>> from sympy.abc import x, y
    >>> im(2*E)
    0
    >>> im(2*I + 17)
    2
    >>> im(x*I)
    re(x)
    >>> im(re(x) + y)
    im(y)
    >>> im(2 + 3*I)
    3

    Parameters
    ==========

    arg : Expr
        Real or complex expression.

    Returns
    =======

    expr : Expr
        Imaginary part of expression.

    See Also
    ========

    re
    r   Tc                 óÄ  — |t         j                  u rt         j                  S |t         j                  u rt         j                  S |j                  rt         j                  S |j
                  st        |z  j                  r
t         |z  S |j                  r|j                  «       d   S |j                  r)t        |t        «      rt        |j                  d   «       S g g g }}}t        j                  |«      }|D ]¥  }|j!                  t        «      }|�0|j                  s|j#                  |«       Œ8|j#                  |«       ŒJ|j%                  t        «      s|j                  rŒl|j                  |¬«      }|r|j#                  |d   «       Œ•|j#                  |«       Œ§ t'        |«      t'        |«      k7  r'd„ |||fD «       \  }	}
} | |	«      t)        |
«      z   |z   S y )Né   r   r   c              3   ó,   K  — | ]  }t        |Ž –— Œ y ­wr"   r#   r$   s     r'   r(   zim.eval.<locals>.<genexpr>â   r)   r*   )r   r+   r,   r-   r/   r.   r   r0   r1   r2   r3   r4   r:   r   r   r5   r6   r7   r8   r9   r   r;   s               r'   rG   zim.eval¾   sŒ  € à”!—%‘%‰<Ü—5‘5ˆLØ”A×%Ñ%Ñ%Ü—5‘5ˆLØ×!Ò!Ü—6‘6ˆMØ×Ò¤! C¡%×!9Ò!9Ü�2˜‘8ˆOØ�]Š]Ø×#Ñ#Ó% aÑ(Ð(Ø�_Š_¤¨C´Ô!;Ü�s—x‘x ‘{“OÐ#Ð#à+-¨r°2 �hˆHÜ—=‘= Ó%ˆDØò .�Ø×+Ñ+¬AÓ.�àÐ$Ø ×1Ò1Ø Ÿ™¨Õ.à Ÿ™¨Õ.Ø—X‘Xœa”[¨×(=Ó(=ð !%× 1Ñ 1¸Ð 1Ó =�IÙ Ø Ÿ™¨	°!©Õ5à Ÿ™¨Õ-ð!.ô$ �4‹yœC ›MÒ)ÙM¨x¸À8Ð.LÔM‘��1�aá˜1“v¤ 1£‘~¨Ñ)Ð)ð *rH   c                 ó&   — | t         j                  fS )zC
        Return the imaginary part with a zero real part.

        rJ   rK   s      r'   r1   zim.as_real_imagæ   rO   rH   c                 ó8  — |j                   s| j                  d   j                   r$t        t        | j                  d   |d¬«      «      S |j                  s| j                  d   j                  r,t
         t        t        | j                  d   |d¬«      «      z  S y rQ   )r-   r   r:   r   r.   r   r   rT   s     r'   rV   zim._eval_derivativeí   rW   rH   c                 ób   — t          | j                  d   t        | j                  d   «      z
  z  S rY   )r   r   r   rZ   s      r'   Ú_eval_rewrite_as_rezim._eval_rewrite_as_reô   s)   € Üˆr�4—9‘9˜Q‘<¤" T§Y¡Y¨q¡\Ó"2Ñ2Ñ3Ð3rH   c                 ó4   — | j                   d   j                  S rY   r^   r`   s    r'   ra   zim._eval_is_algebraic÷   rb   rH   c                 ó4   — | j                   d   j                  S rY   ©r   r-   r`   s    r'   re   zim._eval_is_zeroú   ó   € Ø�y‰y˜‰|×,Ñ,Ð,rH   c                 ó8   — | j                   d   j                  ryy rg   rh   r`   s    r'   rj   zim._eval_is_finiteý   rk   rH   c                 ó8   — | j                   d   j                  ryy rg   rh   r`   s    r'   rm   zim._eval_is_complex  rk   rH   Nrn   )ro   rp   rq   rr   rs   r   rt   r-   ru   rv   rw   rG   r1   rV   r€   ra   re   rj   rm   rx   rH   r'   r:   r:   Ž   s[   … ñ'ðR �‰,ÓàÐØ€JØ€Nàñ%*ó ð%*óNòAò4ò)ò-òórH   r:   c                   ó�   ‡ — e Zd ZdZdZdZˆ fd„Zed„ «       Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Úsignaæ  
    Returns the complex sign of an expression:

    Explanation
    ===========

    If the expression is real the sign will be:

        * $1$ if expression is positive
        * $0$ if expression is equal to zero
        * $-1$ if expression is negative

    If the expression is imaginary the sign will be:

        * $I$ if im(expression) is positive
        * $-I$ if im(expression) is negative

    Otherwise an unevaluated expression will be returned. When evaluated, the
    result (in general) will be ``cos(arg(expr)) + I*sin(arg(expr))``.

    Examples
    ========

    >>> from sympy import sign, I

    >>> sign(-1)
    -1
    >>> sign(0)
    0
    >>> sign(-3*I)
    -I
    >>> sign(1 + I)
    sign(1 + I)
    >>> _.evalf()
    0.707106781186548 + 0.707106781186548*I

    Parameters
    ==========

    arg : Expr
        Real or imaginary expression.

    Returns
    =======

    expr : Expr
        Complex sign of expression.

    See Also
    ========

    Abs, conjugate
    Tc                 ó´   •— t         ‰| �  «       }|| k(  rC| j                  d   j                  du r(| j                  d   t	        | j                  d   «      z  S |S )Nr   F)ÚsuperÚdoitr   rd   ÚAbs)rL   rN   ÚsÚ	__class__s      €r'   r‹   z	sign.doitC  sO   ø€ Ü‰G‰L‹NˆØ�Š9˜Ÿ™ 1™×-Ñ-°Ñ6Ø—9‘9˜Q‘<¤# d§i¡i°¡lÓ"3Ñ3Ð3ØˆrH   c                 óä  — |j                   ræ|j                  «       \  }}g }t        |«      }|D ]  }|j                  r| }Œ|j                  rŒ |j
                  rCt        |«      }|j                  r|t        z  }|j                  sŒY| }Œ]|j                  |«       Œo|j                  |«       Œ� |t        j                  u rt        |«      t        |«      k(  ry | |  |j                  |Ž «      z  S |t        j                  u rt        j                  S |j                  rt        j                   S |j                  rt        j                  S |j                  rt        j"                  S |j$                  rt'        |t        «      r|S |j
                  r^|j(                  r"|j*                  t        j,                  u rt        S t         |z  }|j                  rt        S |j                  rt         S y y r"   )Úis_MulÚas_coeff_mulrˆ   Úis_extended_negativeÚis_extended_positiver.   r:   Úis_comparabler   r7   r   ÚOner9   Ú_new_rawargsr+   rd   r/   ÚNegativeOner2   r3   Úis_PowÚexpÚHalf)	r<   r=   rF   r   Úunkr�   rD   ÚaiÚarg2s	            r'   rG   z	sign.evalI  s•  € ð �:Š:Ø×&Ñ&Ó(‰GˆAˆtØˆCÜ�Q“ˆAØò &�Ø×)Ò)Ø˜‘AØ×+Ò+Øà—~’~Ü ›U˜Ø×+Ò+Ø¤™F˜AØ!×6Ó6ð &' B¡àŸJ™J q�MàŸ
™
 1�ð#&ð$ ”A—E‘E‰zœc #›h¬#¨d«)Ò3ØØ‘sÐ+˜3×+Ñ+¨SÐ1Ó2Ñ2Ð2Ø”!—%‘%‰<Ü—5‘5ˆLØ�;Š;Ü—6‘6ˆMØ×#Ò#Ü—5‘5ˆLØ×#Ò#Ü—=‘=Ð Ø�?Š?Ü˜#œtÔ$Ø�
Ø×ÒØ�zŠz˜cŸg™g¬¯©Ñ/ô �Ü�2˜‘8ˆDØ×(Ò(Ü�Ø×(Ò(Ü�r�	ð )ð rH   c                 óh   — t        | j                  d   j                  «      rt        j                  S y rY   )r   r   rd   r   r•   r`   s    r'   Ú	_eval_Abszsign._eval_Abs{  s&   € Ü�T—Y‘Y˜q‘\×)Ñ)Ô*Ü—5‘5ˆLð +rH   c                 óD   — t        t        | j                  d   «      «      S rY   )rˆ   r4   r   r`   s    r'   Ú_eval_conjugatezsign._eval_conjugate  s   € Ü”I˜dŸi™i¨™lÓ+Ó,Ð,rH   c                 ó`  — | j                   d   j                  r:ddlm} dt	        | j                   d   |d¬«      z   || j                   d   «      z  S | j                   d   j
                  rBddlm} dt	        | j                   d   |d¬«      z   |t         | j                   d   z  «      z  S y )Nr   )Ú
DiracDeltaé   TrR   )r   r-   Ú'sympy.functions.special.delta_functionsr£   r   r.   r   )rL   rU   r£   s      r'   rV   zsign._eval_derivative‚  sœ   € Ø�9‰9�Q‰<×(Ò(ÝJØ”z $§)¡)¨A¡,°¸DÔAÑAÙ˜TŸY™Y q™\Ó*ñ+ð +à�Y‰Y�q‰\×&Ò&ÝJØ”z $§)¡)¨A¡,°¸DÔAÑAÙœa˜R $§)¡)¨A¡,Ñ.Ó/ñ0ð 0ð 'rH   c                 ó8   — | j                   d   j                  ryy rg   )r   Úis_nonnegativer`   s    r'   Ú_eval_is_nonnegativezsign._eval_is_nonnegativeŒ  ó   € Ø�9‰9�Q‰<×&Ò&Øð 'rH   c                 ó8   — | j                   d   j                  ryy rg   )r   Úis_nonpositiver`   s    r'   Ú_eval_is_nonpositivezsign._eval_is_nonpositive�  r©   rH   c                 ó4   — | j                   d   j                  S rY   )r   r.   r`   s    r'   Ú_eval_is_imaginaryzsign._eval_is_imaginary”  rb   rH   c                 ó4   — | j                   d   j                  S rY   rƒ   r`   s    r'   Ú_eval_is_integerzsign._eval_is_integer—  r„   rH   c                 ó4   — | j                   d   j                  S rY   )r   rd   r`   s    r'   re   zsign._eval_is_zeroš  s   € Ø�y‰y˜‰|×#Ñ#Ð#rH   c                 óœ   — t        | j                  d   j                  «      r*|j                  r|j                  rt
        j                  S y y y rY   )r   r   rd   Ú
is_integerÚis_evenr   r•   )rL   Úothers     r'   Ú_eval_powerzsign._eval_power�  s@   € ä�d—i‘i ‘l×*Ñ*Ô+Ø×ÒØ�MŠMä—5‘5ˆLð ð ð ,rH   c                 óü   — | j                   d   }|j                  |d«      }|dk7  r| j                  |«      S |dk7  r|j                  ||«      }t	        |«      dk  rt
        j                   S t
        j                  S rY   )r   ÚsubsÚfuncÚdirr   r   r•   )rL   rU   ÚnÚlogxÚcdirÚarg0Úx0s          r'   Ú_eval_nserieszsign._eval_nseries¥  si   € Ø�y‰y˜‰|ˆØ�Y‰Y�q˜!‹_ˆØ�Š7Ø—9‘9˜R“=Ð Ø�1Š9Ø—8‘8˜A˜tÓ$ˆDÜ˜D› Aš”—‘ˆvÐ0¬1¯5©5Ð0rH   c                 óJ   — |j                   rt        d|dkD  fd|dk  fd«      S y )Nr{   r   éÿÿÿÿ)r   T)r-   r   rZ   s      r'   Ú_eval_rewrite_as_Piecewisezsign._eval_rewrite_as_Piecewise®  s/   € Ø×ÒÜ˜a  q¡˜\¨B°°a±¨=¸)ÓDÐDð  rH   c                 óD   — ddl m} |j                  r ||«      dz  dz
  S y )Nr   ©Ú	Heavisider¤   r{   ©r¥   rÆ   r-   ©rL   r=   r[   rÆ   s       r'   Ú_eval_rewrite_as_Heavisidezsign._eval_rewrite_as_Heaviside²  s'   € ÝEØ×ÒÙ˜S“> AÑ%¨Ñ)Ð)ð  rH   c                 óN   — t        dt        |d«      f|t        |«      z  df«      S rg   )r   r   rŒ   rZ   s      r'   Ú_eval_rewrite_as_Abszsign._eval_rewrite_as_Abs·  s&   € Ü˜!œR  Q›Z˜¨3´°S³©>¸4Ð*@ÓAÐArH   c                 óP   — | j                  t        | j                  d   «      «      S rY   )r¹   r   r   )rL   r[   s     r'   Ú_eval_simplifyzsign._eval_simplifyº  s   € Ø�y‰yœ d§i¡i°¡lÓ3Ó4Ð4rH   ©r   )ro   rp   rq   rr   Ú
is_complexrv   r‹   rw   rG   rŸ   r¡   rV   r¨   r¬   r®   r°   re   r¶   rÀ   rÃ   rÉ   rË   rÍ   Ú__classcell__)rŽ   s   @r'   rˆ   rˆ   	  sw   ø„ ñ4ðl €JØ€Nôð ñ/ó ð/òbò-ò0òòò)ò-ò$òó1òEò*ò
Bö5rH   rˆ   c                   ó°   — e Zd ZU dZee   ed<   dZdZdZ	dZ
dZdd„Zed„ «       Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)rŒ   ab  
    Return the absolute value of the argument.

    Explanation
    ===========

    This is an extension of the built-in function ``abs()`` to accept symbolic
    values.  If you pass a SymPy expression to the built-in ``abs()``, it will
    pass it automatically to ``Abs()``.

    Examples
    ========

    >>> from sympy import Abs, Symbol, S, I
    >>> Abs(-1)
    1
    >>> x = Symbol('x', real=True)
    >>> Abs(-x)
    Abs(x)
    >>> Abs(x**2)
    x**2
    >>> abs(-x) # The Python built-in
    Abs(x)
    >>> Abs(3*x + 2*I)
    sqrt(9*x**2 + 4)
    >>> Abs(8*I)
    8

    Note that the Python built-in will return either an Expr or int depending on
    the argument::

        >>> type(abs(-1))
        <... 'int'>
        >>> type(abs(S.NegativeOne))
        <class 'sympy.core.numbers.One'>

    Abs will always return a SymPy object.

    Parameters
    ==========

    arg : Expr
        Real or complex expression.

    Returns
    =======

    expr : Expr
        Absolute value returned can be an expression or integer depending on
        input arg.

    See Also
    ========

    sign, conjugate
    r   TFc                 óT   — |dk(  rt        | j                  d   «      S t        | |«      ‚)zE
        Get the first derivative of the argument to Abs().

        r{   r   )rˆ   r   r   )rL   Úargindexs     r'   Úfdiffz	Abs.fdiff   s+   € ð
 �qŠ=Ü˜Ÿ	™	 !™Ó%Ð%ä$ T¨8Ó4Ð4rH   c           	      ó<
  ‡‡— ddl m} t        ‰d«      r‰j                  «       }|�|S t	        ‰t
        «      st        dt        ‰«      z  «      ‚ |‰d¬«      Š‰j                  «       \  }}|j                  r|j                  s | |«       | |«      z  S ‰j                  �r	g }g }‰j                  D ]Ç  }|j                  r‚|j                  j                  rl|j                  j                  rV | |j                   «      }	t	        |	| «      r|j#                  |«       Œk|j#                  t%        |	|j                  «      «       Œ‘ | |«      }
t	        |
| «      r|j#                  |«       Œ·|j#                  |
«       ŒÉ t'        |Ž }|r | t'        |Ž d¬«      nt(        j*                  }||z  S ‰t(        j,                  u rt(        j,                  S ‰t(        j.                  u rt0        S ddlm}m} ‰j                  �r‰j7                  «       \  }}|j8                  rš|j                  r>|j:                  r‰S |t(        j<                  u rt(        j*                  S t?        |«      |z  S |j@                  r|tC        |«      z  S |jD                  r)| tC        |«      z   |tF         tI        |«      z  «      z  S y |jK                  tL        «      s9 ||«      jO                  «       \  }}|tP        |z  z   } |tC        ||z  «      «      S t	        ‰|«      r |tC        ‰j                  d   «      «      S t	        ‰tR        «      r‰jT                  r‰S ‰j                  r‰ S y ‰jV                  rJ‰jK                  t0        t(        jX                  «      r&t[        d„ ‰jO                  «       D «       «      rt0        S ‰j\                  rt(        j^                  S ‰j@                  r‰S ‰j`                  r‰ S ‰jb                  rtP         ‰z  }|j@                  r|S ‰j8                  ry  |‰je                  «       d¬«      Š‰jg                  td        «      ‰jg                  td        «      z
  }|rti        ˆfd	„|D «       «      ry ‰‰k7  rš‰‰ k7  r“‰jg                  t>        «      }‰jk                  |D �ci c]  }|tm        d
¬«      “Œ c}«      }|j                  D �cg c]  }|j8                  �Œ|‘Œ }}|rti        ˆfd„|D «       «      sto        tq        ‰‰z  «      «      S y y y c c}w c c}w )Nr   )ÚsignsimprŸ   zBad argument type for Abs(): %sFrR   )r™   Úlogc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr"   )Úis_infinite)r%   rD   s     r'   r(   zAbs.eval.<locals>.<genexpr>P  s   è ø€ Ò= Q�1—=•=Ñ=ùs   ‚c              3   óZ   •K  — | ]"  }‰j                  |j                  d    «      –— Œ$ y­w)r   N)r8   r   )r%   Úir=   s     €r'   r(   zAbs.eval.<locals>.<genexpr>b  s"   øè ø€ ÒA°1˜CŸG™G A§F¡F¨1¡I×.ÑAùs   ƒ(+T)Úrealc              3   óR   •K  — | ]  }‰j                  t        |«      «      –— Œ  y ­wr"   )r8   r4   )r%   ÚuÚconjs     €r'   r(   zAbs.eval.<locals>.<genexpr>h  s   øè ø€ Ò!F¸Q $§(¡(¬9°Q«<×"8Ñ!Fùs   ƒ$')9Úsympy.simplify.simplifyrÖ   ÚhasattrrŸ   r3   r   Ú	TypeErrorÚtypeÚas_numer_denomÚfree_symbolsr�   r   r˜   r™   r³   Úis_negativeÚbaser7   r   r   r   r•   r+   r,   r   Ú&sympy.functions.elementary.exponentialr×   Úas_base_expr-   r´   r—   rŒ   Úis_extended_nonnegativer   r’   r   r:   r8   r   r1   r   r   Úis_positiveÚis_AddÚNegativeInfinityÚanyrd   r/   Úis_extended_nonpositiver.   r4   ÚatomsÚallÚxreplacer	   r   r   )r<   r=   rÖ   Úobjr»   ÚdÚknownr›   ÚtÚbnewÚtnewr™   r×   rç   ÚexponentrD   rE   Úzr�   Únew_conjr    rÛ   Úabs_free_argrß   s    `                     @r'   rG   zAbs.eval
  s  ù€ å4ä�3˜Ô$Ø—-‘-“/ˆCØˆØ�
Ü˜#œtÔ$ÜÐ=ÄÀSÃ	ÑIÓJÐJñ �s UÔ+ˆØ×!Ñ!Ó#‰ˆˆ1Ø�>Š> !§.¢.Ù�q“6™#˜a›&‘=Ð à�:‹:ØˆEØˆCØ—X‘Xò +�Ø—8’8 §¡× 0Ò 0°Q·U±U×5FÒ5FÙ˜qŸv™v›;�DÜ! $¨Ô,ØŸ
™
 1�àŸ™¤S¨¨q¯u©uÓ%5Õ6á˜q›6�DÜ! $¨Ô,ØŸ
™
 1�àŸ™ TÕ*ð+ô ˜�KˆEÙ47‘#”c˜3�i¨%Õ0¼Q¿U¹UˆCØ˜‘9ÐØ”!—%‘%‰<Ü—5‘5ˆLØ”!×#Ñ#Ñ#ÜˆIßCà�:‹:Ø Ÿ_™_Ó.‰NˆD�(Ø×$Ò$Ø×&Ò&Ø×'Ò'Ø"˜
ØœqŸ}™}Ñ,Ü Ÿu™u˜Ü˜t›9 hÑ.Ð.Ø×/Ò/Ø¤ H£Ñ-Ð-Ø×,Ò,Ø!˜E¤B x£LÑ0±´b°S¼¸H»Ñ5EÓ1FÑFÐFØØ—X‘XœfÔ%á˜4“y×-Ñ-Ó/‘��1Øœ˜!™‘G�Ùœ2˜h q™j›>Ó*Ð*Ü�c˜3ÔÙ”r˜#Ÿ(™( 1™+“Ó'Ð'Ü�cœ<Ô(Ø�ŠØ�
Ø—’Ø�t�ØØ�:Š:˜#Ÿ'™'¤"¤a×&8Ñ&8Ô9ÜÑ=¨#×*:Ñ*:Ó*<Ô=Ô=Ü�	Ø�;Š;Ü—6‘6ˆMØ×&Ò&ØˆJØ×&Ò&Ø�4ˆKØ×ÒÜ�2˜‘8ˆDØ×+Ò+Ø�Ø×ÒØñ ˜Ÿ™›°%Ô8ˆØ—:‘:œiÓ(¨3¯9©9´YÓ+?Ñ?ˆÙœÓA¸ÔAÔAØØ�$Š;˜3 4 %š<Ø—Y‘Yœs“^ˆFØŸ<™<ÀfÖ(MÀ¨¬E°tÔ,<Ñ)<Ò(MÓNˆLØ*×7Ñ7ÖV˜¸1×;MÑ;MÑ;U’1ÐVˆCÐVÙœcÓ!FÀ#Ô!FÔFÜœJ s¨4¡xÓ0Ó1Ð1ð Gð	 (ˆ;ùâ(MùÚVs   Ò#TÓTÓTc                 ó8   — | j                   d   j                  ryy rg   rh   r`   s    r'   Ú_eval_is_realzAbs._eval_is_realk  rk   rH   c                 óh   — | j                   d   j                  r| j                   d   j                  S y rY   )r   r-   r³   r`   s    r'   r°   zAbs._eval_is_integero  s,   € Ø�9‰9�Q‰<×(Ò(Ø—9‘9˜Q‘<×*Ñ*Ð*ð )rH   c                 óF   — t        | j                  d   j                  «      S rY   ©r   Ú_argsrd   r`   s    r'   Ú_eval_is_extended_nonzerozAbs._eval_is_extended_nonzeros  ó   € Ü˜Ÿ™ A™×.Ñ.Ó/Ð/rH   c                 ó4   — | j                   d   j                  S rY   )r  rd   r`   s    r'   re   zAbs._eval_is_zerov  s   € Ø�z‰z˜!‰}×$Ñ$Ð$rH   c                 óF   — t        | j                  d   j                  «      S rY   r  r`   s    r'   Ú_eval_is_extended_positivezAbs._eval_is_extended_positivey  r  rH   c                 óh   — | j                   d   j                  r| j                   d   j                  S y rY   )r   r-   Úis_rationalr`   s    r'   Ú_eval_is_rationalzAbs._eval_is_rational|  s,   € Ø�9‰9�Q‰<×(Ò(Ø—9‘9˜Q‘<×+Ñ+Ð+ð )rH   c                 óh   — | j                   d   j                  r| j                   d   j                  S y rY   )r   r-   r´   r`   s    r'   Ú_eval_is_evenzAbs._eval_is_even€  s,   € Ø�9‰9�Q‰<×(Ò(Ø—9‘9˜Q‘<×'Ñ'Ð'ð )rH   c                 óh   — | j                   d   j                  r| j                   d   j                  S y rY   )r   r-   Úis_oddr`   s    r'   Ú_eval_is_oddzAbs._eval_is_odd„  s,   € Ø�9‰9�Q‰<×(Ò(Ø—9‘9˜Q‘<×&Ñ&Ð&ð )rH   c                 ó4   — | j                   d   j                  S rY   r^   r`   s    r'   ra   zAbs._eval_is_algebraicˆ  rb   rH   c                 óö   — | j                   d   j                  r`|j                  rT|j                  r| j                   d   |z  S |t        j
                  ur$|j                  r| j                   d   |dz
  z  | z  S y )Nr   r{   )r   r-   r³   r´   r   r—   Ú
is_Integer)rL   rù   s     r'   r¶   zAbs._eval_power‹  sj   € Ø�9‰9�Q‰<×(Ò(¨X×-@Ò-@Ø×ÒØ—y‘y ‘| XÑ-Ð-Ø¤§¡Ñ.°8×3FÒ3FØ—y‘y ‘| h°¡lÑ3°DÑ8Ð8ØrH   c                 ó(  — ddl m} | j                  d   j                  |«      d   }|j	                   ||«      «      r|j                   ||«      |«      }| j                  d   j                  |||¬«      }t        |«      |z  j                  «       S )Nr   )r×   )r»   r¼   )	rè   r×   r   Úleadtermr8   r¸   rÀ   rˆ   Úexpand)rL   rU   r»   r¼   r½   r×   Ú	directionr�   s           r'   rÀ   zAbs._eval_nseries“  s}   € Ý>Ø—I‘I˜a‘L×)Ñ)¨!Ó,¨QÑ/ˆ	Ø�=‰=™˜Q›Ô Ø!Ÿ™¡s¨1£v¨tÓ4ˆIØ�I‰I�a‰L×&Ñ& q¨A°DÐ&Ó9ˆÜ�Y“ Ñ!×)Ñ)Ó+Ð+rH   c                 ó2  — | j                   d   j                  s| j                   d   j                  r=t        | j                   d   |d¬«      t	        t        | j                   d   «      «      z  S t        | j                   d   «      t        t        | j                   d   «      |d¬«      z  t        | j                   d   «      t        t        | j                   d   «      |d¬«      z  z   t        | j                   d   «      z  }|j                  t        «      S rQ   )
r   r-   r.   r   rˆ   r4   r   r:   rŒ   Úrewrite)rL   rU   Úrvs      r'   rV   zAbs._eval_derivative›  sã   € Ø�9‰9�Q‰<×(Ò(¨D¯I©I°a©L×,EÒ,EÜ˜dŸi™i¨™l¨A¸Ô=Ü”y §¡¨1¡Ó.Ó/ñ0ð 0ä�—‘˜1‘Ó¤¬B¨t¯y©y¸©|Ó,<¸aØô"ñ Ü §	¡	¨!¡Ó-´
¼2¸d¿i¹iÈ¹lÓ;KØ˜Dô1"ñ "ñ"ä%(¨¯©°1©Ó%6ñ7ˆð �z‰zœ$ÓÐrH   c                 óR   — ddl m} |j                  r| ||«       || «      z
  z  S y )Nr   rÅ   rÇ   rÈ   s       r'   rÉ   zAbs._eval_rewrite_as_Heaviside¤  s0   € õ 	FØ×ÒØ™	 #›©°C°4«Ñ8Ñ9Ð9ð  rH   c                 ó®   — |j                   rt        ||dk\  f| df«      S |j                  r)t        t        |z  t        |z  dk\  ft         |z  df«      S y rg   )r-   r   r.   r   rZ   s      r'   rÃ   zAbs._eval_rewrite_as_Piecewise«  s\   € Ø×ÒÜ˜c 3¨!¡8˜_°¨t°T¨lÓ;Ð;Ø×ÒÜœa ™e¤Q s¡U¨a¡ZÐ0´A°2°c±6¸4°.ÓAÐAð rH   c                 ó   — |t        |«      z  S r"   )rˆ   rZ   s      r'   Ú_eval_rewrite_as_signzAbs._eval_rewrite_as_sign±  s   € Ø”4˜“9‰}ÐrH   c                 ó0   — t        |t        |«      z  «      S r"   )r   r4   rZ   s      r'   Ú_eval_rewrite_as_conjugatezAbs._eval_rewrite_as_conjugate´  s   € Ü�Cœ	 #›Ñ&Ó'Ð'rH   N)r{   rÎ   )ro   rp   rq   rr   rs   r   rt   r-   r’   rê   ru   rv   rÔ   rw   rG   rþ   r°   r  re   r  r
  r  r  ra   r¶   rÀ   rV   rÉ   rÃ   r  r  rx   rH   r'   rŒ   rŒ   ¾  s�   … ñ7ðr �‰,ÓàÐØ ÐØ"ÐØ€JØ€Nó5ð ñ^2ó ð^2ò@ò+ò0ò%ò0ò,ò(ò'ò)òó,ò ò:òBòó(rH   rŒ   c                   ó<   — e Zd ZdZdZdZdZdZed„ «       Z	d„ Z
d„ Zy)r=   a©  
    Returns the argument (in radians) of a complex number. The argument is
    evaluated in consistent convention with ``atan2`` where the branch-cut is
    taken along the negative real axis and ``arg(z)`` is in the interval
    $(-\pi,\pi]$. For a positive number, the argument is always 0; the
    argument of a negative number is $\pi$; and the argument of 0
    is undefined and returns ``nan``. So the ``arg`` function will never nest
    greater than 3 levels since at the 4th application, the result must be
    nan; for a real number, nan is returned on the 3rd application.

    Examples
    ========

    >>> from sympy import arg, I, sqrt, Dummy
    >>> from sympy.abc import x
    >>> arg(2.0)
    0
    >>> arg(I)
    pi/2
    >>> arg(sqrt(2) + I*sqrt(2))
    pi/4
    >>> arg(sqrt(3)/2 + I/2)
    pi/6
    >>> arg(4 + 3*I)
    atan(3/4)
    >>> arg(0.8 + 0.6*I)
    0.643501108793284
    >>> arg(arg(arg(arg(x))))
    nan
    >>> real = Dummy(real=True)
    >>> arg(arg(arg(real)))
    nan

    Parameters
    ==========

    arg : Expr
        Real or complex expression.

    Returns
    =======

    value : Expr
        Returns arc tangent of arg measured in radians.

    Tc                 óÀ  — |}t        d«      D ]B  }t        || «      r|j                  d   }Œ|dk(  r|j                  rt        j
                  c S  n t        j
                  S ddlm}m} t        ||«      rt        |t        «      S t        ||«      ret        |j                  d   «      }|j                  rA|dt        j                  z  z  }|t        j                  kD  r|dt        j                  z  z  }|S |j                  sot        |«      j!                  «       \  }}|j"                  r8t%        |j                  D �cg c]  }t'        |«      dvr|n
t'        |«      ‘Œ c}Ž }t'        |«      |z  }n|}t)        d„ |j+                  t,        «      D «       «      ry ddlm}	 |j3                  «       \  }
} |	||
«      }|j4                  r|S ||k7  r
 | |d¬	«      S y c c}w )
Né   r   r¤   ©r™   Ú	exp_polar)rÂ   r{   c              3   ó8   K  — | ]  }|j                   d u –— Œ y ­wr"   )r“   )r%   rÛ   s     r'   r(   zarg.eval.<locals>.<genexpr>  s   è ø€ ÒP°!ˆq×%Ñ%¨Ô-ÑPùs   ‚©Úatan2FrR   )Úranger3   r   r-   r   r+   rè   r™   r$  Úperiodic_argumentr   r:   r”   ÚPiÚis_Atomr   Úas_coeff_Mulr�   r   rˆ   rî   rð   r   Ú(sympy.functions.elementary.trigonometricr'  r1   Ú	is_number)r<   r=   rD   rÛ   r™   r$  Úi_rF   Úarg_r'  rU   Úyr  s                r'   rG   zarg.evalí  s�  € àˆÜ�q“ò 	ˆAÜ˜!˜SÔ!Ø—F‘F˜1‘I‘à˜’6˜a×0Ò0ÜŸ5™5’LÙð	ô —5‘5ˆLßIÜ�c˜9Ô%Ü$ S¬"Ó-Ð-Ü˜˜SÔ!Ü�C—H‘H˜Q‘K“ˆBØ×ÒØ�aœŸ™‘f‘�ØœŸ™’9Ø˜!œAŸD™D™&‘L�BØ�	à�{Š{Ü" 3Ó'×4Ñ4Ó6‰GˆAˆtØ�{Š{ÜØ%)§Y¡Yö0Ø !ô $(¨£7°'Ñ#9™QÜ˜“Gñò 0ð 1�ä˜“7˜4‘<‰DàˆDÜÑP°t·z±zÄ,Ó7OÔPÔPØÝBØ× Ñ Ó"‰ˆˆ1Ù�1�a‹[ˆØ�<Š<ØˆIØ�3Š;Ù�t eÔ,Ð,ð ùò0s   Ä?!Gc                 ó    — | j                   d   j                  «       \  }}|t        ||d¬«      z  |t        ||d¬«      z  z
  |dz  |dz  z   z  S )Nr   TrR   r¤   )r   r1   r   )rL   rö   rU   r1  s       r'   rV   zarg._eval_derivative  s`   € Ø�y‰y˜‰|×(Ñ(Ó*‰ˆˆ1Ø”J˜q !¨dÔ3Ñ3°aÜ˜q !¨dÔ3ñ74ñ 4Ø89¸1¹¸qÀ!¹t¹ñEð 	ErH   c                 ó`   — ddl m} | j                  d   j                  «       \  }} |||«      S )Nr   r&  )r-  r'  r   r1   )rL   r=   r[   r'  rU   r1  s         r'   Ú_eval_rewrite_as_atan2zarg._eval_rewrite_as_atan2  s+   € ÝBØ�y‰y˜‰|×(Ñ(Ó*‰ˆˆ1Ù�Q˜‹{ÐrH   N)ro   rp   rq   rr   r-   Úis_realri   rv   rw   rG   rV   r4  rx   rH   r'   r=   r=   ¸  s=   „ ñ-ð^ ÐØ€GØ€IØ€Nàñ&-ó ð&-òPEó
rH   r=   c                   óN   — e Zd ZdZdZed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)r4   a>  
    Returns the *complex conjugate* [1]_ of an argument.
    In mathematics, the complex conjugate of a complex number
    is given by changing the sign of the imaginary part.

    Thus, the conjugate of the complex number
    :math:`a + ib` (where $a$ and $b$ are real numbers) is :math:`a - ib`

    Examples
    ========

    >>> from sympy import conjugate, I
    >>> conjugate(2)
    2
    >>> conjugate(I)
    -I
    >>> conjugate(3 + 2*I)
    3 - 2*I
    >>> conjugate(5 - I)
    5 + I

    Parameters
    ==========

    arg : Expr
        Real or complex expression.

    Returns
    =======

    arg : Expr
        Complex conjugate of arg as real, imaginary or mixed expression.

    See Also
    ========

    sign, Abs

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Complex_conjugation
    Tc                 ó,   — |j                  «       }|�|S y r"   )r¡   ©r<   r=   ró   s      r'   rG   zconjugate.evalO  ó   € à×!Ñ!Ó#ˆØˆ?ØˆJð rH   c                 ó   — t         S r"   )r4   r`   s    r'   Úinversezconjugate.inverseU  s   € ÜÐrH   c                 ó6   — t        | j                  d   d¬«      S rQ   ©rŒ   r   r`   s    r'   rŸ   zconjugate._eval_AbsX  ó   € Ü�4—9‘9˜Q‘<¨$Ô/Ð/rH   c                 ó2   — t        | j                  d   «      S rY   ©Ú	transposer   r`   s    r'   Ú_eval_adjointzconjugate._eval_adjoint[  ó   € Ü˜Ÿ™ 1™Ó&Ð&rH   c                 ó    — | j                   d   S rY   ©r   r`   s    r'   r¡   zconjugate._eval_conjugate^  ó   € Ø�y‰y˜‰|ÐrH   c                 óÆ   — |j                   r$t        t        | j                  d   |d¬«      «      S |j                  r%t        t        | j                  d   |d¬«      «       S y rQ   )r5  r4   r   r   r.   rT   s     r'   rV   zconjugate._eval_derivativea  sP   € Ø�9Š9ÜœZ¨¯	©	°!©°aÀ$ÔGÓHÐHØ�^Š^Üœj¨¯©°1©°qÀ4ÔHÓIÐIÐIð rH   c                 ó2   — t        | j                  d   «      S rY   ©Úadjointr   r`   s    r'   Ú_eval_transposezconjugate._eval_transposeg  ó   € Ü�t—y‘y ‘|Ó$Ð$rH   c                 ó4   — | j                   d   j                  S rY   r^   r`   s    r'   ra   zconjugate._eval_is_algebraicj  rb   rH   N)ro   rp   rq   rr   rv   rw   rG   r;  rŸ   rB  r¡   rV   rK  ra   rx   rH   r'   r4   r4   !  sE   „ ñ*ðV €Nàñó ðò
ò0ò'òòJò%ó)rH   r4   c                   ó2   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zy)rA  aŒ  
    Linear map transposition.

    Examples
    ========

    >>> from sympy import transpose, Matrix, MatrixSymbol
    >>> A = MatrixSymbol('A', 25, 9)
    >>> transpose(A)
    A.T
    >>> B = MatrixSymbol('B', 9, 22)
    >>> transpose(B)
    B.T
    >>> transpose(A*B)
    B.T*A.T
    >>> M = Matrix([[4, 5], [2, 1], [90, 12]])
    >>> M
    Matrix([
    [ 4,  5],
    [ 2,  1],
    [90, 12]])
    >>> transpose(M)
    Matrix([
    [4, 2, 90],
    [5, 1, 12]])

    Parameters
    ==========

    arg : Matrix
         Matrix or matrix expression to take the transpose of.

    Returns
    =======

    value : Matrix
        Transpose of arg.

    c                 ó,   — |j                  «       }|�|S y r"   )rK  r8  s      r'   rG   ztranspose.eval—  r9  rH   c                 ó2   — t        | j                  d   «      S rY   ©r4   r   r`   s    r'   rB  ztranspose._eval_adjoint�  rC  rH   c                 ó2   — t        | j                  d   «      S rY   rI  r`   s    r'   r¡   ztranspose._eval_conjugate   rL  rH   c                 ó    — | j                   d   S rY   rE  r`   s    r'   rK  ztranspose._eval_transpose£  rF  rH   N)	ro   rp   rq   rr   rw   rG   rB  r¡   rK  rx   rH   r'   rA  rA  n  s+   „ ñ&ðP ñó ðò
'ò%órH   rA  c                   ó@   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd	d„Z	d„ Z
y)
rJ  aµ  
    Conjugate transpose or Hermite conjugation.

    Examples
    ========

    >>> from sympy import adjoint, MatrixSymbol
    >>> A = MatrixSymbol('A', 10, 5)
    >>> adjoint(A)
    Adjoint(A)

    Parameters
    ==========

    arg : Matrix
        Matrix or matrix expression to take the adjoint of.

    Returns
    =======

    value : Matrix
        Represents the conjugate transpose or Hermite
        conjugation of arg.

    c                 óf   — |j                  «       }|�|S |j                  «       }|�t        |«      S y r"   )rB  rK  r4   r8  s      r'   rG   zadjoint.evalÂ  s<   € à×ÑÓ!ˆØˆ?ØˆJØ×!Ñ!Ó#ˆØˆ?Ü˜S“>Ð!ð rH   c                 ó    — | j                   d   S rY   rE  r`   s    r'   rB  zadjoint._eval_adjointË  rF  rH   c                 ó2   — t        | j                  d   «      S rY   r@  r`   s    r'   r¡   zadjoint._eval_conjugateÎ  rC  rH   c                 ó2   — t        | j                  d   «      S rY   rQ  r`   s    r'   rK  zadjoint._eval_transposeÑ  rC  rH   Nc                 ób   — |j                  | j                  d   «      }d|z  }|r	d|›d|›d�}|S )Nr   z%s^{\dagger}z\left(z	\right)^{ú})Ú_printr   )rL   Úprinterr™   r   r=   Útexs         r'   Ú_latexzadjoint._latexÔ  s4   € Ø�n‰n˜TŸY™Y q™\Ó*ˆØ Ñ#ˆÚÚ-0²#Ð6ˆCØˆ
rH   c                 óš   — ddl m}  |j                  | j                  d   g|¢­Ž }|j                  r| |d«      z  }|S | |d«      z  }|S )Nr   )Ú
prettyFormu   â€ ú+)Ú sympy.printing.pretty.stringpictr`  r[  r   Ú_use_unicode)rL   r\  r   r`  Úpforms        r'   Ú_prettyzadjoint._prettyÛ  sV   € Ý?Ø�—‘˜tŸy™y¨™|Ð3¨dÒ3ˆØ×ÒØ™: lÓ3Ñ3ˆEð ˆð ™: c›?Ñ*ˆEØˆrH   r"   )ro   rp   rq   rr   rw   rG   rB  r¡   rK  r^  re  rx   rH   r'   rJ  rJ  §  s4   „ ñð4 ñ"ó ð"òò'ò'óórH   rJ  c                   ó4   — e Zd ZdZdZdZed„ «       Zd„ Zd„ Z	y)Ú
polar_lifta¢  
    Lift argument to the Riemann surface of the logarithm, using the
    standard branch.

    Examples
    ========

    >>> from sympy import Symbol, polar_lift, I
    >>> p = Symbol('p', polar=True)
    >>> x = Symbol('x')
    >>> polar_lift(4)
    4*exp_polar(0)
    >>> polar_lift(-4)
    4*exp_polar(I*pi)
    >>> polar_lift(-I)
    exp_polar(-I*pi/2)
    >>> polar_lift(I + 2)
    polar_lift(2 + I)

    >>> polar_lift(4*x)
    4*polar_lift(x)
    >>> polar_lift(4*p)
    4*p

    Parameters
    ==========

    arg : Expr
        Real or complex expression.

    See Also
    ========

    sympy.functions.elementary.exponential.exp_polar
    periodic_argument
    TFc                 ó  — ddl m} |j                  rD ||«      }|dt        dz  t         dz  t        fv r!ddlm}  |t        |z  «      t        |«      z  S |j                  r|j                  }n|g}g }g }g }|D ].  }|j                  r||gz  }Œ|j                  r||gz  }Œ)||gz  }Œ0 t        |«      t        |«      k  rC|rt        ||z   Ž t        t        |Ž «      z  S |rt        ||z   Ž S ddlm} t        |Ž  |d«      z  S y )Nr   ©r=   r¤   ©r$  )Ú$sympy.functions.elementary.complexesr=   r.  r   rè   r$  r   Úabsr�   r   Úis_polarrë   r9   r   rg  )	r<   r=   ÚargumentÚarr$  r   r>   r@   Úpositives	            r'   rG   zpolar_lift.eval  s  € åHØ�=Š=Ù˜#“ˆBð
 �aœ˜A™¤˜s 1™u¤bÐ)Ñ)ÝLÙ ¤ 2¡“¤s¨3£xÑ/Ð/à�:Š:Ø—8‘8‰Dà�5ˆDØˆØˆØˆØò 	"ˆCØ�|Š|Ø˜S˜EÑ!‘Ø—’Ø˜S˜EÑ!‘à˜S˜EÑ!‘ð	"ô ˆx‹=œ3˜t›9Ò$ÙÜ˜X¨Ñ0Ð2´:¼cÀ8¸nÓ3MÑMÐMÙÜ˜X¨Ñ0Ð2Ð2åLÜ˜H�~¡i°£lÑ2Ð2ð %rH   c                 ó>   — | j                   d   j                  |«      S )z. Careful! any evalf of polar numbers is flaky r   )r   Ú_eval_evalf)rL   Úprecs     r'   rr  zpolar_lift._eval_evalf6  s   € à�y‰y˜‰|×'Ñ'¨Ó-Ð-rH   c                 ó6   — t        | j                  d   d¬«      S rQ   r=  r`   s    r'   rŸ   zpolar_lift._eval_Abs:  r>  rH   N)
ro   rp   rq   rr   rm  r”   rw   rG   rr  rŸ   rx   rH   r'   rg  rg  é  s1   „ ñ#ðJ €HØ€Màñ!3ó ð!3òF.ó0rH   rg  c                   ó6   — e Zd ZdZed„ «       Zed„ «       Zd„ Zy)r)  aÅ  
    Represent the argument on a quotient of the Riemann surface of the
    logarithm. That is, given a period $P$, always return a value in
    $(-P/2, P/2]$, by using $\exp(PI) = 1$.

    Examples
    ========

    >>> from sympy import exp_polar, periodic_argument
    >>> from sympy import I, pi
    >>> periodic_argument(exp_polar(10*I*pi), 2*pi)
    0
    >>> periodic_argument(exp_polar(5*I*pi), 4*pi)
    pi
    >>> from sympy import exp_polar, periodic_argument
    >>> from sympy import I, pi
    >>> periodic_argument(exp_polar(5*I*pi), 2*pi)
    pi
    >>> periodic_argument(exp_polar(5*I*pi), 3*pi)
    -pi
    >>> periodic_argument(exp_polar(5*I*pi), pi)
    0

    Parameters
    ==========

    ar : Expr
        A polar number.

    period : Expr
        The period $P$.

    See Also
    ========

    sympy.functions.elementary.exponential.exp_polar
    polar_lift : Lift argument to the Riemann surface of the logarithm
    principal_branch
    c           	      ó  — ddl m}m} |j                  r|j                  }n|g}d}|D ]Û  }|j
                  s|t        |«      z  }Œt        ||«      r!||j                  j                  «       d   z  }ŒK|j                  rX|j                  j                  «       \  }}||t        |j                  «      z  | |t        |j                  «      «      z  z   z  }Œ¯t        |t        «      r|t        |j                  d   «      z  }ŒÛ y  |S )Nr   )r$  r×   r{   )rè   r$  r×   r�   r   rm  r=   r3   r™   r1   r˜   Úunbranched_argumentrç   rl  rg  )	r<   ro  r$  r×   r   ru   rD   r   r:   s	            r'   Ú_getunbranchedz periodic_argument._getunbranchedg  sí   € çIØ�9Š9Ø—7‘7‰Dà�4ˆDØˆ
Øò 	ˆAØ—:’:Øœc !›fÑ$‘
Ü˜A˜yÔ)Ø˜aŸe™e×0Ñ0Ó2°1Ñ5Ñ5‘
Ø—’ØŸ™×+Ñ+Ó-‘��BØ˜bÔ!4Ø—F‘Fó"ñ Ø ¡¤S¨¯©£[Ó!1Ñ1ñ2ñ 2‘
ä˜AœzÔ*Øœc !§&¡&¨¡)›nÑ,‘
áð	ð ÐrH   c                 óº  — |j                   sy |t        k(  r"t        |t        «      rt	        |j
                  Ž S t        |t        «      r%|dt        z  k\  rt	        |j
                  d   |«      S |j                  rY|j
                  D �cg c]  }|j                  rŒ|‘Œ }}t        |«      t        |j
                  «      k7  rt	        t        |Ž |«      S | j                  |«      }|€y ddlm}m} |j!                  t        ||«      ry |t        k(  r|S |t        k7  r<ddlm}  |||z  t&        j(                  z
  «      |z  }	|	j!                  |«      s||	z
  S y y c c}w )Nr¤   r   )Úatanr'  ©Úceiling)r“   r   r3   Úprincipal_branchr)  r   rg  r   r�   rë   r9   r   rx  r-  rz  r'  r8   Ú#sympy.functions.elementary.integersr|  r   rš   )
r<   ro  ÚperiodrU   Únewargsru   rz  r'  r|  r»   s
             r'   rG   zperiodic_argument.eval~  s+  € ð ×*Ò*ØØ”RŠ<œJ rÔ+;Ô<Ü$ b§g¡gÐ.Ð.Ü�bœ*Ô%¨&°A´b±Dª.Ü$ R§W¡W¨Q¡Z°Ó8Ð8Ø�9Š9Ø"$§'¡'Ö?˜Q°·³’qÐ?ˆGÐ?Ü�7‹|œs 2§7¡7›|Ò+Ü(¬¨g¨¸Ó?Ð?Ø×'Ñ'¨Ó+ˆ
ØÐØßHØ�>‰>Ô+¨U°DÔ9ØØ”RŠ<ØÐØ”RŠ<ÝCÙ˜
 6Ñ)¬A¯F©FÑ2Ó3°FÑ:ˆAØ—5‘5˜”>Ø! A‘~Ð%ð "ð ùò @s   ÂEÂEc                 ó2  — | j                   \  }}|t        k(  r*t        j                  |«      }|€| S |j	                  |«      S t        |t        «      j	                  |«      }ddlm} | |||z  t        j                  z
  «      |z  z
  j	                  |«      S )Nr   r{  )	r   r   r)  rx  rr  r~  r|  r   rš   )rL   rs  rú   r  ru   Úubr|  s          r'   rr  zperiodic_argument._eval_evalfœ  s‰   € Ø—I‘I‰	ˆˆ6Ø”RŠ<Ü*×9Ñ9¸!Ó<ˆJØÐ!Ø�Ø×)Ñ)¨$Ó/Ð/Ü˜q¤"Ó%×1Ñ1°$Ó7ˆÝ?Ø‘W˜R ™Y¬¯©Ñ/Ó0°Ñ7Ñ7×DÑDÀTÓJÐJrH   N)ro   rp   rq   rr   rw   rx  rG   rr  rx   rH   r'   r)  r)  >  s6   „ ñ&ðP ñó ðð, ñ&ó ð&ó:	KrH   r)  c                 ó"   — t        | t        «      S )a\  
    Returns periodic argument of arg with period as infinity.

    Examples
    ========

    >>> from sympy import exp_polar, unbranched_argument
    >>> from sympy import I, pi
    >>> unbranched_argument(exp_polar(15*I*pi))
    15*pi
    >>> unbranched_argument(exp_polar(7*I*pi))
    7*pi

    See also
    ========

    periodic_argument
    )r)  r   ri  s    r'   rw  rw  ¨  s   € ô& ˜S¤"Ó%Ð%rH   c                   ó.   — e Zd ZdZdZdZed„ «       Zd„ Zy)r}  aÎ  
    Represent a polar number reduced to its principal branch on a quotient
    of the Riemann surface of the logarithm.

    Explanation
    ===========

    This is a function of two arguments. The first argument is a polar
    number `z`, and the second one a positive real number or infinity, `p`.
    The result is ``z mod exp_polar(I*p)``.

    Examples
    ========

    >>> from sympy import exp_polar, principal_branch, oo, I, pi
    >>> from sympy.abc import z
    >>> principal_branch(z, oo)
    z
    >>> principal_branch(exp_polar(2*pi*I)*3, 2*pi)
    3*exp_polar(0)
    >>> principal_branch(exp_polar(2*pi*I)*3*z, 2*pi)
    3*principal_branch(z, 2*pi)

    Parameters
    ==========

    x : Expr
        A polar number.

    period : Expr
        Positive real number or infinity.

    See Also
    ========

    sympy.functions.elementary.exponential.exp_polar
    polar_lift : Lift argument to the Riemann surface of the logarithm
    periodic_argument
    TFc                 ó¬  — ddl m} t        |t        «      rt	        |j
                  d   |«      S |t        k(  r|S t        |t        «      }t        ||«      }||k7  rº|j                  t        «      s¥|j                  t        «      s�t        |«      }d„ }|j                  t        |«      }t        |t        «      }|j                  t        «      sG||k7  r |t        ||z
  z  «      |z  }n|}|j                  s|j                  |«      s| |d«      z  }|S |j                  s|d}
}	n |j                  |j                  Ž \  }	}
g }|
D ]  }|j                  r|	|z  }	Œ||gz  }Œ t        |«      }
t        |	|«      }|j                  t        «      ry |j                   rnt#        |	«      |k7  s|dk(  r[|
dk7  rV|	dk7  rQ|dk(  rt%        |	«      t	        t'        |
Ž |«      z  S t	         |t        |z  «      t'        |
Ž z  |«      t%        |	«      z  S |j                   r>t%        |«      |dz  k  dk(  s||dz  k(  r!|
dk(  r ||t        z  «      t%        |	«      z  S y y y )Nr   rj  c                 ó<   — t        | t        «      st        | «      S | S r"   )r3   r   rg  )Úexprs    r'   Úmrz!principal_branch.eval.<locals>.mr÷  s   € Ü! $¬Ô/Ü% dÓ+Ð+Ø�rH   rx   r{   r¤   T)rè   r$  r3   rg  r}  r   r   r)  r8   Úreplacer   rm  rå   r‘   rë   Útupler.  rw  rl  r   )rL   rU   r  r$  r‚  ÚbargÚplrˆ  ÚresrF   ÚmÚothersr1  r=   s                 r'   rG   zprincipal_branch.evalê  s)  € åDÜ�aœÔ$Ü# A§F¡F¨1¡I¨vÓ6Ð6Ø”RŠ<ØˆHÜ˜q¤"Ó%ˆÜ   FÓ+ˆØ�Š:˜bŸf™fÔ%6Ô7ØŸ™Ô!2Ô3Ü˜A“ˆBòð —‘œJ¨Ó+ˆBä" 2¤rÓ*ˆBØ—6‘6œ*Ô%Ø˜’:Ù#¤A t¨b¡y¡MÓ2°2Ñ5‘Cà�CØ—|’|¨C¯G©G°IÔ,>Ø™9 Q›<Ñ'�CØ�
à�~Š~Ø�bˆq‰Aà!�1—>‘> 1§>¡>Ð2‰DˆAˆqØˆØò 	ˆAØ�}Š}Ø�Q‘‘à˜1˜#‘‘ð		ô
 �&‹MˆÜ  6Ó*ˆØ�7‰7Ô$Ô%ØØ�=Š=Ô1°!Ó4¸Ò;Ø" ašx¨A°ªG¸¸QºØ�aŠxÜ˜1“vÔ.¬s°A¨w¸Ó?Ñ?Ð?Ü#¡I¬a°©eÓ$4´S¸!°WÑ$<¸fÓEÄcÈ!ÃfÑLÐLØ�=Š=œs 3›x¨&°©(Ñ2°tÒ;¸sÀfÈQÁhºØ˜’GÙ˜S¤™UÓ#¤C¨£FÑ*Ð*ð ð @Oˆ=rH   c                 óò   — | j                   \  }}t        ||«      j                  |«      }t        |«      t        kD  s
|t         k(  r| S ddlm} t        |«       |t        |z  «      z  j                  |«      S )Nr   )r™   )r   r)  rr  rl  r   rè   r™   r   )rL   rs  rú   r  Úpr™   s         r'   rr  zprincipal_branch._eval_evalf  sb   € Ø—I‘I‰	ˆˆ6Ü˜a Ó(×4Ñ4°TÓ:ˆÜˆq‹6”BŠ;˜!¤˜sš(ØˆKÝ>Ü�A“‘sœ1˜Q™3“x‘×,Ñ,¨TÓ2Ð2rH   N)	ro   rp   rq   rr   rm  r”   rw   rG   rr  rx   rH   r'   r}  r}  ¾  s,   „ ñ&ðP €HØ€Màñ1+ó ð1+óf3rH   r}  c           
      ó<  — ddl m} | j                  r| S | j                  r|st	        | «      S t        | t        «      r|s|rt	        | «      S | j                  r| S | j                  rB | j                  | j                  D �cg c]  }t        ||d¬«      ‘Œ c}Ž }|rt	        |«      S |S | j                  rS| j                  t        j                  k(  r6| j                  t        j                  t        | j                   |d¬«      «      S | j"                  r3 | j                  | j                  D �cg c]  }t        ||d¬«      ‘Œ c}Ž S t        | |«      rwt        | j$                  ||¬«      }g }| j                  dd  D ]9  }t        |d   d|¬«      }	t        |dd  ||¬«      }
|j'                  |	f|
z   «       Œ;  ||ft)        |«      z   Ž S  | j                  | j                  D �cg c]"  }t        |t*        «      rt        |||¬«      n|‘Œ$ c}Ž S c c}w c c}w c c}w )Nr   )ÚIntegralT)ÚpauseFr{   )Úliftr”  )Úsympy.integrals.integralsr“  rm  r.  rg  r3   r   r+  rì   r¹   r   Ú	_polarifyr˜   rç   r   ÚExp1r™   r2   Úfunctionr7   rŠ  r   )Úeqr•  r”  r“  r=   Úrr¹   ÚlimitsÚlimitÚvarÚrests              r'   r—  r—  '  sØ  € Ý2Ø	‡{‚{Øˆ	Ø	‡|‚|™EÜ˜"‹~ÐÜ�"”fÔ¡e±Ü˜"‹~ÐØ	�ŠØˆ	Ø	�ŠØˆB�G‰GÀ"Ç'Á'ÖJ¸3”i  T°Ö6ÒJÐKˆÙÜ˜a“=Ð ØˆØ	�Š�r—w‘w¤!§&¡&Ò(Ø�w‰w”q—v‘vœy¨¯©°¸UÔCÓDÐDØ	�ŠØˆr�w‰wÀbÇgÁgÖN¸sœ 3¨°EÖ:ÒNÐOÐOÜ	�B˜Ô	!ä˜Ÿ™ d°%Ô8ˆØˆØ—W‘W˜Q˜R�[ò 	)ˆEÜ˜E !™H¨5¸Ô>ˆCÜ˜U 1 2˜Y¨T¸Ô?ˆDØ�M‰M˜3˜& 4™-Õ(ð	)ñ ˜4˜'¤E¨&£MÑ1Ð3Ð3àˆr�w‰wØFHÇgÁgöOØ?BœJ s¬DÔ1ô # 3¨°EÕ:Ø7:ñ;ò Oð Pð 	Pùò% Kùò OùòOs   ÂHÄ.HÇ$'Hc                 ó  — |rd}t        t        | «      |«      } |s| S | j                  D �ci c]  }|t        |j                  d¬«      “Œ }}| j                  |«      } | |j                  «       D ��ci c]  \  }}||“Œ
 c}}fS c c}w c c}}w )aÓ  
    Turn all numbers in eq into their polar equivalents (under the standard
    choice of argument).

    Note that no attempt is made to guess a formal convention of adding
    polar numbers, expressions like $1 + x$ will generally not be altered.

    Note also that this function does not promote ``exp(x)`` to ``exp_polar(x)``.

    If ``subs`` is ``True``, all symbols which are not already polar will be
    substituted for polar dummies; in this case the function behaves much
    like :func:`~.posify`.

    If ``lift`` is ``True``, both addition statements and non-polar symbols are
    changed to their ``polar_lift()``ed versions.
    Note that ``lift=True`` implies ``subs=False``.

    Examples
    ========

    >>> from sympy import polarify, sin, I
    >>> from sympy.abc import x, y
    >>> expr = (-x)**y
    >>> expr.expand()
    (-x)**y
    >>> polarify(expr)
    ((_x*exp_polar(I*pi))**_y, {_x: x, _y: y})
    >>> polarify(expr)[0].expand()
    _x**_y*exp_polar(_y*I*pi)
    >>> polarify(x, lift=True)
    polar_lift(x)
    >>> polarify(x*(1+y), lift=True)
    polar_lift(x)*polar_lift(y + 1)

    Adds are treated carefully:

    >>> polarify(1 + sin((1 + I)*x))
    (sin(_x*polar_lift(1 + I)) + 1, {_x: x})
    FT)Úpolar)r—  r   rå   r	   Únamer¸   Úitems)rš  r¸   r•  r�   Úrepsr›  s         r'   Úpolarifyr¥  H  s†   € ñP ØˆÜ	”7˜2“; Ó	%€BÙØˆ	Ø24·/±/ÖB¨QˆAŒu�Q—V‘V 4Ô(Ñ(ÐB€DÐBØ	�‰�‹€BØ §¡£×.™˜˜A��1‘Ó.Ð.Ð.ùò Cùã.s   ¬BÁ2B	c           
      óX  — t        | t        «      r| j                  r| S |�s&ddlm}m} t        | |«      r |t        | j                  |«      «      S t        | t        «      r2| j                  d   dt        z  k(  rt        | j                  d   |«      S | j                  sN| j                  sB| j                  s6| j                  r[| j                  dv rd| j                  v s| j                  dvr1 | j                  | j                  D �cg c]  }t        ||«      ‘Œ c}Ž S t        | t         «      rt        | j                  d   |«      S | j"                  rBt        | j                  |«      }t        | j$                  ||j&                  xr |  «      }||z  S | j(                  rIt+        | j                  dd«      r2 | j                  | j                  D �cg c]  }t        |||«      ‘Œ c}Ž S  | j                  | j                  D �cg c]  }t        ||d«      ‘Œ c}Ž S c c}w c c}w c c}w )	Nr   r#  r{   r¤   )z==z!=ru   FT)r3   r
   r+  rè   r™   r$  Ú_unpolarifyr}  r   r   rì   r�   Ú
is_BooleanÚis_RelationalÚrel_opr¹   rg  r˜   rç   r³   r2   Úgetattr)rš  Úexponents_onlyr”  r™   r$  rU   Úexporç   s           r'   r§  r§  z  sÀ  € Ü�bœ%Ô  B§J¢JØˆ	âßIÜ�b˜)Ô$Ù”{ 2§6¡6¨>Ó:Ó;Ð;Ü�bÔ*Ô+°·±¸±
¸aÄ¹dÒ0BÜ˜rŸw™w q™z¨>Ó:Ð:à�IŠI˜Ÿš b§m¢mØ×ÒØ—	‘	˜\Ñ)¨a°2·7±7©lØ—	‘	 Ñ-à�2—7‘7ÀRÇWÁWÖMÀœ[¨¨NÕ;ÒMÐNÐNÜ�bœ*Ô%Ü˜rŸw™w q™z¨>Ó:Ð:à	‡y‚yÜ˜2Ÿ6™6 >Ó2ˆÜ˜2Ÿ7™7 NØ—‘Ò.¨ YÐ/ó1ˆà�T‰zÐà	‡~‚~œ' "§'¡'¨<¸Ô?Øˆr�w‰wØ—W‘WöØô % Q¨¸ÕGò ð ð 	ð ˆ2�7‰7À2Ç7Á7ÖK¸a”[  N°DÕ9ÒKÐLÐLùò Nùòùò Ls   ÄHÇH"ÈH'Nc                 ó6  — t        | t        «      r| S t        | «      } |�t        | j	                  |«      «      S d}d}|rd}|r-d}t        | ||«      }|| k7  rd}|} t        |t        «      r|S |rŒ-ddlm} j	                   |d«      dt        d«      di«      S )a  
    If `p` denotes the projection from the Riemann surface of the logarithm to
    the complex line, return a simplified version `eq'` of `eq` such that
    `p(eq') = p(eq)`.
    Also apply the substitution subs in the end. (This is a convenience, since
    ``unpolarify``, in a certain sense, undoes :func:`polarify`.)

    Examples
    ========

    >>> from sympy import unpolarify, polar_lift, sin, I
    >>> unpolarify(polar_lift(I + 2))
    2 + I
    >>> unpolarify(sin(polar_lift(I + 7)))
    sin(7 + I)
    TFr   rj  r{   )	r3   Úboolr   Ú
unpolarifyr¸   r§  rè   r$  rg  )rš  r¸   r¬  Úchangedr”  r�  r$  s          r'   r°  r°  ›  s¨   € ô" �"”dÔØˆ	ä	�‹€BØÐÜ˜"Ÿ'™' $›-Ó(Ð(Ø€GØ€EÙØˆÙ
ØˆÜ˜"˜n¨eÓ4ˆØ�"Š9ØˆGØˆBÜ�cœ4Ô ØˆJò õ AØ�8‰8‘Y˜q“\ 1¤j°£m°QÐ7Ó8Ð8rH   )F)TF)NF)4Útypingr   rs   Ú
sympy.corer   r   r   r   r   r	   r
   Úsympy.core.exprr   Úsympy.core.exprtoolsr   Úsympy.core.functionr   r   r   r   r   Úsympy.core.logicr   r   Úsympy.core.numbersr   r   r   Úsympy.core.powerr   Úsympy.core.relationalr   Ú(sympy.functions.elementary.miscellaneousr   Ú$sympy.functions.elementary.piecewiser   r   r:   rˆ   rŒ   r=   r4   rA  rJ  rg  r)  rw  r}  r—  r¥  r§  r°  rx   rH   r'   ú<module>r½     s÷   ðÝ "ç A× AÑ AÝ  Ý -÷õ ç 0ß (Ñ (Ý  Ý $Ý 9Ý :ôwˆô wôtuˆô uôvr5ˆ8ô r5ôjw(ˆ(ô w(ôtfˆ(ô fôRJ)�ô J)ôZ6�ô 6ôr;ˆhô ;ôDR0�ô R0ôjgK˜ô gKòT&ô,f3�xô f3óRPóB//ódMôB&9rH   