§
    «³Ùgõñ  ã                  óê  — U d 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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddlm@ZA dd	lBmCZC dd
lDmEZE ddlFmGZGmHZH ddlImIZI ddlJmKZK ddlLmMZM ddlNmOZO ddlPmQZQ ddlRmSZS er^ddlTmUZU ddlVmWZW ddlXmYZY ddlZm[Z[ ddl\m]Z] ddl^m_Z_ ddl`maZa ddlbmcZc ddldmeZemfZf ddlgmhZhmiZimjZj ddlkmlZlmmZm ddlnmoZo ddlpmqZqmrZrmsZsmtZtmuZu  ejv        d ¦  «        Zwe=Zxd!„ Z@ eye¦  «        Zz eye ¦  «        Z{d"Z| G d#„ d$e}¦  «        Z~	 eeeeef         Z€	 eZ�ee‚ef         Zƒd™d)„Z„dšd›d.„Z…ee
e         eeef         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)
ÚTupleÚOptionalÚUnionÚCallableÚListÚDictÚTypeÚTYPE_CHECKINGÚAnyÚoverloadN)	Ú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)Ú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    úF/granary/edev/quantum/lib/python3.11/site-packages/sympy/core/evalf.pyr8   r8   3   s   € õ �3�s 1™vœv™;œ;Ñ'Ô'Ð'ó    iM  c                  ó   — e Zd ZdS )ÚPrecisionExhaustedN)Ú__name__Ú
__module__Ú__qualname__© ri   rh   rk   rk   B   s   € € € € € Ø€Dri   rk   ÚxúOptional[MPF_TUP]ÚreturnútUnion[int, Any]c                ó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©rp   s    rh   Úfastlogry   r   s,   € ð> ð �•U’
�
ÝÐØˆQŒ4�!�A”$‰;Ðri   FÚvú'Expr'ú 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)rz   Úor_realÚhÚtÚcÚis         rh   Úpure_complexr‡   –   sf   € ð( �>Š>ÑÔ�D€A€qØð Ø�~Š~ÑÔ‰ˆˆ1Ø•”ÐÐØ�a�4ˆKð  à	ð Ø•!”&ˆyÐØˆ4ri   ÚmagÚSCALED_ZERO_TUPÚMPF_TUPc                ó   — d S ©Nro   ©rˆ   Úsigns     rh   Úscaled_zeror�   ¸   ó   € à€Cri   rf   útTuple[SCALED_ZERO_TUP, int]c                ó   — d S rŒ   ro   r�   s     rh   r�   r�   »   r�   ri   útUnion[SCALED_ZERO_TUP, int]ú-tUnion[MPF_TUP, tTuple[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   r=   N)éÿÿÿÿr=   zsign must be +/-1r™   z-scaled zero expects int or scaled_zero tuple.)Ú
isinstanceÚtupleÚlenÚiszeror@   Ú
ValueErrorr1   r    )rˆ   rŽ   ÚrvÚpÚss        rh   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ÐIri   r   ú&tUnion[MPF_TUP, SCALED_ZERO_TUP, None]úOptional[bool]c                ó¢   — |s|  p| d          o| d          S | o6t          | d         t          ¦  «        o| d         | d         cxk    odk    nc S )Nr=   r™   r   )rš   Úlist)r   r˜   s     rh   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ÐFri   Ú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ÚINFry   Úmax)	r¦   rW   rX   Úre_accÚim_accÚre_sizeÚim_sizeÚabsolute_errorÚrelative_errors	            rh   Úcomplex_accuracyr²   ë   s—   € ð •Ô"Ð"Ð"Ýˆ
Ø#Ñ€BˆˆF�FØð Øð 	ÝˆJØˆØð ØˆÝ�b‰kŒk€GÝ�b‰kŒk€GÝ˜ 6Ñ)¨7°VÑ+;Ñ<Ô<€NØ#¥c¨'°7Ñ&;Ô&;Ñ;€NØˆ?Ðri   Ú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 )Nru   Úsubs©NNNN)
Úevalfr?   r©   r   Ú	is_numberre   ÚNÚlibmpÚmpc_absr"   )r³   r´   rµ   r¦   rW   rX   r¬   r­   Úabs_exprÚ_Úaccs              rh   Ú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 &¨$Ð.Ð.à%Ð%ri   Ú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   r=   Nru   é   )rº   r?   r©   r   r«   )	r³   rÃ   r´   rµ   r   r†   ÚresÚvalueÚaccuracys	            rh   Ú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‰ˆð	ri   ú'Abs'c                ó:   — t          | j        d         ||¦  «        S ©Nr   )rÂ   Úargs©r³   r´   rµ   s      rh   Ú	evalf_absrÏ   .  s   € Ý�4”9˜Q”<  wÑ/Ô/Ð/ri   ú're'c                ó<   — t          | j        d         d||¦  «        S rÌ   ©rÉ   rÍ   rÎ   s      rh   Úevalf_rerÓ   2  ó   € Ý˜DœI aœL¨!¨T°7Ñ;Ô;Ð;ri   ú'im'c                ó<   — t          | j        d         d||¦  «        S ©Nr   r=   rÒ   rÎ   s      rh   Úevalf_imrØ   6  rÔ   ri   rW   rX   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ž   ry   Úmin)rW   rX   r´   Úsize_reÚsize_imr¬   r­   s          rh   Ú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Ð!Ð!ri   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–   ©NNru   )r?   r©   r:   ry   )rÇ   r´   rW   rX   r¬   r­   Údeltas          rh   Ú
chop_partsrá   M  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Ð!Ð!ri   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²   rk   )r³   r¦   r´   Úas       rh   Úcheck_targeträ   c  s>   € Ý˜Ñ Ô €AØˆ4‚x€xÝ ð "&à)-ñ"/ñ 0ô 0ð 	0ð €xri   ú!tUnion[TMP_RES, tTuple[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\  }}}}|r | || d¬¦  «        |¦  «        \  }}|	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   ©rW   rX   rÅ   z+Cannot get integer part of Complex Infinity©r   r   r¹   rb   Úre_imr{   Ú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 )Nr=   rF   r   rb   ru   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í   rC   )Ú.0r†   s     rh   ú
<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ÐOri   )rD   rž   Úas_real_imagrx   s    rh   Ú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Œ   ro   )rð   rz   ró   s     €rh   ú	<genexpr>z6get_integer_part.<locals>.calc_part.<locals>.<genexpr>¿  s+   øè è € Ð:Ð:¨!�{�{ 1‘~”~Ð:Ð:Ð:Ð:Ð:Ð:ri   ©Úevaluaterv   )ÚaddrG   rf   r6   Úrndrº   ry   ÚgetÚallÚvaluesr¸   rä   rk   Úequalsr!   r&   r   rª   )ré   rê   rG   rÀ   ÚexponentÚis_intÚnintÚireÚiimÚire_accÚiim_accÚsizeÚnew_expr¡   rp   Úx_accró   rÃ   rµ   r´   s                   @€€€rh   Ú	calc_partz#get_integer_part.<locals>.calc_part–  s3  øø€ ØÐÐÐÐÐØ!Ñˆˆ1ˆh˜Ø˜Q’ˆÝ•6˜%¥Ñ%Ô%Ñ&Ô&ˆØð 	"õ */Ø˜‘˜b 'ñ*+ô *+Ñ&ˆC��g˜wàˆNˆNˆNÝ˜C‘L”L�= 1Ñ$ˆDØ�dŠ{ˆ{Ý-2Ø˜4 ñ.*ô .*Ñ*��S˜' 7à���Ø�Ý•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Frö   )ré   r{   rê   rŠ   )Ú$sympy.functions.elementary.complexesrW   rX   rº   r?   r©   rž   r«   ry   rf   r6   r!   )r³   rÃ   rµ   Úreturn_intsrW   rX   Úassumed_sizer¦   r  r  r  r  ÚgapÚmarginr  Úre_Úim_r¬   r­   r´   s    ``                @rh   Úget_integer_partr  k  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à
ð ?Ø�i   4°%Ð 8Ñ 8Ô 8¸#Ñ>Ô>‰ˆˆVØ
ð ?Ø�i   4°%Ð 8Ñ 8Ô 8¸#Ñ>Ô>‰ˆˆVàð DÝ•6˜#˜,¥Ñ'Ô'Ñ(Ô(­#­f°S°\½EÑ.BÔ.BÑ*CÔ*CÐCÐCØ��V˜VÐ#Ð#ri   ú	'ceiling'c                ó:   — t          | j        d         d|¦  «        S r×   ©r  rÍ   rÎ   s      rh   Úevalf_ceilingr  Ú  s   € Ý˜DœI aœL¨!¨WÑ5Ô5Ð5ri   ú'floor'c                ó:   — t          | j        d         d|¦  «        S )Nr   r™   r  rÎ   s      rh   Úevalf_floorr  Þ  s   € Ý˜DœI aœL¨"¨gÑ6Ô6Ð6ri   ú'Float'c                ó   — | j         d |d fS rŒ   )Ú_mpf_rÎ   s      rh   Úevalf_floatr  â  s   € ØŒ:�t˜T 4Ð'Ð'ri   ú
'Rational'c                ó@   — t          | j        | j        |¦  «        d |d fS rŒ   )r   r    ÚqrÎ   s      rh   Úevalf_rationalr  æ  s!   € Ý˜œ ¤¨Ñ.Ô.°°d¸DÐ@Ð@ri   ú	'Integer'c                ó4   — t          | j        |¦  «        d |d fS rŒ   )r   r    rÎ   s      rh   Úevalf_integerr"  ê  s   € Ý�D”F˜DÑ!Ô! 4¨¨tÐ3Ð3ri   Útermsr¥   Útarget_precú=tTuple[tUnion[MPF_TUP, SCALED_ZERO_TUP, None], Optional[int]]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     rh   rñ   zadd_terms.<locals>.<listcomp>  s'   € Ð2Ð2Ð2�1¥V¨A¨a¬D¡\¤\Ð2ˆQÐ2Ð2Ð2ri   rß   r=   r   ©r]   rF   r–   ru   rè   )rœ   Únumbersr]   Ú_newr?   ÚNaNÚis_infiniteÚappendrø   rG   rº   r8   re   r«   r�   r4   rù   )r#  r´   r$  Úspecialr]   r„   ÚargrG   rŸ   Úworking_precÚsum_manÚsum_expÚabsolute_errrp   rÈ   rŽ   ÚmanrT   Úbcrà   r°   Úsum_signÚsum_bcÚsum_accuracyÚrs                            rh   Ú	add_termsr:  ô  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à€Hri   ú'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   r=   ru   c                ó8   •— g | ]}t          |‰d z   ‰¦  «        ‘ŒS )rb   )rº   )rð   r/  rµ   r´   s     €€rh   rñ   zevalf_add.<locals>.<listcomp>Y  s)   ø€ ÐBÐBÐB°C•�s˜D 2™I wÑ/Ô/ÐBÐBÐBri   c                ó^   — g | ]*}t          |t          ¦  «        ¯|d          ¯|d dd…         ‘Œ+S )r   Nru   ©rš   r›   ©rð   rã   s     rh   rñ   zevalf_add.<locals>.<listcomp>^  ó:   € ÐEÐEÐE˜¥z°!µUÑ';Ô';ÐEÀÀ!ÄÐEˆQˆqˆt�!ˆtŒWÐEÐEÐEri   c                ó^   — g | ]*}t          |t          ¦  «        ¯|d          ¯|d dd…         ‘Œ+S )r=   Nru   r@  rA  s     rh   rñ   zevalf_add.<locals>.<listcomp>`  rB  ri   ÚverbosezADD: wantedúaccurate bits, gotrb   zADD: restarting with precTr—   )r‡   rº   rú   ÚDEFAULT_MAXPRECrÚ   rÍ   Úcountr?   r©   r   r:  r   r   r²   Úprintr«   r�   r�   )rz   r´   rµ   rÆ   rƒ   r…   rW   rÀ   r¬   rX   r­   Ú
oldmaxprecr†   r$  r#  rg   rÁ   s    ``              rh   Ú	evalf_addrJ  J  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Ð!Ð!ri   ú'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 )NFr=   r(  r   TrH   r–   r¹   é   r™   ru   rv   rD  zMUL: wantedrE  )r‡   rº   r¥   rÍ   r)  r]   r?   r©   r-  r*  r+  r   r,  ÚmulrI   rœ   r9   ÚOneÚ	enumerateÚexpandrÚ   r4   r8   rù   r²   r,   r-   r#   rú   rH  ),rz   r´   rµ   rÆ   rÀ   rƒ   rX   r­   rÍ   Úhas_zeror.  r]   r/  r¦   ÚnumrI   rÁ   r0  Ústartr4  rT   r5  ÚlastÚ	directionÚcomplex_factorsr†   rW   r¬   r¡   ÚmÚeÚbÚw_accrŽ   Úi0ÚwreÚwimÚwre_accÚwim_accÚuse_precÚAÚBÚCÚDs,                                               rh   Ú	evalf_mulrf  {  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ÐÐri   ú'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 )	NrM  r   r¹   r–   r=   ru   rv   rb   )rÍ   Ú
is_Integerr    r    rf   ÚmathÚlog2re   rº   r?   r©   r0   r-   r½   Úmpc_pow_intrÝ   Úis_RationalÚNotImplementedErrorÚHalfÚmpc_sqrtr!   r+   r3   r   ry   ÚExp1Úmpc_expr)   Úmpc_powÚmpc_pow_mpfr/   )rz   r´   rµ   r$  ÚbaserT   r    r¦   rW   rX   r¬   r­   ÚzÚcaseÚxreÚximrÀ   ÚyreÚyimÚysizes                       rh   Ú	evalf_powr}  ù  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ÐFri   ú'exp'c                óf   — ddl m} t           |t          j        | j        d¬¦  «        ||¦  «        S )Nr=   rJ   Frö   )ÚpowerrK   r}  r?   rq  rT   )r³   r´   rµ   rK   s       rh   Ú	evalf_expr�  {  s;   € ØÐÐÐÐÐÝ�S�S�œ ¤°EÐ:Ñ:Ô:¸DÀ'ÑJÔJÐJri   c                óÞ  — ddl m}m} t          | |¦  «        rt          }nt          | |¦  «        rt
          }nt          ‚| j        d         }|dz   }t          |||¦  «        \  }}	}
}|	rCd|v r|  	                    |d         ¦  «        } t          |  
                    |¦  «        ||¦  «        S |s4t          | |¦  «        rt          d|df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 )zy
    This function handles sin and cos of complex arguments.

    TODO: should also handle tan of complex arguments.
    r   ©ÚcosÚsiné   r¸   Nr¹   r=   rb   rD  zSIN/COSÚwantedr  r=  )Ú(sympy.functions.elementary.trigonometricr„  r…  rš   r'   r2   rn  rÍ   rº   r¸   Ú_eval_evalfr    ry   rù   rú   rH  r7   rF  )rz   r´   rµ   r„  r…  Úfuncr/  ÚxprecrW   rX   r¬   r­   ÚxsizeÚyr|  r  rÈ   s                    rh   Ú
evalf_trigrŽ  €  sS  € ð BÐAÐAÐAÐAÐAÐAÐAÝ�!�SÑÔð "ÝˆˆÝ	�A�sÑ	Ô	ð "Ýˆˆå!Ð!Ø
Œ&�Œ)€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Ñ%Ô%ð %Ý�i ¨8°T¸5À#ÑFÔFÐFÝ•f˜Q ‘m”mÑ$Ô$Ð$Ø�w—{’{ 9­oÑ>Ô>Ò>Ð>Ø˜$ ¨$Ð.Ð.Ø�S‰LˆEÝ%*¨3°°wÑ%?Ô%?Ñ"ˆB��F˜FØà�d˜D $Ð&Ð&ri   ú'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 )
Nr=   r   rb   )rV   )rU   Frö   ru   rF   )rœ   rÍ   Údoitrº   r?   r©   r!   r	  rV   Ú&sympy.functions.elementary.exponentialrU   Ú	evalf_logr%   r&   r*   r"   rù   ry   rø   rG   ÚNegativeOnerJ  r#   r    r.   )r³   r´   rµ   r/  r   r¦   rx  ry  ÚxaccrÀ   rV   rU   rW   rX   Úimaginary_termr  rG   rø   Úprec2r¬   s                       rh   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˜ Ð%Ð%ri   ú'atan'c                ó¬   — | j         d         }t          ||dz   |¦  «        \  }}}}||cxu r€n ndS |rt          ‚t          ||t          ¦  «        d |d fS )Nr   rM  r¹   )rÍ   rº   rn  r$   rù   )rz   r´   rµ   r/  rx  ry  ÚreaccÚimaccs           rh   Ú
evalf_atanrœ  ò  sv   € Ø
Œ&�Œ)€CÝ" 3¨¨q©°'Ñ:Ô:Ñ€Cˆˆe�UØ
ˆcÐÐÐÐÐÐÐÐØˆyØ
ð "Ý!Ð!Ý�C˜�sÑ#Ô# T¨4°Ð5Ð5ri   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ã   rZ  s        rh   Ú
evalf_subsr¢  ü  sX   € à€GØ—
’
‘”ð ð ‰ˆˆ1Ýˆa‰DŒDˆØŒ:ð 	$Ø—’˜dÑ#Ô#ˆAØˆ�‰
ˆ
Ø€Nri   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          ‚)Nr=   )r]   r_   r¸   rŠ  )r)  r]   r_   r¸   r¢  ÚcopyÚhasattrrº   rš   Úfloatrf   rn  )r³   r´   rµ   r]   r_   Únewoptss         rh   Ú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õ Ðri   rã   ú'AlgebraicNumber'c                óH   — t          |                      ¦   «         ||¦  «        S rŒ   )rº   Úto_root)rã   r´   rµ   s      rh   Úevalf_alg_numr¬    s   € Ý�—’‘”˜d GÑ,Ô,Ð,ri   r   útUnion[mpc, mpf]c                ó:  — 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 )Nr=   )ÚInfinityÚNegativeInfinityr�   g        r   r   z-inf)	r)  r¯  r°  r�   r>   rš   r   rº   Úquad_to_mpmath)rp   r´   rµ   r¯  r°  r�   r¦   s          rh   Ú	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Ý˜&Ñ!Ô!Ð!ri   ú
'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   r=   r=  ru   rM  é   rƒ  )ÚWildFr„   r{   rr   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   r=   )rº   r   r´   r«   ry   r   r!   r   )
r„   rW   rX   r¬   r­   rŠ  Ú	have_partÚmax_imag_termÚmax_real_termrp   s
        €€€€€rh   Úfzdo_integral.<locals>.fS  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Ñ#Ô#Ð#ri   ÚquadÚoscrb  )Úexcluderc  re  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„   r{   rr   r­  )rÍ   Úfree_symbolsr»   rú   rF  rÚ   r   r²  rˆ  r„  r…  Úsymbolr¶  rw   Úmatchrž   r?   ÚPir   r   ry   r  Úrealr!   r�   rf   r«   Úimag)r³   r´   rµ   ÚxlowÚxhighÚdiffrI  r„  r…  r¶  r»  rb  rc  re  rX  r¿  r¦   Úquadrature_errorÚquadrature_errrW   Úre_sr¬   rX   Úim_sr­   rŠ  r¸  r¹  rº  rp   s                            @@@@@rh   Údo_integralrÎ  0  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ˆ	Ý,5ˆÝ,5ˆð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð �;Š;�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Ñà�„|ð 	 Ø &¤Ô 1ˆà•Š;ˆ;Ý&¥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à�„|ð 	 Ø &¤Ô 1ˆà•Š;ˆ;Ý&¥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 )Nr=   r   rv   r=  r™   ru   )	Úlimitsrœ   rn  rú   rª   rÎ  r²   r«   rÚ   )	r³   r´   rµ   rÐ  r   r†   r=  r¦   rÈ   s	            rh   Ú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‰ˆðð  €Mri   ÚnumerÚdenomrg   ú'Symbol'útTuple[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   )ÚPolyNr=   )Úequal_valued)Úsympy.polys.polytoolsr×  ÚdegreeÚLCr)  rØ  re   Ú
