§
    OŠtjˆ¬  ã                  ó  — 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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)„Z3d(S )-é    )Úannotations)ÚSÚAddÚMulÚsympifyÚSymbolÚDummyÚBasic)ÚExpr)Úfactor_terms)ÚDefinedFunctionÚ
DerivativeÚArgumentIndexErrorÚAppliedUndefÚ
expand_mulÚ	PoleError)Ú	fuzzy_notÚfuzzy_or)ÚpiÚIÚoo)ÚPow)ÚEq)Úsqrt)Ú	Piecewisec                  ól   — e Zd ZU dZd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dS )Ú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
    útuple[Expr]Ú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|                     ¦   «         d         S |j	        r/t          |t          ¦  «        rt          |j        d         ¦  «        S g g g }}}t          j        |¦  «        }|D ]»}|                     t
          ¦  «        }|�|j        s|                     |¦  «         Œ;|                     t
          ¦  «        s|j        r|                     |¦  «         Œr|                     |¬¦  «        }|r|                     |d         ¦  «         Œ¦|                     |¦  «         Œ¼t'          |¦  «        t'          |¦  «        k    r1d„ |||fD ¦   «         \  }	}
} | |	¦  «        t)          |
¦  «        z
  |z   S d S )Nr   ©Úignorec              3  ó(   K  — | ]}t          |Ž V — Œd S ©N©r   ©Ú.0Úxss     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/functions/elementary/complexes.pyú	<genexpr>zre.eval.<locals>.<genexpr>i   ó&   è è € ÐMÐM¨�3 ˜8ÐMÐMÐMÐMÐMÐ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ˆLØ•AÔ%Ð%Ð%Ý”5ˆLØÔ!ð !	*ØˆJØÔð 	*¥! C¡%Ô!9ð 	*Ý”6ˆMØŒ]ð 	*Ø×#Ò#Ñ%Ô% aÔ(Ð(ØŒ_ð 	*¥¨CµÑ!;Ô!;ð 	*Ý�c”h˜q”k‘?”?Ð"ð ,.¨r°2 �hˆHÝ”= Ñ%Ô%ˆDØð .ð .�Ø×+Ò+­AÑ.Ô.�àÐ$Ø Ô1ð /Ø Ÿš¨Ñ.Ô.Ð.øØŸš¥!™œð 
.¨Ô)>ð 
.Ø—O’O DÑ)Ô)Ð)Ð)ð
 !%× 1Ò 1¸Ð 1Ñ =Ô =�IØ ð .Ø Ÿš¨	°!¬Ñ5Ô5Ð5Ð5à Ÿš¨Ñ-Ô-Ð-Ð-å�4‰yŒy�C ™MœMÒ)Ð)ØMÐM¨x¸À8Ð.LÐMÑMÔM‘��1�aà�s˜1‘v”v¥ 1¡¤‘~¨Ñ)Ð)ð *Ð)r,   c                ó   — | t           j        fS )zF
        Returns the real number with a zero imaginary part.

        ©r   r1   ©ÚselfÚdeepÚhintss      r)   r3   zre.as_real_imagm   ó   € ð
 •a”fˆ~Ðr,   c                ó$  — |j         s| j        d         j         r*t          t          | j        d         |d¬¦  «        ¦  «        S |j        s| j        d         j        r3t
           t          t          | j        d         |d¬¦  «        ¦  «        z  S d S ©Nr   T©Úevaluate)r/   r   r   r   r0   r   r<   ©rM   Úxs     r)   Ú_eval_derivativezre._eval_derivativet   ó›   € ØÔð 	B ¤¨1¤Ô!>ð 	BÝ•j ¤¨1¤¨q¸4Ð@Ñ@Ô@ÑAÔAÐAØŒ>ð 	A˜TœY qœ\Ô6ð 	AÝ�2Ý•Z ¤	¨!¤¨a¸$Ð?Ñ?Ô?Ñ@Ô@ñAð Að	Að 	Ar,   c                ób   — | j         d         t          t          | j         d         ¦  «        z  z
  S ©Nr   )r   r   r<   ©rM   r?   Úkwargss      r)   Ú_eval_rewrite_as_imzre._eval_rewrite_as_im{   s&   € ØŒy˜Œ|�a¥ 4¤9¨Q¤<Ñ 0Ô 0Ñ0Ñ0Ð0r,   c                ó&   — | j         d         j        S rZ   ©r   Úis_algebraic©rM   s    r)   Ú_eval_is_algebraiczre._eval_is_algebraic~   ó   € ØŒy˜Œ|Ô(Ð(r,   c                ód   — t          | j        d         j        | j        d         j        g¦  «        S rZ   )r   r   r0   Úis_zerora   s    r)   Ú_eval_is_zerozre._eval_is_zero�   s'   € å˜œ 1œÔ2°D´I¸a´LÔ4HÐIÑJÔJÐJr,   c                ó.   — | j         d         j        rdS d S ©Nr   T©r   Ú	is_finitera   s    r)   Ú_eval_is_finitezre._eval_is_finite…   ó"   € ØŒ9�QŒ<Ô!ð 	Ø�4ð	ð 	r,   c                ó.   — | j         d         j        rdS d S rh   ri   ra   s    r)   Ú_eval_is_complexzre._eval_is_complex‰   rl   r,   N©T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r/   Ú
unbranchedÚ_singularitiesÚclassmethodrI   r3   rW   r]   rb   rf   rk   rn   © r,   r)   r   r      sÍ   € € € € € € ð'ð 'ðR ÐÐÑàÐØ€JØ€Nàð&*ð &*ñ „[ð&*ðPð ð ð ðAð Að Að1ð 1ð 1ð)ð )ð )ðKð Kð Kðð ð ðð ð ð ð r,   r   c                  ól   — e Zd ZU dZd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dS )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   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|                     ¦   «         d         S |j	        r0t          |t          ¦  «        rt          |j        d         ¦  «         S g g g }}}t          j        |¦  «        }|D ]»}|                     t          ¦  «        }|�3|j        s|                     |¦  «         Œ;|                     |¦  «         ŒQ|                     t          ¦  «        s|j        sI|                     |¬¦  «        }|r|                     |d         ¦  «         Œ¦|                     |¦  «         Œ¼t'          |¦  «        t'          |¦  «        k    r1d„ |||fD ¦   «         \  }	}
} | |	¦  «        t)          |
¦  «        z   |z   S d S )Né   r   r!   c              3  ó(   K  — | ]}t          |Ž V — Œd S r$   r%   r&   s     r)   r*   zim.eval.<locals>.<genexpr>â   r+   r,   )r   r-   r.   r/   r1   r0   r   r2   r3   r4   r5   r6   r<   r   r   r7   r8   r9   r:   r;   r   r=   s               r)   rI   zim.eval¾   sí  € à•!”%ˆ<ˆ<Ý”5ˆLØ•AÔ%Ð%Ð%Ý”5ˆLØÔ!ð  	*Ý”6ˆMØÔð 	*¥! C¡%Ô!9ð 	*Ý�2˜‘8ˆOØŒ]ð 	*Ø×#Ò#Ñ%Ô% aÔ(Ð(ØŒ_ð 	*¥¨CµÑ!;Ô!;ð 	*Ý�s”x ”{‘O”OÐ#Ð#à+-¨r°2 �hˆHÝ”= Ñ%Ô%ˆDØð .ð .�Ø×+Ò+­AÑ.Ô.�àÐ$Ø Ô1ð /Ø Ÿš¨Ñ.Ô.Ð.Ð.à Ÿš¨Ñ.Ô.Ð.Ð.Ø—X’X�a‘[”[ð .¨Ô(=ð .ð !%× 1Ò 1¸Ð 1Ñ =Ô =�IØ ð .Ø Ÿš¨	°!¬Ñ5Ô5Ð5Ð5à Ÿš¨Ñ-Ô-Ð-øå�4‰yŒy�C ™MœMÒ)Ð)ØMÐM¨x¸À8Ð.LÐMÑMÔM‘��1�aà�s˜1‘v”v¥ 1¡¤‘~¨Ñ)Ð)ð *Ð)r,   c                ó   — | t           j        fS )zC
        Return the imaginary part with a zero real part.

        rK   rL   s      r)   r3   zim.as_real_imagæ   rP   r,   c                ó$  — |j         s| j        d         j         r*t          t          | j        d         |d¬¦  «        ¦  «        S |j        s| j        d         j        r3t
           t          t          | j        d         |d¬¦  «        ¦  «        z  S d S rR   )r/   r   r<   r   r0   r   r   rU   s     r)   rW   zim._eval_derivativeí   rX   r,   c                ód   — t            | j        d         t          | j        d         ¦  «        z
  z  S rZ   )r   r   r   r[   s      r)   Ú_eval_rewrite_as_rezim._eval_rewrite_as_reô   s(   € Ýˆr�4”9˜Q”<¥" T¤Y¨q¤\Ñ"2Ô"2Ñ2Ñ3Ð3r,   c                ó&   — | j         d         j        S rZ   r_   ra   s    r)   rb   zim._eval_is_algebraic÷   rc   r,   c                ó&   — | j         d         j        S rZ   ©r   r/   ra   s    r)   rf   zim._eval_is_zeroú   ó   € ØŒy˜Œ|Ô,Ð,r,   c                ó.   — | j         d         j        rdS d S rh   ri   ra   s    r)   rk   zim._eval_is_finiteý   rl   r,   c                ó.   — | j         d         j        rdS d S rh   ri   ra   s    r)   rn   zim._eval_is_complex  rl   r,   Nro   )rp   rq   rr   rs   rt   r/   ru   rv   rw   rI   r3   rW   r€   rb   rf   rk   rn   rx   r,   r)   r<   r<   Ž   sÊ   € € € € € € ð'ð 'ðR ÐÐÑàÐØ€JØ€Nàð%*ð %*ñ „[ð%*ðNð ð ð ðAð Að Að4ð 4ð 4ð)ð )ð )ð-ð -ð -ðð ð ðð ð ð ð r,   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    r<| j        d         j        du r(| j        d         t	          | j        d         ¦  «        z  S |S )Nr   F)ÚsuperÚdoitr   re   ÚAbs)rM   rO   ÚsÚ	__class__s      €r)   r‹   z	sign.doitC  sT   ø€ Ý‰GŒG�LŠL‰NŒNˆØ�Š9ˆ9˜œ 1œÔ-°Ð6Ð6Ø”9˜Q”<¥# d¤i°¤lÑ"3Ô"3Ñ3Ð3Øˆr,   c                ó`  — |j         rã|                     ¦   «         \  }}g }t          |¦  «        }|D ]r}|j        r| }Œ|j        rŒ|j        rAt          |¦  «        }|j        r|t          z  }|j        r| }ŒG| 	                    |¦  «         Œ]| 	                    |¦  «         Œs|t          j        u r"t          |¦  «        t          |¦  «        k    rd S | |  |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        rI|j        r|j        t          j        u rt          S t           |z  }|j        rt          S |j        r
