§
    OŠtj‰ò  ã                  óÚ  — U d Z ddlmZ ddlmZmZmZmZmZ ddl	Z	ddl
mZ ddlmZmZmZmZmZmZmZmZmZ ddlmZ ddl
mZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl
m9Z: dd	l;m<Z< dd
l=m>Z> ddl?m@Z@mAZA ddlBmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL er^ddlMmNZN ddlOmPZP ddlQmRZR ddlSmTZT ddlUmVZV ddlWmXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z^m_Z_ ddl`maZambZbmcZc ddldmeZemfZf ddlgmhZh ddlimjZjmkZkmlZlmmZmmnZn  e	jo        d ¦  «        Zpe5Zqd!„ Z9 ere¦  «        Zs ere ¦  «        Ztd"Zu G d#„ d$ev¦  «        Zw	 exeyeyeyeyf         Zz	 eZ{e|e}ef         Z~d™d)„Zdšd›d.„Z€exe�ey         eyeyeyf         Z‚edœd�d2„¦   «         Zƒedœdžd5„¦   «         ZƒdœdŸd8„Zƒdšd d<„Z„d¡d?„Z…d¢dD„Z†d£dF„Z‡d¤dH„Zˆd¥dJ„Z‰d¦dL„ZŠd§dO„Z‹d¨dQ„ZŒd©dR„Z�dšdªdT„ZŽd«dV„Z�d¬dX„Z�d­dZ„Z‘d®d\„Z’d¯d^„Z“d°dc„Z”d±de„Z•d²dg„Z–d³di„Z—d´dk„Z˜dµdl„Z™d¶dn„Zšd·dp„Z›d¸ds„Zœd¢dt„Z�d¹dw„Zždºdz„ZŸd»d|„Z d»d}„Z¡d¼dƒ„Z¢d½d…„Z£d¾d‡„Z¤d¿d‰„Z¥dÀdŠ„Z¦i a§d‹e¨dŒ<   d�„ Z©dÀdŽ„ZªdÁd�„Z« G d�„ d‘¦  «        Z¬dÂd“„Z­	 	 	 dÃdÄd˜„Z®dS )Åz^
Adaptive numerical evaluation of SymPy expressions, using mpmath
for mathematical functions.
é    )Úannotations)ÚCallableÚTYPE_CHECKINGÚAnyÚoverloadÚTypeN)	Úmake_mpcÚmake_mpfÚmpÚmpcÚmpfÚnsumÚquadtsÚquadoscÚworkprec)Úinf)!Úfrom_intÚfrom_man_expÚfrom_rationalÚfhalfÚfnanÚfinfÚfninfÚfnoneÚfoneÚfzeroÚmpf_absÚmpf_addÚmpf_atanÚ	mpf_atan2Úmpf_cmpÚmpf_cosÚmpf_eÚmpf_expÚmpf_logÚmpf_ltÚmpf_mulÚmpf_negÚmpf_piÚmpf_powÚmpf_pow_intÚ	mpf_shiftÚmpf_sinÚmpf_sqrtÚ	normalizeÚround_nearestÚto_intÚto_strÚmpf_tan)Úbitcount)ÚMPZ)Ú	_infs_nan)Údps_to_precÚprec_to_dpsé   )Úsympify)ÚS)Ú
SYMPY_INTS)Úis_sequence)Úlambdify©Úas_int)ÚExpr©ÚAdd©ÚMul©ÚPow)ÚSymbol©ÚIntegral©ÚSum©ÚProduct©ÚexpÚlog)ÚAbsÚreÚim©ÚceilingÚfloor)Úatan)ÚFloatÚRationalÚIntegerÚAlgebraicNumberÚNumberé
   c                óT   — t          t          t          | ¦  «        ¦  «        ¦  «        S )z8Return smallest integer, b, such that |n|/2**b < 1.
    )Úmpmath_bitcountÚabsÚint)Úns    úN/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/core/evalf.pyr4   r4   2   s   € õ �3�s 1™vœv™;œ;Ñ'Ô'Ð'ó    iM  c                  ó   — e Zd ZdS )ÚPrecisionExhaustedN)Ú__name__Ú
__module__Ú__qualname__© re   rd   rg   rg   A   s   € € € € € Ø€Dre   rg   ÚxúMPF_TUP | NoneÚreturnú	int | Anyc                óL   — | r| t           k    rt          S | d         | d         z   S )a^  Fast approximation of log2(x) for an mpf value tuple x.

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

    Calculated as exponent + width of mantissa. This is an
    approximation for two reasons: 1) it gives the ceil(log2(abs(x)))
    value and 2) it is too high by 1 in the case that x is an exact
    power of 2. Although this is easy to remedy by testing to see if
    the odd mpf mantissa is 1 (indicating that one was dealing with
    an exact power of 2) that would decrease the speed and is not
    necessary as this is only being used as an approximation for the
    number of bits in x. The correct return value could be written as
    "x[2] + (x[3] if x[1] != 1 else 0)".
        Since mpf tuples always have an odd mantissa, no check is done
    to see if the mantissa is a multiple of 2 (in which case the
    result would be too large by 1).

    Examples
    ========

    >>> from sympy import log
    >>> from sympy.core.evalf import fastlog, bitcount
    >>> s, m, e = 0, 5, 1
    >>> bc = bitcount(m)
    >>> n = [1, -1][s]*m*2**e
    >>> n, (log(n)/log(2)).evalf(2), fastlog((s, m, e, bc))
    (10, 3.3, 4)
    é   é   )r   Ú	MINUS_INF©rl   s    rd   Úfastlogru   r   s,   € ð> ð �•U’
�
ÝÐØˆQŒ4�!�A”$‰;Ðre   FÚvrA   útuple[Number, Number] | Nonec                ó¬   — |                       ¦   «         \  }}|r*|                     ¦   «         \  }}|t          j        u r||fS n|r|t          j        fS dS )a  Return a and b if v matches a + I*b where b is not zero and
    a and b are Numbers, else None. If `or_real` is True then 0 will
    be returned for `b` if `v` is a real number.

    Examples
    ========

    >>> from sympy.core.evalf import pure_complex
    >>> from sympy import sqrt, I, S
    >>> a, b, surd = S(2), S(3), sqrt(2)
    >>> pure_complex(a)
    >>> pure_complex(a, or_real=True)
    (2, 0)
    >>> pure_complex(surd)
    >>> pure_complex(a + b*I)
    (2, 3)
    >>> pure_complex(I)
    (0, 1)
    N)Úas_coeff_AddÚas_coeff_Mulr;   ÚImaginaryUnitÚZero)rv   Úor_realÚhÚtÚcÚis         rd   Úpure_complexr‚   –   sf   € ð( �>Š>ÑÔ�D€A€qØð Ø�~Š~ÑÔ‰ˆˆ1Ø•”ÐÐØ�a�4ˆKð  à	ð Ø•!”&ˆyÐØˆ4re   ÚmagÚSCALED_ZERO_TUPÚMPF_TUPc                ó   — d S ©Nrk   ©rƒ   Úsigns     rd   Úscaled_zerorŠ   ¹   ó   € à€Cre   rb   útuple[SCALED_ZERO_TUP, int]c                ó   — d S r‡   rk   rˆ   s     rd   rŠ   rŠ   ¼   r‹   re   úSCALED_ZERO_TUP | intú%MPF_TUP | tuple[SCALED_ZERO_TUP, int]c                ó~  — t          | t          ¦  «        r>t          | ¦  «        dk    r+t          | d¬¦  «        r| d         d         f| dd…         z   S t          | t          ¦  «        rG|dvrt          d¦  «        ‚t          t          | ¦  «        d	}}|dk    rdnd}|gf|dd…         z   }||fS t          d
¦  «        ‚)al  Return an mpf representing a power of two with magnitude ``mag``
    and -1 for precision. Or, if ``mag`` is a scaled_zero tuple, then just
    remove the sign from within the list that it was initially wrapped
    in.

    Examples
    ========

    >>> from sympy.core.evalf import scaled_zero
    >>> from sympy import Float
    >>> z, p = scaled_zero(100)
    >>> z, p
    (([0], 1, 100, 1), -1)
    >>> ok = scaled_zero(z)
    >>> ok
    (0, 1, 100, 1)
    >>> Float(ok)
    1.26765060022823e+30
    >>> Float(ok, p)
    0.e+30
    >>> ok, p = scaled_zero(100, -1)
    >>> Float(scaled_zero(ok), p)
    -0.e+30
    é   T©Úscaledr   r9   N)éÿÿÿÿr9   zsign must be +/-1r”   z-scaled zero expects int or scaled_zero tuple.)Ú
isinstanceÚtupleÚlenÚiszeror<   Ú
ValueErrorr,   r   )rƒ   r‰   ÚrvÚpÚss        rd   rŠ   rŠ   ¿   sÑ   € õ4 �#•uÑÔð 
J¥# c¡(¤(¨a¢- -µF¸3ÀtÐ4LÑ4LÔ4L -Ø�A”�q”	ˆ|˜c ! " "œgÑ%Ð%Ý	�C�Ñ	$Ô	$ð JØ�wÐÐÝÐ0Ñ1Ô1Ð1Ý�$ Ñ$Ô$ bˆAˆØ˜’�ˆAˆA ˆØˆcˆV�b˜˜˜”f‰_ˆØ�1ˆuˆåÐHÑIÔIÐIre   r   ú MPF_TUP | SCALED_ZERO_TUP | Noneúbool | Nonec                ó¢   — |s|  p| d          o| d          S | o6t          | d         t          ¦  «        o| d         | d         cxk    odk    nc S )Nr9   r”   r   )r•   Úlist)r   r“   s     rd   r˜   r˜   æ   sj   € Øð 5ØˆwÐ4˜c !œf˜*Ð4¨S°¬W¨Ð4ØÐF•:˜c !œf¥dÑ+Ô+ÐF°°A´¸#¸b¼'Ð0FÐ0FÒ0FÐ0FÀQÒ0FÐ0FÐ0FÐ0FÐFre   ÚresultÚTMP_RESc                óð   — | t           j        u rt          S | \  }}}}|s|st          S |S |s|S t          |¦  «        }t          |¦  «        }t	          ||z
  ||z
  ¦  «        }|t	          ||¦  «        z
  }| S )a  
    Returns relative accuracy of a complex number with given accuracies
    for the real and imaginary parts. The relative accuracy is defined
    in the complex norm sense as ||z|+|error|| / |z| where error
    is equal to (real absolute error) + (imag absolute error)*i.

    The full expression for the (logarithmic) error can be approximated
    easily by using the max norm to approximate the complex norm.

    In the worst case (re and im equal), this is wrong by a factor
    sqrt(2), or by log2(sqrt(2)) = 0.5 bit.
    )r;   ÚComplexInfinityÚINFru   Úmax)	r¡   rS   rT   Úre_accÚim_accÚre_sizeÚim_sizeÚabsolute_errorÚrelative_errors	            rd   Úcomplex_accuracyr­   ì   s—   € ð •Ô"Ð"Ð"Ýˆ
Ø#Ñ€BˆˆF�FØð Øð 	ÝˆJØˆØð ØˆÝ�b‰kŒk€GÝ�b‰kŒk€GÝ˜ 6Ñ)¨7°VÑ+;Ñ<Ô<€NØ#¥c¨'°7Ñ&;Ô&;Ñ;€NØˆ?Ðre   ÚexprÚprecÚoptionsÚOPT_DICTc           	     ó¢  — t          | |dz   |¦  «        }|t          j        u rt          d |d fS |\  }}}}|s||||f\  }}}}|rv| j        r=t          t          t          | |dz   ¦  «        ¦  «        |dz   |¦  «        \  }}	}
}	|d |
d fS d|v rt          j        ||f|¦  «        d |d fS t          | ¦  «        d |d fS |rt          |¦  «        d |d fS dS )Nrq   Úsubs©NNNN)
Úevalfr;   r¤   r   Ú	is_numberra   ÚNÚlibmpÚmpc_absr   )r®   r¯   r°   r¡   rS   rT   r§   r¨   Úabs_exprÚ_Úaccs              rd   Úget_absr½   	  s  € Ý�4˜ ™ 7Ñ+Ô+€FØ•Ô"Ð"Ð"Ý�T˜4 Ð%Ð%Ø#Ñ€BˆˆF�FØð 8Ø!# V¨R°Ð!7ÑˆˆF�B˜Ø	ð &ØŒ>ð 	/Ý"'­­A¨d°D¸1±HÑ,=Ô,=Ñ(>Ô(>Ø(,¨q©°'ñ#;ô #;ÑˆH�a˜˜aà˜T 3¨Ð,Ð,à˜Ð Ð Ý”} b¨" X¨tÑ4Ô4°d¸FÀDÐHÐHÝ�t‘9”9˜d D¨$Ð.Ð.Ø	ð &Ý�r‰{Œ{˜D &¨$Ð.Ð.à%Ð%re   Únoc                óê   — |}d}	 t          | ||¦  «        }|t          j        u rt          d|dfS ||dd…         \  }}|r||k    s|d          |k    r|d|dfS |t	          dd|z  ¦  «        z  }|dz  }Œo)z/no = 0 for real part, no = 1 for imaginary partr   r9   Nrq   é   )rµ   r;   r¤   r   r¦   )	r®   r¾   r¯   r°   r   r�   ÚresÚvalueÚaccuracys	            rd   Úget_complex_partrÄ     s§   € à€HØ	€Að	Ý�D˜( GÑ,Ô,ˆØ•!Ô#Ð#Ð#Ý˜˜t TÐ)Ð)Ø˜b˜e !˜eœ*‰ˆˆxàð 	/˜( dÒ*Ð*¨u°Q¬x¨i¸$Ò.>Ð.>Ø˜$ ¨$Ð.Ð.Ø•C˜˜A˜q™D‘M”MÑ!ˆØ	ˆQ‰ˆð	re   ú'Abs'c                ó:   — t          | j        d         ||¦  «        S ©Nr   )r½   Úargs©r®   r¯   r°   s      rd   Ú	evalf_absrÊ   /  s   € Ý�4”9˜Q”<  wÑ/Ô/Ð/re   ú're'c                ó<   — t          | j        d         d||¦  «        S rÇ   ©rÄ   rÈ   rÉ   s      rd   Úevalf_rerÎ   3  ó   € Ý˜DœI aœL¨!¨T°7Ñ;Ô;Ð;re   ú'im'c                ó<   — t          | j        d         d||¦  «        S ©Nr   r9   rÍ   rÉ   s      rd   Úevalf_imrÓ   7  rÏ   re   rS   rT   c                óJ  — | t           k    r|t           k    rt          d¦  «        ‚| t           k    rd |d |fS |t           k    r| d |d fS t          | ¦  «        }t          |¦  «        }||k    r|}|t          ||z
   d¦  «        z   }n|}|t          ||z
   d¦  «        z   }| |||fS )Nz&got complex zero with unknown accuracyr   )r   r™   ru   Úmin)rS   rT   r¯   Úsize_reÚsize_imr§   r¨   s          rd   Úfinalize_complexrØ   ;  sÆ   € Ø	�U‚{€{�r�U’{�{ÝÐAÑBÔBÐBØ	�uŠˆØ�R˜˜tÐ#Ð#Ø	�uŠˆØ�4˜˜tÐ#Ð#å�b‰kŒk€GÝ�b‰kŒk€GØ�ÒÐØˆØ�˜g¨Ñ/Ð0°!Ñ4Ô4Ñ4ˆˆàˆØ�˜g¨Ñ/Ð0°!Ñ4Ô4Ñ4ˆØˆr�6˜6Ð!Ð!re   rÂ   c                ó|  — | t           j        u r| S | \  }}}}|r%|t          vrt          |¦  «        | dz   k     rd\  }}|r%|t          vrt          |¦  «        | dz   k     rd\  }}|rP|rNt          |¦  «        t          |¦  «        z
  }|dk     r||z
  | dz   k    rd\  }}|dk     r||z
  |dz
  k    rd\  }}||||fS )z.
    Chop off tiny real or complex parts.
    r‘   ©NNrq   )r;   r¤   r6   ru   )rÂ   r¯   rS   rT   r§   r¨   Údeltas          rd   Ú
chop_partsrÜ   N  s  € ð •Ô!Ð!Ð!ØˆØ"Ñ€BˆˆF�Fà	ð  ˆb�	Ð!Ð!¥w¨r¡{¤{°d°U¸Q±YÒ'>Ð'>Ø‰
ˆˆFØ	ð  ˆb�	Ð!Ð!¥w¨r¡{¤{°d°U¸Q±YÒ'>Ð'>Ø‰
ˆˆFà	ð $ˆbð $Ý˜‘”�g b™kœkÑ)ˆØ�AŠ:ˆ:˜5 6™>¨d¨U°Q©YÒ6Ð6Ø#‰JˆB�Ø�AŠ:ˆ:˜5 6™>¨T°A©XÒ5Ð5Ø#‰JˆB�Øˆr�6˜6Ð!Ð!re   c                óT   — t          |¦  «        }||k     rt          d| z  ¦  «        ‚d S )Nz‡Failed to distinguish the expression: 

%s

from zero. Try simplifying the input, using chop=True, or providing a higher maxn for evalf)r­   rg   )r®   r¡   r¯   Úas       rd   Úcheck_targetrß   d  s>   € Ý˜Ñ Ô €AØˆ4‚x€xÝ ð "&à)-ñ"/ñ 0ô 0ð 	0ð €xre   úTMP_RES | tuple[int, int]c                óú  ‡‡‡— ddl m}m} d}t          | |‰¦  «        }|t          j        u rt          d¦  «        ‚|\  }}	}
}|r3|	r1t          t          |¦  «        |
z
  t          |	¦  «        |z
  ¦  «        }n0|rt          |¦  «        |
z
  }n|	rt          |	¦  «        |z
  }n|rdS dS d}|| k    r||z   |z   Št          | ‰‰¦  «        \  }}	}
}n|Šdˆˆˆfd„}d\  }}}}|�%|t          k    r | || d¬¦  «        |¦  «        \  }}|	�%|	t          k    r | || d¬¦  «        |	¦  «        \  }}|rFt          t          |pt          ¦  «        ¦  «        t          t          |pt          ¦  «        ¦  «        fS ||||fS )zŸ
    With no = 1, computes ceiling(expr)
    With no = -1, computes floor(expr)

    Note: this function either gives the exact result or signals failure.
    r   ©rS   rT   rÀ   z+Cannot get integer part of Complex Infinity©r   r   r´   r^   Úre_imrA   Únexprr…   c                ó¨  •‡— ddl m} |\  }}}}|dk    }t          t          |t          ¦  «        ¦  «        }|r�t          | |z
  d‰¦  «        \  }}}	}
|rJ ‚t          |¦  «         dz   }|‰k    rt          | |‰¦  «        \  }}}	}
|rJ ‚|}t          t          |t          ¦  «        ¦  «        }|\  }}}}|dk    }|sÿ‰                     dd¦  «        }|rEd„ Št          ˆfd	„| 	                    ¦   «         D ¦   «         ¦  «        r|  
                    |¦  «        }  || | d¬
¦  «        } t          | d‰¦  «        \  }}}}	 t          | |d |d fd¦  «         n3# t          $ r& |                      d¦  «        st          ‚t          }Y nw xY w|t          ‰t          |pt          t          ¦  «        ‰k    z  ¦  «        z  }t!          |¦  «        }|t"          fS )Nr9   rB   r   r^   rq   r³   Fc                ó®   — 	 t          | d¬¦  «         dS # t          $ r5 	 d„ |                      ¦   «         D ¦   «          Y dS # t          $ r Y Y dS w xY ww xY w)z)Check for integer or integer + I*integer.F©ÚstrictTc                ó0   — g | ]}t          |d ¬¦  «        ‘ŒS )Frè   r?   )Ú.0r�   s     rd   ú
<listcomp>zLget_integer_part.<locals>.calc_part.<locals>.is_int_reim.<locals>.<listcomp>»  s%   € ÐOÐOÐO¸�V A¨eÐ4Ñ4Ô4ÐOÐOÐOre   )r@   r™   Úas_real_imagrt   s    rd   Úis_int_reimz8get_integer_part.<locals>.calc_part.<locals>.is_int_reim´  sˆ   € ð)Ý˜q¨Ð/Ñ/Ô/Ð/Ø#˜tøÝ%ð )ð )ð )ð)ØOÐO¸a¿nºnÑ>NÔ>NÐOÑOÔOÐOØ#' 4 4øÝ)ð )ð )ð )Ø#( 5 5 5ð)øøøð	)øøøs&   ‚ •
A AÁ
AÁAÁAÁAc              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r‡   rk   )rë   rv   rî   s     €rd   ú	<genexpr>z6get_integer_part.<locals>.calc_part.<locals>.<genexpr>À  s+   øè è € Ð:Ð:¨!�{�{ 1‘~”~Ð:Ð:Ð:Ð:Ð:Ð:re   ©Úevaluaterr   )ÚaddrC   rb   r1   Úrndrµ   ru   ÚgetÚallÚvaluesr³   rß   rg   Úequalsr   r!   r   r¥   )rä   rå   rC   r»   ÚexponentÚis_intÚnintÚireÚiimÚire_accÚiim_accÚsizeÚnew_exprœ   rl   Úx_accrî   r¾   r°   r¯   s                   @€€€rd   Ú	calc_partz#get_integer_part.<locals>.calc_part—  s3  øø€ ØÐÐÐÐÐØ!Ñˆˆ1ˆh˜Ø˜Q’ˆÝ•6˜%¥Ñ%Ô%Ñ&Ô&ˆØð 	"õ */Ø˜‘˜b 'ñ*+ô *+Ñ&ˆC��g˜wàˆNˆN�7Ý˜C‘L”L�= 1Ñ$ˆDØ�dŠ{ˆ{Ý-2Ø˜4 ñ.*ô .*Ñ*��S˜' 7à���wØ�Ý•v˜e¥SÑ)Ô)Ñ*Ô*ˆDØ"ÑˆAˆq�'˜1Ø ’\ˆFØð 	?ð —’˜F EÑ*Ô*ˆAØð *ð
)ð 
)ð 
)õ Ð:Ð:Ð:Ð:¨q¯xªx©z¬zÐ:Ñ:Ô:Ñ:Ô:ð *Ø!ŸJšJ q™MœM�Eà�C˜ ˜u¨uÐ5Ñ5Ô5ˆEÝ" 5¨"¨gÑ6Ô6‰NˆAˆq�%˜ðÝ˜U Q¨¨e°TÐ$:¸AÑ>Ô>Ð>Ð>øÝ%ð ð ð Ø—|’| A‘”ð -Ý,Ð,Ý���ðøøøð •C˜�G A J­µÑ6Ô6¸"Ò<Ñ=Ñ>Ô>Ñ>ˆDÝ˜‰~Œ~ˆØ•SˆyÐs   Å E Å-FÆFNFrñ   )rä   rA   rå   r…   )Ú$sympy.functions.elementary.complexesrS   rT   rµ   r;   r¤   r™   r¦   ru   r   rb   r1   )r®   r¾   r°   Úreturn_intsrS   rT   Úassumed_sizer¡   rü   rý   rþ   rÿ   ÚgapÚmarginr  Úre_Úim_r§   r¨   r¯   s    ``                @rd   Úget_integer_partr  l  s  øøø€ ð <Ð;Ð;Ð;Ð;Ð;Ð;Ð;à€LÝ�4˜ wÑ/Ô/€FØ•Ô"Ð"Ð"ÝÐFÑGÔGÐGØ!'Ñ€Cˆˆg�wð ð *ˆsð *Ý•'˜#‘,”, Ñ(­'°#©,¬,¸Ñ*@ÑAÔAˆˆØ	ð 	*Ý�c‰lŒl˜WÑ$ˆˆØ	ð *Ý�c‰lŒl˜WÑ$ˆˆð ð 	*Ø�4à)Ð)à€Fà
ˆvˆg‚~€~Ø˜Ñ$ sÑ*ˆÝ%*Ø�$˜ñ&!ô &!Ñ"ˆˆS�'˜7˜7ð ˆð
6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ðp  6Ñ€Cˆˆf�fà
€˜3¥%š<˜<Ø�i   4°%Ð 8Ñ 8Ô 8¸#Ñ>Ô>‰ˆˆVØ
€˜3¥%š<˜<Ø�i   4°%Ð 8Ñ 8Ô 8¸#Ñ>Ô>‰ˆˆVàð DÝ•6˜#˜,¥Ñ'Ô'Ñ(Ô(­#­f°S°\½EÑ.BÔ.BÑ*CÔ*CÐCÐCØ��V˜VÐ#Ð#re   ú	'ceiling'c                ó:   — t          | j        d         d|¦  «        S rÒ   ©r  rÈ   rÉ   s      rd   Úevalf_ceilingr  Û  s   € Ý˜DœI aœL¨!¨WÑ5Ô5Ð5re   ú'floor'c                ó:   — t          | j        d         d|¦  «        S )Nr   r”   r  rÉ   s      rd   Úevalf_floorr  ß  s   € Ý˜DœI aœL¨"¨gÑ6Ô6Ð6re   ú'Float'c                ó   — | j         d |d fS r‡   )Ú_mpf_rÉ   s      rd   Úevalf_floatr  ã  s   € ØŒ:�t˜T 4Ð'Ð're   ú
'Rational'c                ó@   — t          | j        | j        |¦  «        d |d fS r‡   )r   r›   ÚqrÉ   s      rd   Úevalf_rationalr  ç  s!   € Ý˜œ ¤¨Ñ.Ô.°°d¸DÐ@Ð@re   ú	'Integer'c                ó4   — t          | j        |¦  «        d |d fS r‡   )r   r›   rÉ   s      rd   Úevalf_integerr  ë  s   € Ý�D”F˜DÑ!Ô! 4¨¨tÐ3Ð3re   Útermsr    Útarget_precú3tuple[MPF_TUP | SCALED_ZERO_TUP | None, int | None]c                óN  — d„ | D ¦   «         } | sdS t          | ¦  «        dk    r| d         S g }ddlm} | D ]C} |j        |d         d¦  «        }|t          j        u s|j        r|                     |¦  «         ŒD|r-ddlm	} t           ||Ž |dz   i ¦  «        }|d         |d         fS d|z  }	d	\  }
}g }| D ]�\  }}|\  }}}}|r| }|                     ||z   |z
  ¦  «         ||z
  }||k    r9||	k    r*|
r#|t          t          |
¦  «        ¦  «        z
  |	k    r|}
|}Œg|
||z  z  }
Œp| }||z
  |	k    r|
s||}}
Œƒ|
|z  |z   }
|}ŒŽt          |¦  «        }|
st          |¦  «        S |
dk     rd}|
 }
nd}t          |
¦  «        }||z   |z
  }t          ||
|||t           ¦  «        |f}|S )
a'  
    Helper for evalf_add. Adds a list of (mpfval, accuracy) terms.

    Returns
    =======

    - None, None if there are no non-zero terms;
    - terms[0] if there is only 1 term;
    - scaled_zero if the sum of the terms produces a zero by cancellation
      e.g. mpfs representing 1 and -1 would produce a scaled zero which need
      special handling since they are not actually zero and they are purposely
      malformed to ensure that they cannot be used in anything but accuracy
      calculations;
    - a tuple that is scaled to target_prec that corresponds to the
      sum of the terms.

    The returned mpf tuple will be normalized to target_prec; the input
    prec is used to define the working precision.

    XXX explain why this is needed and why one cannot just loop using mpf_add
    c                ó<   — g | ]}t          |d          ¦  «        °|‘ŒS )r   )r˜   )rë   r   s     rd   rì   zadd_terms.<locals>.<listcomp>  s'   € Ð2Ð2Ð2�1¥V¨A¨a¬D¡\¤\Ð2ˆQÐ2Ð2Ð2re   rÚ   r9   r   ©rY   rB   r‘   rq   rã   )r—   ÚnumbersrY   Ú_newr;   ÚNaNÚis_infiniteÚappendró   rC   rµ   r4   ra   r¦   rŠ   r/   rô   )r  r¯   r  ÚspecialrY   r   ÚargrC   rš   Úworking_precÚsum_manÚsum_expÚabsolute_errrl   rÃ   r‰   ÚmanrP   ÚbcrÛ   r«   Úsum_signÚsum_bcÚsum_accuracyÚrs                            rd   Ú	add_termsr5  õ  sn  € ð0 3Ð2˜Ð2Ñ2Ô2€EØð ØˆzÝ	ˆU‰Œ�qŠˆØ�QŒxˆð €GØÐÐÐÐÐØð  ð  ˆØˆeŒj˜˜1œ˜qÑ!Ô!ˆØ•!”%ˆ<ˆ<˜3œ?ˆ<Ø�NŠN˜3ÑÔÐøØð ØÐÐÐÐÐÝ�3�3˜�= $¨¡(¨BÑ/Ô/ˆØ�!Œu�b˜”eˆ|Ðà�T‘6€LØÑ€GˆWØ €Làð ð ‰ˆˆ8ØÑˆˆc�3˜Øð 	Ø�$ˆCØ×Ò˜B ™H xÑ/Ñ0Ô0Ð0Ø�g‘ˆØ�'Š>ˆ>ð ˜Ò%Ð%Øð &à�¥# g¡,¤,Ñ/Ô/Ñ/°,Ò>Ð>Ø�Ø��à˜C 5™LÑ)��à�FˆEà�r‰z˜LÒ(Ð(Øð 0Ø'*¨C˜W�Gøà" eÑ+¨sÑ2�Ø��Ý˜Ñ&Ô&€NØð +Ý˜>Ñ*Ô*Ð*Ø�‚{€{ØˆØ�(ˆˆàˆÝ�gÑÔ€FØ˜VÑ# nÑ4€LÝ�(˜G W¨f°kÝñ	ô 	Øð	€Aà€Hre   ú'Add'c                ó^  ‡‡— t          | ¦  «        }|r7|\  }}t          |‰‰¦  «        \  }}}}t          |‰‰¦  «        \  }	}}
}||	||
fS ‰                     dt          ¦  «        }d}‰}	 t	          |d‰z  ¦  «        ‰d<   ˆˆfd„| j        D ¦   «         }|                     t          j        ¦  «        }|dk    rt          d ‰d fS t          d„ |D ¦   «         ‰|¦  «        \  }}t          d„ |D ¦   «         ‰|¦  «        \  }	}
|dk    rC|t          t          t          fv s|	t          t          t          fv rt          d ‰d fS t          j        S t          ||	||
f¦  «        }||k    r)‰                     d¦  «        rt          d	|d
||
¦  «         nX‰|z
  ‰d         k    rnH‰t          dd|z  z   ||z
  ¦  «        z   Š|dz  }‰                     d¦  «        rt          d‰¦  «         �Œy|‰d<   t!          |d¬¦  «        rt#          |¦  «        }t!          |	d¬¦  «        rt#          |	¦  «        }	||	||
fS )NÚmaxprecr   r9   rq   c                ó8   •— g | ]}t          |‰d z   ‰¦  «        ‘ŒS )r^   )rµ   )rë   r*  r°   r¯   s     €€rd   rì   zevalf_add.<locals>.<listcomp>Z  s)   ø€ ÐBÐBÐB°C•�s˜D 2™I wÑ/Ô/ÐBÐBÐBre   c                ó^   — g | ]*}t          |t          ¦  «        ¯|d          ¯|d dd…         ‘Œ+S )r   Nrq   ©r•   r–   ©rë   rÞ   s     rd   rì   zevalf_add.<locals>.<listcomp>_  ó:   € ÐEÐEÐE˜¥z°!µUÑ';Ô';ÐEÀÀ!ÄÐEˆQˆqˆt�!ˆtŒWÐEÐEÐEre   c                ó^   — g | ]*}t          |t          ¦  «        ¯|d          ¯|d dd…         ‘Œ+S )r9   Nrq   r;  r<  s     rd   rì   zevalf_add.<locals>.<listcomp>a  r=  re   ÚverbosezADD: wantedúaccurate bits, gotr^   zADD: restarting with precTr’   )r‚   rµ   rõ   ÚDEFAULT_MAXPRECrÕ   rÈ   Úcountr;   r¤   r   r5  r   r   r­   Úprintr¦   r˜   rŠ   )rv   r¯   r°   rÁ   r~   r€   rS   r»   r§   rT   r¨   Ú
oldmaxprecr�   r  r  rc   r¼   s    ``              rd   Ú	evalf_addrE  K  s—  øø€ Ý
�q‰/Œ/€CØ
ð &Ø‰ˆˆ1Ý   D¨'Ñ2Ô2ÑˆˆAˆv�qÝ   D¨'Ñ2Ô2ÑˆˆAˆv�qØ�2�v˜vÐ%Ð%à—’˜Y­Ñ8Ô8€Jà	€AØ€Kð9Ý  ¨Q¨t©VÑ4Ô4ˆ�	ÑàBÐBÐBÐBÐB¸1¼6ÐBÑBÔBˆØ�KŠK�Ô)Ñ*Ô*ˆØ�Š6ˆ6Ý˜˜t TÐ)Ð)ÝØEÐE˜eÐEÑEÔEÀtÈ[ñZô Z‰
ˆˆFåØEÐE˜eÐEÑEÔEÀtÈ[ñZô Z‰
ˆˆFà�Š6ˆ6Ø•d�E¥4Ð(Ð(Ð(¨Bµ4½ÅÐ2EÐ,EÐ,EÝ˜T 4¨Ð-Ð-ÝÔ$Ð$Ý  B¨°Ð7Ñ8Ô8ˆØ�+ÒÐØ�{Š{˜9Ñ%Ô%ð XÝ�m [Ð2FÈÐPVÑWÔWÐWØà�{Ñ" g¨iÔ&8Ò8Ð8Øà�#˜b 1 a¡4™i¨°sÑ):Ñ;Ô;Ñ;ˆDØ�‰FˆAØ�{Š{˜9Ñ%Ô%ð 9ÝÐ1°4Ñ8Ô8Ð8ñ79ð: $€GˆIÑÝˆb˜ÐÑÔð Ý˜‰_Œ_ˆÝˆb˜ÐÑÔð Ý˜‰_Œ_ˆØˆr�6˜6Ð!Ð!re   ú'Mul'c           
     ó  — t          | ¦  «        }|r!|\  }}t          |||¦  «        \  }}}}d |d |fS t          | j        ¦  «        }d}	g }
ddlm} |D ]˜}t          |||¦  «        }|t          j        u r|
                     |¦  «         Œ7|d         €|d         €d}	ŒJ |j	        |d         d¦  «        }|t          j
        u rt          d |d fc S |j        r|
                     |¦  «         Œ™|
r*|	rt          d |d fS ddlm} t           ||
Ž |dz   i ¦  «        S |	rdS |}|t          |¦  «        z   d	z   }t!          d¦  «        ddfx}\  }}}t          |¦  «        }d}|                     t          j        ¦  «         g }t%          |¦  «        D ]î\  }}||k    r0t          |¦  «        r!|d
         |z                       ¦   «         |d
<   Œ;||k    r|t          j        u rŒPt          |||¦  «        \  }}}}|r|r|                     ||||f¦  «         Œ„|r||c\  }}}}} n|r||c\  }}}}} |dz  }n dS |d|z  z  }||z  }||z  }||z  }|d|z  k    r||z  }||z  }||z  }|d|z  k    °t)          || ¦  «        }Œï|dz  dz	  }!|s7t+          |!||t-          |¦  «        |t.          ¦  «        } |dz  rd | d |fS | d |d fS |||f|k    r)|!||t-          |¦  «        fdt!          d¦  «        ddf}}d}"n4|d         \  }#}$}%}&t)          |t1          |#|$|%|&f¦  «        ¦  «        }|#}|$}d}"||"d …         D ]�\  }#}$}%}&t)          |t1          |#|$|%|&f¦  «        ¦  «        }|}'t3          ||#|'¦  «        }(t3          t5          |¦  «        |$|'¦  «        })t3          ||$|'¦  «        }*t3          ||#|'¦  «        }+t7          |(|)|'¦  «        }t7          |*|+|'¦  «        }Œž|                     d¦  «        rt;          d|d|¦  «         |dz  rt5          |¦  «        |}}||||fS )NFr9   r#  r   TrD   r‘   r´   é   r”   rq   rr   r?  zMUL: wantedr@  )r‚   rµ   r    rÈ   r$  rY   r;   r¤   r(  r%  r&  r   r'  ÚmulrE   r—   r5   ÚOneÚ	enumerateÚexpandrÕ   r/   r4   rô   r­   r'   r(   r   rõ   rC  ),rv   r¯   r°   rÁ   r»   r~   rT   r¨   rÈ   Úhas_zeror)  rY   r*  r¡   ÚnumrE   r¼   r+  Ústartr/  rP   r0  ÚlastÚ	directionÚcomplex_factorsr�   rS   r§   rœ   ÚmÚeÚbÚw_accr‰   Úi0ÚwreÚwimÚwre_accÚwim_accÚuse_precÚAÚBÚCÚDs,                                               rd   Ú	evalf_mulra  |  sV  € Ý
�q‰/Œ/€CØ
ð &à‰ˆˆ1Ý   D¨'Ñ2Ô2ÑˆˆAˆv�qØ�R˜˜vÐ%Ð%Ý�”‰<Œ<€Dð €HØ€GØÐÐÐÐÐØð  ð  ˆÝ�s˜D 'Ñ*Ô*ˆØ•QÔ&Ð&Ð&Ø�NŠN˜6Ñ"Ô"Ð"ØØ�!Œ9ÐØ�aŒyÐ Ø�ØØˆeŒj˜ œ AÑ&Ô&ˆØ•!”%ˆ<ˆ<Ý˜˜t TÐ)Ð)Ð)Ð)ØŒ?ð 	 Ø�NŠN˜3ÑÔÐøØð 2Øð 	*Ý˜˜t TÐ)Ð)ØÐÐÐÐÐÝ�S�S˜'�] D¨1¡H¨bÑ1Ô1Ð1Øð &Ø%Ð%ð €Cð �#˜d™)œ)Ñ# aÑ'€Lõ ˜q™6œ6 1 a˜<Ð'€E‰LˆC��bõ ˆt‰9Œ9€DØ€IØ‡K‚K•”ÑÔÐØ€Oå˜D‘/”/ð ð ‰ˆˆ3Ø�Š9ˆ9� cÑ*Ô*ˆ9Ø˜Rœ ™×,Ò,Ñ.Ô.ˆD�‰HØØ�$ŠYˆY˜3¥!¤%˜<˜<ØÝ!& s¨L¸'Ñ!BÔ!BÑˆˆB�˜Øð 		*�"ð 		*Ø×"Ò" B¨¨F°FÐ#;Ñ<Ô<Ð<ØØð 	*Ø"$ fÐ‰LˆQ��1�a˜%˜%Øð 	*Ø"$ fÐ‰LˆQ��1�a˜%Ø˜‰NˆIˆIà)Ð)Ð)Ø�Q�q‘SÑˆ	Øˆq‰ˆØˆq‰ˆØ
ˆa‰ˆØ�1�\‘>Ò!Ð!Ø�LÑ ˆCØ�<ÑˆCØ�,ÑˆBð �1�\‘>Ò!Ð!õ �#�u‰oŒoˆˆØ˜‰M˜aÑ€DØð ( Ý�d˜C ¥h¨s¡m¤m°T½3Ñ?Ô?ˆà�q‰=ð 	&Ø˜˜D #Ð%Ð%à�d˜C Ð%Ð%ð ��bˆ>˜UÒ"Ð"à˜C ¥h¨s¡m¤mÐ4°q½#¸a¹&¼&À!ÀQÐ6G�ˆBØˆBˆBð *9¸Ô);Ñ&ˆC��g˜wÝ�cÝ&¨¨S°'¸7Ð'CÑDÔDñFô FˆCàˆBØˆBØˆBà*9¸"¸#¸#Ô*>ð 	)ð 	)Ñ&ˆC��g˜wõ �cÝ&¨¨S°'¸7Ð'CÑDÔDñFô FˆCð $ˆHÝ˜˜C Ñ*Ô*ˆAÝ� ™œ S¨(Ñ3Ô3ˆAÝ˜˜C Ñ*Ô*ˆAÝ˜˜C Ñ*Ô*ˆAÝ˜˜A˜xÑ(Ô(ˆBÝ˜˜A˜xÑ(Ô(ˆBˆBØ�;Š;�yÑ!Ô!ð 	BÝ�- Ð';¸SÑAÔAÐAà�q‰=ð 	%Ý˜R‘[”[ "�ˆBØ�2�s˜CÐÐre   ú'Pow'c                ó  — |}| j         \  }}|j        �r7|j        }|st          d |d fS |t	          t          j        t          |¦  «        ¦  «        ¦  «        z  }t          ||dz   |¦  «        }|t          j
        u r
|dk     rdS |S |\  }}	}
}|r|	st          |||¦  «        d |d fS |	rb|s`t          |	||¦  «        }|dz  }|dk    r|d |d fS |dk    rd |d |fS |dk    rt          |¦  «        d |d fS |dk    rd t          |¦  «        d |fS |s|dk     rt          j
        S dS t          j        ||	f||¦  «        \  }}	t          ||	|¦  «        S t          ||dz   |¦  «        }|t          j
        u r|j        r
