ó
    ˆ*£h·“  ã                   ó   • S SK JrJr  S SKJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrYJr  S SKZJ[r[  S SKZJ\r\  \]R¼                  r_ " S S\]5      r` " S S\`5      raS	rbS
rcSrdS\c< S\d< S3reS3S jrf\f" SSSS5      \alg        \f" SS\c-   S\c-   S\d-   5      \alh        \f" SS\c-   S\c-   S\d-   5      \ali        \f" SS\c-   S\c-   S\d-   5      \alj        \f" S S!\c-   S"\c-   S#\d-   5      \alk        \f" S$S%\c-   S&\c-   S'5      \all        \f" S(\eS)\c-   S*\d-   5      \alm        \aRÐ                  \aln        \aRÔ                  \alo        \aRÖ                  \alp        \aRâ                  \alr         " S+ S,\a5      rs " S- S.\`5      rt\u\t4rv " S/ S0\]5      rw S1S2Kxrx\xRò                  Rõ                  \t5        \xRö                  Rõ                  \a5        g2! \| a     g2f = f)4é   )Ú
basestringÚexec_)WÚMPZÚMPZ_ZEROÚMPZ_ONEÚ	int_typesÚrepr_dpsÚround_floorÚround_ceilingÚdps_to_precÚround_nearestÚprec_to_dpsÚComplexResultÚto_pickableÚfrom_pickableÚ	normalizeÚfrom_intÚ
from_floatÚfrom_npfloatÚfrom_DecimalÚfrom_strÚto_intÚto_floatÚto_strÚfrom_rationalÚfrom_man_expÚfoneÚfzeroÚfinfÚfninfÚfnanÚmpf_absÚmpf_posÚmpf_negÚmpf_addÚmpf_subÚmpf_mulÚmpf_mul_intÚmpf_divÚmpf_rdiv_intÚmpf_pow_intÚmpf_modÚmpf_eqÚmpf_cmpÚmpf_ltÚmpf_gtÚmpf_leÚmpf_geÚmpf_hashÚmpf_randÚmpf_sumÚbitcountÚto_fixedÚ
mpc_to_strÚmpc_to_complexÚmpc_hashÚmpc_posÚmpc_is_nonzeroÚmpc_negÚmpc_conjugateÚmpc_absÚmpc_addÚmpc_add_mpfÚmpc_subÚmpc_sub_mpfÚmpc_mulÚmpc_mul_mpfÚmpc_mul_intÚmpc_divÚmpc_div_mpfÚmpc_powÚmpc_pow_mpfÚmpc_pow_intÚmpc_mpf_divÚmpf_powÚmpf_piÚ
mpf_degreeÚmpf_eÚmpf_phiÚmpf_ln2Úmpf_ln10Ú	mpf_eulerÚmpf_catalanÚ	mpf_aperyÚmpf_khinchinÚmpf_glaisherÚmpf_twinprimeÚmpf_mertensr   )Úrational)Úfunction_docsc                   ó"   • \ rS rSrSr/ rS rSrg)Ú	mpnumericé!   zBase class for mpf and mpc.c                 ó   • [         e©N)ÚNotImplementedError)ÚclsÚvals     ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/mpmath/ctx_mp_python.pyÚ__new__Úmpnumeric.__new__$   s   € Ü!Ð!ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__rf   Ú__static_attributes__ri   rh   re   r^   r^   !   s   † Ù%Ø€Iõ"rh   r^   c                   ó|  • \ rS rSrSrS/r\4S jr\S 5       r	\S 5       r
\S 5       r\" S 5      r\" S	 5      r\" S
 5      r\" S 5      r\" S 5      r\" S 5      rS rS rS rS rS rS rS rS rS rS rS r\rS rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*S% r+S& r,S' r-S-S) jr.S* r/S+ r0S,r1g().Ú_mpfé'   z‘
An mpf instance holds a real-valued floating-point number. mpf:s
work analogously to Python floats, but support arbitrary-precision
arithmetic.
Ú_mpf_c                 óâ  • U R                   R                  u  p4U(       a8  UR                  SU5      nSU;   a  [        US   5      nUR                  SU5      n[	        U5      U L a>  UR
                  u  pVpxU(       d	  U(       a  U$ [        U 5      n	[        XVXxX45      U	l        U	$ [	        U5      [        L a�  [        U5      S:X  a%  [        U 5      n	[        US   US   X45      U	l        U	$ [        U5      S:X  aD  U[        [        [        4;  a  Uu  pVpx[        U[        U5      XxX45      n[        U 5      n	Xl        U	$ [        e[        U 5      n	[!        U R#                  XU5      X45      U	l        U	$ )z{A new mpf can be created from a Python float, an int, a
or a decimal string representing a number in floating-point
format.ÚprecÚdpsÚroundingé   é    r   é   )ÚcontextÚ_prec_roundingÚgetr   Útypert   Únewr   ÚtupleÚlenr   r   r    r!   r   Ú
ValueErrorr#   Úmpf_convert_arg)
rc   rd   Úkwargsrv   rx   ÚsignÚmanÚexpÚbcÚvs
             re   rf   Ú_mpf.__new__/   sF  € ð Ÿ™×3Ñ3‰ˆÞØ—:‘:˜f dÓ+ˆDØ˜‹Ü" 6¨%¡=Ó1�Ø—z‘z *¨hÓ7ˆHÜ�‹9˜ÒØ!$§¡ÑˆD�sÞžSØ�
Ü�C“ˆAÜ ¨3°DÓCˆAŒGØˆHÜ�#‹Yœ%ÒÜ�3‹x˜1‹}Ü˜“H�Ü& s¨1¡v¨s°1©v°tÓF�”Ø�Ü�3‹x˜1‹}Øœt¤U¬DÐ1Ó1Ø),Ñ&�D˜sÜ# D¬#¨c«(°C¸TÓL�CÜ˜“H�Ø”Ø�ÜÐä�C“ˆAÜ˜c×1Ñ1°#¸XÓFÈÓWˆAŒGØˆHrh   c                 ó¨  • [        U[        5      (       a  [        U5      $ [        U[        5      (       a  [	        U5      $ [        U[
        5      (       a  [        XU5      $ [        XR                  R                  5      (       a  UR                  X#5      $ [        US5      (       a  UR                  $ [        US5      (       aG  U R                  R                  UR                  X#5      5      n[        US5      (       a  UR                  $ [        US5      (       a   UR                  u  pVXV:X  a  U$ [        S5      e[!        S[#        U5      -   5      e)Nrt   Ú_mpmath_Ú_mpi_z,can only create mpf from zero-width intervalúcannot create mpf from )Ú
isinstancer   r   Úfloatr   r   r   r|   ÚconstantÚfuncÚhasattrrt   Úconvertr�   rŽ   rƒ   Ú	TypeErrorÚrepr)rc   Úxrv   rx   ÚtÚaÚbs          re   r„   Ú_mpf.mpf_convert_argR   s  € ä�aœ×#Ñ#¬H°Q«KÐ%7Ü�aœ×Ñ¬
°1«Ð!5Ü�aœ×$Ñ$¬X°a¸xÓ-HÐ&HÜ�aŸ™×-Ñ-×.Ñ.°q·v±v¸dÓ7MÐ0MÜ�1�g×Ñ q§w¡w Ü�1�j×!Ñ!Ø—‘×#Ñ# A§J¡J¨tÓ$>Ó?ˆAÜ�q˜'×"Ñ"Ø—w‘w�Ü�1�g×ÑØ—7‘7‰DˆAØ‹vØ�ÜÐKÓLÐLÜÐ1´D¸³GÑ;Ó<Ð<rh   c                 óš  • [        U[        5      (       a  [        U5      $ [        U[        5      (       a  [	        U5      $ [        U[
        5      (       a  U R                  R                  U5      $ [        U[        R                  5      (       a.  UR                  u  p#[        X#U R                  R                  5      $ [        US5      (       a  UR                  $ [        US5      (       a[  U R                  R                  UR                   " U R                  R"                  6 5      n[        US5      (       a  UR                  $ U$ [$        $ )Nrt   r�   )r�   r   r   r‘   r   Úcomplex_typesr|   Úmpcr[   ÚmpqÚ_mpq_r   rv   r”   rt   r•   r�   r}   ÚNotImplemented)rc   r˜   ÚpÚqr™   s        re   Úmpf_convert_rhsÚ_mpf.mpf_convert_rhsd   sê   € ä�aœ×#Ñ#¬H°Q«KÐ%7Ü�aœ×Ñ¬
°1«Ð!5Ü�aœ×'Ñ'°·±·±ÀÓ0BÐ)BÜ�aœŸ™×&Ñ&Ø—7‘7‰DˆAÜ   s§{¡{×'7Ñ'7Ó8Ð8Ü�1�g×Ñ q§w¡w Ü�1�j×!Ñ!Ø—‘×#Ñ# A§J¢J°·±×0JÑ0JÐ$KÓLˆAÜ�q˜'×"Ñ"Ø—w‘w�ØˆHÜÐrh   c                 ó‚   • U R                  U5      n[        U5      [        L a  U R                  R	                  U5      $ U$ ra   )r¥   r   r�   r|   Úmake_mpf)rc   r˜   s     re   Úmpf_convert_lhsÚ_mpf.mpf_convert_lhst   s8   € à×Ñ Ó"ˆÜ�‹7”eÒØ—;‘;×'Ñ'¨Ó*Ð*Øˆrh   c                 ó    • U R                   SS $ )Nr   é   ©rt   ©Úselfs    re   Ú<lambda>Ú_mpf.<lambda>{   s   €  D§J¡J¨q°¡Orh   c                 ó    • U R                   S   $ ©Nr   r­   r®   s    re   r°   r±   |   ó   €  §
¡
¨1¢rh   c                 ó    • U R                   S   $ )Nry   r­   r®   s    re   r°   r±   }   r´   rh   c                 ó    • U R                   S   $ )Nr¬   r­   r®   s    re   r°   r±   ~   s   € ˜tŸz™z¨!š}rh   c                 ó   • U $ ra   ri   r®   s    re   r°   r±   €   s   € ¡rh   c                 ó.   • U R                   R                  $ ra   )r|   Úzeror®   s    re   r°   r±   �   s   €  §¡×!2Ò!2rh   c                 ó   • U $ ra   ri   r®   s    re   r°   r±   ƒ   s   € ™Trh   c                 ó,   • [        U R                  5      $ ra   )r   rt   r®   s    re   Ú__getstate__Ú_mpf.__getstate__…   s   € ¤;¨t¯z©zÓ#:Ð:rh   c                 ó$   • [        U5      U l        g ra   )r   rt   ©r¯   rd   s     re   Ú__setstate__Ú_mpf.__setstate__†   s   € ¬m¸CÓ.@ ¥rh   c                 ó¨   • U R                   R                  (       a  [        U 5      $ S[        U R                  U R                   R
                  5      -  $ )Nz	mpf('%s'))r|   ÚprettyÚstrr   rt   Ú_repr_digits©Úss    re   Ú__repr__Ú_mpf.__repr__ˆ   s8   € Ø�9‰9××Ü�q“6ˆMØœV A§G¡G¨Q¯Y©Y×-CÑ-CÓDÑDÐDrh   c                 óV   • [        U R                  U R                  R                  5      $ ra   )r   rt   r|   Ú_str_digitsrÆ   s    re   Ú__str__Ú_mpf.__str__�   s   € œ6 !§'¡'¨1¯9©9×+@Ñ+@ÓAÐArh   c                 ó,   • [        U R                  5      $ ra   )r3   rt   rÆ   s    re   Ú__hash__Ú_mpf.__hash__Ž   s   € œH Q§W¡WÓ-Ð-rh   c                 ó>   • [        [        U R                  5      5      $ ra   )Úintr   rt   rÆ   s    re   Ú__int__Ú_mpf.__int__�   s   € œ3œv a§g¡g›Ó/Ð/rh   c                 ó>   • [        [        U R                  5      5      $ ra   )Úlongr   rt   rÆ   s    re   Ú__long__Ú_mpf.__long__�   s   € œD¤¨¯©£Ó1Ð1rh   c                 óX   • [        U R                  U R                  R                  S   S9$ ©Nr   )Úrnd)r   rt   r|   r}   rÆ   s    re   Ú	__float__Ú_mpf.__float__‘   s!   € œX a§g¡g°1·9±9×3KÑ3KÈAÑ3NÑOÐOrh   c                 ó*   • [        [        U 5      5      $ ra   )Úcomplexr‘   rÆ   s    re   Ú__complex__Ú_mpf.__complex__’   s   € œw¤u¨Q£xÓ0Ð0rh   c                 ó(   • U R                   [        :g  $ ra   )rt   r   rÆ   s    re   Ú__nonzero__Ú_mpf.__nonzero__“   s   € ˜qŸw™w¬%Ñ/Ð/rh   c                 ón   • U R                   u  pu  p4U" U5      n[        U R                  X45      Ul        U$ ra   )Ú_ctxdatar"   rt   ©rÇ   rc   r€   rv   rx   rŠ   s         re   Ú__abs__Ú_mpf.__abs__—   ó3   € Ø%&§Z¡ZÑ"ˆÑ"�4Ù�‹HˆÜ˜!Ÿ'™' 4Ó2ˆŒØˆrh   c                 ón   • U R                   u  pu  p4U" U5      n[        U R                  X45      Ul        U$ ra   )ræ   r#   rt   rç   s         re   Ú__pos__Ú_mpf.__pos__�   rê   rh   c                 ón   • U R                   u  pu  p4U" U5      n[        U R                  X45      Ul        U$ ra   )ræ   r$   rt   rç   s         re   Ú__neg__Ú_mpf.__neg__£   rê   rh   c                 óœ   • [        US5      (       a  UR                  nOU R                  U5      nU[        L a  U$ U" U R                  U5      $ ©Nrt   )r”   rt   r¥   r¢   )rÇ   r™   r“   s      re   Ú_cmpÚ	_mpf._cmp©   sF   € Ü�1�g×ÑØ—‘‰Aà×!Ñ! !Ó$ˆAØ”NÒ"Ø�Ù�A—G‘G˜QÓÐrh   c                 ó.   • U R                  U[        5      $ ra   )ró   r.   ©rÇ   r™   s     re   Ú__cmp__Ú_mpf.__cmp__²   s   € ˜aŸf™f Q¬Ó0Ð0rh   c                 ó.   • U R                  U[        5      $ ra   )ró   r/   rö   s     re   Ú__lt__Ú_mpf.__lt__³   ó   € ˜QŸV™V A¤vÓ.Ð.rh   c                 ó.   • U R                  U[        5      $ ra   )ró   r0   rö   s     re   Ú__gt__Ú_mpf.__gt__´   rü   rh   c                 ó.   • U R                  U[        5      $ ra   )ró   r1   rö   s     re   Ú__le__Ú_mpf.__le__µ   rü   rh   c                 ó.   • U R                  U[        5      $ ra   )ró   r2   rö   s     re   Ú__ge__Ú_mpf.__ge__¶   rü   rh   c                 óH   • U R                  U5      nU[        L a  U$ U(       + $ ra   ©Ú__eq__r¢   )rÇ   r™   rŠ   s      re   Ú__ne__Ú_mpf.__ne__¸   ó#   € Ø�H‰H�Q‹KˆØ”ÒØˆHØŒuˆrh   c                 óè   • U R                   u  p#u  pE[        U5      [        ;   a/  U" U5      n[        [	        U5      U R
                  XE5      Ul        U$ U R                  U5      nU[        L a  U$ X-
  $ ra   )ræ   r   r   r&   r   rt   r©   r¢   ©rÇ   r™   rc   r€   rv   rx   rŠ   s          re   Ú__rsub__Ú_mpf.__rsub__¾   si   € Ø%&§Z¡ZÑ"ˆÑ"�4Ü�‹7”iÓÙ�C“ˆAÜœh q›k¨1¯7©7°DÓCˆAŒGØˆHØ×Ñ˜aÓ ˆØ”ÒØˆHØ‰uˆrh   c                 óØ   • U R                   u  p#u  pE[        U[        5      (       a%  U" U5      n[        XR                  XE5      Ul        U$ U R                  U5      nU[        L a  U$ X-  $ ra   )ræ   r�   r   r*   rt   r©   r¢   r  s          re   Ú__rdiv__Ú_mpf.__rdiv__É   sd   € Ø%&§Z¡ZÑ"ˆÑ"�4Ü�aœ×#Ñ#Ù�C“ˆAÜ" 1§g¡g¨tÓ>ˆAŒGØˆHØ×Ñ˜aÓ ˆØ”ÒØˆHØ‰uˆrh   c                 óB   • U R                  U5      nU[        L a  U$ X-  $ ra   ©r©   r¢   rö   s     re   Ú__rpow__Ú_mpf.__rpow__Ô   ó&   € Ø×Ñ˜aÓ ˆØ”ÒØˆHØ‰vˆrh   c                 óB   • U R                  U5      nU[        L a  U$ X-  $ ra   r  rö   s     re   Ú__rmod__Ú_mpf.__rmod__Ú   ó&   € Ø×Ñ˜aÓ ˆØ”ÒØˆHØ‰uˆrh   c                 ó8   • U R                   R                  U 5      $ ra   )r|   ÚsqrtrÆ   s    re   r  Ú	_mpf.sqrtà   s   € Ø�y‰y�~‰~˜aÓ Ð rh   Nc                 ó:   • U R                   R                  XX#5      $ ra   ©r|   Úalmosteq©rÇ   r™   Úrel_epsÚabs_epss       re   ÚaeÚ_mpf.aeã   ó   € Ø�y‰y×!Ñ! !¨Ó9Ð9rh   c                 ó.   • [        U R                  U5      $ ra   )r7   rt   )r¯   rv   s     re   r7   Ú_mpf.to_fixedæ   s   € Ü˜Ÿ
™
 DÓ)Ð)rh   c                 ó,   • [        [        U 5      /UQ76 $ ra   )Úroundr‘   )r¯   Úargss     re   Ú	__round__Ú_mpf.__round__é   s   € Ü”U˜4“[Ð( 4Ò(Ð(rh   r­   ©NN)2rj   rk   rl   rm   rn   ro   r   rf   Úclassmethodr„   r¥   r©   ÚpropertyÚman_expr‡   rˆ   r‰   ÚrealÚimagÚ	conjugater¼   rÀ   rÈ   rÌ   rÏ   rÓ   r×   rÜ   rà   rã   Ú__bool__rè   rì   rï   ró   r÷   rú   rþ   r  r  r	  r  r  r  r  r  r%  r7   r-  rp   ri   rh   re   rr   rr   '   s  † ñð
 �	€Iàô !ðF ñ=ó ð=ð" ñó ðð ñó ðñ Ñ3Ó4€GÙ
Ñ-Ó
.€CÙ
Ñ-Ó
.€CÙ	Ñ,Ó	-€BáÑ%Ó&€DÙÑ2Ó3€Dá!€Iâ:Ú@òEò
 BÚ-Ú/Ú1ÚOÚ0Ú/à€Hòòòò ò 1Ú.Ú.Ú.Ú.òò	ò	òòò!ô:ò*õ)rh   rr   a  
def %NAME%(self, other):
    mpf, new, (prec, rounding) = self._ctxdata
    sval = self._mpf_
    if hasattr(other, '_mpf_'):
        tval = other._mpf_
        %WITH_MPF%
    ttype = type(other)
    if ttype in int_types:
        %WITH_INT%
    elif ttype is float:
        tval = from_float(other)
        %WITH_MPF%
    elif hasattr(other, '_mpc_'):
        tval = other._mpc_
        mpc = type(other)
        %WITH_MPC%
    elif ttype is complex:
        tval = from_float(other.real), from_float(other.imag)
        mpc = self.context.mpc
        %WITH_MPC%
    if isinstance(other, mpnumeric):
        return NotImplemented
    try:
        other = mpf.context.convert(other, strings=False)
    except TypeError:
        return NotImplemented
    return self.%NAME%(other)
z-; obj = new(mpf); obj._mpf_ = val; return objz-; obj = new(mpc); obj._mpc_ = val; return objzD
        try:
            val = mpf_pow(sval, tval, prec, rounding) zÈ
        except ComplexResult:
            if mpf.context.trap_complex:
                raise
            mpc = mpf.context.mpc
            val = mpc_pow((sval, fzero), (tval, fzero), prec, rounding) Ú
c                 óÔ   • [         nUR                  SU5      nUR                  SU5      nUR                  SU5      nUR                  SU 5      n0 n[        U[        5       U5        XP   $ )Nz
%WITH_INT%z
%WITH_MPC%z
%WITH_MPF%z%NAME%)Úmpf_binary_opÚreplacer   Úglobals)ÚnameÚwith_mpfÚwith_intÚwith_mpcÚcodeÚnps         re   Ú	binary_oprB    sa   € Ü€DØ�<‰<˜ hÓ/€DØ�<‰<˜ hÓ/€DØ�<‰<˜ hÓ/€DØ�<‰<˜ $Ó'€DØ	€BÜ	ˆ$”“	˜2ÔØ‰8€Orh   r  zreturn mpf_eq(sval, tval)z$return mpf_eq(sval, from_int(other))z3return (tval[1] == fzero) and mpf_eq(tval[0], sval)Ú__add__z)val = mpf_add(sval, tval, prec, rounding)z4val = mpf_add(sval, from_int(other), prec, rounding)z-val = mpc_add_mpf(tval, sval, prec, rounding)Ú__sub__z)val = mpf_sub(sval, tval, prec, rounding)z4val = mpf_sub(sval, from_int(other), prec, rounding)z2val = mpc_sub((sval, fzero), tval, prec, rounding)Ú__mul__z)val = mpf_mul(sval, tval, prec, rounding)z.val = mpf_mul_int(sval, other, prec, rounding)z-val = mpc_mul_mpf(tval, sval, prec, rounding)Ú__div__z)val = mpf_div(sval, tval, prec, rounding)z4val = mpf_div(sval, from_int(other), prec, rounding)z-val = mpc_mpf_div(sval, tval, prec, rounding)Ú__mod__z)val = mpf_mod(sval, tval, prec, rounding)z4val = mpf_mod(sval, from_int(other), prec, rounding)z+raise NotImplementedError("complex modulo")Ú__pow__z.val = mpf_pow_int(sval, other, prec, rounding)z2val = mpc_pow((sval, fzero), tval, prec, rounding)c                   óB   • \ rS rSrSrS	S jrS
S jr\S 5       rS r	Sr
g)Ú	_constantiJ  zéRepresents a mathematical constant with dynamic precision.
When printed or used in an arithmetic operation, a constant
is converted to a regular mpf at the working precision. A
regular mpf can also be obtained using the operation +x.c                 ót   • [         R                  U 5      nX$l        Xl        [	        [
        US5      Ul        U$ )NÚ )Úobjectrf   r<  r“   Úgetattrr\   rn   )rc   r“   r<  Údocnamerš   s        re   rf   Ú_constant.__new__P  s/   € Ü�N‰N˜3ÓˆØŒØŒÜœM¨7°BÓ7ˆŒ	Øˆrh   Nc                 óÎ   • U R                   R                  u  pEU(       d  UnU(       d  UnU(       a  [        U5      nU R                   R                  U R	                  X5      5      $ ra   )r|   r}   r   r¨   r“   )r¯   rv   rw   rx   Úprec2Ú	rounding2s         re   Ú__call__Ú_constant.__call__W  sL   € ØŸ<™<×6Ñ6ÑˆÞ˜E�TÞ I˜Þ”{ 3Ó'�Ø�|‰|×$Ñ$ T§Y¡Y¨tÓ%>Ó?Ð?rh   c                 óT   • U R                   R                  u  pU R                  X5      $ ra   )r|   r}   r“   )r¯   rv   rx   s      re   rt   Ú_constant._mpf_^  s"   € àŸ™×4Ñ4‰ˆØ�y‰y˜Ó(Ð(rh   c           	      óf   • SU R                   < SU R                  R                  U " SS95      < S3$ )NÚ<z: é   )rw   z~>)r<  r|   Únstrr®   s    re   rÈ   Ú_constant.__repr__c  s$   � Ø"Ÿiœi¨¯©×):Ñ):¹4ÀB¹<Ö)HÐIÐIrh   ri   )rL  )NNN)rj   rk   rl   rm   rn   rf   rT  r1  rt   rÈ   rp   ri   rh   re   rJ  rJ  J  s-   † ñ@ô
ô@ð ñ)ó ð)õJrh   rJ  c                   ó  • \ rS rSrSrS/rS"S jr\" S 5      r\" S 5      r	S r
S rS	 rS
 rS rS rS rS rS rS r\rS r\S 5       rS rS rS r\r\r\r\rS rS rS r S r!S r"\r#S r$S r%S r&S r'\!r(\&r)S#S  jr*S!r+g)$Ú_mpcig  z·
An mpc represents a complex number using a pair of mpf:s (one
for the real part and another for the imaginary part.) The mpc
class behaves fairly similarly to Python's complex type.
Ú_mpc_c                 óx  • [         R                  U 5      n[        U[        5      (       a  UR                  UR
                  p!O$[        US5      (       a  UR                  Ul        U$ U R                  R                  U5      nU R                  R                  U5      nUR                  UR                  4Ul        U$ )Nr_  )rM  rf   r�   rž   r3  r4  r”   r_  r|   Úmpfrt   )rc   r3  r4  rÇ   s       re   rf   Ú_mpc.__new__p  s†   € Ü�N‰N˜3ÓˆÜ�dœM×*Ñ*ØŸ™ D§I¡I‘$Ü�T˜7×#Ñ#Ø—j‘jˆAŒGØˆHØ�{‰{�‰˜tÓ$ˆØ�{‰{�‰˜tÓ$ˆØ—:‘:˜tŸz™zÐ*ˆŒØˆrh   c                 óR   • U R                   R                  U R                  S   5      $ )Nrz   ©r|   r¨   r_  r®   s    re   r°   Ú_mpc.<lambda>|  ó   €  §¡×!6Ñ!6°t·z±zÀ!±}Ô!Erh   c                 óR   • U R                   R                  U R                  S   5      $ r³   rd  r®   s    re   r°   re  }  rf  rh   c                 ób   • [        U R                  S   5      [        U R                  S   5      4$ ©Nrz   r   )r   r_  r®   s    re   r¼   Ú_mpc.__getstate__  s'   € Ü˜4Ÿ:™: a™=Ó)¬;°t·z±zÀ!±}Ó+EÐEÐErh   c                 óF   • [        US   5      [        US   5      4U l        g ri  )r   r_  r¿   s     re   rÀ   Ú_mpc.__setstate__‚  s    € Ü" 3 q¡6Ó*¬M¸#¸a¹&Ó,AÐAˆ�
rh   c                 óð   • U R                   R                  (       a  [        U 5      $ [        U R                  5      SS n[        U R
                  5      SS n[        U 5      R                  < SU< SU< S3$ )Nr{   éÿÿÿÿz(real=z, imag=Ú))r|   rÃ   rÄ   r—   r3  r4  r   rj   )rÇ   ÚrÚis      re   rÈ   Ú_mpc.__repr__…  sW   € Ø�9‰9××Ü�q“6ˆMÜ�—‘‹L˜˜2ÐˆÜ�—‘‹L˜˜2ÐˆÜ)-¨a«×)9Ô)9»1»aÐ@Ð@rh   c                 ó\   • S[        U R                  U R                  R                  5      -  $ )Nz(%s))r8   r_  r|   rË   rÆ   s    re   rÌ   Ú_mpc.__str__Œ  s"   € Øœ
 1§7¡7¨A¯I©I×,AÑ,AÓBÑBÐBrh   c                 óX   • [        U R                  U R                  R                  S   S9$ rÚ   )r9   r_  r|   r}   rÆ   s    re   rà   Ú_mpc.__complex__�  s"   € Ü˜aŸg™g¨1¯9©9×+CÑ+CÀAÑ+FÑGÐGrh   c                 ón   • U R                   u  pu  p4U" U5      n[        U R                  X45      Ul        U$ ra   )ræ   r;   r_  rç   s         re   rì   Ú_mpc.__pos__’  rê   rh   c                 óª   • U R                   R                  u  p[        U R                   R                  5      n[	        U R
                  X5      Ul        U$ ra   )r|   r}   r€   ra  r?   r_  rt   )rÇ   rv   rx   rŠ   s       re   rè   Ú_mpc.__abs__˜  s<   € ØŸ™×1Ñ1‰ˆÜ�—	‘	—‘ÓˆÜ˜!Ÿ'™' 4Ó2ˆŒØˆrh   c                 ón   • U R                   u  pu  p4U" U5      n[        U R                  X45      Ul        U$ ra   )ræ   r=   r_  rç   s         re   rï   Ú_mpc.__neg__ž  rê   rh   c                 ón   • U R                   u  pu  p4U" U5      n[        U R                  X45      Ul        U$ ra   )ræ   r>   r_  rç   s         re   r5  Ú_mpc.conjugate¤  s3   € Ø%&§Z¡ZÑ"ˆÑ"�4Ù�‹HˆÜ §¡¨Ó8ˆŒØˆrh   c                 ó,   • [        U R                  5      $ ra   )r<   r_  rÆ   s    re   rã   Ú_mpc.__nonzero__ª  s   € Ü˜aŸg™gÓ&Ð&rh   c                 ó,   • [        U R                  5      $ ra   )r:   r_  rÆ   s    re   rÏ   Ú_mpc.__hash__¯  s   € Ü˜Ÿ™Ó Ð rh   c                 ój   •  U R                   R                  U5      nU$ ! [         a	    [        s $ f = fra   )r|   r•   r–   r¢   )rc   r˜   Úys      re   Úmpc_convert_lhsÚ_mpc.mpc_convert_lhs²  s5   € ð	"Ø—‘×#Ñ# AÓ&ˆAØˆHøÜó 	"Ü!Ò!ð	"ús   ‚ Ÿ2±2c                 óú   • [        US5      (       d2  [        U[        5      (       a  gU R                  U5      nU[        L a  U$ U R
                  UR
                  :H  =(       a    U R                  UR                  :H  $ )Nr_  F)r”   r�   rÄ   r…  r¢   r3  r4  rö   s     re   r  Ú_mpc.__eq__º  sa   € Ü�q˜'×"Ñ"Ü˜!œS×!Ñ!ØØ×!Ñ! !Ó$ˆAØ”NÒ"Ø�Ø�v‰v˜Ÿ™Ñ×4 A§F¡F¨a¯f©fÑ$4Ð4rh   c                 óH   • U R                  U5      nU[        L a  U$ U(       + $ ra   r  )rÇ   r™   r›   s      re   r	  Ú_mpc.__ne__Ã  r  rh   c                  ó   • [        S5      e)Nz3no ordering relation is defined for complex numbers)r–   )r,  s    re   Ú_compareÚ_mpc._compareÉ  s   € ÜÐMÓNÐNrh   c                 ó`  • U R                   u  p#u  pE[        US5      (       d]  U R                  U5      nU[        L a  U$ [        US5      (       a0  U" U5      n[	        U R
                  UR                  XE5      Ul        U$ U" U5      n[        U R
                  UR
                  XE5      Ul        U$ ©Nr_  rt   )ræ   r”   r…  r¢   rA   r_  rt   r@   r  s          re   rC  Ú_mpc.__add__Ñ  ó–   € Ø%&§Z¡ZÑ"ˆÑ"�4Ü�q˜'×"Ñ"Ø×!Ñ! !Ó$ˆAØ”NÒ"Ø�Ü�q˜'×"Ñ"Ù˜“H�Ü% a§g¡g¨q¯w©w¸ÓG�”Ø�Ù�‹HˆÜ˜!Ÿ'™' 1§7¡7¨DÓ;ˆŒØˆrh   c                 ó`  • U R                   u  p#u  pE[        US5      (       d]  U R                  U5      nU[        L a  U$ [        US5      (       a0  U" U5      n[	        U R
                  UR                  XE5      Ul        U$ U" U5      n[        U R
                  UR
                  XE5      Ul        U$ r�  )ræ   r”   r…  r¢   rC   r_  rt   rB   r  s          re   rD  Ú_mpc.__sub__ß  r‘  rh   c                 óø  • U R                   u  p#u  pE[        US5      (       d©  [        U[        5      (       a&  U" U5      n[	        U R
                  XU5      Ul        U$ U R                  U5      nU[        L a  U$ [        US5      (       a0  U" U5      n[        U R
                  UR                  XE5      Ul        U$ U R                  U5      nU" U5      n[        U R
                  UR
                  XE5      Ul        U$ r�  )ræ   r”   r�   r   rF   r_  r…  r¢   rE   rt   rD   r  s          re   rE  Ú_mpc.__mul__í  sÕ   € Ø%&§Z¡ZÑ"ˆÑ"�4Ü�q˜'×"Ñ"Ü˜!œY×'Ñ'Ù˜“H�Ü% a§g¡g¨q¸ÓA�”Ø�Ø×!Ñ! !Ó$ˆAØ”NÒ"Ø�Ü�q˜'×"Ñ"Ù˜“H�Ü% a§g¡g¨q¯w©w¸ÓG�”Ø�Ø×!Ñ! !Ó$ˆAÙ�‹HˆÜ˜!Ÿ'™' 1§7¡7¨DÓ;ˆŒØˆrh   c                 ó`  • U R                   u  p#u  pE[        US5      (       d]  U R                  U5      nU[        L a  U$ [        US5      (       a0  U" U5      n[	        U R
                  UR                  XE5      Ul        U$ U" U5      n[        U R
                  UR
                  XE5      Ul        U$ r�  )ræ   r”   r…  r¢   rH   r_  rt   rG   r  s          re   rF  Ú_mpc.__div__   r‘  rh   c                 ó¤  • U R                   u  p#u  pE[        U[        5      (       a&  U" U5      n[        U R                  XU5      Ul        U$ U R                  U5      nU[        L a  U$ U" U5      n[        US5      (       a(  [        U R                  UR                  XE5      Ul        U$ [        U R                  UR                  XE5      Ul        U$ rò   )ræ   r�   r   rK   r_  r…  r¢   r”   rJ   rt   rI   r  s          re   rH  Ú_mpc.__pow__  s³   € Ø%&§Z¡ZÑ"ˆÑ"�4Ü�aœ×#Ñ#Ù�C“ˆAÜ! !§'¡'¨1°HÓ=ˆAŒGØˆHØ×Ñ˜aÓ ˆØ”ÒØˆHÙ�‹HˆÜ�1�g×ÑÜ! !§'¡'¨1¯7©7°DÓCˆAŒGð ˆô ˜aŸg™g q§w¡w°Ó?ˆAŒGØˆrh   c                 óB   • U R                  U5      nU[        L a  U$ X-
  $ ra   ©r…  r¢   rö   s     re   r  Ú_mpc.__rsub__   r  rh   c                 óÚ   • U R                   u  p#u  pE[        U[        5      (       a&  U" U5      n[        U R                  XU5      Ul        U$ U R                  U5      nU[        L a  U$ X-  $ ra   )ræ   r�   r   rF   r_  r…  r¢   r  s          re   Ú__rmul__Ú_mpc.__rmul__&  sf   € Ø%&§Z¡ZÑ"ˆÑ"�4Ü�aœ×#Ñ#Ù�C“ˆAÜ! !§'¡'¨1°HÓ=ˆAŒGØˆHØ×Ñ˜aÓ ˆØ”ÒØˆHØ‰uˆrh   c                 óB   • U R                  U5      nU[        L a  U$ X-  $ ra   r›  rö   s     re   r  Ú_mpc.__rdiv__1  r  rh   c                 óB   • U R                  U5      nU[        L a  U$ X-  $ ra   r›  rö   s     re   r  Ú_mpc.__rpow__7  r  rh   Nc                 ó:   • U R                   R                  XX#5      $ ra   r   r"  s       re   r%  Ú_mpc.ae@  r'  rh   )r_  )rz   rz   r/  ),rj   rk   rl   rm   rn   ro   rf   r1  r3  r4  r¼   rÀ   rÈ   rÌ   rà   rì   rè   rï   r5  rã   r6  rÏ   r0  r…  r  r	  rŒ  rþ   r  r  rC  rD  rE  rF  rH  Ú__radd__r  rž  r  r  Ú__truediv__Ú__rtruediv__r%  rp   ri   rh   re   r^  r^  g  sï   † ñð �	€Iô