t           S d S d S r$   )Úis_MulÚas_coeff_mulrˆ   Úis_extended_negativeÚis_extended_positiver0   r<   Úis_comparabler   r9   r   ÚOner;   Ú_new_rawargsr-   re   r1   ÚNegativeOner4   r5   Úis_PowÚexpÚHalf)	r>   r?   rH   r   Úunkr�   rF   ÚaiÚarg2s	            r)   rI   z	sign.evalI  sÞ  € ð Œ:ð 	3Ø×&Ò&Ñ(Ô(‰GˆAˆtØˆCÝ�Q‘”ˆAØð &ð &�ØÔ)ð &Ø˜�A�AØÔ+ð &Øà”~ð &Ý ™UœU˜ØÔ+ð *Ø¥™F˜AØ!Ô6ð 'ð &' B øàŸJšJ q™MœM˜M˜MàŸ
š
 1™œ˜˜Ø•A”Eˆzˆz�c #™hœh­#¨d©)¬)Ò3Ð3Ø�tØ�s�sÐ+˜3Ô+¨SÐ1Ñ2Ô2Ñ2Ð2Ø•!”%ˆ<ˆ<Ý”5ˆLØŒ;ð 	Ý”6ˆMØÔ#ð 	Ý”5ˆLØÔ#ð 	!Ý”=Ð ØŒ?ð 	Ý˜#�tÑ$Ô$ð Ø�
ØÔð 		ØŒzð ˜cœg­¬Ð/Ð/õ �Ý�2˜‘8ˆDØÔ(ð Ý�ØÔ(ð Ý�r�	ð		ð 		ðð r,   c                ó\   — t          | j        d         j        ¦  «        rt          j        S d S rZ   )r   r   re   r   r•   ra   s    r)   Ú	_eval_Abszsign._eval_Abs{  s,   € Ý�T”Y˜q”\Ô)Ñ*Ô*ð 	Ý”5ˆLð	ð 	r,   c                óP   — t          t          | j        d         ¦  «        ¦  «        S rZ   )rˆ   r6   r   ra   s    r)   Ú_eval_conjugatezsign._eval_conjugate  s   € Ý•I˜dœi¨œlÑ+Ô+Ñ,Ô,Ð,r,   c                óT  — | j         d         j        r=ddlm} dt	          | j         d         |d¬¦  «        z   || j         d         ¦  «        z  S | j         d         j        rFddlm} dt	          | j         d         |d¬¦  «        z   |t           | j         d         z  ¦  «        z  S d S )Nr   )Ú
DiracDeltaé   TrS   )r   r/   Ú'sympy.functions.special.delta_functionsr£   r   r0   r   )rM   rV   r£   s      r)   rW   zsign._eval_derivative‚  sÍ   € ØŒ9�QŒ<Ô(ð 	0ØJÐJÐJÐJÐJÐJØ•z $¤)¨A¤,°¸DÐAÑAÔAÑAØ�*˜TœY qœ\Ñ*Ô*ñ+ð +àŒY�qŒ\Ô&ð 	0ØJÐJÐJÐJÐJÐJØ•z $¤)¨A¤,°¸DÐAÑAÔAÑAØ�*�a˜R $¤)¨A¤,Ñ.Ñ/Ô/ñ0ð 0ð	0ð 	0r,   c                ó.   — | j         d         j        rdS d S rh   )r   Úis_nonnegativera   s    r)   Ú_eval_is_nonnegativezsign._eval_is_nonnegativeŒ  ó"   € ØŒ9�QŒ<Ô&ð 	Ø�4ð	ð 	r,   c                ó.   — | j         d         j        rdS d S rh   )r   Úis_nonpositivera   s    r)   Ú_eval_is_nonpositivezsign._eval_is_nonpositive�  r©   r,   c                ó&   — | j         d         j        S rZ   )r   r0   ra   s    r)   Ú_eval_is_imaginaryzsign._eval_is_imaginary”  rc   r,   c                ó&   — | j         d         j        S rZ   rƒ   ra   s    r)   Ú_eval_is_integerzsign._eval_is_integer—  r„   r,   c                ó&   — | j         d         j        S rZ   )r   re   ra   s    r)   rf   zsign._eval_is_zeroš  s   € ØŒy˜Œ|Ô#Ð#r,   c                ó€   — t          | j        d         j        ¦  «        r|j        r|j        rt
          j        S d S d S d S rZ   )r   r   re   Ú
is_integerÚis_evenr   r•   )rM   Úothers     r)   Ú_eval_powerzsign._eval_power�  sY   € å�d”i ”lÔ*Ñ+Ô+ð	àÔð	ð ŒMð	õ
 ”5ˆLð	ð 	ð 	ð 	ð 	ð 	r,   r   c                ó  — | j         d         }|                     |d¦  «        }|dk    r|                      |¦  «        S |dk    r|                     ||¦  «        }t	          |¦  «        dk     rt
          j         nt
          j        S rZ   )r   ÚsubsÚfuncÚdirr   r   r•   )rM   rV   ÚnÚlogxÚcdirÚarg0Úx0s          r)   Ú_eval_nserieszsign._eval_nseries¥  sq   € ØŒy˜Œ|ˆØ�YŠY�q˜!‰_Œ_ˆØ�Š7ˆ7Ø—9’9˜R‘=”=Ð Ø�1Š9ˆ9Ø—8’8˜A˜tÑ$Ô$ˆDÝ˜D™œ Aš˜•”ˆvˆv­1¬5Ð0r,   c                óN   — |j         rt          d|dk    fd|dk     fd¦  «        S d S )Nr{   r   éÿÿÿÿ)r   T)r/   r   r[   s      r)   Ú_eval_rewrite_as_Piecewisezsign._eval_rewrite_as_Piecewise®  s<   € ØÔð 	EÝ˜a  q¢˜\¨B°°a²¨=¸)ÑDÔDÐDð	Eð 	Er,   c                óB   — ddl m} |j        r ||¦  «        dz  dz
  S d S )Nr   ©Ú	Heavisider¤   r{   ©r¥   rÆ   r/   ©rM   r?   r\   rÆ   s       r)   Ú_eval_rewrite_as_Heavisidezsign._eval_rewrite_as_Heaviside²  sA   € ØEÐEÐEÐEÐEÐEØÔð 	*Ø�9˜S‘>”> AÑ%¨Ñ)Ð)ð	*ð 	*r,   c                óf   — t          dt          |d¦  «        f|t          |¦  «        z  df¦  «        S rh   )r   r   rŒ   r[   s      r)   Ú_eval_rewrite_as_Abszsign._eval_rewrite_as_Abs·  s-   € Ý˜!�R  Q™ZœZ˜¨3µ°S±´©>¸4Ð*@ÑAÔAÐAr,   c                ó\   — |                       t          | j        d         ¦  «        ¦  «        S rZ   )r¹   r   r   )rM   r\   s     r)   Ú_eval_simplifyzsign._eval_simplifyº  s"   € Ø�yŠy� d¤i°¤lÑ3Ô3Ñ4Ô4Ð4r,   ©r   )rp   rq   rr   rs   Ú