|dk     rdS |S t"          ‚|t          j        u r‰|\  }}}}|r2t          j        |pt(          |f|¦  «        \  }}	t          ||	|¦  «        S |sdS t+          |t(          ¦  «        r!d t-          t          |¦  «        |¦  «        d |fS t-          ||¦  «        d |d fS |dz  }t          |||¦  «        }|t          j
        u rt.          d |d fS |\  }}}}|s|st          d |d fS t1          |¦  «        }|dk    r||z  }t          |||¦  «        \  }}}}|t          j        u rH|r2t          j        |pt(          |f|¦  «        \  }}	t          ||	|¦  «        S t7          ||¦  «        d |d fS t          ||dz   |¦  «        \  }}}}|s)|s'|rt.          d |d fS |d         dk    rt          j
        S dS |rCt          j        |pt(          |pt(          f|pt(          |f|¦  «        \  }}	t          ||	|¦  «        S |r3t          j        |pt(          |f||¦  «        \  }}	t          ||	|¦  «        S t+          |t(          ¦  «        r1t          j        |t(          f||¦  «        \  }}	t          ||	|¦  «        S t=          |||¦  «        d |d fS )	NrH  r   r´   r‘   r9   rq   rr   r^   )rÈ   Ú
is_Integerr›   r   rb   ÚmathÚlog2ra   rµ   r;   r¤   r+   r(   r¸   Úmpc_pow_intrØ   Úis_RationalÚNotImplementedErrorÚHalfÚmpc_sqrtr   r&   r.   r   ru   ÚExp1Úmpc_expr$   Úmpc_powÚmpc_pow_mpfr*   )rv   r¯   r°   r  ÚbaserP   r›   r¡   rS   rT   r§   r¨   ÚzÚcaseÚxreÚximr»   ÚyreÚyimÚysizes                       rd   Ú	evalf_powrx  ú  sê  € à€KØ”�I€Dˆ#ð
 „~ñ %5Ø”ˆàð 	*Ý˜˜t TÐ)Ð)ð 	••D”I�c !™fœfÑ%Ô%Ñ&Ô&Ñ&ˆÝ�t˜T A™X wÑ/Ô/ˆØ•QÔ&Ð&Ð&Ø�1ŠuˆuØ-Ð-ØˆMØ!'ÑˆˆB�˜àð 	L�bð 	LÝ˜r 1 kÑ2Ô2°D¸+ÀtÐKÐKàð 
	;�bð 
	;Ý˜B  ;Ñ/Ô/ˆAØ�q‘5ˆDØ�qŠyˆyØ˜$ ¨TÐ1Ð1Ø�qŠyˆyØ˜Q  kÐ1Ð1Ø�qŠyˆyÝ˜q‘z”z 4¨°dÐ:Ð:Ø�qŠyˆyØ�W Q™ZœZ¨¨{Ð:Ð:àð 	*Ø�1ŠuˆuÝÔ(Ð(Ø)Ð)åÔ" B¨ 8¨Q°Ñ5Ô5‰ˆˆBå  B¨Ñ4Ô4Ð4å�4˜ ™ 7Ñ+Ô+€FØ•Ô"Ð"Ð"ØŒ?ð 	Ø�QŠwˆwØ-Ð-ØˆMÝ!Ð!ð �aŒf€}€}Ø‰ˆˆS�!�Qàð 	2Ý”^ S \­E°3Ð$7¸Ñ>Ô>‰FˆB�Ý# B¨¨DÑ1Ô1Ð1Øð 	*Ø)Ð)å�#•uÑÔð 	BØ�¥'¨#¡,¤,°Ñ5Ô5°t¸TÐAÐAå˜˜TÑ"Ô" D¨$°Ð4Ð4ð 	ˆB�J€DÝ�3˜˜gÑ&Ô&€FØ•Ô"Ð"Ð"Ý�T˜4 Ð%Ð%Ø�N€Cˆˆa�àð &�3ð &Ý�T˜4 Ð%Ð%å�C‰LŒL€Eð ˆq‚y€yØ�‰ˆÝ˜s D¨'Ñ2Ô2‰ˆˆS�!�Qð �qŒv€~€~Øð 	9Ý”] C L­5°#Ð#6¸Ñ=Ô=‰FˆB�Ý# B¨¨KÑ8Ô8Ð8Ý�s˜KÑ(Ô(¨$°¸TÐAÐAå˜4 ¨¡¨7Ñ3Ô3�N€Cˆˆa�àð &�3ð &Øð 	*Ý˜˜t TÐ)Ð)ØˆqŒ6�QŠ;ˆ;ÝÔ$Ð$Ø%Ð%ð ð 5Ý”Øˆ\•E˜3˜<¥%Ð(¨3¨<µ%¸Ð*=Øñô ‰ˆˆBõ    B¨Ñ4Ô4Ð4à