ñ ÑEÓF€DÙÑEÓF€DòFòBòAòCòHòòòòò'ð €Hò!ð ñ"ó ð"ò5òòOð €FØ€FØ€FØ€Fòòòò&òð  €Hòò	òòð €KØ€L÷:rh   r^  c                   óÌ   • \ rS rSrS rS rS rS rS rS r	\
" S \5      r\
" S	 \	5      rSS
 jrS rS rS rS rSS jrSS jrSS jrSS jr\S 5       rS rS rS rSrg)ÚPythonMPContextiG  c                 ó  • S[         /U l        [        S[        40 5      U l        [        S[
        40 5      U l        U R                  [        U R                  /U R                  l        U R                  [        U R                  /U R                  l        X R                  l	        X R                  l	        [        S[        40 5      U l        U R                  [        U R                  /U R                  l        X R                  l	        g )Né5   ra  rŸ   r’   )r   r}   r   rr   ra  r^  rŸ   r€   ræ   r|   rJ  r’   ©Úctxs    re   Ú__init__ÚPythonMPContext.__init__I  s¸   € Ø ¤-Ð0ˆÔÜ�uœt˜g rÓ*ˆŒÜ�uœt˜g rÓ*ˆŒØŸG™G¤S¨#×*<Ñ*<Ð=ˆ�‰ÔØŸG™G¤S¨#×*<Ñ*<Ð=ˆ�‰ÔØ�‰ŒØ�‰ŒÜ˜J¬¨°bÓ9ˆŒØ!$§¡¬#¨s×/AÑ/AÐ Bˆ�‰ÔØ"�‰Õrh   c                 ó<   • [        U R                  5      nXl        U$ ra   )r€   ra  rt   ©r®  rŠ   rš   s      re   r¨   ÚPythonMPContext.make_mpfU  ó   € Ü�—‘‹LˆØŒØˆrh   c                 ó<   • [        U R                  5      nXl        U$ ra   )r€   rŸ   r_  r²  s      re   Úmake_mpcÚPythonMPContext.make_mpcZ  r´  rh   c                 óL   • S=U l         U R                  S'   SU l        SU l        g )Nr¬  rz   rZ  F)Ú_precr}   Ú_dpsÚtrap_complexr­  s    re   ÚdefaultÚPythonMPContext.default_  s(   € Ø,.Ð.ˆŒ	�C×&Ñ& qÑ)ØˆŒØ ˆÕrh   c                 óv   • [        S[        U5      5      =U l        U R                  S'   [	        U5      U l        g )Nr   rz   )ÚmaxrÒ   r¹  r}   r   rº  ©r®  Úns     re   Ú	_set_precÚPythonMPContext._set_precd  s.   € Ü,/°´3°q³6«NÐ:ˆŒ	�C×&Ñ& qÑ)Ü˜q“>ˆ�rh   c                 óv   • [        U5      =U l        U R                  S'   [        S[	        U5      5      U l        g ri  )r   r¹  r}   r¿  rÒ   rº  rÀ  s     re   Ú_set_dpsÚPythonMPContext._set_dpsh  s.   € Ü,7¸«NÐ:ˆŒ	�C×&Ñ& qÑ)Ü�qœ#˜a›&“>ˆ�rh   c                 ó   • U R                   $ ra   )r¹  r­  s    re   r°   ÚPythonMPContext.<lambda>l  s   €  §	¢	rh   c                 ó   • U R                   $ ra   )rº  r­  s    re   r°   rÈ  m  s   € ˜sŸxšxrh   c                 ó–  • [        U5      U R                  ;   a  U$ [        U[        5      (       a  U R	                  [        U5      5      $ [        U[        5      (       a  U R	                  [        U5      5      $ [        U[        5      (       a9  U R                  [        UR                  5      [        UR                  5      45      $ [        U5      R                  S:X  a  U R                  U5      $ [        U[        R                  5      (       a=  [         R"                  " [%        UR&                  5      [%        UR(                  5      5      nU R*                  u  p4[        U[         R"                  5      (       a)  UR,                  u  pVU R	                  [/        XVU5      5      $ U(       a3  [        U[0        5      (       a   [3        XU5      nU R	                  U5      $ [7        US5      (       a  U R	                  UR8                  5      $ [7        US5      (       a  U R                  UR:                  5      $ [7        US5      (       a   U R=                  UR?                  X45      5      $ [        U5      R                  S:X  a  U R	                  [A        XU5      5      $ U RC                  X5      $ !    GNc= f! [4         a     Nâf = f!    N-= f)a3  
Converts *x* to an ``mpf`` or ``mpc``. If *x* is of type ``mpf``,
``mpc``, ``int``, ``float``, ``complex``, the conversion
will be performed losslessly.

If *x* is a string, the result will be rounded to the present
working precision. Strings representing fractions or complex
numbers are permitted.

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = False
    >>> mpmathify(3.5)
    mpf('3.5')
    >>> mpmathify('2.1')
    mpf('2.1000000000000001')
    >>> mpmathify('3/4')
    mpf('0.75')
    >>> mpmathify('2+3j')
    mpc(real='2.0', imag='3.0')

Únumpyrt   r_  r�   Údecimal)"r   Útypesr�   r   r¨   r   r‘   r   rß   r¶  r3  r4  rk   Ú	npconvertÚnumbersÚRationalr[   r    rÒ   Ú	numeratorÚdenominatorr}   r¡   r   r   r   rƒ   r”   rt   r_  r•   r�   r   Ú_convert_fallback)r®  r˜   Ústringsrv   rx   r£   r¤   rt   s           re   r•   ÚPythonMPContext.converto  s  € ô, �‹7�c—i‘iÓ¨ Ü�aœ×#Ñ#¨C¯L©L¼À!»Ó,EÐ%EÜ�aœ×Ñ¨¯©´ZÀ³]Ó(CÐ!CÜ�aœ×!Ñ!Ø—<‘<¤¨A¯F©FÓ!3´ZÀÇÁÓ5GÐ HÓIÐIÜ�‹7×Ñ Ó(°·±¸qÓ1AÐ*AÜ�aœ×)Ñ)×*Ñ*Ü—\’\¤# a§k¡kÓ"2´C¸¿¹Ó4FÓG�à×+Ñ+‰ˆÜ�aœŸ™×&Ñ&Ø—7‘7‰DˆAØ—<‘<¤¨a°DÓ 9Ó:Ð:Þ”z !¤Z×0Ñ0ðÜ  ¨(Ó3�Ø—|‘| EÓ*Ð*ô �1�g×Ñ s§|¡|°A·G±GÓ'<Ð <Ü�1�g×Ñ s§|¡|°A·G±GÓ'<Ð <Ü�1�j×!Ñ!Ø—;‘;˜qŸz™z¨$Ó9Ó:Ð:Ü�‹7×Ñ Ó*ØŸ™¤\°!¸8Ó%DÓEÐEà×$Ñ$ QÓ0Ð0øð% ’Dûô ó Ùðûð ‘Dús*   Ä=J, ÇJ4 Ê K Ê,J1Ê4
KË KËKc                 óÀ  • SSK n[        XR                  5      (       a#  U R                  [	        [        U5      5      5      $ [        XR                  5      (       a  U R                  [        U5      5      $ [        XR                  5      (       a9  U R                  [        UR                  5      [        UR                  5      45      $ [        S[        U5      -   5      e)zF
Converts *x* to an ``mpf`` or ``mpc``. *x* should be a numpy
scalar.
rz   Nr�   )rË  r�   Úintegerr¨   r   rÒ   Úfloatingr   Úcomplexfloatingr¶  r3  r4  r–   r—   )r®  r˜   rA  s      re   rÎ  ÚPythonMPContext.npconvert¡  sš   € ó
 	Ü�aŸ™×$Ñ$¨S¯\©\¼(Ä3ÀqÃ6Ó:JÓ-KÐ&KÜ�aŸ™×%Ñ%¨c¯l©l¼<È»?Ó.KÐ'KÜ�a×+Ñ+×,Ñ,Ø—<‘<¤¨a¯f©fÓ!5´|ÀAÇFÁFÓ7KÐ LÓMÐMÜÐ1´D¸³GÑ;Ó<Ð<rh   c                 óš  • [        US5      (       a  UR                  [        :H  $ [        US5      (       a  [        UR                  ;   $ [	        U[
        5      (       d  [	        U[        R                  5      (       a  gU R                  U5      n[        US5      (       d  [        US5      (       a  U R                  U5      $ [        S5      e)a:  
Return *True* if *x* is a NaN (not-a-number), or for a complex
number, whether either the real or complex part is NaN;
otherwise return *False*::

    >>> from mpmath import *
    >>> isnan(3.14)
    False
    >>> isnan(nan)
    True
    >>> isnan(mpc(3.14,2.72))
    False
    >>> isnan(mpc(3.14,nan))
    True

rt   r_  Fzisnan() needs a number as input)r”   rt   r!   r_  r�   r   r[   r    r•   Úisnanr–   )r®  r˜   s     re   rÜ  ÚPythonMPContext.isnan­  sš   € ô" �1�g×ÑØ—7‘7œd‘?Ð"Ü�1�g×ÑÜ˜1Ÿ7™7‘?Ð"Ü�aœ×#Ñ#¤z°!´X·\±\×'BÑ'BØØ�K‰K˜‹NˆÜ�1�g×Ñ¤'¨!¨W×"5Ñ"5Ø—9‘9˜Q“<ÐÜÐ9Ó:Ð:rh   c                 óæ  • [        US5      (       a  UR                  [        [        4;   $ [        US5      (       a3  UR                  u  p#U[        [        4;   =(       d    U[        [        4;   $ [        U[        5      (       d  [        U[        R                  5      (       a  gU R                  U5      n[        US5      (       d  [        US5      (       a  U R                  U5      $ [        S5      e)a+  
Return *True* if the absolute value of *x* is infinite;
otherwise return *False*::

    >>> from mpmath import *
    >>> isinf(inf)
    True
    >>> isinf(-inf)
    True
    >>> isinf(3)
    False
    >>> isinf(3+4j)
    False
    >>> isinf(mpc(3,inf))
    True
    >>> isinf(mpc(inf,3))
    True

rt   r_  Fzisinf() needs a number as input)r”   rt   r   r    r_  r�   r   r[   r    r•   Úisinfr–   )r®  r˜   ÚreÚims       re   rß  ÚPythonMPContext.isinfÉ  s¹   € ô( �1�g×ÑØ—7‘7œt¤U˜mÑ+Ð+Ü�1�g×ÑØ—W‘W‰FˆBØœ$¤˜Ñ&×=¨"´´u°Ñ*=Ð=Ü�aœ×#Ñ#¤z°!´X·\±\×'BÑ'BØØ�K‰K˜‹NˆÜ�1�g×Ñ¤'¨!¨W×"5Ñ"5Ø—9‘9˜Q“<ÐÜÐ9Ó:Ð:rh   c                 ó,  • [        US5      (       a  [        UR                  S   5      $ [        US5      (       aM  UR                  u  p#[        US   5      n[        US   5      nU[        :X  a  U$ U[        :X  a  U$ U=(       a    U$ [        U[        5      (       d  [        U[        R                  5      (       a  [        U5      $ U R                  U5      n[        US5      (       d  [        US5      (       a  U R                  U5      $ [        S5      e)a  
Determine whether *x* is "normal" in the sense of floating-point
representation; that is, return *False* if *x* is zero, an
infinity or NaN; otherwise return *True*. By extension, a
complex number *x* is considered "normal" if its magnitude is
normal::

    >>> from mpmath import *
    >>> isnormal(3)
    True
    >>> isnormal(0)
    False
    >>> isnormal(inf); isnormal(-inf); isnormal(nan)
    False
    False
    False
    >>> isnormal(0+0j)
    False
    >>> isnormal(0+3j)
    True
    >>> isnormal(mpc(2,nan))
    False
rt   r   r_  z"isnormal() needs a number as input)r”   Úboolrt   r_  r   r�   r   r[   r    r•   Úisnormalr–   )r®  r˜   rà  rá  Ú	re_normalÚ	im_normals         re   rå  ÚPythonMPContext.isnormalé  sß   € ô0 �1�g×ÑÜ˜Ÿ™ ™
Ó#Ð#Ü�1�g×ÑØ—W‘W‰FˆBÜ˜R ™U›ˆIÜ˜R ™U›ˆIØ”U‹{ 9Ð,Ø”U‹{ 9Ð,Ø×* Ð*Ü�aœ×#Ñ#¤z°!´X·\±\×'BÑ'BÜ˜“7ˆNØ�K‰K˜‹NˆÜ�1�g×Ñ¤'¨!¨W×"5Ñ"5Ø—<‘< “?Ð"ÜÐ<Ó=Ð=rh   c                 óÞ  • [        U[        5      (       a  g[        US5      (       a8  UR                  =u  p4pVn[	        U=(       a    US:¬  =(       d	    U[
        :H  5      $ [        US5      (       ay  UR                  u  p‰Uu  p«pÍU	u  pïnnU=(       a    US:¬  =(       d	    U[
        :H  nU(       a)  U=(       a    US:¬  =(       d	    U	[
        :H  nU=(       a    U$ U=(       a	    U	[
        :H  $ [        U[        R                  5      (       a  UR                  u  nnUU-  S:H  $ U R                  U5      n[        US5      (       d  [        US5      (       a  U R                  X5      $ [        S5      e)ar  
Return *True* if *x* is integer-valued; otherwise return
*False*::

    >>> from mpmath import *
    >>> isint(3)
    True
    >>> isint(mpf(3))
    True
    >>> isint(3.2)
    False
    >>> isint(inf)
    False

Optionally, Gaussian integers can be checked for::

    >>> isint(3+0j)
    True
    >>> isint(3+2j)
    False
    >>> isint(3+2j, gaussian=True)
    True

Trt   rz   r_  zisint() needs a number as input)r�   r   r”   rt   rä  r   r_  r[   r    r¡   r•   Úisintr–   )r®  r˜   Úgaussianr†   r‡   rˆ   r‰   Úxvalrà  rá  ÚrsignÚrmanÚrexpÚrbcÚisignÚimanÚiexpÚibcÚre_isintÚim_isintr£   r¤   s                         re   rê  ÚPythonMPContext.isint  s7  € ô2 �aœ×#Ñ#ØÜ�1�g×ÑØ()¯©Ð/ÑˆD�s Ü˜×) ¨¡×;¨d´e©mÓ<Ð<Ü�1�g×ÑØ—W‘W‰FˆBØ%'Ñ"ˆE˜Ø%'Ñ"ˆE˜˜sØ×* ¨¡×:¨r´U©{ˆHÞØ ×. T¨Q¡Y×>°2¼±;�Ø×, HÐ,Ø×+ ¤e¡Ð+Ü�aœŸ™×&Ñ&Ø—7‘7‰DˆAˆqØ�q‘5˜A‘:ÐØ�K‰K˜‹NˆÜ�1�g×Ñ¤'¨!¨W×"5Ñ"5Ø—9‘9˜QÓ)Ð)ÜÐ9Ó:Ð:rh   c                 óú  • U R                   u  pE/ n/ nU GHž  nS=pš[        US5      (       a  UR                  n	Ou[        US5      (       a  UR                  u  pšOUU R	                  U5      n[        US5      (       a  UR                  n	O&[        US5      (       a  UR                  u  pšO[
        eU
(       aÇ  U(       au  U(       a6  UR                  [        X™5      5        UR                  [        Xª5      5        Må  [        Xš4SUS-   5      u  pšUR                  U	5        UR                  U
5        GM  U(       a  UR                  [        Xš4U5      5        GMC  UR                  U	5        UR                  U
5        GMh  U(       a  [        X™5      n	OU(       a  [        U	5      n	UR                  U	5        GM¡     [        XdXR5      nU(       a  U R                  U[        XtU5      45      nU$ U R                  U5      nU$ )aø  
Calculates a sum containing a finite number of terms (for infinite
series, see :func:`~mpmath.nsum`). The terms will be converted to
mpmath numbers. For len(terms) > 2, this function is generally
faster and produces more accurate results than the builtin
Python function :func:`sum`.

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = False
    >>> fsum([1, 2, 0.5, 7])
    mpf('10.5')

With squared=True each term is squared, and with absolute=True
the absolute value of each term is used.
rz   rt   r_  ry   é
   )r}   r”   rt   r_  r•   rb   Úappendr'   rK   r?   r"   r5   r¶  r¨   )r®  ÚtermsÚabsoluteÚsquaredrv   rÛ   r3  r4  ÚtermÚrevalÚimvalrÇ   s               re   ÚfsumÚPythonMPContext.fsum@  s—  € ð  ×&Ñ&‰	ˆØˆØˆÜˆDØÐˆEÜ�t˜W×%Ñ%ØŸ
™
‘Ü˜˜w×'Ñ'Ø#Ÿz™z‘��uà—{‘{ 4Ó(�Ü˜4 ×)Ñ)Ø ŸJ™J‘EÜ˜T 7×+Ñ+Ø#'§:¡:‘L�E˜5ä-Ð-ÞÞÞØŸ™¤G¨EÓ$8Ô9ØŸ™¤G¨EÓ$8Ö9ä'2°E°=ÀÀ4ÈÁ7Ó'K™˜ØŸ™ EÔ*ØŸ™ E×*ÞØ—K‘K¤¨¨°tÓ <×=à—K‘K Ô&Ø—K‘K ×&æÜ# EÓ1‘EÞÜ# E›N�EØ—‘˜E×"ñC ôD �D Ó.ˆÞØ—‘˜a¤¨°SÓ!9Ð:Ó;ˆAð ˆð —‘˜Q“ˆAØˆrh   Nc           	      ó†  • Ub  [        X5      nU R                  u  pE/ n/ n[        nU R                  U R                  4n	U GH8  u  p«[        U
5      U	;  a  U R                  U
5      n
[        U5      U	;  a  U R                  U5      nU" U
S5      nU" US5      nU(       a8  U(       a1  UR                  [        U
R                  UR                  5      5        M—  U" U
S5      nU" US5      nU(       am  U(       af  U
R                  nUR                  u  nnU(       a  [        U5      nUR                  [        UU5      5        UR                  [        UU5      5        GM  U(       a[  U(       aT  U
R                  u  nnUR                  nUR                  [        UU5      5        UR                  [        UU5      5        GM  U(       a¯  U(       a¨  U
R                  u  nnUR                  u  nnU(       a  [        U5      nUR                  [        UU5      5        UR                  [        [        UU5      5      5        UR                  [        UU5      5        UR                  [        UU5      5        GM5  [        e   [        XdU5      nU(       a  U R                  U[        XtU5      45      nU$ U R                  U5      nU$ )aN  
Computes the dot product of the iterables `A` and `B`,

.. math ::

    \sum_{k=0} A_k B_k.

Alternatively, :func:`~mpmath.fdot` accepts a single iterable of pairs.
In other words, ``fdot(A,B)`` and ``fdot(zip(A,B))`` are equivalent.
The elements are automatically converted to mpmath numbers.

With ``conjugate=True``, the elements in the second vector
will be conjugated:

.. math ::

    \sum_{k=0} A_k \overline{B_k}

**Examples**

    >>> from mpmath import *
    >>> mp.dps = 15; mp.pretty = False
    >>> A = [2, 1.5, 3]
    >>> B = [1, -1, 2]
    >>> fdot(A, B)
    mpf('6.5')
    >>> list(zip(A, B))
    [(2, 1), (1.5, -1), (3, 2)]
    >>> fdot(_)
    mpf('6.5')
    >>> A = [2, 1.5, 3j]
    >>> B = [1+j, 3, -1-j]
    >>> fdot(A, B)
    mpc(real='9.5', imag='-1.0')
    >>> fdot(A, B, conjugate=True)
    mpc(real='3.5', imag='-5.0')

rt   r_  )Úzipr}   r”   ra  rŸ   r   r•   rú  r'   rt   r_  r$   rb   r5   r¶  r¨   )r®  ÚAÚBr5  rv   rÛ   r3  r4  Úhasattr_rÍ  rš   r›   Úa_realÚb_realÚ	a_complexÚ	b_complexÚavalÚbreÚbimÚareÚaimÚbvalrÇ   s                          re   ÚfdotÚPythonMPContext.fdot|  s(  € ðN ‰=Ü�A“	ˆAØ×&Ñ&‰	ˆØˆØˆÜˆØ—‘˜#Ÿ'™'Ð"ˆÜ‰DˆAÜ�A‹w˜eÓ#¨¯©°Q« QÜ�A‹w˜eÓ#¨¯©°Q« QÙ˜a Ó)ˆFÙ˜a Ó)ˆFÞž&Ø—‘œG A§G¡G¨Q¯W©WÓ5Ô6ÙÙ   GÓ,ˆIÙ   GÓ,ˆIÞž)Ø—w‘w�ØŸ7™7‘��SÞÜ! #›,�CØ—‘œG D¨#Ó.Ô/Ø—‘œG D¨#Ó.×/ÞžIØŸ7™7‘��SØ—w‘w�Ø—‘œG C¨Ó.Ô/Ø—‘œG C¨Ó.×/ÞžyàŸ7™7‘��SØŸ7™7‘��SÞÜ! #›,�CØ—‘œG C¨Ó-Ô.Ø—‘œG¤G¨C°Ó$5Ó6Ô7Ø—‘œG C¨Ó-Ô.Ø—‘œG C¨Ó-×.ä)Ð)ñC ôD �D Ó$ˆÞØ—‘˜a¤¨°SÓ!9Ð:Ó;ˆAð ˆð —‘˜Q“ˆAØˆrh   c                 óŽ   ^ ^^^• U UUU4S jnTR                   SS m[        R                  R                  TSU-  5      Ul        U$ )a  
Given a low-level mpf_ function, and optionally similar functions
for mpc_ and mpi_, defines the function as a context method.

It is assumed that the return type is the same as that of
the input; the exception is that propagation from mpf to mpc is possible
by raising ComplexResult.

c                 óŠ  >• [        U 5      TR                  ;  a  TR                  U 5      n TR                  u  p#U(       a8  UR	                  SU5      nSU;   a  [        US   5      nUR	                  SU5      n[        U S5      (       a#   TR                  T" U R                  X#5      5      $ [        U S5      (       a"  TR                  T" U R                  X#5      5      $ [        T< S[        U 5      < 35      e! [         a=    TR                  (       a  e TR                  T" U R                  [        4X#5      5      s $ f = f)Nrv   rw   rx   rt   r_  z of a )r   rÍ  r•   r}   r~   r   r”   r¨   rt   r   r»  r¶  r   r_  rb   )r˜   r…   rv   rx   r®  Úmpc_fÚmpf_fr<  s       €€€€re   ÚfÚ/PythonMPContext._wrap_libmp_function.<locals>.fÝ  s  ø€ Ü�A‹w˜cŸi™iÓ'Ø—K‘K “N�Ø ×/Ñ/‰NˆDÞØ—z‘z &¨$Ó/�Ø˜F“?Ü& v¨e¡}Ó5�DØ!Ÿ:™: j°(Ó;�Ü�q˜'×"Ñ"ðQØŸ<™<©¨a¯g©g°tÓ(FÓGÐGô ˜˜G×$Ñ$Ø—|‘|¡E¨!¯'©'°4Ó$BÓCÐCÜ%³d¼DÀ½GÐ&DÓEÐEøô %ó Qà×'×'ØØŸ<™<©¨q¯w©w¼Ð.>ÀÓ(OÓPÒPð	Qús   Â!C; Ã;AEÅEr{   NzComputes the %s of x)rj   r\   Ú__dict__r~   rn   )r®  r  r  Úmpi_fÚdocr  r<  s   ```   @re   Ú_wrap_libmp_functionÚ$PythonMPContext._wrap_libmp_functionÓ  sF   û€ ÷	Fð 	Fð( �~‰~˜a˜bÐ!ˆÜ!×*Ñ*×.Ñ.¨tÐ5KÈcÑ5QÓRˆŒ	Øˆrh   c                 óœ   ^• U(       a  U4S jnOTn[         R                  R                  UTR                  5      Ul        [	        XU5        g )Nc                 óØ   >• U R                   nU Vs/ s H
  oC" U5      PM     nnU R                  n U =R                  S-  sl        T" U /UQ70 UD6nXPl        U7$ s  snf ! XPl        f = f)Nrù  )r•   rv   )r®  r,  r…   r•   rš   rv   Úretvalr  s          €re   Ú	f_wrappedÚ0PythonMPContext._wrap_specfun.<locals>.f_wrappedù  sm   ø€ ØŸ+™+�Ù,0Ó1ªD q˜ ž
©D�Ð1Ø—x‘x�ð$Ø—H’H ‘N•HÙ˜sÐ4 TÒ4¨VÑ4�Fà#”HØ�w�ùò 2øð  $•Hús   ’A²!A! Á!A))r\   r  r~   rn   Úsetattr)rc   r<  r  Úwrapr"  s     `  re   Ú_wrap_specfunÚPythonMPContext._wrap_specfunö  s;   ø€ æö	ð ˆIÜ)×2Ñ2×6Ñ6°t¸Q¿Y¹YÓGˆ	ÔÜ�˜9Õ%rh   c                 óä  • [        US5      (       a  UR                  u  p#U[        :w  a  US4$ GOF[        US5      (       a  UR                  nGO'[	        U5      [
        ;   a  [        U5      S4$ S n[        U[        5      (       a  Uu  pEOd[        US5      (       a  UR                  u  pEOD[        U[        5      (       a/  SU;   a)  UR                  S5      u  pE[        U5      n[        U5      nUb#  UW-  (       d  XE-  S4$ U R                  XE5      S4$ U R                  U5      n[        US5      (       a  UR                  u  p#U[        :w  a  US4$ O"[        US5      (       a  UR                  nOUS4$ Uu  pgp‰U(       ad  US	:¼  aI  U(       a  U* nUS
:¼  a  [        U5      U-  S4$ US	:¼  a#  [        U5      SU* -  pTU R                  XE5      S4$ U R                  U5      nUS4$ U(       d  gUS4$ )Nr_  ÚCrt   ÚZr¡   Ú/ÚQÚUéüÿÿÿrz   r   ÚR)rz   r*  )r”   r_  r   rt   r   r   rÒ   r�   r�   r¡   r   Úsplitr    r•   r¨   )
r®  r˜   rŠ   rá  r£   r¤   r†   r‡   rˆ   r‰   s
             re   Ú_convert_paramÚPythonMPContext._convert_param  sÔ  € Ü�1�g×ÑØ—G‘G‰EˆAØ”U‹{Ø˜#�v�ñ ä�Q˜× Ñ Ø—‘ŠAä�A‹wœ)Ó#Ü˜1“v˜s�{Ð"ØˆAÜ˜!œU×#Ñ#Ø‘��1Ü˜˜G×$Ñ$Ø—w‘w‘��1Ü˜Aœz×*Ñ*¨s°a«xØ—w‘w˜s“|‘�Ü˜“F�Ü˜“F�Ø‰}Ø˜1—uØ™6 3˜;Ð&Ø—w‘w˜q“| SÐ(Ð(Ø—‘˜A“ˆAÜ�q˜'×"Ñ"ØŸ™‘�Øœ“;Ø˜c˜6�Mð ä˜˜G×$Ñ$Ø—G‘G‘à˜#�v�ØÑˆ�3ÞØ�b‹yÞØ˜$�CØ˜!“8Ü˜s›8 s™?¨CÐ/Ð/Ø˜"“9Ü˜s›8 a¨3¨$¡i�qØŸ7™7 1›<¨Ð,Ð,Ø—‘˜Q“ˆAØ�c�6ˆMÞØà�c�6ˆMrh   c                 ó¦   • Uu  p#pEU(       a  XE-   $ U[         :X  a  U R                  $ U[        :X  d
  U[        :X  a  U R                  $ U R
                  $ ra   )r   Úninfr   r    ÚinfÚnan)r®  r˜   r†   r‡   rˆ   r‰   s         re   Ú_mpf_magÚPythonMPContext._mpf_mag9  sE   € ØÑˆ�3ÞØ‘6ˆMØ”‹:Ø—8‘8ˆOØ”‹9˜œU›
Ø—7‘7ˆNØ�w‰wˆrh   c                 ó:  • [        US5      (       a  U R                  UR                  5      $ [        US5      (       aq  UR                  u  p#U[        :X  a  U R                  U5      $ U[        :X  a  U R                  U5      $ S[        U R                  U5      U R                  U5      5      -   $ [        U[        5      (       a'  U(       a  [        [        U5      5      $ U R                  $ [        U[        R                  5      (       aD  UR                  u  pEU(       a#  S[        [        U5      5      -   [        U5      -
  $ U R                  $ U R                  U5      n[        US5      (       d  [        US5      (       a  U R                  U5      $ [!        S5      e)a/  
Quick logarithmic magnitude estimate of a number. Returns an
integer or infinity `m` such that `|x| <= 2^m`. It is not
guaranteed that `m` is an optimal bound, but it will never
be too large by more than 2 (and probably not more than 1).

**Examples**

    >>> from mpmath import *
    >>> mp.pretty = True
    >>> mag(10), mag(10.0), mag(mpf(10)), int(ceil(log(10,2)))
    (4, 4, 4, 4)
    >>> mag(10j), mag(10+10j)
    (4, 5)
    >>> mag(0.01), int(ceil(log(0.01,2)))
    (-6, -6)
    >>> mag(0), mag(inf), mag(-inf), mag(nan)
    (-inf, +inf, +inf, nan)

rt   r_  r   zrequires an mpf/mpc)r”   r7  rt   r_  r   r¿  r�   r   r6   Úabsr4  r[   r    r¡   r•   Úmagr–   )r®  r˜   rp  rq  r£   r¤   s         re   r;  ÚPythonMPContext.magC  s5  € ô* �1�g×ÑØ—<‘< §¡Ó(Ð(Ü�Q˜× Ñ Ø—7‘7‰DˆAØ”E‹zØ—|‘| A“Ð&Ø”E‹zØ—|‘| A“Ð&Ø”S˜Ÿ™ a›¨#¯,©,°q«/Ó:Ñ:Ð:Ü˜œ9×%Ñ%ÞÜ¤ A£Ó'Ð'Ø—8‘8ˆOÜ˜œ8Ÿ<™<×(Ñ(Ø—7‘7‰DˆAÞØœ8¤C¨£FÓ+Ñ+¬h°q«kÑ9Ð9Ø—8‘8ˆOà—‘˜A“ˆAÜ�q˜'×"Ñ"¤g¨a°×&9Ñ&9Ø—w‘w˜q“zÐ!äÐ 5Ó6Ð6rh   ri   )T)F)FF)NF)NNz<no doc>)rj   rk   rl   rm   r¯  r¨   r¶  r¼  rÂ  rÅ  r1  rv   rw   r•   rÎ  rÜ  rß  rå  rê  r  r  r  r0  r&  r1  r7  r;  rp   ri   rh   re   rª  rª  G  s•   † ò
#òò
ò
!ò
"ò"ñ Ñ)¨9Ó5€DÙ
Ñ'¨Ó
2€Cô01òd
=ò;ò8;ò@&>ôP-;ô^:ôxUôn ðF ñ&ó ð&ò"/òbõ,7rh   rª  rz   N)rL  rL  rL  )}Úlibmp.backendr   r   Úlibmpr   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,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   rL  r[   r\   rM  rf   r€   r^   rr   r9  Ú
return_mpfÚ
return_mpcÚmpf_pow_samerB  r  rC  rD  rE  rF  rG  rH  r¦  rž  r§  r  r¨  rJ  r^  rß   rž   rª  rÏ  ÚComplexÚregisterÚRealÚImportErrorri   rh   re   Ú<module>rF     sx  ð÷ -÷÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ñ õ. Ý à‡n�n€ô"�ô "ôC)ˆ9ô C)ðJ€ð< =€
Ø<�
ó “:ð€ôñ ˜ØØ*Ø9ó;€„ñ
 ˜Ø/°*Ñ<Ø:¸ZÑGØ3°jÑ@óB€„ñ
 ˜Ø/°*Ñ<Ø:¸ZÑGØ8¸:ÑEóG€„ñ
 ˜Ø/°*Ñ<Ø4°zÑAØ3°jÑ@óB€„ñ
 ˜Ø/°*Ñ<Ø:¸ZÑGØ3°jÑ@óB€„ñ
 ˜Ø/°*Ñ<Ø:¸ZÑGØ1ó3€„ñ
 ˜ØØ4°zÑAØ8¸:ÑEóG€„ð
 —‘€„Ø—‘€„Ø—<‘<€Ô Ø—M‘M€Ô ôJ�ô Jô:Z:ˆ9ô Z:ðz ˜$�€ôh7�fô h7ðb	ÛØ‡O�O×Ñ˜TÔ"Ø‡L�L×Ñ˜$ÕøØó 	Ùð	ús   È	:I ÉIÉI