is_complexrv   r‹   rw   rI   rŸ   r¡   rW   r¨   r¬   r®   r°   rf   r¶   rÀ   rÃ   rÉ   rË   rÍ   Ú__classcell__)rŽ   s   @r)   rˆ   rˆ   	  sH  ø€ € € € € ð4ð 4ðl €JØ€Nðð ð ð ð ð ð/ð /ñ „[ð/ðbð ð ð-ð -ð -ð0ð 0ð 0ðð ð ðð ð ð)ð )ð )ð-ð -ð -ð$ð $ð $ðð ð ð1ð 1ð 1ð 1ðEð Eð Eð*ð *ð *ð
Bð Bð Bð5ð 5ð 5ð 5ð 5ð 5ð 5r,   rˆ   c                  ó²   — e Zd ZU dZd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dS )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   r   TFr{   c                ób   — |dk    rt          | j        d         ¦  «        S t          | |¦  «        ‚)zE
        Get the first derivative of the argument to Abs().

        r{   r   )rˆ   r   r   )rM   Úargindexs     r)   Úfdiffz	Abs.fdiff   s1   € ð
 �qŠ=ˆ=Ý˜œ	 !œÑ%Ô%Ð%å$ T¨8Ñ4Ô4Ð4r,   c                ó6
  ‡‡— ddl m} t          ‰d¦  «        r‰                     ¦   «         }|�|S t	          ‰t
          ¦  «        st          dt          ‰¦  «        z  ¦  «        ‚ |‰d¬¦  «        Š‰                     ¦   «         \  }}|j	        r|j	        s | |¦  «         | |¦  «        z  S ‰j
        �rg }g }‰j        D ]Æ}|j        rw|j        j        rk|j        j        r_ | |j        ¦  «        }	t	          |	| ¦  «        r|                     |¦  «         ŒW|                     t%          |	|j        ¦  «        ¦  «         Œ€ | |¦  «        }
t	          |
| ¦  «        r|                     |¦  «         Œ±|                     |
¦  «         ŒÇ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‰                     ¦   «         \  }}|j        r“|j        r5|j        r‰S |t(          j        u rt(          j        S t?          |¦  «        |z  S |j         r|tC          |¦  «        z  S |j"        r5| tC          |¦  «        z   |tF           tI          |¦  «        z  ¦  «        z  S d S | %                    tL          ¦  «        sH ||¦  «         '                    ¦   «         \  }}|tP          |z  z   } |tC          ||z  ¦  «        ¦  «        S t	          ‰|¦  «        r# |tC          ‰j        d         ¦  «        ¦  «        S t	          ‰tR          ¦  «        r‰j*        r‰S ‰j        r‰ S d S ‰j+        rW‰ %                    t0          t(          j,        ¦  «        r2t[          d„ ‰ '                    ¦   «         D ¦   «         ¦  «        rt0          S ‰j.        rt(          j/        S ‰j         r‰S ‰j0        r‰ S ‰j1        rtP           ‰z  }|j         r|S ‰j        rd S  |‰ 2                    ¦   «         d¬¦  «        Š‰ 3                    td          ¦  «        ‰ 3                    td          ¦  «        z
  }|rti          ˆfd	„|D ¦   «         ¦  «        rd S ‰‰k    r�‰‰ k    rˆ‰ 3                    t>          ¦  «        }‰ 5                    d
„ |D ¦   «         ¦  «        }d„ |j	        D ¦   «         }|rti          ˆfd„|D ¦   «         ¦  «        s#tm          to          ‰‰z  ¦  «        ¦  «        S d S d S d S )Nr   )ÚsignsimprŸ   zBad argument type for Abs(): %sFrS   )r™   Úlogc              3  ó$   K  — | ]}|j         V — Œd S r$   )Úis_infinite©r'   rF   s     r)   r*   zAbs.eval.<locals>.<genexpr>P  s$   è è € Ð=Ð= Q�1”=Ð=Ð=Ð=Ð=Ð=Ð=r,   c              3  óX   •K  — | ]$}‰                      |j        d          ¦  «        V — Œ%dS )r   N)r:   r   )r'   Úir?   s     €r)   r*   zAbs.eval.<locals>.<genexpr>b  s5   øè è € ÐAÐA°1˜CŸGšG A¤F¨1¤IÑ.Ô.ÐAÐAÐAÐAÐAÐAr,   c                ó0   — i | ]}|t          d ¬¦  «        “ŒS )T)Úreal)r	   ©r'   rÜ   s     r)   ú
<dictcomp>zAbs.eval.<locals>.<dictcomp>f  s%   € Ð(MÐ(MÐ(MÀ¨­E°tÐ,<Ñ,<Ô,<Ð(MÐ(MÐ(Mr,   c                ó    — g | ]}|j         ­	|‘ŒS r$   )r/   rÚ   s     r)   ú
<listcomp>zAbs.eval.<locals>.<listcomp>g  s    € ÐVÐVÐV˜¸1Ô;MÐ;U�1Ð;UÐ;UÐ;Ur,   c              3  ó\   •K  — | ]&}‰                      t          |¦  «        ¦  «        V — Œ'd S r$   )r:   r6   )r'   ÚuÚconjs     €r)   r*   zAbs.eval.<locals>.<genexpr>h  s5   øè è € Ð!FÐ!F¸Q $§(¢(­9°Q©<¬<Ñ"8Ô"8Ð!FÐ!FÐ!FÐ!FÐ!FÐ!Fr,   )8Úsympy.simplify.simplifyrÖ   ÚhasattrrŸ   r5   r   Ú	TypeErrorÚtypeÚas_numer_denomÚfree_symbolsr�   r   r˜   r™   r³   Úis_negativeÚbaser9   r   r   r   r•   r-   r.   r   Ú&sympy.functions.elementary.exponentialr×   Úas_base_expr/   r´   r—   rŒ   Úis_extended_nonnegativer   r’   r   r<   r:   r   r3   r   r   Úis_positiveÚis_AddÚNegativeInfinityÚanyre   r1   Úis_extended_nonpositiver0   r6   ÚatomsÚallÚxreplacer   r   )r>   r?   rÖ   Úobjr»   ÚdÚknownr›   ÚtÚbnewÚtnewr™   r×   rí   ÚexponentrF   rG   Úzr�   Únew_conjr"   Úabs_free_argrå   s    `                    @r)   rI   zAbs.eval
  sw  øø€ à4Ð4Ð4Ð4Ð4Ð4å�3˜Ñ$Ô$ð 	Ø—-’-‘/”/ˆCØˆØ�
Ý˜#�tÑ$Ô$ð 	KÝÐ=ÅÀSÁ	Ä	ÑIÑJÔJÐJð ˆh�s UÐ+Ñ+Ô+ˆØ×!Ò!Ñ#Ô#‰ˆˆ1ØŒ>ð 	! !¤.ð 	!Ø�3�q‘6”6˜#˜#˜a™&œ&‘=Ð àŒ:ñ 	ØˆEØˆCØ”Xð +ð +�Ø”8ð + ¤Ô 0ð +°Q´UÔ5Fð +Ø˜3˜qœv™;œ;�DÝ! $¨Ñ,Ô,ð 7ØŸ
š
 1™œ˜˜àŸš¥S¨¨q¬uÑ%5Ô%5Ñ6Ô6Ð6Ð6à˜3˜q™6œ6�DÝ! $¨Ñ,Ô,ð +ØŸ
š
 1™œ˜˜àŸš TÑ*Ô*Ð*Ð*Ý˜�KˆEØ47ÐB�#�#•c˜3�i¨%Ð0Ñ0Ô0Ð0½Q¼UˆCØ˜‘9ÐØ•!”%ˆ<ˆ<Ý”5ˆLØ•!Ô#Ð#Ð#ÝˆIØCÐCÐCÐCÐCÐCÐCÐCàŒ:ñ 	+Ø Ÿ_š_Ñ.Ô.‰NˆD�(ØÔ$ð +ØÔ&ð /ØÔ'ð #Ø"˜