ð 	GÝÔ" C L­5°#Ð#6¸¸[ÑIÔI‰ˆˆBÝ  B¨Ñ4Ô4Ð4å	�•UÑ	Ô	ð GÝÔ" C­ <°°kÑBÔB‰ˆˆBÝ  B¨Ñ4Ô4Ð4õ �s˜C Ñ-Ô-¨t°[À$ÐFÐFre   ú'exp'c                óf   — ddl m} t           |t          j        | j        d¬¦  «        ||¦  «        S )Nr9   rF   Frñ   )ÚpowerrG   rx  r;   rl  rP   )r®   r¯   r°   rG   s       rd   Ú	evalf_expr|  |  s;   € ØÐÐÐÐÐÝ�S�S�œ ¤°EÐ:Ñ:Ô:¸DÀ'ÑJÔJÐJre   c                ó6  — ddl m}m}m} t	          | |¦  «        rt
          }n7t	          | |¦  «        rt          }nt	          | |¦  «        rt          }nt          ‚| j	        d         }|dz   }t          |||¦  «        \  }	}
}}|
rCd|v r|                      |d         ¦  «        } t          |                      |¦  «        ||¦  «        S |	sFt	          | |¦  «        rt          d|dfS t	          | |¦  «        rdS t	          | |¦  «        rdS t          ‚t          |	¦  «        }|dk     r ||	|t          ¦  «        d|dfS |dk    r||z   }t          |||¦  «        \  }	}
}}	  ||	|t          ¦  «        }t          |¦  «        }| }||z
  |z
  }||k     r‡|                     d	¦  «        r1t#          d