all_coeffs)rÒ  rÓ  rg   r×  ÚnpolÚdpolr    r  ÚrateÚconstantrØ  ÚpcÚqcs                rh   Ú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Ñ.Ð.Ð.ri   rT  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.
    r=   )r]   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.rM  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×   )rf   r9   r   r   )ÚkÚ_termÚfunc1Úfunc2r—  s     €€€rh   Ú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Ñ >Ô >Ñ?Ô?Ð?ri   Ú
richardson)Úmethod)r)  r]   rØ  Úsympy.simplify.simplifyrå  r¦  rn  r¸   Úas_numer_denomrB   rã  rž   rm  re   r9   r    r  r   r<   r   r   Ú
mpmath_infr  )r³   rg   rT  r´   r]   rØ  rå  ÚhsrS  Údenrƒ   Úgr    Útermr¡   rç  ÚaltÚvoldÚndigÚterm0rë  rz   Úvfré  rê  r—  s                          @@@rh   Ú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¸¸Ñ;Ñ<Ô<Ð<à�9Š9�Q˜‰?Œ?€DØÔð YÝ!Ð"WÑXÔXÐXð 	ˆ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 )r=   ru   N)ri  )rð   Úls     rh   rõ   zevalf_prod.<locals>.<genexpr>!  s1   è è € Ð
9Ð
9¨ˆAˆaŒD�1�Q”4‰KÔ#Ð
9Ð
9Ð
9Ð
9Ð
9Ð
9ri   )r´   rµ   r   rO   )rû   rÐ  rº   r‘  Úsympy.concrete.summationsrP   Úrewrite)r³   r´   rµ   r¦   rP   s        rh   Ú
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ˆØ€Mri   ú'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)Nr=   r(  r¸   r   rv   rb   iöÿÿÿg       @rM  ru   F)rX  rg   ÚepsÚeval_integralr†  )r)  r]   r¸   ÚfunctionrÐ  rœ   rn  Úis_zeror?   r¯  r°  rf   rú  ry   rÚ   ÚrangeÚeuler_maclaurinrº   r+  re   )r³   r´   rµ   r]   rŠ  rÐ  r—  rg   rã   rZ  rz   rà   r  r†   rX  r¡   ÚerrrW   rX   r¬   r­   s                        rh   Ú	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ú   rw   rº   r>   )rp   r´   rµ   ÚvalÚcacheÚcachedÚcached_precrz   s           rh   Úevalf_symbolr  Y  s¶   € Ø
�&Œ/˜!Ô
€CÝ�#•sÑÔð Øð 	*Ø)Ð)ØŒy˜$  dÐ*Ð*à˜7Ð"Ð"Ø "ˆG�HÑØ˜Ô!ˆØ#Ÿiši¨¨Dµ)Ð+<Ñ=Ô=Ñˆ�Ø˜$ÒÐØˆMÝ•'˜#‘,”,  gÑ.Ô.ˆØ�t�9ˆˆa‰Øˆri   z?tDict[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*} ddl+m,} i |tZ          “|tZ          “|t\          “|t^          “|t`          “|d„ “|d„ “|d„ “|d„ “|d„ “|d„ “|
d„ “|d„ “|	d„ “|tb          “|td          “|td          “|tf          |th          |tj          |tl          |tn          |tp          |tr          |tt          |tv          |tx          |tz          |t|          | t~          |t€          |t‚          i¥aBd S )Nr   rQ   rO   r=   rF   rH   )rq  r]   ro  r€   r_   r+  r”  rO  rÄ  r^   r�   r©   r`   rJ   )ÚDummyrL   )rV   rX   rW   rS   rY   )Ú	Piecewise)r\   r„  r…  rM   c                ó   — d d |d fS rŒ   ro   ©rp   r´   rµ   s      rh   ú<lambda>z%_create_evalf_table.<locals>.<lambda>„  s   € ¨¨d°D¸$Ð'?€ ri   c                ó   — t           d |d fS rŒ   ©r    r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>…  ó   € ¥t¨T°4¸Ð&>€ ri   c                ó   — t           d |d fS rŒ   )r   r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>†  s   € ­¨t°T¸4Ð'@€ ri   c                ó(   — t          |¦  «        d |d fS rŒ   )r.   r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>‡  s   € ¥f¨T¡l¤l°D¸$ÀÐ%E€ ri   c                ó(   — t          |¦  «        d |d fS rŒ   )r(   r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>ˆ  s   € ­¨d©¬°T¸4ÀÐ'F€ ri   c                ó   — d t           d |fS rŒ   r  r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>‰  s   € °µt¸TÀ4Ð0H€ ri   c                ó   — t           d |d fS rŒ   )r   r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>Š  s   € ­u°d¸DÀ$Ð.G€ ri   c                ó   — t           j        S rŒ   )r?   r©   r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>‹  s	   € µ!Ô2C€ ri   c                ó   — t           d |d fS rŒ   )r   r  s      rh   r  z%_create_evalf_table.<locals>.<lambda>Œ  r  ri   )CÚsympy.concrete.productsrR   rÿ  rP   rø   rG   rN  rI   r)  rq  r]   ro  r€   r_   r+  r”  rO  rÄ  r^   r�   r©   r`   r€  rK   rÂ  r  rL   r	  rV   rX   rW   r’  rT   rU   Ú#sympy.functions.elementary.integersrZ   r[   Ú$sympy.functions.elementary.piecewiser  rˆ  r\   r„  r…  Úsympy.integrals.integralsrN   r  r  r  r"  r�  rŽ  rJ  rf  r}  r“  rœ  rÏ   rÓ   rØ   r  r  rÑ  r  r  r¨  r¬  r  ) rR   rP   rG   rI   rq  r]   ro  r€   r_   r+  r”  rO  rÄ  r^   r�   r©   r`   rK   r  rL   rV   rX   rW   rT   rU   rZ   r[   r  r\   r„  r…  rN   s                                    rh   Ú_create_evalf_tabler(  n  sé  € à/Ð/Ð/Ð/Ð/Ð/Ø-Ð-Ð-Ð-Ð-Ð-ØÐÐÐÐÐØÐÐÐÐÐð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /àÐÐÐÐÐØ%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØBÐBÐBÐBÐBÐBÐBÐBØ>Ð>Ð>Ð>Ð>Ð>ØGÐGÐGÐGÐGÐGÐGÐGÐGÐGØ2Ð2Ð2Ð2Ð2Ð2ð(Ø•ð(à�|ð(ð 	�{ð(ð 	•.ð	(ð
 	•ð(ð 	Ð?Ð?ð(ð 	Ð>Ð>ð(ð 	Ð@Ð@ð(ð 	ÐEÐEð(ð 	ÐFÐFð(ð 	ÐHÐHð(ð 	ÐGÐGð(ð 	ÐCÐCð(ð 	Ð>Ð>ð(ð  	�Yð!(ð$ 	�Zð%(ð& 	�Zð'(ð* 	�YØ�YØ�Yà�YØ�jØ�Yà
�HØ
�HØ�{Ø•à•.Ø�YØ•Ø•?à�ðO(ð (€K€K€Kri   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_intsrD  z	### inputz
### outputé2   z### rawÚchopTgÅ °rh‘
Àg      @rv   r=   rî   )r	  rW   rX   r  ÚtypeÚKeyErrorr¸   r¢  r‰  rn  ÚgetattrÚhasr»   Ú
_to_mpmathr  rú   rH  rš   r›   r7   r!   rf   Úroundrj  Úlog10rá   rä   )rp   r´   rµ   r  r  Úrfr9  Úxerò   rW   rX   ÚreprecÚimprecr,  Ú	chop_precs                  rh   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©   rn  r!   )r  Úctxr   r   rW   rX   rÀ   s          rh   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Ðri   c                  ó6   — e Zd ZdZdZdd„ZeZd„ Zd	„ Zdd„Z	dS )Ú
EvalfMixinz$Mixin class adding evalf capability.ro   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
        r=   )r]   ra   Nrµ  z"subs must be given as a dictionary)Ú_magru   )r=  r,  rî   rD  r¸   r¼  r–   )r)  r]   ra   rA   Ú	TypeErrorrš   r³   r?  rº   r2  r  r(  r;   r«   rf   ÚLG10rn  r¥  r¸   r‰  r»   r?   r©   r+  rÚ   r*  r�   r€   )Úselfrg   r¸   Úmaxnr,  rî   r¼  rD  r]   ra   r?  rŸ   rX  r´   rµ   r¦   rz   rW   rX   r¬   r­   r    s                         rh   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c                ó8   — |                       |¦  «        }|€| }|S )z@Helper for evalf. Does the same thing but takes binary precision)r‰  )rB  r´   r9  s      rh   Ú_evalfzEvalfMixin._evalf”  s$   € à×Ò˜TÑ"Ô"ˆØˆ9ØˆAØˆri   c                ó   — d S rŒ   ro   )rB  r´   s     rh   r‰  zEvalfMixin._eval_evalf›  s   € Øˆri   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)ri  r    r¥  r   rH  rº   r±  rn  r‰  rž   r   r  rò   r   r   )rB  r´   r*  Úerrmsgr¦   rz   rW   rX   s           rh   r1  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µ  Nr=  FFNF)T)
rl   rm   rn   Ú__doc__Ú	__slots__rº   rg   rE  r‰  r1  ro   ri   rh   r<  r<    sq   € € € € € Ø.Ð.à€Iðyð yð yð yðv 	€Aðð ð ðð ð ð&ð &ð &ð &ð &ð &ri   r<  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º   )rp   rg   rµ   s      rh   r¼   r¼   ¿  s,   € ð. +�7�1˜tÐ$Ñ$Ô$Ô*¨1Ð8Ð8°Ð8Ð8Ð8ri   r  ú'Optional[Expr]'rX  úOptional[OPT_DICT]c                ó€  — |�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 positiver=   )rm  r   rž   rº   ry   r«   )rp   r  rX  rµ   r9  rÀ   r…   ÚdÚnrÚnirg   r    s               rh   Ú_evalf_with_bounded_errorrT  Ù  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ÑÔÐri   )rp   rq   rr   rs   )F)rz   r{   rr   r|   )r=   )rˆ   r‰   rr   rŠ   )rˆ   rf   rr   r‘   )rˆ   r“   rr   r”   )r   r¢   rr   r£   )r¦   r§   rr   rs   )r³   r{   r´   rf   rµ   r¶   rr   r§   )
r³   r{   rÃ   rf   r´   rf   rµ   r¶   rr   r§   )r³   rÊ   r´   rf   rµ   r¶   rr   r§   )r³   rÐ   r´   rf   rµ   r¶   rr   r§   )r³   rÕ   r´   rf   rµ   r¶   rr   r§   )rW   rŠ   rX   rŠ   r´   rf   rr   r§   )rÇ   r§   r´   rf   rr   r§   )r³   r{   r¦   r§   r´   rf   )r³   r{   rÃ   rf   rµ   r¶   rr   rå   )r³   r  r´   rf   rµ   r¶   rr   r§   )r³   r  r´   rf   rµ   r¶   rr   r§   )r³   r  r´   rf   rµ   r¶   rr   r§   )r³   r  r´   rf   rµ   r¶   rr   r§   )r³   r   r´   rf   rµ   r¶   rr   r§   )r#  r¥   r´   rf   r$  rf   rr   r%  )rz   r;  r´   rf   rµ   r¶   rr   r§   )rz   rK  r´   rf   rµ   r¶   rr   r§   )rz   rg  r´   rf   rr   r§   )r³   r~  r´   rf   rµ   r¶   rr   r§   )rz   r{   r´   rf   rµ   r¶   rr   r§   )r³   r�  r´   rf   rµ   r¶   rr   r§   )rz   r˜  r´   rf   rµ   r¶   rr   r§   )r´   rf   r¸   r�  rr   r�  )rã   r©  r´   rf   rµ   r¶   rr   r§   )rp   r   r´   rf   rµ   r¶   rr   r­  )r³   r³  r´   rf   rµ   r¶   rr   r§   )rÒ  r{   rÓ  r{   rg   rÔ  rr   rÕ  )
r³   r{   rg   rÔ  rT  rf   r´   rf   rr   r   )r³   rû  r´   rf   rµ   r¶   rr   r§   )r³   r  r´   rf   rµ   r¶   rr   r§   )rp   r{   r´   rf   rµ   r¶   rr   r§   rŒ   )rµ  )Nr   N)
rp   r{   r  rN  rX  rf   rµ   rO  rr   r§   )³rJ  Ú
__future__r   Útypingr   ÚtTupler   r   ÚtUnionr   r   r	   ÚtDictr
   r   r   r   rj  Ú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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   rd   Úmpmath.libmp.backendr9   Úmpmath.libmp.libmpcr:   Úmpmath.libmp.libmpfr;   r<   r>   Ú	singletonr?   Úsympy.external.gmpyr@   Úsympy.utilities.iterablesrA   Úsympy.utilities.lambdifyrB   Úsympy.utilities.miscrD   Úsympy.core.exprrE   Úsympy.core.addrG   Úsympy.core.mulrI   Úsympy.core.powerrK   Úsympy.core.symbolrL   r'  rN   rÿ  rP   r$  rR   r’  rT   rU   r	  rV   rW   rX   r%  rZ   r[   rˆ  r\   r)  r]   r^   r_   r`   ra   rk  rA  rù   r¦  rª   rw   rF  ÚArithmeticErrorrk   rf   rŠ   r§   Ústrr¶   ry   r‡   r‰   r�   r�   r²   rÂ   rÉ   rÏ   rÓ   rØ   rÝ   rá   rä   r  r  r  r  r  r"  r:  rJ  rf  r}  r�  rŽ  r“  rœ  r¢  r¨  r¬  r²  rÎ  rÑ  rã  rú  r  r  r  r  Ú__annotations__r(  rº   r±  r<  r¼   rT  ro   ri   rh   ú<module>rl     s¡	  ððð ð ð #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð Ð Ð ðGð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gà $Ð $Ð $Ð $Ð $Ð $ð<ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð
 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�:�+ÑÔ€	ð €ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ðð ��c˜3 Ð#Ô
$€ðð& €ð ��c�Œ?€ð!ð !ð !ð !ðHð ð ð ð ð> ˜˜cœ C¨¨cÐ1Ô2€ð 
ðð ð ð ñ 
„ðà	ðð ð ð ñ 
„ðð$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ð
:'ð :'ð :'ð :'ðz2&ð 2&ð 2&ð 2&ðj6ð 6ð 6ð 6ðð ð ð ðð ð ð ð"-ð -ð -ð -ð"ð "ð "ð "ð\ð \ð \ð \ð~ð ð ð ð4'/ð '/ð '/ð '/ðTJð Jð Jð JðZð ð ð ð'&ð '&ð '&ð '&ð`ð ð ð ð$ PR€Ð QÐ QÐ QÑ Qð8ð 8ð 8ðvUð Uð Uð Uðpð ð ð ð"j&ð j&ð j&ð j&ð j&ñ j&ô j&ð j&ðZ9ð 9ð 9ð 9ð4 BFØ'(Ø<@ð1 ð 1 ð 1 ð 1 ð 1 ð 1 ð 1 ri   