Ø�qœ}Ð,Ð,Ý œu˜Ý˜t™9œ9 hÑ.Ð.ØÔ/ð .Ø¥ H¡¤Ñ-Ð-ØÔ,ð GØ!˜E¥B x¡L¤LÑ0°°µb°S½¸H¹¼Ñ5EÑ1FÔ1FÑFÐFØ�Ø—X’X�fÑ%Ô%ð +à�s˜4‘y”y×-Ò-Ñ/Ô/‘��1Ø�˜!™‘G�Ø�s�2˜h q™j™>œ>Ñ*Ô*Ð*Ý�c˜3ÑÔð 	(Ø�3•r˜#œ( 1œ+‘”Ñ'Ô'Ð'Ý�c�<Ñ(Ô(ð 	ØŒð Ø�
Ø”ð Ø�t�ØˆFØŒ:ð 	˜#Ÿ'š'¥"¥aÔ&8Ñ9Ô9ð 	ÝÐ=Ð=¨#×*:Ò*:Ñ*<Ô*<Ð=Ñ=Ô=Ñ=Ô=ð Ý�	ØŒ;ð 	Ý”6ˆMØÔ&ð 	ØˆJØÔ&ð 	Ø�4ˆKØÔð 	Ý�2˜‘8ˆDØÔ+ð Ø�ØÔð 	ØˆFð ˆx˜Ÿš™œ°%Ð8Ñ8Ô8ˆØ—:’:�iÑ(Ô(¨3¯9ª9µYÑ+?Ô+?Ñ?ˆØð 	�ÐAÐAÐAÐA¸ÐAÑAÔAÑAÔAð 	ØˆFØ�$Š;ˆ;˜3 4 %š<˜<Ø—Y’Y�s‘^”^ˆFØŸ<š<Ð(MÐ(MÀfÐ(MÑ(MÔ(MÑNÔNˆLØVÐV˜lÔ7ÐVÑVÔVˆCØð 2�cÐ!FÐ!FÐ!FÐ!FÀ#Ð!FÑ!FÔ!FÑFÔFð 2Ý�J s¨4¡xÑ0Ô0Ñ1Ô1Ð1ð ˆ;˜<˜<ð2ð 2r,   c                ó.   — | j         d         j        rdS d S rh   ri   ra   s    r)   Ú_eval_is_realzAbs._eval_is_realk  rl   r,   c                óN   — | j         d         j        r| j         d         j        S d S rZ   )r   r/   r³   ra   s    r)   r°   zAbs._eval_is_integero  s,   € ØŒ9�QŒ<Ô(ð 	+Ø”9˜Q”<Ô*Ð*ð	+ð 	+r,   c                ó@   — t          | j        d         j        ¦  «        S rZ   ©r   Ú_argsre   ra   s    r)   Ú_eval_is_extended_nonzerozAbs._eval_is_extended_nonzeros  ó   € Ý˜œ AœÔ.Ñ/Ô/Ð/r,   c                ó&   — | j         d         j        S rZ   )r  re   ra   s    r)   rf   zAbs._eval_is_zerov  s   € ØŒz˜!Œ}Ô$Ð$r,   c                ó@   — t          | j        d         j        ¦  «        S rZ   r  ra   s    r)   Ú_eval_is_extended_positivezAbs._eval_is_extended_positivey  r
  r,   c                óN   — | j         d         j        r| j         d         j        S d S rZ   )r   r/   Úis_rationalra   s    r)   Ú_eval_is_rationalzAbs._eval_is_rational|  s,   € ØŒ9�QŒ<Ô(ð 	,Ø”9˜Q”<Ô+Ð+ð	,ð 	,r,   c                óN   — | j         d         j        r| j         d         j        S d S rZ   )r   r/   r´   ra   s    r)   Ú_eval_is_evenzAbs._eval_is_even€  s,   € ØŒ9�QŒ<Ô(ð 	(Ø”9˜Q”<Ô'Ð'ð	(ð 	(r,   c                óN   — | j         d         j        r| j         d         j        S d S rZ   )r   r/   Úis_oddra   s    r)   Ú_eval_is_oddzAbs._eval_is_odd„  s,   € ØŒ9�QŒ<Ô(ð 	'Ø”9˜Q”<Ô&Ð&ð	'ð 	'r,   c                ó&   — | j         d         j        S rZ   r_   ra   s    r)   rb   zAbs._eval_is_algebraicˆ  rc   r,   c                ó¼   — | j         d         j        rI|j        rB|j        r| j         d         |z  S |t          j        ur|j        r| j         d         |dz
  z  | z  S d S )Nr   r{   )r   r/   r³   r´   r   r—   Ú
is_Integer)rM   rÿ   s     r)   r¶   zAbs._eval_power‹  sm   € ØŒ9�QŒ<Ô(ð 	9¨XÔ-@ð 	9ØÔð 9Ø”y ”| XÑ-Ð-Ø¥¤Ð.Ð.°8Ô3FÐ.Ø”y ”| h°¡lÑ3°DÑ8Ð8Øˆr,   r   c                ób  — ddl m} | j        d                              |¦  «        d         }|                      ||¦  «        ¦  «        r|                      ||¦  «        |¦  «        }| j        d                              |||¬¦  «        }t          |¦  «        |z                       ¦   «         S )Nr   )r×   )r»   r¼   )	rî   r×   r   Úleadtermr:   r¸   rÀ   rˆ   Úexpand)rM   rV   r»   r¼   r½   r×   Ú	directionr�   s           r)   rÀ   zAbs._eval_nseries“  s¦   € Ø>Ð>Ð>Ð>Ð>Ð>Ø”I˜a”L×)Ò)¨!Ñ,Ô,¨QÔ/ˆ	Ø�=Š=˜˜˜Q™œÑ Ô ð 	5Ø!Ÿš s s¨1¡v¤v¨tÑ4Ô4ˆIØŒI�aŒL×&Ò& q¨A°DÐ&Ñ9Ô9ˆÝ�Y‘” Ñ!×)Ò)Ñ+Ô+Ð+r,   c                óT  — | j         d         j        s| j         d         j        rEt          | 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  }| 	                    t          ¦  «        S rR   )
r   r/   r0   r   rˆ   r6   r   r<   rŒ   Úrewrite)rM   rV   Úrvs      r)   rW   zAbs._eval_derivative›  s  € ØŒ9�QŒ<Ô(ð 	0¨D¬I°a¬LÔ,Eð 	0Ý˜dœi¨œl¨A¸Ð=Ñ=Ô=Ý•y ¤¨1¤Ñ.Ô.Ñ/Ô/ñ0ð 0å�”˜1”ÑÔ¥­B¨t¬y¸¬|Ñ,<Ô,<¸aØð"ñ "ô "ñ Ý ¤	¨!¤Ñ-Ô-µ
½2¸d¼iÈ¼lÑ;KÔ;KØ˜Dð1"ñ 1"ô 1"ñ "ñ"å%(¨¬°1¬Ñ%6Ô%6ñ7ˆð �zŠz�$ÑÔÐr,   c                óV   — ddl m} |j        r| ||¦  «         || ¦  «        z
  z  S d S )Nr   rÅ   rÇ   rÈ   s       r)   rÉ   zAbs._eval_rewrite_as_Heaviside¤  sN   € ð 	FÐEÐEÐEÐEÐEØÔð 	:Ø˜	˜	 #™œ¨¨°C°4©¬Ñ8Ñ9Ð9ð	:ð 	:r,   c                ó¶   — |j         rt          ||dk    f| df¦  «        S |j        r1t          t          |z  t          |z  dk    ft           |z  df¦  «        S d S rh   )r/   r   r0   r   r[   s      r)   rÃ   zAbs._eval_rewrite_as_Piecewise«  so   € ØÔð 	BÝ˜c 3¨!¢8˜_°¨t°T¨lÑ;Ô;Ð;ØÔð 	BÝ�a ™e¥Q s¡U¨a¢ZÐ0µA°2°c±6¸4°.ÑAÔAÐAð	Bð 	Br,   c                ó&   — |t          |¦  «        z  S r$   ©rˆ   r[   s      r)   Ú_eval_rewrite_as_signzAbs._eval_rewrite_as_sign±  s   € Ø•4˜‘9”9‰}Ðr,   c                ó@   — t          |t          |¦  «        z  ¦  «        S r$   )r   r6   r[   s      r)   Ú_eval_rewrite_as_conjugatezAbs._eval_rewrite_as_conjugate´  s   € Ý�C�	 #™œÑ&Ñ'Ô'Ð'r,   N)r{   rÎ   )rp   rq   rr   rs   rt   r/   r’   rð   ru   rv   rÔ   rw   rI   r  r°   r	  rf   r  r  r  r  rb   r¶   rÀ   rW   rÉ   rÃ   r$  r&  rx   r,   r)   rŒ   rŒ   ¾  sv  € € € € € € ð7ð 7ðr ÐÐÑàÐØ ÐØ"ÐØ€JØ€Nð5ð 5ð 5ð 5ð ð^2ð ^2ñ „[ð^2ð@ð ð ð+ð +ð +ð0ð 0ð 0ð%ð %ð %ð0ð 0ð 0ð,ð ,ð ,ð(ð (ð (ð'ð 'ð 'ð)ð )ð )ðð ð ð,ð ,ð ,ð ,ð ð  ð  ð:ð :ð :ðBð Bð Bðð ð ð(ð (ð (ð (ð (r,   rŒ   c                  óR   — e Zd ZdZdZdZdZdZed„ ¦   «         Z	d„ Z