|d|d|¦  «         t#          t%          |d¦  «        ¦  «         ||                     dt&          ¦  «        k    r|d|dfS ||z  }t          |||¦  «        \  }	}
}}Œº|d|dfS )zH
    This function handles sin , cos and tan of complex arguments.

    r   )ÚcosÚsinÚtané   r³   Nr´   r9   r^   r?  zSIN/COS/TANÚwantedr  r8  )Ú(sympy.functions.elementary.trigonometricr~  r  r€  r•   r"   r-   r3   ri  rÈ   rµ   r³   Ú_eval_evalfr   ru   rô   rõ   rC  r2   rA  )rv   r¯   r°   r~  r  r€  Úfuncr*  ÚxprecrS   rT   r§   r¨   ÚxsizeÚyrw  r  rÃ   s                     rd   Ú
evalf_trigr‰  �  sŠ  € ð
 GÐFÐFÐFÐFÐFÐFÐFÐFÐFÝ�!�SÑÔð "ÝˆˆÝ	�A�sÑ	Ô	ð "ÝˆˆÝ	�A�cÑ	Ô	ð "Ýˆˆå!Ð!Ø
Œ&�Œ)€Cð �2‰I€EÝ" 3¨¨wÑ7Ô7Ñ€BˆˆF�FØ	ð 9Ø�WÐÐØ—’�w˜v”Ñ'Ô'ˆAÝ�Q—]’] 4Ñ(Ô(¨$°Ñ8Ô8Ð8Øð &Ý�a˜ÑÔð 	&Ý˜˜t TÐ)Ð)Ý˜˜3ÑÔð 	&Ø)Ð)Ý˜˜#ÑÔð 	&Ø)Ð)å%Ð%õ �B‰KŒK€Eð ˆq‚y€yØˆt�B˜�cÑ"Ô" D¨$°Ð4Ð4à�‚{€{Ø�u‘ˆÝ!& s¨E°7Ñ!;Ô!;ÑˆˆB�˜ð'ØˆD��T�3ÑÔˆÝ˜‘
”
ˆØˆfˆØ˜E‘M SÑ(ˆØ�dŠ?ˆ?Ø�{Š{˜9Ñ%Ô%ð %Ý�m X¨x¸¸uÀcÑJÔJÐJÝ•f˜Q ‘m”mÑ$Ô$Ð$Ø�w—{’{ 9­oÑ>Ô>Ò>Ð>Ø˜$ ¨$Ð.Ð.Ø�S‰LˆEÝ%*¨3°°wÑ%?Ô%?Ñ"ˆB��F˜FØà�d˜D $Ð&Ð&re   ú'log'c           	     óÂ  — t          | j        ¦  «        dk    r%|                      ¦   «         } t          | ||¦  «        S | j        d         }|dz   }t          |||¦  «        }|t          j        u r|S |\  }}}}	||cxu r€
n nt          }|r]ddlm}
 ddl	m
} t           | |
|d¬¦  «        d¬¦  «        ||¦  «        }t          ||pt          |¦  «        }|d         ||d         |fS t          |t          ¦  «        dk     }t          t          |¦  «        |t           ¦  «        }t#          |¦  «        }||z
  |k    rˆ|t          k    r}dd	lm}  |t          j        |d¬¦  «        }t+          |||¦  «        \  }}}	}	|t#          |¦  «        z
  }t          t          t-          |t.          |¦  «        ¦  «        |t           ¦  «        }|}|r|t1          |¦  «        ||fS |d |d fS )