d„ Zd„ Zd
d„Zd	S )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 ]<}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          ||¦  «        rWt          |j        d         ¦  «        }|j        r6|dt          j        z  z  }|t          j        k    r|dt          j        z  z  }|S |j        sVt          |¦  «                             ¦   «         \  }}|j        rt%          d„ |j        D ¦   «         Ž }t'          |¦  «        |z  }n|}t)          d„ |                     t,          ¦  «        D ¦   «         ¦  «        rd S ddlm}	 |                     ¦   «         \  }
} |	||
¦  «        }|j        r|S ||k    r | |d¬	¦  «        S d S )
Né   r   r¤   ©r™   Ú	exp_polarc                óR   — g | ]$}t          |¦  «        d vr|nt          |¦  «        ‘Œ%S ))rÂ   r{   r#  rÚ   s     r)   râ   zarg.eval.<locals>.<listcomp>  sC   € ð 0ð 0ð 0Ø !õ $(¨¡7¤7°'Ð#9Ð#9˜Q˜QÝ˜‘G”Gð0ð 0ð 0r,   c              3  ó(   K  — | ]}|j         d u V — Œd S r$   )r“   rß   s     r)   r*   zarg.eval.<locals>.<genexpr>  s*   è è € ÐPÐP°!ˆqÔ%¨Ð-ÐPÐPÐPÐPÐPÐPr,   ©Úatan2FrS   )Úranger5   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/  r3   Ú	is_number)r>   r?   rF   rÜ   r™   r+  Úi_rH   Úarg_r/  rV   Úyr  s                r)   rI   zarg.evalí  s  € àˆÝ�q‘”ð 	ð 	ˆAÝ˜!˜SÑ!Ô!ð Ø”F˜1”I��à˜’6�6˜aÔ0�6Ýœ5�L�L�LØ�å”5ˆLØIÐIÐIÐIÐIÐIÐIÐIÝ�c˜9Ñ%Ô%ð 	Ý$ S­"Ñ-Ô-Ð-Ý˜˜SÑ!Ô!ð 	Ý�C”H˜Q”K‘”ˆBØÔð Ø�a�œ‘f‘�Ø�œ’9�9Ø˜!�AœD™&‘L�BØ�	àŒ{ð 	Ý" 3Ñ'Ô'×4Ò4Ñ6Ô6‰GˆAˆtØŒ{ð 1Ýð 0ð 0Ø%)¤Yð0ñ 0ô 0ð 1�å˜‘7”7˜4‘<ˆDˆDàˆDÝÐPÐP°t·z²zÅ,Ñ7OÔ7OÐPÑPÔPÑPÔPð 	ØˆFØBÐBÐBÐBÐBÐBØ× Ò Ñ"Ô"‰ˆˆ1ØˆU�1�a‰[Œ[ˆØŒ<ð 	ØˆIØ�3Š;ˆ;Ø�3�t eÐ,Ñ,Ô,Ð,ð ˆ;r,   c                ó´   — | j         d                              ¦   «         \  }}|t          ||d¬¦  «        z  |t          ||d¬¦  «        z  z
  |dz  |dz  z   z  S )Nr   TrS   r¤   )r   r3   r   )rM   rü   rV   r9  s       r)   rW   zarg._eval_derivative  sm   € ØŒy˜Œ|×(Ò(Ñ*Ô*‰ˆˆ1Ø•J˜q !¨dÐ3Ñ3Ô3Ñ3°aÝ˜q !¨dÐ3Ñ3Ô3ñ74ñ 4Ø89¸1¹¸qÀ!¹t¹ñEð 	Er,   c                ój   — ddl m} | j        d                              ¦   «         \  }} |||¦  «        S )Nr   r.  )r5  r/  r   r3   )rM   r?   r\   r/  rV   r9  s         r)   Ú_eval_rewrite_as_atan2zarg._eval_rewrite_as_atan2  s?   € ØBÐBÐBÐBÐBÐBØŒy˜Œ|×(Ò(Ñ*Ô*‰ˆˆ1Øˆu�Q˜‰{Œ{Ðr,   c                óð   — | j         d         }t          dd¬¦  «        }|dk    rd}|                     |||z  ¦  «        }|j        rt          j        S |j        rt          j        S t          d| z  ¦  «        ‚)Nr   rü   T)Úpositiver{   zCannot expand %s around 0)	r   r	   r¸   rñ   r   r1   rì   r2  r   )rM   rV   r¼   r½   r¾   rü   r   s          r)   Ú_eval_as_leading_termzarg._eval_as_leading_term   s|   € ØŒy˜Œ|ˆÝ�# Ð%Ñ%Ô%ˆØ�1Š9ˆ9ØˆDØ�IŠI�a˜˜a™Ñ Ô ˆØŒ=ð 	BÝ”6ˆMØŒ]ð 	BÝ”4ˆKåÐ7¸4Ñ@ÑAÔAÐAr,   r   c                ó`   — ddl m} |dk    r |d¦  «        S |                      |||¬¦  «        S )Nr   )ÚOrderr{   )r¼   r½   )Úsympy.series.orderrA  r?  )rM   rV   r»   r¼   r½   rA  s         r)   rÀ   zarg._eval_nseries-  sE   € Ø,Ð,Ð,Ð,Ð,Ð,Ø�Š6ˆ6Ø�5˜‘8”8ˆOØ×)Ò)¨!°$¸TÐ)ÑBÔBÐBr,   NrÎ   )rp   rq   rr   rs   r/   Úis_realrj   rv   rw   rI   rW   r<  r?  rÀ   rx   r,   r)   r?   r?   ¸  s�   € € € € € ð-ð -ð^ ÐØ€GØ€IØ€Nàð&-ð &-ñ „[ð&-ðPEð Eð Eð
ð ð ð
Bð Bð BðCð Cð Cð Cð Cð Cr,   r?   c                  óV   — 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dS )r6   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                ó6   — |                      ¦   «         }|�|S d S r$   )r¡   ©r>   r?   rù   s      r)   rI   zconjugate.evalb  ó$   € à×!Ò!Ñ#Ô#ˆØˆ?ØˆJð ˆ?r,   c                ó   — t           S r$   )r6   ra   s    r)   Úinversezconjugate.inverseh  s   € ÝÐr,   c                ó:   — t          | j        d         d¬¦  «        S rR   ©rŒ   r   ra   s    r)   rŸ   zconjugate._eval_Absk  ó   € Ý�4”9˜Q”<¨$Ð/Ñ/Ô/Ð/r,   c                ó6   — t          | j        d         ¦  «        S rZ   ©Ú	transposer   ra   s    r)   Ú_eval_adjointzconjugate._eval_adjointn  ó   € Ý˜œ 1œÑ&Ô&Ð&r,   c                ó   — | j         d         S rZ   ©r   ra   s    r)   r¡   zconjugate._eval_conjugateq  ó   € ØŒy˜Œ|Ðr,   c                óÌ   — |j         r*t          t          | j        d         |d¬¦  «        ¦  «        S |j        r+t          t          | j        d         |d¬¦  «        ¦  «         S d S rR   )rC  r6   r   r   r0   rU   s     r)   rW   zconjugate._eval_derivativet  sm   € ØŒ9ð 	JÝ�Z¨¬	°!¬°aÀ$ÐGÑGÔGÑHÔHÐHØŒ^ð 	JÝ�j¨¬°1¬°qÀ4ÐHÑHÔHÑIÔIÐIÐIð	Jð 	Jr,   c                ó6   — t          | j        d         ¦  «        S rZ   ©Úadjointr   ra   s    r)   Ú_eval_transposezconjugate._eval_transposez  ó   € Ý�t”y ”|Ñ$Ô$Ð$r,   c                ó&   — | j         d         j        S rZ   r_   ra   s    r)   rb   zconjugate._eval_is_algebraic}  rc   r,   N)rp   rq   rr   rs   rv   rw   rI   rI  rŸ   rP  r¡   rW   rY  rb   rx   r,   r)   r6   r6   4  s«   € € € € € ð*ð *ðV €Nàðð ñ „[ðð
ð ð ð0ð 0ð 0ð'ð 'ð 'ðð ð ðJð Jð Jð%ð %ð %ð)ð )ð )ð )ð )r,   r6   c                  ó:   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ ZdS )rO  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                ó6   — |                      ¦   «         }|�|S d S r$   )rY  rF  s      r)   rI   ztranspose.evalª  rG  r,   c                ó6   — t          | j        d         ¦  «        S rZ   ©r6   r   ra   s    r)   rP  ztranspose._eval_adjoint°  rQ  r,   c                ó6   — t          | j        d         ¦  «        S rZ   rW  ra   s    r)   r¡   ztranspose._eval_conjugate³  rZ  r,   c                ó   — | j         d         S rZ   rS  ra   s    r)   rY  ztranspose._eval_transpose¶  rT  r,   N)	rp   rq   rr   rs   rw   rI   rP  r¡   rY  rx   r,   r)   rO  rO  �  sg   € € € € € ð&ð &ðP ðð ñ „[ðð
'ð 'ð 'ð%ð %ð %ðð ð ð ð r,   rO  c                  óH   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ Zd	d„Z	d„ Z
dS )
rX  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                ó€   — |                      ¦   «         }|�|S |                     ¦   «         }|�t          |¦  «        S d S r$   )rP  rY  r6   rF  s      r)   rI   zadjoint.evalÕ  sF   € à×ÒÑ!Ô!ˆØˆ?ØˆJØ×!Ò!Ñ#Ô#ˆØˆ?Ý˜S‘>”>Ð!ð ˆ?r,   c                ó   — | j         d         S rZ   rS  ra   s    r)   rP  zadjoint._eval_adjointÞ  rT  r,   c                ó6   — t          | j        d         ¦  «        S rZ   rN  ra   s    r)   r¡   zadjoint._eval_conjugateá  rQ  r,   c                ó6   — t          | j        d         ¦  «        S rZ   r_  ra   s    r)   rY  zadjoint._eval_transposeä  rQ  r,   Nc                óf   — |                      | j        d         ¦  «        }d|z  }|r	d|›d|›d�}|S )Nr   z%s^{\dagger}z\left(z	\right)^{Ú})Ú_printr   )rM   Úprinterr™   r   r?   Útexs         r)   Ú_latexzadjoint._latexç  sG   € Ø�nŠn˜TœY qœ\Ñ*Ô*ˆØ Ñ#ˆØð 	7ð 	7Ø-0¨S¨S°#°#°#Ð6ˆCØˆ
r,   c                óŒ   — ddl m}  |j        | j        d         g|¢R Ž }|j        r| |d¦  «        z  }n| |d¦  «        z  }|S )Nr   )Ú
prettyFormu   â€ ú+)Ú sympy.printing.pretty.stringpictrn  ri  r   Ú_use_unicode)rM   rj  r   rn  Úpforms        r)   Ú_prettyzadjoint._prettyî  sk   € Ø?Ð?Ð?Ð?Ð?Ð?Ø�”˜tœy¨œ|Ð3¨dÐ3Ð3Ð3ˆØÔð 	+Ø˜:˜: lÑ3Ô3Ñ3ˆEˆEà˜:˜: c™?œ?Ñ*ˆEØˆr,   r$   )rp   rq   rr   rs   rw   rI   rP  r¡   rY  rl  rs  rx   r,   r)   rX  rX  º  s‰   € € € € € ðð ð4 ð"ð "ñ „[ð"ðð ð ð'ð 'ð 'ð'ð 'ð 'ðð ð ð ðð ð ð ð r,   rX  c                  ó<   — e Zd ZdZdZdZed„ ¦   «         Zd„ Zd„ Z	dS )Ú
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        rR ||¦  «        }|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  }Œ%t          |¦  «        t          |¦  «        k     rN|r#t          ||z   Ž t          t          |Ž ¦  «        z  S |rt          ||z   Ž S ddlm} t          |Ž  |d¦  «        z  S d S )Nr   ©r?   r¤   ©r+  )Ú$sympy.functions.elementary.complexesr?   r6  r   rî   r+  r   Úabsr�   r   Úis_polarrñ   r;   r   ru  )	r>   r?   ÚargumentÚarr+  r   r@   rB   r>  s	            r)   rI   zpolar_lift.eval%  sy  € àHÐHÐHÐHÐHÐHØŒ=ð 	0Ø�˜#‘”ˆBð
 �a�˜A™¥˜s 1™u¥bÐ)Ð)Ð)ØLÐLÐLÐLÐLÐLØ �y¥ 2¡‘”¥s¨3¡x¤xÑ/Ð/àŒ:ð 	Ø”8ˆDˆDà�5ˆDØˆØˆØˆØð 	"ð 	"ˆCØŒ|ð "Ø˜S˜EÑ!��Ø”ð "Ø˜S˜EÑ!��à˜S˜EÑ!��Ýˆx‰=Œ=�3˜t™9œ9Ò$Ð$Øð 3Ý˜X¨Ñ0Ð2µ:½cÀ8¸nÑ3MÔ3MÑMÐMØð 3Ý˜X¨Ñ0Ð2Ð2àLÐLÐLÐLÐLÐLÝ˜H�~ i i°¡l¤lÑ2Ð2ð %Ð$r,   c                óB   — | j         d                              |¦  «        S )z. Careful! any evalf of polar numbers is flaky r   )r   Ú_eval_evalf)rM   Úprecs     r)   r  zpolar_lift._eval_evalfI  s   € àŒy˜Œ|×'Ò'¨Ñ-Ô-Ð-r,   c                ó:   — t          | j        d         d¬¦  «        S rR   rK  ra   s    r)   rŸ   zpolar_lift._eval_AbsM  rL  r,   N)
rp   rq   rr   rs   r{  r”   rw   rI   r  rŸ   rx   r,   r)   ru  ru  ü  sc   € € € € € ð#ð #ðJ €HØ€Màð!3ð !3ñ „[ð!3ðF.ð .ð .ð0ð 0ð 0ð 0ð 0r,   ru  c                  óD   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )r1  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         	                    ¦   «         d         z  }ŒO|j
        rX|j         	                    ¦   «         \  }}||t          |j        ¦  «        z  | |t          |j        ¦  «        ¦  «        z  z   z  }Œ®t          |t          ¦  «        r|t          |j        d         ¦  «        z  }Œá d S |S )Nr   )r+  r×   r{   )rî   r+  r×   r�   r   r{  r?   r5   r™   r3   r˜   Úunbranched_argumentrí   rz  ru  )	r>   r}  r+  r×   r   ru   rF   r   r<   s	            r)   Ú_getunbranchedz periodic_argument._getunbranchedz  s1  € àIÐIÐIÐIÐIÐIÐIÐIØŒ9ð 	Ø”7ˆDˆDà�4ˆDØˆ