Nr9   r   r^   )rR   )rQ   Frñ   rq   rB   )r—   rÈ   Údoitrµ   r;   r¤   r   r  rR   Ú&sympy.functions.elementary.exponentialrQ   Ú	evalf_logr    r!   r%   r   rô   ru   ró   rC   ÚNegativeOnerE  r   r   r)   )r®   r¯   r°   r*  r   r¡   rs  rt  Úxaccr»   rR   rQ   rS   rT   Úimaginary_termr   rC   ró   Úprec2r§   s                       rd   rŽ  rŽ  Á  s&  € Ý
ˆ4Œ9�~„~�aÒÐØ�yŠy‰{Œ{ˆÝ�T˜4 Ñ)Ô)Ð)Ø
Œ)�AŒ,€CØ�b‰y€HÝ�3˜ 'Ñ*Ô*€FØ•Ô"Ð"Ð"ØˆØÑ€Cˆˆd�Að ˆcÐÐÐÐÐÐÐÐõ ˆà
ð &Ø<Ð<Ð<Ð<Ð<Ð<Ø>Ð>Ð>Ð>Ð>Ð>õ ØˆC���C %Ð(Ñ(Ô(°5Ð9Ñ9Ô9¸4ÀñJô Jˆå�s˜C˜L¥5¨$Ñ/Ô/ˆØ�!Œu�b˜"˜Qœ% Ð%Ð%å˜c¥5Ñ)Ô)¨AÒ-€Nå	•˜‘”˜t¥SÑ	)Ô	)€BÝ�2‰;Œ;€DØˆd�{�XÒÐ "­¢+ +ØÐÐÐÐÐàˆc•!”- ¨uÐ5Ñ5Ô5ˆÝ" 3¨¨gÑ6Ô6‰ˆˆS�!�QØ�7 3™<œ<Ñ'ˆå•W�W S­$°Ñ6Ô6Ñ7Ô7¸½sÑCÔCˆà€Fàð &Ø•6˜$‘<”< ¨Ð-Ð-à�4˜ Ð%Ð%re   ú'atan'c                ó¬   — | j         d         }t          ||dz   |¦  «        \  }}}}||cxu r€n ndS |rt          ‚t          ||t          ¦  «        d |d fS )Nr   rH  r´   )rÈ   rµ   ri  r   rô   )rv   r¯   r°   r*  rs  rt  ÚreaccÚimaccs           rd   Ú
evalf_atanr—  ö  sv   € Ø
Œ&�Œ)€CÝ" 3¨¨q©°'Ñ:Ô:Ñ€Cˆˆe�UØ
ˆcÐÐÐÐÐÐÐÐØˆyØ
ð "Ý!Ð!Ý�C˜�sÑ#Ô# T¨4°Ð5Ð5re   r³   Údictc                óž   — i }|                      ¦   «         D ]5\  }}t          |¦  «        }|j        r|                     | ¦  «        }|||<   Œ6|S )z< Change all Float entries in `subs` to have precision prec. )Úitemsr;   Úis_Floatr„  )r¯   r³   ÚnewsubsrÞ   rU  s        rd   Ú
evalf_subsr�     sX   € à€GØ—
’
‘”ð ð ‰ˆˆ1Ýˆa‰DŒDˆØŒ:ð 	$Ø—’˜dÑ#Ô#ˆAØˆ�‰
ˆ
Ø€Nre   c                ó¦  — ddl m}m} d|v r¿|                      t	          ||d         ¦  «        ¦  «        } |                     ¦   «         }|d= t          | d¦  «        rt          | ||¦  «        S t          | t          ¦  «        rt           || ¦  «        ||¦  «        S t          | t          ¦  «        rt           || ¦  «        ||¦  «        S t          ‚)Nr9   )rY   r[   r³   r…  )r$  rY   r[   r³   r�  ÚcopyÚhasattrrµ   r•   Úfloatrb   ri  )r®   r¯   r°   rY   r[   Únewoptss         rd   Úevalf_piecewiser£    sÜ   € Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø�ÐÐØ�yŠy� D¨'°&¬/Ñ:Ô:Ñ;Ô;ˆØ—,’,‘.”.ˆØ�FˆOÝ�4˜Ñ Ô ð 	.Ý˜˜t WÑ-Ô-Ð-Ý�d�EÑ"Ô"ð 	5Ý˜˜˜t™œ d¨GÑ4Ô4Ð4Ý�d�CÑ Ô ð 	7Ý˜˜ ™œ¨¨gÑ6Ô6Ð6õ Ðre   rÞ   ú'AlgebraicNumber'c                óH   — t          |                      ¦   «         ||¦  «        S r‡   )rµ   Úto_root)rÞ   r¯   r°   s      rd   Úevalf_alg_numr§    s   € Ý�—’‘”˜d GÑ,Ô,Ð,re   r   ú	mpc | mpfc                ó:  — ddl m}m}m} t	          | ¦  «        } t          | |¦  «        s| dk    rt          d¦  «        S t          | |¦  «        rt          d¦  «        S t          | |¦  «        rt          d¦  «        S t          | ||¦  «        }t          |¦  «        S )Nr9   )ÚInfinityÚNegativeInfinityr|   g        r   r   z-inf)	r$  rª  r«  r|   r:   r•   r   rµ   Úquad_to_mpmath)rl   r¯   r°   rª  r«  r|   r¡   s          rd   Ú	as_mpmathr­  &  s¬   € Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ý�‰
Œ
€AÝ�!�TÑÔð ˜a 3šh˜hÝ�1‰vŒvˆÝ�!�XÑÔð Ý�5‰zŒzÐÝ�!Ð%Ñ&Ô&ð Ý�6‰{Œ{Ðå�1�d˜GÑ$Ô$€FÝ˜&Ñ!Ô!Ð!re   ú
'Integral'c           	     óš  ‡‡‡‡‡— | j         d         Š| j         d         \  Š}}||k    rdx}}n(‰‰j        vr|j        |j        z  r||z
  }|j        rd|}}|                     dt          ¦  «        }t          |d|z  ¦  «        |d<   t          |dz   ¦  «        5  t          ||dz   |¦  «        }t          ||dz   |¦  «        }ddlm	}m
} ddlm}	 d	d	gŠt          Št          Šdˆˆˆˆˆfd„}
|                     d¦  «        dk    rÎ |	d‰g¬¦  «        } |	d‰g¬¦  «        } |	d¦  «        }‰                      ||‰z  |z   ¦  «        |z  ¦  «        }|s'‰                      ||‰z  |z   ¦  «        |z  ¦  «        }|st          d¦  «        ‚t          dt           j        z  ||         z  |dz   |¦  «        }t%          |
||g|¬¦  «        }t          }n+t'          |
||gd¬¦  «        \  }}t)          |j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   ||d<   ‰d         rˆ|j        j        }|t.          k    r?t1          t3          t5          |‰|¦  «         ¦  «        ¦  «        \  }}t1          |¦  «        }n7t3          t5          ‰t)          |¦  «        z
  |z
  |¦  «         ¦  «        }nd\  }}‰d         rˆ|j        j        }|t.          k    r?t1          t3          t5          |‰|¦  «         ¦  «        ¦  «        \  }}t1          |¦  «        }n7t3          t5          ‰t)          |¦  «        z
  |z
  |¦  «         ¦  «        }nd\  }}||||f}|S )Nr   r9   r8  rq   rH  é   )r~  r  )ÚWildFr   rA   rn   r¨  c                óR  •— t          ‰t          j        d‰	| ii¦  «        \  }}}}|p‰d         ‰d<   |p‰d         ‰d<   t          ‰t	          |¦  «        ¦  «        Št          ‰t	          |¦  «        ¦  «        Š|rt          |pt          |¦  «        S t          |pt          ¦  «        S )Nr³   r   r9   )rµ   r   r¯   r¦   ru   r   r   r   )
r   rS   rT   r§   r¨   r…  Ú	have_partÚmax_imag_termÚmax_real_termrl   s
        €€€€€rd   Úfzdo_integral.<locals>.fW  s¤   ø€ å%*¨4µ´¸6ÀAÀqÀ6Ð:JÑ%KÔ%KÑ"ˆB��F˜FàÐ- ¨1¤ˆI�a‰LØÐ- ¨1¤ˆI�a‰Lå ­w°r©{¬{Ñ;Ô;ˆMÝ ­w°r©{¬{Ñ;Ô;ˆMàð ,Ý˜2˜;¥¨Ñ+Ô+Ð+Ý�r�{�UÑ#Ô#Ð#re   ÚquadÚoscr]  )Úexcluder^  r`  zbAn integrand of the form sin(A*x+B)*f(x) or cos(A*x+B)*f(x) is required for oscillatory quadrature)Úperiod)ÚerrorrÚ   )r   rA   rn   r¨  )rÈ   Úfree_symbolsr¶   rõ   rA  rÕ   r   r­  rƒ  r~  r  Úsymbolr±  rs   Úmatchr™   r;   ÚPir   r   ru   r  Úrealr   rŠ   rb   r¦   Úimag)r®   r¯   r°   ÚxlowÚxhighÚdiffrD  r~  r  r±  r¶  r]  r^  r`  rS  rº  r¡   Úquadrature_errorÚquadrature_errrS   Úre_sr§   rT   Úim_sr¨   r…  r³  r´  rµ  rl   s                            @@@@@rd   Údo_integralrÉ  4  s  øøøøø€ ØŒ9�QŒ<€DØ”Y˜q”\�N€A€tˆUØˆu‚}€}ØÐˆˆuˆuØ	
�$Ô#Ð	#Ð	#ð
 Ô Ô 1Ñ1ð 	&Ø˜4‘<ˆDØŒ~ð &Ø �e�à—’˜Y­Ñ8Ô8€JÝ˜Z¨¨4©Ñ0Ô0€GˆIÑå	�$˜‘(Ñ	Ô	ð /=ð /=Ý˜˜t b™y¨'Ñ2Ô2ˆÝ˜% ¨¡¨GÑ4Ô4ˆð 	FÐEÐEÐEÐEÐEÐEÐEØ Ð Ð Ð Ð Ð à˜E�Nˆ	Ý%.ˆÝ%.ˆð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð �;Š;�vÑÔ %Ò'Ð'Ø��S 1 #Ð&Ñ&Ô&ˆAØ��S 1 #Ð&Ñ&Ô&ˆAØ��S‘	”	ˆAØ—
’
˜3˜3˜q ™s Q™w™<œ<¨™>Ñ*Ô*ˆAØð /Ø—J’J˜s˜s 1 Q¡3¨¡7™|œ|¨A™~Ñ.Ô.�Øð OÝ ð "Nñ Oô Oð Oå˜q¥¤™v a¨¤d™{¨D°2©I°wÑ?Ô?ˆFÝ˜Q  u °fÐ=Ñ=Ô=ˆFå(ÐÐå%+¨A°°e¨}ÀAÐ%FÑ%FÔ%FÑ"ˆF�NÝ& ~Ô';Ñ<Ô<Ðð_/=ð /=ð /=ñ /=ô /=ð /=ð /=ð /=ð /=ð /=ð /=øøøð /=ð /=ð /=ð /=ðb $€GˆIÑà�„|ð 	 Ø#œ[Ô.ˆà•Š;ˆ;Ý&¥s­C°°mÐEUÑ,VÔ,VÐ+VÑ'WÔ'WÑXÔX‰LˆD�&Ý˜TÑ"Ô"ˆBˆBå�#˜m­g°b©k¬kÑ9¸DÑ@ÐBRÑSÔSÐSÑTÔTˆFˆFà‰
ˆˆFà�„|ð 	 Ø#œ[Ô.ˆà•Š;ˆ;Ý&¥s­C°°mÐEUÑ,VÔ,VÐ+VÑ'WÔ'WÑXÔX‰LˆD�&Ý˜TÑ"Ô"ˆBˆBå�#˜m­g°b©k¬kÑ9¸DÑ@ÐBRÑSÔSÐSÑTÔTˆFˆFà‰
ˆˆFà��V˜VÐ#€FØ€Ms   ÂE%HÈHÈHc                ó†  — | j         }t          |¦  «        dk    st          |d         ¦  «        dk    rt          ‚|}d}|                     dt          ¦  «        }	 t          | ||¦  «        }t          |¦  «        }||k    rn?||k    rn8|dk    r|dz  }n|t          |d|z  ¦  «        z  }t          ||¦  «        }|dz  }Œf|S )Nr9   r   rr   r8  r”   rq   )	Úlimitsr—   ri  rõ   r¥   rÉ  r­   r¦   rÕ   )	r®   r¯   r°   rË  r   r�   r8  r¡   rÃ   s	            rd   Úevalf_integralrÌ  “  sà   € ØŒ[€FÝ
ˆ6�{„{�aÒÐ�3˜v aœy™>œ>¨QÒ.Ð.Ý!Ð!Ø€HØ	€AØ�kŠk˜)¥SÑ)Ô)€GðÝ˜T 8¨WÑ5Ô5ˆÝ# FÑ+Ô+ˆØ�tÒÐØØ�wÒÐØØ�rŠ>ˆ>ð ˜‰MˆHˆHà�˜D ! Q¡$™œÑ'ˆHÝ�x Ñ)Ô)ˆØ	ˆQ‰ˆðð  €Mre   ÚnumerÚdenomrc   rH   útuple[int, Any, Any]c                óT  — ddl m}  || |¦  «        } |||¦  «        }|                     ¦   «         }|                     ¦   «         }||z
  }|r|ddfS |                     ¦   «         |                     ¦   «         z  }	ddlm}
  |
t          |	¦  «        d¦  «        s||	dfS |                     ¦   «         |                     ¦   «         cxk    rdk    rn n||	dfS |                     ¦   «         d         }|                     ¦   «         d         }||	||z
  |                     ¦   «         z  fS )aI  
    Returns
    =======

    (h, g, p) where
    -- h is:
        > 0 for convergence of rate 1/factorial(n)**h
        < 0 for divergence of rate factorial(n)**(-h)
        = 0 for geometric or polynomial convergence or divergence

    -- abs(g) is:
        > 1 for geometric convergence of rate 1/h**n
        < 1 for geometric divergence of rate h**n
        = 1 for polynomial convergence or divergence

        (g < 0 indicates an alternating series)

    -- p is:
        > 1 for polynomial convergence of rate 1/n**h
        <= 1 for polynomial divergence of rate n**(-h)

    r   )ÚPolyNr9   )Úequal_valued)Úsympy.polys.polytoolsrÑ  ÚdegreeÚLCr$  rÒ  ra   Ú
all_coeffs)rÍ  rÎ  rc   rÑ  ÚnpolÚdpolr›   r  ÚrateÚconstantrÒ  ÚpcÚqcs                rd   Úcheck_convergencerÝ  ­  sD  € ð. +Ð*Ð*Ð*Ð*Ð*Øˆ4��q‰>Œ>€DØˆ4��q‰>Œ>€DØ�Š‰Œ€AØ�Š‰Œ€AØˆq‰5€DØð  Ø�T˜4ÐÐØ�wŠw‰yŒy˜4Ÿ7š7™9œ9Ñ$€HØ%Ð%Ð%Ð%Ð%Ð%Øˆ<�˜H™œ qÑ)Ô)ð $Ø�X˜tÐ#Ð#Ø‡{‚{�}„}˜Ÿš™œÐ*Ð*Ò*Ð*¨Ò*Ð*Ð*Ð*Ð*Ø�X˜qÐ Ð Ø	�ŠÑ	Ô	˜1Ô	€BØ	�ŠÑ	Ô	˜1Ô	€BØ�˜B ™G T§W¢W¡Y¤YÑ.Ð.Ð.re   rO  c                óˆ  ‡‡‡— ddl m}m} ddlm} |t          d¦  «        k    rt          d¦  «        ‚|r|                      |||z   ¦  «        }  || |¦  «        }|€t          d¦  «        ‚|                     ¦   «         \  }}	t          ||¦  «        Št          ||	¦  «        Št          ||	|¦  «        \  }
}}|
dk     rt          d	|
 z  ¦  «        ‚|                      |d¦  «        }|j        st          d
¦  «        ‚|}|
dk    s|
dk    r³t          |¦  «        dk    r t          |j        ¦  «        |z  |j        z  }|}d}t          |¦  «        dk    rY|t           ‰|dz
  ¦  «        ¦  «        z  }|t           ‰|dz
  ¦  «        ¦  «        z  }||z  }|dz  }t          |¦  «        dk    °Yt#          || ¦  «        S |dk     }t          |¦  «        dk     r"t          dt          d|z  ¦  «        z  ¦  «        ‚|dk     s ||d¦  «        r|st          d| z  ¦  «        ‚d}t%          |¦  «        }	 d|z  Št          |j        ¦  «        ‰z  |j        z  }|gfˆˆˆfd„	}t'          |¦  «        5  t)          |dt*          gd¬¦  «        }ddd¦  «         n# 1 swxY w Y    |||¦  «        }|�||k    rn||z  }|}Œ‹|j        S )zÛ
    Sum a rapidly convergent infinite hypergeometric series with
    given general term, e.g. e = hypsum(1/factorial(n), n). The
    quotient between successive terms must be a quotient of integer
    polynomials.
    r9   )rY   rÒ  r   )Ú	hypersimpr   zdoes not support inf precNz#a hypergeometric series is requiredzSum diverges like (n!)^%iz3Non rational term functionality is not implemented.rH  zSum diverges like (%i)^nzSum diverges like n^%iTr‘   c           	     ó  •— | rat          | ¦  «        } |dxx         t           ‰| dz
  ¦  «        ¦  «        z  cc<   |dxx         t           ‰| dz
  ¦  «        ¦  «        z  cc<   t          t          |d         ‰ ¦  «        ¦  «        S rÒ   )rb   r5   r
   r   )ÚkÚ_termÚfunc1Úfunc2r’  s     €€€rd   Úsummandzhypsum.<locals>.summand  sˆ   ø€ Øð 3Ý˜A™œ�AØ˜!�H�H”H¥ E E¨!¨a©%¡L¤LÑ 1Ô 1Ñ1�H�H‘HØ˜!�H�H”H¥ U U¨1¨q©5¡\¤\Ñ!2Ô!2Ñ2�H�H‘HÝ¥¨U°1¬X¸°vÑ >Ô >Ñ?Ô?Ð?re   Ú
richardson)Úmethod)r$  rY   rÒ  Úsympy.simplify.simplifyrß  r¡  ri  r³   Úas_numer_denomr>   rÝ  r™   rh  ra   r5   r›   r  r   r8   r   r   Ú
mpmath_infr  )r®   rc   rO  r¯   rY   rÒ  rß  ÚhsrN  Údenr~   Úgr›   ÚetermÚtermrœ   rá  ÚaltÚvoldÚndigÚterm0rå  rv   Úvfrã  rä  r’  s                           @@@rd   Úhypsumrõ  ×  s–  øøø€ ð -Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø1Ð1Ð1Ð1Ð1Ð1à�u�U‰|Œ|ÒÐÝ!Ð"=Ñ>Ô>Ð>àð 'Ø�yŠy˜˜A ™IÑ&Ô&ˆØ	ˆ�4˜Ñ	Ô	€BØ	€zÝ!Ð"GÑHÔHÐHØ× Ò Ñ"Ô"�H€Cˆå�Q˜ÑÔ€EÝ�Q˜ÑÔ€Eå  S¨!Ñ,Ô,�G€A€qˆ!àˆ1‚u€uÝÐ4¸¸Ñ;Ñ<Ô<Ð<à�IŠI�a˜‰OŒO€EØÔð YÝ!Ð"WÑXÔXÐXà€Dð 	ˆ1‚u€u��a’��C ™FœF QšJ˜JÝ�D”F‘”˜tÑ#¨¬Ñ.ˆØˆØˆÝ�$‰iŒi˜!ŠmˆmØ•C˜˜˜a !™e™œÑ%Ô%Ñ%ˆDØ•S˜˜˜q 1™u™œÑ&Ô&Ñ&ˆDØ�‰IˆAØ�‰FˆAõ	 �$‰iŒi˜!Šmˆmõ
 ˜A ˜uÑ%Ô%Ð%à�!ŠeˆÝˆq‰6Œ6�AŠ:ˆ:ÝÐ7½#¸aÀ¹c¹(¼(ÑBÑCÔCÐCØˆqŠ5ˆ5�\�\ ! QÑ'Ô'ˆ5°ˆ5ÝÐ5¸!¸Ñ<Ñ=Ô=Ð=àˆÝ˜4Ñ Ô ˆð	ð �d‘FˆEÝ˜œ‘[”[ EÑ)¨d¬fÑ4ˆEà"' ð @ð @ð @ð @ð @ð @ð @ð @õ ˜$‘”ð Hð HÝ˜ 1¥j /¸,ÐGÑGÔG�ðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hà��q˜$‘”ˆBØÐ D¨B¢J JØØ�D‰LˆDØˆDð)	ð, Œwˆs   É/JÊJÊJú	'Product'c                óâ   — t          d„ | j        D ¦   «         ¦  «        r%t          |                      ¦   «         ||¬¦  «        }n+ddlm} t          |                      |¦  «        ||¬¦  «        }|S )Nc              3  óB   K  — | ]}|d          |d         z
  j         V — ŒdS )r9   rq   N)rd  )rë   Úls     rd   rð   zevalf_prod.<locals>.<genexpr>'  s1   è è € Ð
9Ð
9¨ˆAˆaŒD�1�Q”4‰KÔ#Ð
9Ð
9Ð
9Ð
9Ð
9Ð
9re   )r¯   r°   r   rK   )rö   rË  rµ   rŒ  Úsympy.concrete.summationsrL   Úrewrite)r®   r¯   r°   r¡   rL   s        rd   Ú
evalf_prodrü  &  sy   € Ý
Ð
9Ð
9¨T¬[Ð
9Ñ
9Ô
9Ñ9Ô9ð FÝ�t—y’y‘{”{¨°wÐ?Ñ?Ô?ˆˆà1Ð1Ð1Ð1Ð1Ð1Ý�t—|’| CÑ(Ô(¨t¸WÐEÑEÔEˆØ€Mre   ú'Sum'c                ó&  — ddl m} d|v r|                      |d         ¦  «        } | j        }| j        }t          |¦  «        dk    st          |d         ¦  «        dk    rt          ‚|j        rd d |d fS |dz   }	 |d         \  }}}	|	t          j	        us!|t          j
        u s|t          |¦  «        k    rt          ‚t          ||t          |¦  «        |¦  «        }
|t          |
¦  «        z
  }t          |
¦  «        dk     rt          ||t          |¦  «        |¦  «        }
|
d t          ||¦  «        d fS # t          $ rÓ  |d¦  «        | z  }t          dd	¦  «        D ]Y}d
|z  |z  x}}|                      |||d¬¦  «        \  }}|                     ¦   «         }|t          j        u rt          ‚||k    r nŒZt          t#          t'          |¦  «        d|¦  «        d         ¦  «        }t#          |||¦  «        \  }}}}|€| }|€| }||||fcY S w xY w)Nr9   r#  r³   r   rr   r^   iöÿÿÿg       @rH  rq   F)rS  rc   ÚepsÚeval_integralr�  )r$  rY   r³   ÚfunctionrË  r—   ri  Úis_zeror;   rª  r«  rb   rõ  ru   rÕ   ÚrangeÚeuler_maclaurinrµ   r&  ra   )r®   r¯   r°   rY   r…  rË  r’  rc   rÞ   rU  rv   rÛ   rÿ  r�   rS  rœ   ÚerrrS   rT   r§   r¨   s                        rd   Ú	evalf_sumr  /  sX  € ØÐÐÐÐÐØ�ÐÐØ�yŠy˜ œÑ)Ô)ˆØŒ=€DØŒ[€FÝ
ˆ6�{„{�aÒÐ�3˜v aœy™>œ>¨QÒ.Ð.Ý!Ð!Ø„|ð &Ø�T˜4 Ð%Ð%Ø�2‰I€Eð&Ø˜”)‰ˆˆ1ˆaØ•A”JÐÐ !¥qÔ'9Ð"9Ð"9¸QÅ#ÀaÁ&Ä&º[¸[Ý%Ð%å�4˜�C ™FœF EÑ*Ô*ˆØ•w˜q‘z”zÑ!ˆÝ�1‰:Œ:˜ÒÐÝ�t˜Q¥ A¡¤¨Ñ.Ô.ˆAØ�$�˜D %Ñ(Ô(¨$Ð.Ð.øÝð &ð &ð &àˆe�C‰jŒj˜D˜5Ñ!ˆÝ�q˜!‘”ð 	ð 	ˆAØ�q‘D˜4‘KÐˆA�Ø×)Ò)¨A°¸Ø#ð *ñ %ô %‰FˆAˆsà—)’)‘+”+ˆCØ•a”eˆ|ˆ|Ý)Ð)Ø�cŠzˆzØ�ð å•e�C ™HœH b¨'Ñ2Ô2°1Ô5Ñ6Ô6ˆÝ!& q¨%°Ñ!9Ô!9ÑˆˆB�˜Øˆ>Ø�TˆFØˆ>Ø�TˆFØ�2�v˜vÐ%Ð%Ð%Ð%ð%&øøøs   Á:B8D3 Ä3CHÈHc                ó&  — |d         |          }t          |t          ¦  «        r|sdS |j        d |d fS d|vri |d<   |d         }|                     | d t          f¦  «        \  }}||k    r|S t          t          |¦  «        ||¦  «        }||f|| <   |S )Nr³   r´   Ú_cache)r•   r   r  rõ   rs   rµ   r:   )rl   r¯   r°   ÚvalÚcacheÚcachedÚcached_precrv   s           rd   Úevalf_symbolr  _  s¶   € Ø
�&Œ/˜!Ô
€CÝ�#•sÑÔð Øð 	*Ø)Ð)ØŒy˜$  dÐ*Ð*à˜7Ð"Ð"Ø "ˆG�HÑØ˜Ô!ˆØ#Ÿiši¨¨Dµ)Ð+<Ñ=Ô=Ñˆ�Ø˜$ÒÐØˆMÝ•'˜#‘,”,  gÑ.Ô.ˆØ�t�9ˆˆa‰Øˆre   z:dict[Type[Expr], Callable[[Expr, int, OPT_DICT], TMP_RES]]Úevalf_tablec                 óÂ  — ddl m}  ddlm} ddlm} ddlm} ddlm	}m
}m}m}m}m}	m}
m}m}m}m}m}m} ddlm} dd	lm}m} dd
lm}m}m} ddlm }m!} ddl"m#}m$} ddl%m&} ddl'm(}m)}m*}m+} ddl,m-}  i |t\          “|t\          “|t^          “|t`          “|tb          “|d„ “|d„ “|d„ “|d„ “|d„ “|d„ “|
d„ “|d„ “|	d„ “|td          “|tf          “|tf          “i |tf          “|th          “|tj          “|tl          “|tn          “|tp          “|tr          “|tt          “|tv          “|tx          “|tz          “| t|          “|t~          “| t€          “|t‚          “|t„          “¥aCd S )Nr   rM   rK   r9   rB   rD   )rl  rY   rj  r{   r[   r&  r�  rJ  r¿  rZ   r|   r¤   r\   rF   )ÚDummyrH   )rR   rT   rS   rO   rU   )Ú	Piecewise)rX   r~  r  r€  rI   c                ó   — d d |d fS r‡   rk   ©rl   r¯   r°   s      rd   ú<lambda>z%_create_evalf_table.<locals>.<lambda>‰  s   € ¨¨d°D¸$Ð'?€ re   c                ó   — t           d |d fS r‡   ©r   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>Š  ó   € ¥t¨T°4¸Ð&>€ re   c                ó   — t           d |d fS r‡   )r   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>‹  s   € ­¨t°T¸4Ð'@€ re   c                ó(   — t          |¦  «        d |d fS r‡   )r)   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>Œ  s   € ¥f¨T¡l¤l°D¸$ÀÐ%E€ re   c                ó(   — t          |¦  «        d |d fS r‡   )r#   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>�  s   € ­¨d©¬°T¸4ÀÐ'F€ re   c                ó   — d t           d |fS r‡   r  r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>Ž  s   € °µt¸TÀ4Ð0H€ re   c                ó   — t           d |d fS r‡   )r   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>�  s   € ­u°d¸DÀ$Ð.G€ re   c                ó   — t           j        S r‡   )r;   r¤   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>�  s	   € µ!Ô2C€ re   c                ó   — t           d |d fS r‡   )r   r  s      rd   r  z%_create_evalf_table.<locals>.<lambda>‘  r  re   )DÚsympy.concrete.productsrN   rú  rL   ró   rC   rI  rE   r$  rl  rY   rj  r{   r[   r&  r�  rJ  r¿  rZ   r|   r¤   r\   r{  rG   r½  r  rH   r  rR   rT   rS   r�  rP   rQ   Ú#sympy.functions.elementary.integersrV   rW   Ú$sympy.functions.elementary.piecewiser  rƒ  rX   r~  r  r€  Úsympy.integrals.integralsrJ   r  r  r  r  r|  r‰  rE  ra  rx  rŽ  r—  rÊ   rÎ   rÓ   r  r  rÌ  r  rü  r£  r§  r  )!rN   rL   rC   rE   rl  rY   rj  r{   r[   r&  r�  rJ  r¿  rZ   r|   r¤   r\   rG   r  rH   rR   rT   rS   rP   rQ   rV   rW   r  rX   r~  r  r€  rJ   s!                                    rd   Ú_create_evalf_tabler#  s  so  € à/Ð/Ð/Ð/Ð/Ð/Ø-Ð-Ð-Ð-Ð-Ð-ØÐÐÐÐÐØÐÐÐÐÐð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /àÐÐÐÐÐØ%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØBÐBÐBÐBÐBÐBÐBÐBØ>Ð>Ð>Ð>Ð>Ð>ØLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLØ2Ð2Ð2Ð2Ð2Ð2ð)Ø•ð)à�|ð)ð 	�{ð)ð 	•.ð	)ð
 	•ð)ð 	Ð?Ð?ð)ð 	Ð>Ð>ð)ð 	Ð@Ð@ð)ð 	ÐEÐEð)ð 	ÐFÐFð)ð 	ÐHÐHð)ð 	ÐGÐGð)ð 	ÐCÐCð)ð 	Ð>Ð>ð)ð  	�Yð!)ð$ 	�Zð%)ð& 	�Zð')ð )ð( 	�Zð))ð, 	�Yð-)ð. 	�Yð/)ð0 	�Yð1)ð4 	�Yð5)ð6 	�jð7)ð8 	�Yð9)ð< 	�Hð=)ð> 	�Hð?)ð@ 	�{ðA)ðB 	•ðC)ðF 	•.ðG)ðH 	�YðI)ðJ 	•ðK)ðL 	•?ðM)ðP 	�ðQ)ð )€K€K€Kre   c                ó¸  — ddl m}m} 	 t          t	          | ¦  «                 } || ||¦  «        }�n# t
          $ �r  d|v r)|                      t          ||d         ¦  «        ¦  «        } |                      |¦  «        }|€t          ‚t          |dd¦  «        }|€t          ‚ |¦   «         \  }	}
 |	j        |¦  «        s |