Øð 	ð 	ˆAØ”:ð Ø�c !™fœfÑ$�
�
Ý˜A˜yÑ)Ô)ð 	Ø˜aœe×0Ò0Ñ2Ô2°1Ô5Ñ5�
�
Ø”ð Øœ×+Ò+Ñ-Ô-‘��BØ˜bÕ!4Ø”Fñ"ô "ñ Ø   ¥S¨¬¡[¤[Ñ!1Ô!1Ñ1ñ2ñ 2�
�
å˜A�zÑ*Ô*ð Ø�c !¤&¨¤)™nœnÑ,�
�
à�t�tØÐr,   c                óÆ  — |j         sd S |t          k    r#t          |t          ¦  «        rt	          |j        Ž S t          |t          ¦  «        r)|dt          z  k    rt	          |j        d         |¦  «        S |j        rMd„ |j        D ¦   «         }t          |¦  «        t          |j        ¦  «        k    rt	          t          |Ž |¦  «        S |                      |¦  «        }|€d S ddlm}m} |                     t          ||¦  «        rd S |t          k    r|S |t          k    r>ddlm}  |||z  t$          j        z
  ¦  «        |z  }|                     |¦  «        s||z
  S d S d S )Nr¤   r   c                ó    — g | ]}|j         °	|‘ŒS rx   )rñ   )r'   rV   s     r)   râ   z*periodic_argument.eval.<locals>.<listcomp>ž  s   € Ð?Ð?Ð?˜Q°´Ð?�qÐ?Ð?Ð?r,   )Úatanr/  ©Úceiling)r“   r   r5   Úprincipal_branchr1  r   ru  r   r�   r;   r   r…  r5  rˆ  r/  r:   Ú#sympy.functions.elementary.integersrŠ  r   rš   )	r>   r}  ÚperiodÚnewargsru   rˆ  r/  rŠ  r»   s	            r)   rI   zperiodic_argument.eval‘  s…  € ð Ô*ð 	Ø�4Ø•RŠ<ˆ<�J rÕ+;Ñ<Ô<ˆ<Ý$ b¤gÐ.Ð.Ý�b�*Ñ%Ô%ð 	9¨&°Aµb±Dª.¨.Ý$ R¤W¨Q¤Z°Ñ8Ô8Ð8ØŒ9ð 	@Ø?Ð? "¤'Ð?Ñ?Ô?ˆGÝ�7‰|Œ|�s 2¤7™|œ|Ò+Ð+Ý(­¨g¨¸Ñ?Ô?Ð?Ø×'Ò'¨Ñ+Ô+ˆ
ØÐØ�4ØHÐHÐHÐHÐHÐHÐHÐHØ�>Š>Õ+¨U°DÑ9Ô9ð 	Ø�4Ø•RŠ<ˆ<ØÐØ•RŠ<ˆ<ØCÐCÐCÐCÐCÐCØ�˜
 6Ñ)­A¬FÑ2Ñ3Ô3°FÑ:ˆAØ—5’5˜‘>”>ð &Ø! A‘~Ð%ð	 ˆ<ð&ð &r,   c                óV  — | j         \  }}|t          k    r3t                               |¦  «        }|€| S |                     |¦  «        S t          |t          ¦  «                             |¦  «        }ddlm} | |||z  t          j        z
  ¦  «        |z  z
                       |¦  «        S )Nr   r‰  )	r   r   r1  r…  r  rŒ  rŠ  r   rš   )rM   r€  r   r�  ru   ÚubrŠ  s          r)   r  zperiodic_argument._eval_evalf¯  sª   € Ø”I‰	ˆˆ6Ø•RŠ<ˆ<Ý*×9Ò9¸!Ñ<Ô<ˆJØÐ!Ø�Ø×)Ò)¨$Ñ/Ô/Ð/Ý˜q¥"Ñ%Ô%×1Ò1°$Ñ7Ô7ˆØ?Ð?Ð?Ð?Ð?Ð?Ø�W�W˜R ™Y­¬Ñ/Ñ0Ô0°Ñ7Ñ7×DÒDÀTÑJÔJÐJr,   N)rp   rq   rr   rs   rw   r…  rI   r  rx   r,   r)   r1  r1  Q  si   € € € € € ð&ð &ðP ðð ñ „[ðð, ð&ð &ñ „[ð&ð:	Kð 	Kð 	Kð 	Kð 	Kr,   r1  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
    )r1  r   rw  s    r)   r„  r„  »  s   € õ& ˜S¥"Ñ%Ô%Ð%r,   c                  ó6   — e Zd ZdZdZdZed„ ¦   «         Zd„ ZdS )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                óZ  — ddl m} t          |t          ¦  «        rt	          |j        d         |¦  «        S |t          k    r|S t          |t          ¦  «        }t          ||¦  «        }||k    rÞ|                     t          ¦  «        sÄ|                     t          ¦  «        sªt          |¦  «        }d„ }| 	                    t          |¦  «        }t          |t          ¦  «        }|                     t          ¦  «        sN||k    r |t          ||z
  z  ¦  «        |z  }n|}|j        s#|                     |¦  «        s| |d¦  «        z  }|S |j        s|d}
}	n |j        |j        Ž \  }	}
g }|
D ]}|j        r|	|z  }	Œ||gz  }Œt          |¦  «        }
t          |	|¦  «        }|                     t          ¦  «        rd S |j        r�t#          |	¦  «        |k    s|dk    rt|
dk    rn|	dk    rh|dk    r't%          |	¦  «        t	          t'          |
Ž |¦  «        z  S t	           |t          |z  ¦  «        t'          |
Ž z  |¦  «        t%          |	¦  «        z  S |j        rLt%          |¦  «        |dz  k     dk    s	||dz  k    r-|
dk    r% ||t          z  ¦  «        t%          |	¦  «        z  S d S d S d S )Nr   rx  c                óN   — t          | t          ¦  «        st          | ¦  «        S | S r$   )r5   r   ru  )Úexprs    r)   Úmrz!principal_branch.eval.<locals>.mr
  s'   € Ý! $­Ñ/Ô/ð ,Ý% dÑ+Ô+Ð+Ø�r,   rx   r{   r¤   T)rî   r+  r5   ru  r‹  r   r   r1  r:   Úreplacer   r{  rë   r‘   rñ   Útupler6  r„  rz  r   )rM   rV   r�  r+  r�  ÚbargÚplr–  ÚresrH   ÚmÚothersr9  r?   s                 r)   rI   zprincipal_branch.evalý  sÝ  € àDÐDÐDÐDÐDÐDÝ�a�Ñ$Ô$ð 	7Ý# A¤F¨1¤I¨vÑ6Ô6Ð6Ø•RŠ<ˆ<ØˆHÝ˜q¥"Ñ%Ô%ˆÝ   FÑ+Ô+ˆØ�Š:ˆ:˜bŸfšfÕ%6Ñ7Ô7ˆ:ØŸšÕ!2Ñ3Ô3ð å˜A‘”ˆBðð ð ð —’�J¨Ñ+Ô+ˆBå" 2¥rÑ*Ô*ˆBØ—6’6�*Ñ%Ô%ð Ø˜’:�:Ø#˜)¥A t¨b¡y¡MÑ2Ô2°2Ñ5�C�Cà�CØ”|ð (¨C¯GªG°IÑ,>Ô,>ð (Ø˜9˜9 Q™<œ<Ñ'�CØ�
àŒ~ð 	3Ø�bˆqˆAˆAà!�1”> 1¤>Ð2‰DˆAˆqØˆØð 	ð 	ˆAØŒ}ð Ø�Q‘��à˜1˜#‘��Ý�&‰MŒMˆÝ  6Ñ*Ô*ˆØ�7Š7Õ$Ñ%Ô%ð 	Ø�4ØŒ=ð 	MÕ1°!Ñ4Ô4¸Ò;Ð;Ø" ašx˜x¨A°ªG¨G¸¸Qº¸Ø�aŠxˆxÝ˜1‘v”vÕ.­s°A¨w¸Ñ?Ô?Ñ?Ð?Ý# I I­a°©eÑ$4Ô$4µS¸!°WÑ$<¸fÑEÔEÅcÈ!ÁfÄfÑLÐLØŒ=ð 	+�s 3™xœx¨&°©(Ò2°tÒ;Ð;¸sÀfÈQÁhº¸Ø˜’G�GØ�9˜S¥™UÑ#Ô#¥C¨¡F¤FÑ*Ð*ð	+ð 	+Ø�Gð @O¸r,   c                ó   — | j         \  }}t          ||¦  «                             |¦  «        }t          |¦  «        t          k    s|t           k    r| S ddlm} t          |¦  «         |t          |z  ¦  «        z                       |¦  «        S )Nr   )r™   )r   r1  r  rz  r   rî   r™   r   )rM   r€  r   r�  Úpr™   s         r)   r  zprincipal_branch._eval_evalf1  s„   € Ø”I‰	ˆˆ6Ý˜a Ñ(Ô(×4Ò4°TÑ:Ô:ˆÝˆq‰6Œ6•BŠ;ˆ;˜!¥˜sš(˜(ØˆKØ>Ð>Ð>Ð>Ð>Ð>Ý�A‘”�s�s�1˜Q™3‘x”x‘×,Ò,¨TÑ2Ô2Ð2r,   N)	rp   rq   rr   rs   r{  r”   rw   rI   r  rx   r,   r)   r‹  r‹  Ñ  sT   € € € € € ð&ð &ðP €HØ€Màð1+ð 1+ñ „[ð1+ðf3ð 3ð 3ð 3ð 3r,   r‹  Fc                óv  ‡‡— ddl m} | j        r| S | j        r‰st	          | ¦  «        S t          | t          ¦  «        r‰s‰rt	          | ¦  «        S | j        r| S | j        r. | j	        ˆfd„| j
        D ¦   «         Ž }‰rt	          |¦  «        S |S | j        rJ| j        t          j        k    r5|  	                    t          j        t          | j        ‰d¬¦  «        ¦  «        S | j        r | j	        ˆfd„| j
        D ¦   «         Ž S t          | |¦  «        rŒt          | j        ‰‰¬¦  «        }g }| j
        dd …         D ]M}t          |d         d‰¬¦  «        }t          |dd …         ‰‰¬¦  «        }	|                     |f|	z   ¦  «         ŒN ||ft)          |¦  «        z   Ž S  | j	        ˆˆfd	„| j
        D ¦   «         Ž S )