j        |¦  «        rt          ‚|	sd}	d}n(|	j        r |	j        |d¬¦  «        j        }	|}nt          ‚|
sd}
d}n(|
j        r |
j        |d¬¦  «        j        }
|}nt          ‚|	|
||f}Y nw xY w|                     d¦  «        rpt!          d	| ¦  «         t!          d
t#          |t$          ¦  «        rt'          |d         pt(          d¦  «        n|¦  «         t!          d|¦  «         t!          ¦   «          |                     dd¦  «        }|rV|du r|}n?t+          t-          dt/          j        |¦  «        z  dz   ¦  «        ¦  «        }|dk    r|dz  }t3          ||¦  «        }|                     d¦  «        rt5          | ||¦  «         |S )a†  
    Evaluate the ``Expr`` instance, ``x``
    to a binary precision of ``prec``. This
    function is supposed to be used internally.

    Parameters
    ==========

    x : Expr
        The formula to evaluate to a float.
    prec : int
        The binary precision that the output should have.
    options : dict
        A dictionary with the same entries as
        ``EvalfMixin.evalf`` and in addition,
        ``maxprec`` which is the maximum working precision.

    Returns
    =======

    An optional tuple, ``(re, im, re_acc, im_acc)``
    which are the real, imaginary, real accuracy
    and imaginary accuracy respectively. ``re`` is
    an mpf value tuple and so is ``im``. ``re_acc``
    and ``im_acc`` are ints.

    NB: all these return values can be ``None``.
    If all values are ``None``, then that represents 0.
    Note that 0 is also represented as ``fzero = (0, 0, 0, 0)``.
    r   râ   r³   Nrí   F)Ú
allow_intsr?  z	### inputz
### outputé2   z### rawÚchopTgÅ °rh‘
Àg      @rr   r9   ré   )r  rS   rT   r  ÚtypeÚKeyErrorr³   r�  r„  ri  ÚgetattrÚhasr¶   Ú
_to_mpmathr  rõ   rC  r•   r–   r2   r   rb   Úroundre  Úlog10rÜ   rß   )rl   r¯   r°   r	  r
  Úrfr4  Úxerí   rS   rT   ÚreprecÚimprecr'  Ú	chop_precs                  rd   rµ   rµ   ¯  s¯  € ð> JÐIÐIÐIÐIÐIÐIÐIð #Ý�˜a™œÔ!ˆØˆBˆq�$˜Ñ Ô ˆ‰øÝð #ñ #ð #à�WÐÐØ—’•z $¨°¬Ñ8Ô8Ñ9Ô9ˆAØ�]Š]˜4Ñ Ô ˆØˆ:Ý%Ð%Ý˜r >°4Ñ8Ô8ˆØÐÝ%Ð%Ø�‘”‰ˆˆBØˆ2Œ6�#‰;Œ;ð 	&˜&˜"œ& ™+œ+ð 	&Ý%Ð%Øð 	&ØˆBØˆFˆFØŒ\ð 	&Ø�”˜t°Ð6Ñ6Ô6Ô<ˆBØˆFˆFå%Ð%Øð 	&ØˆBØˆFˆFØŒ\ð 	&Ø�”˜t°Ð6Ñ6Ô6Ô<ˆBØˆFˆFå%Ð%Ø��F˜FÐ"ˆˆˆð;#øøøð> ‡{‚{�9ÑÔð Ýˆk˜1ÑÔÐÝˆl½ÀAÅuÑ9MÔ9MÐT�F 1 Q¤4 =­5°"Ñ5Ô5Ð5ÐSTÑUÔUÐUÝˆi˜ÑÔÐÝ‰ŒˆØ�;Š;�v˜uÑ%Ô%€DØð 
%Ø�4ˆ<ˆ<ØˆIˆIõ
 �E &­¬°DÑ)9Ô)9Ñ"9¸CÑ"?Ñ@Ô@ÑAÔAˆIØ˜AŠ~ˆ~Ø˜Q‘�	Ý�q˜)Ñ$Ô$ˆØ‡{‚{�8ÑÔð !Ý�Q˜˜4Ñ Ô Ð Ø€Hs   Š'3 ³DD>Ä=D>c                óä   — |€t           n|j         }|€t          n|j        }| t          j        u rt          ‚| \  }}}}|r|st
          } |||f¦  «        S |r ||¦  «        S  |t
          ¦  «        S )z@Turn the quad returned by ``evalf`` into an ``mpf`` or ``mpc``. )r	   r
   r;   r¤   ri  r   )r  Úctxr   r   rS   rT   r»   s          rd   r¬  r¬    s‹   € à�k�(ˆ( s¤|€CØ�k�(ˆ( s¤|€CØ�AÔÐÐÝ!Ð!Ø�L€BˆˆAˆqØ	ð Øð 	ÝˆBØˆs�B˜�8‰}Œ}ÐØ	ð Øˆs�2‰wŒwˆàˆs•5‰zŒzÐre   c                  óF   — e Zd ZU dZdZded<   dd	„ZeZdd„Zdd„Z	dd„Z
dS )Ú
EvalfMixinz$Mixin class adding evalf capability.rk   ztuple[str, ...]Ú	__slots__r°  Néd   Fc           	     ó®  — ddl m}m}	 |�|nd}|rt          |¦  «        rt	          d¦  «        ‚|dk    rVt          | |	¦  «        rFddlm}
 |                      d||||||¦  «        } |
|¦  «        }| 	                    d|z
  ¦  «        }|S t          st          ¦   «          t          |¦  «        }t          |t          |t          z  ¦  «        ¦  «        |||dœ}|�||d	<   |�||d
<   	 t          | |dz   |¦  «        }n˜# t           $ r‹ t#          | d	¦  «        r+|�)|                      |¦  «                             |¦  «        }n|                      |¦  «        }|€| cY S |j        s|cY S 	 t          |||¦  «        }n# t           $ r |cY cY S w xY wY nw xY w|t*          j        u r|S |\  }}}}|t*          j        u s|t*          j        u rt*          j        S |r0t          t1          ||¦  «        d¦  «        } |j        ||¦  «        }nt*          j        }|rAt          t1          ||¦  «        d¦  «        } |j        ||¦  «        }||t*          j        z  z   S |S )a)  
        Evaluate the given formula to an accuracy of *n* digits.

        Parameters
        ==========

        subs : dict, optional
            Substitute numerical values for symbols, e.g.
            ``subs={x:3, y:1+pi}``. The substitutions must be given as a
            dictionary.

        maxn : int, optional
            Allow a maximum temporary working precision of maxn digits.

        chop : bool or number, optional
            Specifies how to replace tiny real or imaginary parts in
            subresults by exact zeros.

            When ``True`` the chop value defaults to standard precision.

            Otherwise the chop value is used to determine the
            magnitude of "small" for purposes of chopping.

            >>> from sympy import N
            >>> x = 1e-4
            >>> N(x, chop=True)
            0.000100000000000000
            >>> N(x, chop=1e-5)
            0.000100000000000000
            >>> N(x, chop=1e-4)
            0

        strict : bool, optional
            Raise ``PrecisionExhausted`` if any subresult fails to
            evaluate to full accuracy, given the available maxprec.

        quad : str, optional
            Choose algorithm for numerical quadrature. By default,
            tanh-sinh quadrature is used. For oscillatory
            integrals on an infinite interval, try ``quad='osc'``.

        verbose : bool, optional
            Print debug information.

        Notes
        =====

        When Floats are naively substituted into an expression,
        precision errors may adversely affect the result. For example,
        adding 1e16 (a Float) to 1 will truncate to 1e16; if 1e16 is
        then subtracted, the result will be 0.
        That is exactly what happens in the following:

        >>> from sympy.abc import x, y, z
        >>> values = {x: 1e16, y: 1, z: 1e16}
        >>> (x + y - z).subs(values)
        0

        Using the subs argument for evalf is the accurate way to
        evaluate such an expression:

        >>> (x + y - z).evalf(subs=values)
        1.00000000000000
        r9   )rY   r]   Nr°  z"subs must be given as a dictionary)Ú_magrq   )r8  r'  ré   r?  r³   r·  r‘   )r$  rY   r]   r=   Ú	TypeErrorr•   r®   r;  rµ   r-  r  r#  r7   r¦   rb   ÚLG10ri  r   r³   r„  r¶   r;   r¤   r&  rÕ   r%  r|   r{   )Úselfrc   r³   Úmaxnr'  ré   r·  r?  rY   r]   r;  rš   rS  r¯   r°   r¡   rv   rS   rT   r§   r¨   r›   s                         rd   rµ   zEvalfMixin.evalf  sÕ  € ðB 	+Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�ˆAˆA Bˆàð 	B•K Ñ%Ô%ð 	BÝÐ@ÑAÔAÐAð �Š6ˆ6•j  vÑ.Ô.ˆ6Ø"Ð"Ð"Ð"Ð"Ð"Ø—’˜A˜t T¨4°¸¸wÑGÔGˆBØ��R‘”ˆAØ—’˜!˜a™%‘”ˆBØˆIåð 	"ÝÑ!Ô!Ð!Ý˜1‰~Œ~ˆÝ! $­¨Dµ©I©¬Ñ7Ô7ÀØ¨Gð5ð 5ˆàÐØ"ˆG�F‰OØÐØ"ˆG�F‰Oð	Ý˜4 ¨¡¨7Ñ3Ô3ˆFˆFøÝ"ð 	ð 	ð 	å�t˜VÑ$Ô$ð +¨Ð)9Ø—I’I˜d‘O”O×/Ò/°Ñ5Ô5��à×$Ò$ TÑ*Ô*�ØˆyØ���Ø”[ð Ø���ðå˜q $¨Ñ0Ô0��øÝ&ð ð ð à�����ðøøøð �ð	øøøð  •QÔ&Ð&Ð&ØˆMØ!'ÑˆˆB�˜Ø•”ˆ;ˆ;˜"¥¤˜+˜+Ý”5ˆLØð 	Ý•C˜˜fÑ%Ô% qÑ)Ô)ˆAØ�”˜B Ñ"Ô"ˆBˆBå”ˆBØð 	Ý•C˜˜fÑ%Ô% qÑ)Ô)ˆAØ�”˜B Ñ"Ô"ˆBØ˜�1œ?Ñ*Ñ*Ð*àˆIs=   Ã(C= Ã=AFÅ	FÅ)E;Å:FÅ;FÆFÆFÆFÆFr¯   rb   rn   rA   c                ó8   — |                       |¦  «        }|€| }|S )z@Helper for evalf. Does the same thing but takes binary precision)r„  )r>  r¯   r4  s      rd   Ú_evalfzEvalfMixin._evalfš  s$   € à×Ò˜TÑ"Ô"ˆØˆ9ØˆAØˆre   úExpr | Nonec                ó   — d S r‡   rk   )r>  r¯   s     rd   r„  zEvalfMixin._eval_evalf¡  s   € Øˆtre   Tc                ó²  — d}|r| j         r| j        S t          | d¦  «        r"t          |                      |¦  «        ¦  «        S 	 t          | |i ¦  «        }t          |¦  «        S # t          $ ræ |                      |¦  «        }|€t          |¦  «        ‚|j
        rt          |j        ¦  «        cY S |                     ¦   «         \  }}|r|j         rt          |j        ¦  «        }n|j
        r|j        }nt          |¦  «        ‚|r|j         rt          |j        ¦  «        }n|j
        r|j        }nt          |¦  «        ‚t          ||f¦  «        cY S w xY w)Nzcannot convert to mpmath numberÚ_as_mpf_val)rd  r›   r   r
   rE  rµ   r¬  ri  r„  r™   r›  r  rí   r   r	   )r>  r¯   r%  Úerrmsgr¡   rv   rS   rT   s           rd   r,  zEvalfMixin._to_mpmath¤  s  € à2ˆØð 	˜$œ/ð 	Ø”6ˆMÝ�4˜Ñ'Ô'ð 	4Ý˜D×,Ò,¨TÑ2Ô2Ñ3Ô3Ð3ð	&Ý˜4  rÑ*Ô*ˆFÝ! &Ñ)Ô)Ð)øÝ"ð 	&ð 	&ð 	&Ø× Ò  Ñ&Ô&ˆAØˆyÝ  Ñ(Ô(Ð(ØŒzð )Ý ¤Ñ(Ô(Ð(Ð(Ð(à—^’^Ñ%Ô%‰FˆB�Øð )˜bœmð )Ý˜bœd‘^”^��Ø”ð )Ø”X��å  Ñ(Ô(Ð(Øð )˜bœmð )Ý˜bœd‘^”^��Ø”ð )Ø”X��å  Ñ(Ô(Ð(Ý˜R ˜HÑ%Ô%Ð%Ð%Ð%ð)	&øøøs   ÁA& Á&AEÂ3B EÅE)r°  Nr9  FFNF)r¯   rb   rn   rA   )r¯   rb   rn   rB  )T)rh   ri   rj   Ú__doc__r8  Ú__annotations__rµ   rc   rA  r„  r,  rk   re   rd   r7  r7    s‰   € € € € € € Ø.Ð.à!#€IÐ#Ð#Ð#Ñ#ðyð yð yð yðv 	€Aðð ð ð ðð ð ð ð&ð &ð &ð &ð &ð &re   r7  r°  c                ó<   —  t          | d¬¦  «        j        |fi |¤ŽS )a   
    Calls x.evalf(n, \*\*options).

    Explanations
    ============

    Both .n() and N() are equivalent to .evalf(); use the one that you like better.
    See also the docstring of .evalf() for information on the options.

    Examples
    ========

    >>> from sympy import Sum, oo, N
    >>> from sympy.abc import k
    >>> Sum(1/k**k, (k, 1, oo))
    Sum(k**(-k), (k, 1, oo))
    >>> N(_, 4)
    1.291

    T)Úrational)r:   rµ   )rl   rc   r°   s      rd   r·   r·   Å  s,   € ð. +�7�1˜tÐ$Ñ$Ô$Ô*¨1Ð8Ð8°Ð8Ð8Ð8re   rÿ  rB  rS  úOPT_DICT | Nonec                ó€  — |�K|j         s|j        r|dk    st          d¦  «        ‚t          d|z  di ¦  «        \  }}}}t	          |¦  «        }t          | di ¦  «        \  }}}}t	          |¦  «        t	          |¦  «        }	}t          ||	¦  «        dz   }
t          d||
z   dz   ¦  «        }|pi }t          | ||¦  «        S )a%  
    Evaluate *x* to within a bounded absolute error.

    Parameters
    ==========

    x : Expr
        The quantity to be evaluated.
    eps : Expr, None, optional (default=None)
        Positive real upper bound on the acceptable error.
    m : int, optional (default=0)
        If *eps* is None, then use 2**(-m) as the upper bound on the error.
    options: OPT_DICT
        As in the ``evalf`` function.

    Returns
    =======

    A tuple ``(re, im, re_acc, im_acc)``, as returned by ``evalf``.

    See Also
    ========

    evalf

    Nr   zeps must be positiver9   )rh  r›  r™   rµ   ru   r¦   )rl   rÿ  rS  r°   r4  r»   r€   ÚdÚnrÚnirc   r›   s               rd   Ú_evalf_with_bounded_errorrP  ß  sÎ   € ð: €Ø”ð 	5 3¤<ð 	5¸¸aº¸ÝÐ3Ñ4Ô4Ð4Ý˜1˜S™5 ! RÑ(Ô(‰
ˆˆ1ˆa�Ý�A‰JŒJˆå�q˜!˜R‘”�J€A€qˆ!ˆQõ �Q‰ZŒZ� ™œˆ€BÝˆB�‰Œ�a‰€Aõ 	ˆAˆq�1‰u�q‰yÑÔ€Aàˆm˜€GÝ��A�wÑÔÐre   )rl   rm   rn   ro   )F)rv   rA   rn   rw   )r9   )rƒ   r„   rn   r…   )rƒ   rb   rn   rŒ   )rƒ   rŽ   rn   r�   )r   r�   rn   rž   )r¡   r¢   rn   ro   )r®   rA   r¯   rb   r°   r±   rn   r¢   )
r®   rA   r¾   rb   r¯   rb   r°   r±   rn   r¢   )r®   rÅ   r¯   rb   r°   r±   rn   r¢   )r®   rË   r¯   rb   r°   r±   rn   r¢   )r®   rÐ   r¯   rb   r°   r±   rn   r¢   )rS   r…   rT   r…   r¯   rb   rn   r¢   )rÂ   r¢   r¯   rb   rn   r¢   )r®   rA   r¡   r¢   r¯   rb   )r®   rA   r¾   rb   r°   r±   rn   rà   )r®   r  r¯   rb   r°   r±   rn   r¢   )r®   r  r¯   rb   r°   r±   rn   r¢   )r®   r  r¯   rb   r°   r±   rn   r¢   )r®   r  r¯   rb   r°   r±   rn   r¢   )r®   r  r¯   rb   r°   r±   rn   r¢   )r  r    r¯   rb   r  rb   rn   r   )rv   r6  r¯   rb   r°   r±   rn   r¢   )rv   rF  r¯   rb   r°   r±   rn   r¢   )rv   rb  r¯   rb   rn   r¢   )r®   ry  r¯   rb   r°   r±   rn   r¢   )rv   rA   r¯   rb   r°   r±   rn   r¢   )r®   rŠ  r¯   rb   r°   r±   rn   r¢   )rv   r“  r¯   rb   r°   r±   rn   r¢   )r¯   rb   r³   r˜  rn   r˜  )rÞ   r¤  r¯   rb   r°   r±   rn   r¢   )rl   r   r¯   rb   r°   r±   rn   r¨  )r®   r®  r¯   rb   r°   r±   rn   r¢   )rÍ  rA   rÎ  rA   rc   rH   rn   rÏ  )
r®   rA   rc   rH   rO  rb   r¯   rb   rn   r   )r®   rö  r¯   rb   r°   r±   rn   r¢   )r®   rý  r¯   rb   r°   r±   rn   r¢   )rl   rA   r¯   rb   r°   r±   rn   r¢   r‡   )r°  )Nr   N)
rl   rA   rÿ  rB  rS  rb   r°   rK  rn   r¢   )¯rG  Ú
__future__r   Útypingr   r   r   r   r   re  Úmpmath.libmpr¸   Úmpmathr	   r
   r   r   r   r   r   r   r   r   rê  r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r`   Úmpmath.libmp.backendr5   Úmpmath.libmp.libmpcr6   Úmpmath.libmp.libmpfr7   r8   r:   Ú	singletonr;   Úsympy.external.gmpyr<   Úsympy.utilities.iterablesr=   Úsympy.utilities.lambdifyr>   Úsympy.utilities.miscr@   Úsympy.core.exprrA   Úsympy.core.addrC   Úsympy.core.mulrE   Úsympy.core.powerrG   Úsympy.core.symbolrH   r"  rJ   rú  rL   r  rN   r�  rP   rQ   r  rR   rS   rT   r   rV   rW   rƒ  rX   r$  rY   rZ   r[   r\   r]   rf  r=  rô   r¡  r¥   rs   rA  ÚArithmeticErrorrg   r–   rb   r…   r¢   r˜  Ústrr±   ru   r‚   r    r„   rŠ   r˜   r­   r½   rÄ   rÊ   rÎ   rÓ   rØ   rÜ   rß   r  r  r  r  r  r  r5  rE  ra  rx  r|  r‰  rŽ  r—  r�  r£  r§  r­  rÉ  rÌ  rÝ  rõ  rü  r  r  r  rH  r#  rµ   r¬  r7  r·   rP  rk   re   rd   ú<module>rd     sŸ	  ððð ð ð #Ð "Ð "Ð "Ð "Ð "Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à €€€à Ð Ð Ð Ð Ð ðGð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gà $Ð $Ð $Ð $Ð $Ð $ðWð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð
 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø -Ð -Ð -Ð -Ð -Ð -Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð KØ$Ð$Ð$Ð$Ð$Ð$Ø"Ð"Ð"Ð"Ð"Ð"Ø"Ð"Ð"Ð"Ð"Ð"Ø$Ð$Ð$Ð$Ð$Ð$Ø(Ð(Ð(Ð(Ð(Ð(Ø2Ð2Ð2Ð2Ð2Ð2Ø-Ð-Ð-Ð-Ð-Ð-Ø/Ð/Ð/Ð/Ð/Ð/Ø?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØBÐBÐBÐBÐBÐBÐBÐBØ=Ð=Ð=Ð=Ð=Ð=ØJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJà€t„y��}„}€Ø€ð(ð (ð (ð €eˆJÑÔ€ØˆE�:�+ÑÔ€	ð €ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ðð ��S˜#˜sÐ"Ô
#€ðð& €ð ��S�Œ>€ð!ð !ð !ð !ðHð ð ð ð ð> ˜˜Sœ	 3¨¨SÐ0Ô1€ð 
ðð ð ð ñ 
„ðà	ðð ð ð ñ 
„ðð$Jð $Jð $Jð $Jð $JðNGð Gð Gð Gð Gðð ð ð ð:&ð &ð &ð &ð,ð ð ð ð 0ð 0ð 0ð 0ð<ð <ð <ð <ð<ð <ð <ð <ð"ð "ð "ð "ð&"ð "ð "ð "ð,0ð 0ð 0ð 0ðl$ð l$ð l$ð l$ð l$ð^6ð 6ð 6ð 6ð7ð 7ð 7ð 7ð(ð (ð (ð (ðAð Að Að Að4ð 4ð 4ð 4ðSð Sð Sð Sðl."ð ."ð ."ð ."ðb{ ð { ð { ð { ð|xGð xGð xGð xGðDKð Kð Kð Kð
='ð ='ð ='ð ='ð@2&ð 2&ð 2&ð 2&ðj6ð 6ð 6ð 6ðð ð ð ðð ð ð ð"-ð -ð -ð -ð"ð "ð "ð "ð\ð \ð \ð \ð~ð ð ð ð4'/ð '/ð '/ð '/ðTLð Lð Lð Lð^ð ð ð ð'&ð '&ð '&ð '&ð`ð ð ð ð" KM€Ð LÐ LÐ LÑ Lð9ð 9ð 9ðxUð Uð Uð Uðpð ð ð ð"j&ð j&ð j&ð j&ð j&ñ j&ô j&ð j&ðZ9ð 9ð 9ð 9ð4 ;?Ø'(Ø9=ð1 ð 1 ð 1 ð 1 ð 1 ð 1 ð 1 re   