Nr   )ÚIntegralc                ó4   •— g | ]}t          |‰d ¬¦  «        ‘ŒS )T©Úpause©Ú	_polarify©r'   r?   Úlifts     €r)   râ   z_polarify.<locals>.<listcomp>E  s(   ø€ ÐJÐJÐJ¸3•i  T°Ð6Ñ6Ô6ÐJÐJÐJr,   Fr£  c                ó4   •— g | ]}t          |‰d ¬¦  «        ‘ŒS )Fr£  r¥  r§  s     €r)   râ   z_polarify.<locals>.<listcomp>L  s(   ø€ ÐNÐNÐN¸s� 3¨°EÐ:Ñ:Ô:ÐNÐNÐNr,   r{   )r¨  r¤  c                ób   •— g | ]+}t          |t          ¦  «        rt          |‰‰¬ ¦  «        n|‘Œ,S )r£  )r5   r   r¦  )r'   r?   r¨  r¤  s     €€r)   râ   z_polarify.<locals>.<listcomp>W  sR   ø€ ð Oð Oð OØ?B�J s­DÑ1Ô1ð;� 3¨°EÐ:Ñ:Ô:Ð:Ø7:ðOð Oð Or,   )Úsympy.integrals.integralsr¡  r{  r6  ru  r5   r   r3  rò   r¹   r   r˜   rí   r   ÚExp1r¦  r™   r4   Úfunctionr9   r˜  )
Úeqr¨  r¤  r¡  Úrr¹   ÚlimitsÚlimitÚvarÚrests
    ``       r)   r¦  r¦  :  s3  øø€ Ø2Ð2Ð2Ð2Ð2Ð2Ø	„{ð Øˆ	Ø	„|ð ˜Eð Ý˜"‰~Œ~ÐÝ�"•fÑÔð P eð P°ð PÝ˜"‰~Œ~ÐØ	Œð PØˆ	Ø	Œð PØˆBŒGÐJÐJÐJÐJÀ"Ä'ÐJÑJÔJÐKˆØð 	!Ý˜a‘=”=Ð ØˆØ	Œð P�r”w¥!¤&Ò(Ð(Ø�wŠw•q”v�y¨¬°¸UÐCÑCÔCÑDÔDÐDØ	Œð PØˆrŒwÐNÐNÐNÐNÀbÄgÐNÑNÔNÐOÐOÝ	�B˜Ñ	!Ô	!ð På˜œ d°%Ð8Ñ8Ô8ˆØˆØ”W˜Q˜R˜R”[ð 	)ð 	)ˆEÝ˜E !œH¨5¸Ð>Ñ>Ô>ˆCÝ˜U 1 2 2œY¨T¸Ð?Ñ?Ô?ˆDØ�MŠM˜3˜& 4™-Ñ(Ô(Ð(Ð(Øˆx˜4˜'¥E¨&¡M¤MÑ1Ð3Ð3àˆrŒwð Oð Oð Oð Oð OØFHÄgðOñ Oô Oð Pð 	Pr,   Tc                óØ   — |rd}t          t          | ¦  «        |¦  «        } |s| S d„ | j        D ¦   «         }|                      |¦  «        } | d„ |                     ¦   «         D ¦   «         fS )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})
    Fc                ó<   — i | ]}|t          |j        d ¬¦  «        “ŒS )T)Úpolar)r	   Úname)r'   r�   s     r)   rà   zpolarify.<locals>.<dictcomp>ˆ  s)   € ÐBÐBÐB¨QˆA�u�Q”V 4Ð(Ñ(Ô(ÐBÐBÐBr,   c                ó   — i | ]\  }}||“Œ	S rx   rx   )r'   r�   r¯  s      r)   rà   zpolarify.<locals>.<dictcomp>Š  s   € Ð.Ð.Ð.™˜˜A��1Ð.Ð.Ð.r,   )r¦  r   rë   r¸   Úitems)r®  r¸   r¨  Úrepss       r)   Úpolarifyr»  [  sz   € ðP ð ØˆÝ	•7˜2‘;”; Ñ	%Ô	%€BØð Øˆ	ØBÐB°"´/ÐBÑBÔB€DØ	�Š�‰Œ€BØÐ.Ð. §¢¡¤Ð.Ñ.Ô.Ð.Ð.r,   c                ón  ‡— t          | t          ¦  «        r| j        r| S |�sddlm}m} t          | |¦  «        r |t          | j        ‰¦  «        ¦  «        S t          | t          ¦  «        r4| j        d         dt          z  k    rt          | j        d         ‰¦  «        S | j
        s0| j        s)| j        s"| j        r6| j        dv r	d| j        v s	| j        dvr | j        ˆfd„| j        D ¦   «         Ž S t          | t           ¦  «        rt          | j        d         ‰¦  «        S | j        r9t          | j        ‰¦  «        }t          | j        ‰|j        o|  ¦  «        }||z  S | j        r1t+          | j        dd¦  «        r | j        ˆfd	„| j        D ¦   «         Ž S  | j        ˆfd
„| j        D ¦   «         Ž S )Nr   r*  r{   r¤   )z==z!=c                ó0   •— g | ]}t          |‰¦  «        ‘ŒS rx   ©Ú_unpolarify©r'   rV   Úexponents_onlys     €r)   râ   z_unpolarify.<locals>.<listcomp>�  s#   ø€ ÐMÐMÐMÀ�[¨¨NÑ;Ô;ÐMÐMÐMr,   ru   Fc                ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS rx   r¾  rÀ  s     €r)   râ   z_unpolarify.<locals>.<listcomp>¨  s5   ø€ ð ð ð Øõ % Q¨¸ÑGÔGð ð ð r,   c                ó2   •— g | ]}t          |‰d ¦  «        ‘ŒS ro   r¾  rÀ  s     €r)   râ   z_unpolarify.<locals>.<listcomp>«  s%   ø€ ÐKÐKÐK¸a•[  N°DÑ9Ô9ÐKÐKÐKr,   )r5   r
   r3  rî   r™   r+  r¿  r‹  r   r   rò   r�   Ú
is_BooleanÚis_RelationalÚrel_opr¹   ru  r˜   rí   r³   r4   Úgetattr)r®  rÁ  r¤  r™   r+  Úexporí   s    `     r)   r¿  r¿  �  s  ø€ Ý�b�%Ñ Ô ð  B¤Jð Øˆ	àñ ;ØIÐIÐIÐIÐIÐIÐIÐIÝ�b˜)Ñ$Ô$ð 	<Ø�3•{ 2¤6¨>Ñ:Ô:Ñ;Ô;Ð;Ý�bÕ*Ñ+Ô+ð 	;°´¸´
¸aÅ¹dÒ0BÐ0BÝ˜rœw qœz¨>Ñ:Ô:Ð:àŒIð	OØœð	OØ&(¤mð	OàÔð	Oð ”	˜\Ð)Ð)¨a°2´7¨l¨lØ”	 Ð-Ð-à�2”7ÐMÐMÐMÐMÀRÄWÐMÑMÔMÐNÐNÝ�b�*Ñ%Ô%ð 	;Ý˜rœw qœz¨>Ñ:Ô:Ð:à	„yð Ý˜2œ6 >Ñ2Ô2ˆÝ˜2œ7 NØ”Ð.¨ YÐ/ñ1ô 1ˆà�T‰zÐà	„~ð �' "¤'¨<¸Ñ?Ô?ð ØˆrŒwð ð ð ð Ø”Wðñ ô ð ð 	ð ˆ2Œ7ÐKÐKÐKÐKÀ2Ä7ÐKÑKÔKÐLÐLr,   Nc                ó€  — t          | t          ¦  «        r| S t          | ¦  «        } |�"t          |                      |¦  «        ¦  «        S d}d}|rd}|r6d}t          | ||¦  «        }|| k    rd}|} t          |t          ¦  «        r|S |°6ddlm} |                      |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)
    NTFr   rx  r{   )	r5   Úboolr   Ú
unpolarifyr¸   r¿  rî   r+  ru  )r®  r¸   rÁ  Úchangedr¤  r›  r+  s          r)   rË  rË  ®  së   € õ" �"•dÑÔð Øˆ	å	�‰Œ€BØÐÝ˜"Ÿ'š' $™-œ-Ñ(Ô(Ð(Ø€GØ€EØð ØˆØ
ð ØˆÝ˜"˜n¨eÑ4Ô4ˆØ�"Š9ˆ9ØˆGØˆBÝ�c�4Ñ Ô ð 	ØˆJð ð ð AÐ@Ð@Ð@Ð@Ð@Ø�8Š8�Y�Y˜q‘\”\ 1¥j°¡m¤m°QÐ7Ñ8Ô8Ð8r,   )F)TF)NF)4Ú
__future__r   Ú
sympy.corer   r   r   r   r   r	   r
   Úsympy.core.exprr   Úsympy.core.exprtoolsr   Úsympy.core.functionr   r   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?   r6   rO  rX  ru  r1  r„  r‹  r¦  r»  r¿  rË  rx   r,   r)   ú<module>rØ     sä  ðØ "Ð "Ð "Ð "Ð "Ð "à AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ  Ð  Ð  Ð  Ð  Ð  Ø -Ð -Ð -Ð -Ð -Ð -ð)ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø  Ð  Ð  Ð  Ð  Ð  Ø $Ð $Ð $Ð $Ð $Ð $Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø :Ð :Ð :Ð :Ð :Ð :ðwð wð wð wð wˆñ wô wð wðtuð uð uð uð uˆñ uô uð uðvr5ð r5ð r5ð r5ð r5ˆ?ñ r5ô r5ð r5ðjw(ð w(ð w(ð w(ð w(ˆ/ñ w(ô w(ð w(ðtyCð yCð yCð yCð yCˆ/ñ yCô yCð yCðxJ)ð J)ð J)ð J)ð J)�ñ J)ô J)ð J)ðZ6ð 6ð 6ð 6ð 6�ñ 6ô 6ð 6ðr;ð ;ð ;ð ;ð ;ˆoñ ;ô ;ð ;ðDR0ð R0ð R0ð R0ð R0�ñ R0ô R0ð R0ðjgKð gKð gKð gKð gK˜ñ gKô gKð gKðT&ð &ð &ð,f3ð f3ð f3ð f3ð f3�ñ f3ô f3ð f3ðRPð Pð Pð PðB//ð //ð //ð //ðdMð Mð Mð MðB&9ð &9ð &9ð &9ð &9ð &9r,   