§
    JŠtj·“  ã                   ó®  — d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZ d dlZm[Z[ d dlZm\Z\ e]j^        Z_ G d„ de]¦  «        Z` G d„ de`¦  «        Zad	Zbd
ZcdZddec›ded›d�Zed4d„Zf efdddd¦  «        ea_g         efddecz   decz   dedz   ¦  «        ea_h         efddecz   decz   dedz   ¦  «        ea_i         efddecz   decz   d edz   ¦  «        ea_j         efd!d"ecz   d#ecz   d$edz   ¦  «        ea_k         efd%d&ecz   d'ecz   d(¦  «        ea_l         efd)eed*ecz   d+edz   ¦  «        ea_m        eajh        ea_n        eajj        ea_o        eajk        ea_p        eajq        ea_r         G d,„ d-ea¦  «        Zs G d.„ d/e`¦  «        ZteuetfZv G d0„ d1e]¦  «        Zw	 d2d3lxZxexjy         z                    et¦  «         exj{         z                    ea¦  «         d3S # e|$ r Y d3S w xY w)5é   )Ú
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                   ó   — e Zd ZdZg Zd„ ZdS )Ú	mpnumericzBase class for mpf and mpc.c                 ó   — t           ‚©N)ÚNotImplementedError)ÚclsÚvals     úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/mpmath/ctx_mp_python.pyÚ__new__zmpnumeric.__new__$   s   € Ý!Ð!ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__re   © rf   rd   r^   r^   !   s.   € € € € € Ø%Ð%Ø€Ið"ð "ð "ð "ð "rf   r^   c                   ó¨  — e Zd ZdZdgZefd„Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
 ed„ ¦  «        Z ed„ ¦  «        Z ed	„ ¦  «        Z ed
„ ¦  «        Z ed„ ¦  «        Z ed„ ¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&d!„ Z'd"„ Z(d#„ Z)d$„ Z*d%„ Z+d&„ Z,d+d(„Z-d)„ Z.d*„ Z/d'S ),Ú_mpfz¡
    An mpf instance holds a real-valued floating-point number. mpf:s
    work analogously to Python floats, but support arbitrary-precision
    arithmetic.
    Ú_mpf_c                 óZ  — | j         j        \  }}|rE|                     d|¦  «        }d|v rt          |d         ¦  «        }|                     d|¦  «        }t	          |¦  «        | u r<|j        \  }}}}|s|r|S t          | ¦  «        }	t          ||||||¦  «        |	_        |	S t	          |¦  «        t          u r·t          |¦  «        dk    r4t          | ¦  «        }	t          |d         |d         ||¦  «        |	_        |	S t          |¦  «        dk    rV|t          t          t          fvr(|\  }}}}t          |t          |¦  «        ||||¦  «        }t          | ¦  «        }	||	_        |	S t          ‚t          | ¦  «        }	t!          |                      |||¦  «        ||¦  «        |	_        |	S )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   Útypero   Únewr   ÚtupleÚlenr   r   r    r!   r   Ú
ValueErrorr#   Úmpf_convert_arg)
rb   rc   Úkwargsrq   rs   ÚsignÚmanÚexpÚbcÚvs
             rd   re   z_mpf.__new__/   s£  € ð œÔ3‰ˆˆhØð 	8Ø—:’:˜f dÑ+Ô+ˆDØ˜ˆˆÝ" 6¨%¤=Ñ1Ô1�Ø—z’z *¨hÑ7Ô7ˆHÝ�‰9Œ9˜ÐÐØ!$¤ÑˆD�#�s˜BØð ˜Sð Ø�
Ý�C‘”ˆAÝ  c¨3°°D¸(ÑCÔCˆAŒGØˆHÝ�#‰YŒY�%ÐÐÝ�3‰xŒx˜1Š}ˆ}Ý˜‘H”H�Ý& s¨1¤v¨s°1¬v°t¸XÑFÔF�”Ø�Ý�3‰xŒx˜1Š}ˆ}Ø�t¥U­DÐ1Ð1Ð1Ø),Ñ&�D˜#˜s BÝ# D­#¨c©(¬(°C¸¸TÀ8ÑLÔL�CÝ˜‘H”H�Ø�”Ø�ÝÐå�C‘”ˆAÝ˜c×1Ò1°#°t¸XÑFÔFÈÈhÑWÔWˆAŒGØˆHrf   c                 ó¶  — t          |t          ¦  «        rt          |¦  «        S t          |t          ¦  «        rt	          |¦  «        S t          |t
          ¦  «        rt          |||¦  «        S t          || j        j        ¦  «        r| 	                    ||¦  «        S t          |d¦  «        r|j        S t          |d¦  «        rE| j                             |                     ||¦  «        ¦  «        }t          |d¦  «        r|j        S t          |d¦  «        r!|j        \  }}||k    r|S t          d¦  «        ‚t!          dt#          |¦  «        z   ¦  «        ‚)Nro   Ú_mpmath_Ú_mpi_z,can only create mpf from zero-width intervalúcannot create mpf from )Ú
isinstancer   r   Úfloatr   r   r   rw   ÚconstantÚfuncÚhasattrro   Úconvertr‡   rˆ   r~   Ú	TypeErrorÚrepr)rb   Úxrq   rs   ÚtÚaÚbs          rd   r   z_mpf.mpf_convert_argR   s:  € å�a�Ñ#Ô#Ð7­H°Q©K¬KÐ%7Ý�a�ÑÔÐ5­
°1©¬Ð!5Ý�a�Ñ$Ô$ÐH­X°a¸¸xÑ-HÔ-HÐ&HÝ�a˜œÔ-Ñ.Ô.ÐM°q·v²v¸dÀHÑ7MÔ7MÐ0MÝ�1�gÑÔÐ. q¤w Ý�1�jÑ!Ô!ð 	Ø”×#Ò# A§J¢J¨t°XÑ$>Ô$>Ñ?Ô?ˆAÝ�q˜'Ñ"Ô"ð Ø”w�Ý�1�gÑÔð 	MØ”7‰DˆAˆqØ�AŠvˆvØ�ÝÐKÑLÔLÐLÝÐ1µD¸±G´GÑ;Ñ<Ô<Ð<rf   c                 óT  — t          |t          ¦  «        rt          |¦  «        S t          |t          ¦  «        rt	          |¦  «        S t          |t
          ¦  «        r| j                             |¦  «        S t          |t          j	        ¦  «        r%|j
        \  }}t          ||| j        j        ¦  «        S t          |d¦  «        r|j        S t          |d¦  «        rE| j                              |j        | j        j        Ž ¦  «        }t          |d¦  «        r|j        S |S t$          S )Nro   r‡   )rŠ   r   r   r‹   r   Úcomplex_typesrw   Úmpcr[   ÚmpqÚ_mpq_r   rq   rŽ   ro   r�   r‡   rx   ÚNotImplemented)rb   r’   ÚpÚqr“   s        rd   Úmpf_convert_rhsz_mpf.mpf_convert_rhsd   s   € å�a�Ñ#Ô#Ð7­H°Q©K¬KÐ%7Ý�a�ÑÔÐ5­
°1©¬Ð!5Ý�a�Ñ'Ô'ÐB°´·²ÀÑ0BÔ0BÐ)BÝ�a�œÑ&Ô&ð 	9Ø”7‰DˆAˆqÝ   A s¤{Ô'7Ñ8Ô8Ð8Ý�1�gÑÔÐ. q¤w Ý�1�jÑ!Ô!ð 	Ø”×#Ò# J A¤J°´Ô0JÐ$KÑLÔLˆAÝ�q˜'Ñ"Ô"ð Ø”w�ØˆHÝÐrf   c                 ó�   — |                       |¦  «        }t          |¦  «        t          u r| j                             |¦  «        S |S r`   )rž   rz   r|   rw   Úmake_mpf)rb   r’   s     rd   Úmpf_convert_lhsz_mpf.mpf_convert_lhst   sA   € à×Ò Ñ"Ô"ˆÝ�‰7Œ7•eÐÐØ”;×'Ò'¨Ñ*Ô*Ð*Øˆrf   c                 ó    — | j         dd…         S )Nr   é   ©ro   ©Úselfs    rd   ú<lambda>z_mpf.<lambda>{   s   €  D¤J¨q°¨s¤O€ rf   c                 ó   — | j         d         S ©Nr   r¤   r¥   s    rd   r§   z_mpf.<lambda>|   ó   €  ¤
¨1¤€ rf   c                 ó   — | j         d         S )Nrt   r¤   r¥   s    rd   r§   z_mpf.<lambda>}   rª   rf   c                 ó   — | j         d         S )Nr£   r¤   r¥   s    rd   r§   z_mpf.<lambda>~   s   € ˜tœz¨!œ}€ rf   c                 ó   — | S r`   rl   r¥   s    rd   r§   z_mpf.<lambda>€   s   €  € rf   c                 ó   — | j         j        S r`   )rw   Úzeror¥   s    rd   r§   z_mpf.<lambda>�   s   €  ¤Ô!2€ rf   c                 ó   — | S r`   rl   r¥   s    rd   r§   z_mpf.<lambda>ƒ   s   € ˜T€ rf   c                 ó*   — t          | j        ¦  «        S r`   )r   ro   r¥   s    rd   Ú__getstate__z_mpf.__getstate__…   s   € ¥;¨t¬zÑ#:Ô#:Ð:rf   c                 ó.   — t          |¦  «        | _        d S r`   )r   ro   ©r¦   rc   s     rd   Ú__setstate__z_mpf.__setstate__†   s   € ­m¸CÑ.@Ô.@ ¤  rf   c                 ó|   — | j         j        rt          | ¦  «        S dt          | j        | j         j        ¦  «        z  S )Nz	mpf('%s'))rw   ÚprettyÚstrr   ro   Ú_repr_digits©Úss    rd   Ú__repr__z_mpf.__repr__ˆ   s6   € ØŒ9Ôð 	Ý�q‘6”6ˆMØ�V A¤G¨Q¬YÔ-CÑDÔDÑDÐDrf   c                 ó@   — t          | j        | j        j        ¦  «        S r`   )r   ro   rw   Ú_str_digitsrº   s    rd   Ú__str__z_mpf.__str__�   s   € �6 !¤'¨1¬9Ô+@ÑAÔAÐArf   c                 ó*   — t          | j        ¦  «        S r`   )r3   ro   rº   s    rd   Ú__hash__z_mpf.__hash__Ž   s   € �H Q¤WÑ-Ô-Ð-rf   c                 óD   — t          t          | j        ¦  «        ¦  «        S r`   )Úintr   ro   rº   s    rd   Ú__int__z_mpf.__int__�   s   € �3�v a¤g™œÑ/Ô/Ð/rf   c                 óD   — t          t          | j        ¦  «        ¦  «        S r`   )Úlongr   ro   rº   s    rd   Ú__long__z_mpf.__long__�   s   € �D¥¨¬¡¤Ñ1Ô1Ð1rf   c                 óN   — t          | j        | j        j        d         ¬¦  «        S ©Nr   )Úrnd)r   ro   rw   rx   rº   s    rd   Ú	__float__z_mpf.__float__‘   s    € �X a¤g°1´9Ô3KÈAÔ3NÐOÑOÔOÐOrf   c                 ó:   — t          t          | ¦  «        ¦  «        S r`   )Úcomplexr‹   rº   s    rd   Ú__complex__z_mpf.__complex__’   s   € �w¥u¨Q¡x¤xÑ0Ô0Ð0rf   c                 ó"   — | j         t          k    S r`   )ro   r   rº   s    rd   Ú__nonzero__z_mpf.__nonzero__“   s   € ˜qœw­%Ò/Ð/rf   c                 ón   — | j         \  }}\  }} ||¦  «        }t          | j        ||¦  «        |_        |S r`   )Ú_ctxdatar"   ro   ©r»   rb   r{   rq   rs   r…   s         rd   Ú__abs__z_mpf.__abs__—   ó<   € Ø%&¤ZÑ"ˆˆSÑ"�4˜ØˆC�‰HŒHˆÝ˜!œ' 4¨Ñ2Ô2ˆŒØˆrf   c                 ón   — | j         \  }}\  }} ||¦  «        }t          | j        ||¦  «        |_        |S r`   )rÒ   r#   ro   rÓ   s         rd   Ú__pos__z_mpf.__pos__�   rÕ   rf   c                 ón   — | j         \  }}\  }} ||¦  «        }t          | j        ||¦  «        |_        |S r`   )rÒ   r$   ro   rÓ   s         rd   Ú__neg__z_mpf.__neg__£   rÕ   rf   c                 ó”   — t          |d¦  «        r|j        }n |                      |¦  «        }|t          u r|S  || j        |¦  «        S ©Nro   )rŽ   ro   rž   r›   )r»   r“   r�   s      rd   Ú_cmpz	_mpf._cmp©   sT   € Ý�1�gÑÔð 	Ø”ˆAˆAà×!Ò! !Ñ$Ô$ˆAØ•NÐ"Ð"Ø�Øˆt�A”G˜QÑÔÐrf   c                 ó8   — |                       |t          ¦  «        S r`   )rÜ   r.   ©r»   r“   s     rd   Ú__cmp__z_mpf.__cmp__²   s   € ˜aŸfšf Q­Ñ0Ô0Ð0rf   c                 ó8   — |                       |t          ¦  «        S r`   )rÜ   r/   rÞ   s     rd   Ú__lt__z_mpf.__lt__³   ó   € ˜QŸVšV A¥vÑ.Ô.Ð.rf   c                 ó8   — |                       |t          ¦  «        S r`   )rÜ   r0   rÞ   s     rd   Ú__gt__z_mpf.__gt__´   râ   rf   c                 ó8   — |                       |t          ¦  «        S r`   )rÜ   r1   rÞ   s     rd   Ú__le__z_mpf.__le__µ   râ   rf   c                 ó8   — |                       |t          ¦  «        S r`   )rÜ   r2   rÞ   s     rd   Ú__ge__z_mpf.__ge__¶   râ   rf   c                 óH   — |                       |¦  «        }|t          u r|S | S r`   ©Ú__eq__r›   )r»   r“   r…   s      rd   Ú__ne__z_mpf.__ne__¸   ó(   € Ø�HŠH�Q‰KŒKˆØ•ÐÐØˆHØˆuˆrf   c                 ó   — | j         \  }}\  }}t          |¦  «        t          v r6 ||¦  «        }t          t	          |¦  «        | j        ||¦  «        |_        |S |                      |¦  «        }|t          u r|S || z
  S r`   )rÒ   rz   r   r&   r   ro   r¡   r›   ©r»   r“   rb   r{   rq   rs   r…   s          rd   Ú__rsub__z_mpf.__rsub__¾   s�   € Ø%&¤ZÑ"ˆˆSÑ"�4˜Ý�‰7Œ7•iÐÐØ��C‘”ˆAÝ�h q™kœk¨1¬7°D¸(ÑCÔCˆAŒGØˆHØ×Ò˜aÑ Ô ˆØ•ÐÐØˆHØ�1‰uˆrf   c                 óä   — | j         \  }}\  }}t          |t          ¦  «        r) ||¦  «        }t          || j        ||¦  «        |_        |S |                      |¦  «        }|t          u r|S || z  S r`   )rÒ   rŠ   r   r*   ro   r¡   r›   rï   s          rd   Ú__rdiv__z_mpf.__rdiv__É   s|   € Ø%&¤ZÑ"ˆˆSÑ"�4˜Ý�a�Ñ#Ô#ð 	Ø��C‘”ˆAÝ" 1 a¤g¨t°XÑ>Ô>ˆAŒGØˆHØ×Ò˜aÑ Ô ˆØ•ÐÐØˆHØ�1‰uˆrf   c                 óL   — |                       |¦  «        }|t          u r|S || z  S r`   ©r¡   r›   rÞ   s     rd   Ú__rpow__z_mpf.__rpow__Ô   ó.   € Ø×Ò˜aÑ Ô ˆØ•ÐÐØˆHØ�A‰vˆrf   c                 óL   — |                       |¦  «        }|t          u r|S || z  S r`   rô   rÞ   s     rd   Ú__rmod__z_mpf.__rmod__Ú   ó.   € Ø×Ò˜aÑ Ô ˆØ•ÐÐØˆHØ�1‰uˆrf   c                 ó6   — | j                              | ¦  «        S r`   )rw   Úsqrtrº   s    rd   rû   z	_mpf.sqrtà   s   € ØŒy�~Š~˜aÑ Ô Ð rf   Nc                 ó<   — | j                              | |||¦  «        S r`   ©rw   Úalmosteq©r»   r“   Úrel_epsÚabs_epss       rd   Úaez_mpf.aeã   ó   € ØŒy×!Ò! ! Q¨°Ñ9Ô9Ð9rf   c                 ó,   — t          | j        |¦  «        S r`   )r7   ro   )r¦   rq   s     rd   r7   z_mpf.to_fixedæ   s   € Ý˜œ
 DÑ)Ô)Ð)rf   c                 ó6   — t          t          | ¦  «        g|¢R Ž S r`   )Úroundr‹   )r¦   Úargss     rd   Ú	__round__z_mpf.__round__é   s   € Ý•U˜4‘[”[Ð( 4Ð(Ð(Ð(Ð(rf   ©NN)0rg   rh   ri   rj   rk   r   re   Ú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  rl   rf   rd   rn   rn   '   sn  € € € € € ðð ð
 �	€Iàð !ð !ð !ð !ðF ð=ð =ñ „[ð=ð" ðð ñ „[ðð ðð ñ „[ðð ˆhÐ3Ð3Ñ4Ô4€GØ
ˆ(Ð-Ð-Ñ
.Ô
.€CØ
ˆ(Ð-Ð-Ñ
.Ô
.€CØ	ˆÐ,Ð,Ñ	-Ô	-€Bàˆ8Ð%Ð%Ñ&Ô&€DØˆ8Ð2Ð2Ñ3Ô3€Dà!Ð!€Ià:Ð:Ð:Ø@Ð@Ð@ðEð Eð Eð
 BÐAÐAØ-Ð-Ð-Ø/Ð/Ð/Ø1Ð1Ð1ØOÐOÐOØ0Ð0Ð0Ø/Ð/Ð/à€Hðð ð ðð ð ðð ð ð ð  ð  ð 1Ð0Ð0Ø.Ð.Ð.Ø.Ð.Ð.Ø.Ð.Ð.Ø.Ð.Ð.ðð ð ð	ð 	ð 	ð	ð 	ð 	ðð ð ðð ð ð!ð !ð !ð:ð :ð :ð :ð*ð *ð *ð)ð )ð )ð )ð )rf   rn   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                 ó  — t           }|                     d|¦  «        }|                     d|¦  «        }|                     d|¦  «        }|                     d| ¦  «        }i }t          |t          ¦   «         |¦  «         ||          S )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         rd   Ú	binary_opr    sw   € Ý€DØ�<Š<˜ hÑ/Ô/€DØ�<Š<˜ hÑ/Ô/€DØ�<Š<˜ hÑ/Ô/€DØ�<Š<˜ $Ñ'Ô'€DØ	€BÝ	ˆ$•‘	”	˜2ÑÔÐØˆdŒ8€Orf   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                   ó>   — e Zd ZdZdd„Zd	d„Zed„ ¦   «         Zd„ ZdS )
Ú	_constantzõ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.r  c                 óŒ   — t                                | ¦  «        }||_        ||_        t	          t
          |d¦  «        |_        |S )Nr  )Úobjectre   r  r�   Úgetattrr\   rj   )rb   r�   r  Údocnamer”   s        rd   re   z_constant.__new__P  s9   € Ý�NŠN˜3ÑÔˆØˆŒØˆŒÝ�M¨7°BÑ7Ô7ˆŒ	Øˆrf   Nc                 ó®   — | j         j        \  }}|s|}|s|}|rt          |¦  «        }| j                              |                      ||¦  «        ¦  «        S r`   )rw   rx   r   r    r�   )r¦   rq   rr   rs   Úprec2Ú	rounding2s         rd   Ú__call__z_constant.__call__W  s[   € Øœ<Ô6ÑˆˆyØÐ!˜E�TØÐ- I˜ØÐ'•{ 3Ñ'Ô'�ØŒ|×$Ò$ T§Y¢Y¨t°XÑ%>Ô%>Ñ?Ô?Ð?rf   c                 óL   — | j         j        \  }}|                      ||¦  «        S r`   )rw   rx   r�   )r¦   rq   rs   s      rd   ro   z_constant._mpf_^  s$   € àœÔ4‰ˆˆhØ�yŠy˜˜xÑ(Ô(Ð(rf   c                 ób   — d| j         ›d| j                              | d¬¦  «        ¦  «        ›d�S )Nú<z: é   )rr   z~>)r  rw   Únstrr¥   s    rd   r¼   z_constant.__repr__c  s5   € € Ø"œi˜i˜i¨¬×):Ò):¸4¸4ÀB¸<¹<¼<Ñ)HÔ)HÐ)HÐ)HÐIÐIrf   )r  )NNN)	rg   rh   ri   rj   re   r-  r  ro   r¼   rl   rf   rd   r%  r%  J  s{   € € € € € ð@ð @ð
ð ð ð ð@ð @ð @ð @ð ð)ð )ñ „Xð)ðJð Jð Jð Jð Jrf   r%  c                   ó  — e Zd ZdZdgZd!d„Z ed„ ¦  «        Z ed„ ¦  «        Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ Zed„ ¦   «         Zd„ Zd„ Zd„ ZeZeZeZeZd„ Zd„ Zd„ Zd„ Z d„ Z!eZ"d„ Z#d„ Z$d„ Z%d„ Z&e Z'e%Z(d"d „Z)dS )#Ú_mpczÇ
    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_ru   c                 óL  — t                                | ¦  «        }t          |t          ¦  «        r|j        |j        }}nt          |d¦  «        r|j        |_        |S | j         	                    |¦  «        }| j         	                    |¦  «        }|j
        |j
        f|_        |S )Nr5  )r'  re   rŠ   r—   r  r  rŽ   r5  rw   Úmpfro   )rb   r  r  r»   s       rd   re   z_mpc.__new__p  s�   € Ý�NŠN˜3ÑÔˆÝ�d�MÑ*Ô*ð 	Øœ D¤I�$ˆDˆDÝ�T˜7Ñ#Ô#ð 	Ø”jˆAŒGØˆHØŒ{�Š˜tÑ$Ô$ˆØŒ{�Š˜tÑ$Ô$ˆØ”:˜tœzÐ*ˆŒØˆrf   c                 óL   — | j                              | j        d         ¦  «        S )Nru   ©rw   r    r5  r¥   s    rd   r§   z_mpc.<lambda>|  ó   €  ¤×!6Ò!6°t´zÀ!´}Ñ!EÔ!E€ rf   c                 óL   — | j                              | j        d         ¦  «        S r©   r9  r¥   s    rd   r§   z_mpc.<lambda>}  r:  rf   c                 ój   — t          | j        d         ¦  «        t          | j        d         ¦  «        fS ©Nru   r   )r   r5  r¥   s    rd   r²   z_mpc.__getstate__  s)   € Ý˜4œ: aœ=Ñ)Ô)­;°t´zÀ!´}Ñ+EÔ+EÐEÐErf   c                 ód   — t          |d         ¦  «        t          |d         ¦  «        f| _        d S r=  )r   r5  r´   s     rd   rµ   z_mpc.__setstate__‚  s*   € Ý" 3 q¤6Ñ*Ô*­M¸#¸a¼&Ñ,AÔ,AÐAˆŒ
ˆ
ˆ
rf   c                 óâ   — | j         j        rt          | ¦  «        S t          | j        ¦  «        dd…         }t          | j        ¦  «        dd…         }t          | ¦  «        j        ›d|›d|›d�S )Nrv   éÿÿÿÿz(real=z, imag=ú))rw   r·   r¸   r‘   r  r  rz   rg   )r»   ÚrÚis      rd   r¼   z_mpc.__repr__…  sj   € ØŒ9Ôð 	Ý�q‘6”6ˆMÝ�”‰LŒL˜˜2˜ÔˆÝ�”‰LŒL˜˜2˜ÔˆÝ)-¨a©¬Ô)9Ð)9Ð)9¸1¸1¸1¸a¸a¸aÐ@Ð@rf   c                 óF   — dt          | j        | j        j        ¦  «        z  S )Nz(%s))r8   r5  rw   r¾   rº   s    rd   r¿   z_mpc.__str__Œ  s   € Ø�
 1¤7¨A¬IÔ,AÑBÔBÑBÐBrf   c                 óN   — t          | j        | j        j        d         ¬¦  «        S rÉ   )r9   r5  rw   rx   rº   s    rd   rÎ   z_mpc.__complex__�  s!   € Ý˜aœg¨1¬9Ô+CÀAÔ+FÐGÑGÔGÐGrf   c                 ón   — | j         \  }}\  }} ||¦  «        }t          | j        ||¦  «        |_        |S r`   )rÒ   r;   r5  rÓ   s         rd   r×   z_mpc.__pos__’  rÕ   rf   c                 óŒ   — | j         j        \  }}t          | j         j        ¦  «        }t	          | j        ||¦  «        |_        |S r`   )rw   rx   r{   r7  r?   r5  ro   )r»   rq   rs   r…   s       rd   rÔ   z_mpc.__abs__˜  s;   € ØœÔ1‰ˆˆhÝ�”	”ÑÔˆÝ˜!œ' 4¨Ñ2Ô2ˆŒØˆrf   c                 ón   — | j         \  }}\  }} ||¦  «        }t          | j        ||¦  «        |_        |S r`   )rÒ   r=   r5  rÓ   s         rd   rÙ   z_mpc.__neg__ž  rÕ   rf   c                 ón   — | j         \  }}\  }} ||¦  «        }t          | j        ||¦  «        |_        |S r`   )rÒ   r>   r5  rÓ   s         rd   r  z_mpc.conjugate¤  s<   € Ø%&¤ZÑ"ˆˆSÑ"�4˜ØˆC�‰HŒHˆÝ ¤¨¨xÑ8Ô8ˆŒØˆrf   c                 ó*   — t          | j        ¦  «        S r`   )r<   r5  rº   s    rd   rÐ   z_mpc.__nonzero__ª  s   € Ý˜aœgÑ&Ô&Ð&rf   c                 ó*   — t          | j        ¦  «        S r`   )r:   r5  rº   s    rd   rÁ   z_mpc.__hash__¯  s   € Ý˜œÑ Ô Ð rf   c                 ój   — 	 | j                              |¦  «        }|S # t          $ r
 t          cY S w xY wr`   )rw   r�   r�   r›   )rb   r’   Úys      rd   Úmpc_convert_lhsz_mpc.mpc_convert_lhs²  sH   € ð	"Ø”×#Ò# AÑ&Ô&ˆAØˆHøÝð 	"ð 	"ð 	"Ý!Ð!Ð!Ð!ð	"øøøs   ‚ ž2±2c                 óÐ   — t          |d¦  «        s7t          |t          ¦  «        rdS |                      |¦  «        }|t          u r|S | j        |j        k    o| j        |j        k    S )Nr5  F)rŽ   rŠ   r¸   rN  r›   r  r  rÞ   s     rd   rë   z_mpc.__eq__º  sk   € Ý�q˜'Ñ"Ô"ð 	Ý˜!�SÑ!Ô!ð Ø�uØ×!Ò! !Ñ$Ô$ˆAØ•NÐ"Ð"Ø�ØŒv˜œÒÐ4 A¤F¨a¬fÒ$4Ð4rf   c                 óH   — |                       |¦  «        }|t          u r|S | S r`   rê   )r»   r“   r•   s      rd   rì   z_mpc.__ne__Ã  rí   rf   c                  ó    — t          d¦  «        ‚)Nz3no ordering relation is defined for complex numbers)r�   )r  s    rd   Ú_comparez_mpc._compareÉ  s   € ÝÐMÑNÔNÐNrf   c                 óV  — | j         \  }}\  }}t          |d¦  «        s^|                      |¦  «        }|t          u r|S t          |d¦  «        r. ||¦  «        }t	          | j        |j        ||¦  «        |_        |S  ||¦  «        }t          | j        |j        ||¦  «        |_        |S ©Nr5  ro   )rÒ   rŽ   rN  r›   rA   r5  ro   r@   rï   s          rd   r  z_mpc.__add__Ñ  ó²   € Ø%&¤ZÑ"ˆˆSÑ"�4˜Ý�q˜'Ñ"Ô"ð 	Ø×!Ò! !Ñ$Ô$ˆAØ•NÐ"Ð"Ø�Ý�q˜'Ñ"Ô"ð Ø�C˜‘H”H�Ý% a¤g¨q¬w¸¸hÑGÔG�”Ø�ØˆC�‰HŒHˆÝ˜!œ' 1¤7¨D°(Ñ;Ô;ˆŒØˆrf   c                 óV  — | j         \  }}\  }}t          |d¦  «        s^|                      |¦  «        }|t          u r|S t          |d¦  «        r. ||¦  «        }t	          | j        |j        ||¦  «        |_        |S  ||¦  «        }t          | j        |j        ||¦  «        |_        |S rT  )rÒ   rŽ   rN  r›   rC   r5  ro   rB   rï   s          rd   r  z_mpc.__sub__ß  rU  rf   c                 óü  — | j         \  }}\  }}t          |d¦  «        s±t          |t          ¦  «        r) ||¦  «        }t	          | j        |||¦  «        |_        |S |                      |¦  «        }|t          u r|S t          |d¦  «        r. ||¦  «        }t          | j        |j	        ||¦  «        |_        |S |                      |¦  «        } ||¦  «        }t          | j        |j        ||¦  «        |_        |S rT  )rÒ   rŽ   rŠ   r   rF   r5  rN  r›   rE   ro   rD   rï   s          rd   r   z_mpc.__mul__í  s   € Ø%&¤ZÑ"ˆˆSÑ"�4˜Ý�q˜'Ñ"Ô"ð 	%Ý˜!�YÑ'Ô'ð Ø�C˜‘H”H�Ý% a¤g¨q°$¸ÑAÔA�”Ø�Ø×!Ò! !Ñ$Ô$ˆAØ•NÐ"Ð"Ø�Ý�q˜'Ñ"Ô"ð Ø�C˜‘H”H�Ý% a¤g¨q¬w¸¸hÑGÔG�”Ø�Ø×!Ò! !Ñ$Ô$ˆAØˆC�‰HŒHˆÝ˜!œ' 1¤7¨D°(Ñ;Ô;ˆŒØˆrf   c                 óV  — | j         \  }}\  }}t          |d¦  «        s^|                      |¦  «        }|t          u r|S t          |d¦  «        r. ||¦  «        }t	          | j        |j        ||¦  «        |_        |S  ||¦  «        }t          | j        |j        ||¦  «        |_        |S rT  )rÒ   rŽ   rN  r›   rH   r5  ro   rG   rï   s          rd   r!  z_mpc.__div__   rU  rf   c                 óš  — | j         \  }}\  }}t          |t          ¦  «        r) ||¦  «        }t          | j        |||¦  «        |_        |S |                      |¦  «        }|t          u r|S  ||¦  «        }t          |d¦  «        r"t          | j        |j	        ||¦  «        |_        n!t          | j        |j        ||¦  «        |_        |S rÛ   )rÒ   rŠ   r   rK   r5  rN  r›   rŽ   rJ   ro   rI   rï   s          rd   r#  z_mpc.__pow__  sÌ   € Ø%&¤ZÑ"ˆˆSÑ"�4˜Ý�a�Ñ#Ô#ð 	Ø��C‘”ˆAÝ! !¤'¨1¨d°HÑ=Ô=ˆAŒGØˆHØ×Ò˜aÑ Ô ˆØ•ÐÐØˆHØˆC�‰HŒHˆÝ�1�gÑÔð 	@Ý! !¤'¨1¬7°D¸(ÑCÔCˆAŒGˆGå˜aœg q¤w°°hÑ?Ô?ˆAŒGØˆrf   c                 óL   — |                       |¦  «        }|t          u r|S || z
  S r`   ©rN  r›   rÞ   s     rd   rð   z_mpc.__rsub__   rù   rf   c                 óä   — | j         \  }}\  }}t          |t          ¦  «        r) ||¦  «        }t          | j        |||¦  «        |_        |S |                      |¦  «        }|t          u r|S || z  S r`   )rÒ   rŠ   r   rF   r5  rN  r›   rï   s          rd   Ú__rmul__z_mpc.__rmul__&  s|   € Ø%&¤ZÑ"ˆˆSÑ"�4˜Ý�a�Ñ#Ô#ð 	Ø��C‘”ˆAÝ! !¤'¨1¨d°HÑ=Ô=ˆAŒGØˆHØ×Ò˜aÑ Ô ˆØ•ÐÐØˆHØ�1‰uˆrf   c                 óL   — |                       |¦  «        }|t          u r|S || z  S r`   r[  rÞ   s     rd   rò   z_mpc.__rdiv__1  rù   rf   c                 óL   — |                       |¦  «        }|t          u r|S || z  S r`   r[  rÞ   s     rd   rõ   z_mpc.__rpow__7  rö   rf   Nc                 ó<   — | j                              | |||¦  «        S r`   rý   rÿ   s       rd   r  z_mpc.ae@  r  rf   )ru   ru   r	  )*rg   rh   ri   rj   rk   re   r  r  r  r²   rµ   r¼   r¿   rÎ   r×   rÔ   rÙ   r  rÐ   r  rÁ   r
  rN  rë   rì   rR  rä   ræ   rè   r  r  r   r!  r#  Ú__radd__rð   r]  rò   rõ   Ú__truediv__Ú__rtruediv__r  rl   rf   rd   r4  r4  g  s-  € € € € € ðð ð �	€Ið
ð 
ð 
ð 
ð ˆ8ÐEÐEÑFÔF€DØˆ8ÐEÐEÑFÔF€DðFð Fð FðBð Bð BðAð Að AðCð Cð CðHð Hð Hðð ð ðð ð ðð ð ðð ð ð'ð 'ð 'ð €Hð!ð !ð !ð ð"ð "ñ „[ð"ð5ð 5ð 5ðð ð ðOð Oð Oð €FØ€FØ€FØ€Fðð ð ðð ð ðð ð ð&ð ð ðð ð ð  €Hðð ð ð	ð 	ð 	ðð ð ðð ð ð €KØ€Lð:ð :ð :ð :ð :ð :rf   r4  c                   óÎ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z e	d„ e¦  «        Z
 e	d„ e¦  «        Zdd
„Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„Zed„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚPythonMPContextc                 óÆ  — dt           g| _        t          dt          fi ¦  «        | _        t          dt
          fi ¦  «        | _        | j        t          | j        g| j        _        | j        t          | j        g| j        _        | | j        _	        | | j        _	        t          dt          fi ¦  «        | _        | j        t          | j        g| j        _        | | j        _	        d S )Né5   r7  r˜   rŒ   )r   rx   rz   rn   r7  r4  r˜   r{   rÒ   rw   r%  rŒ   ©Úctxs    rd   Ú__init__zPythonMPContext.__init__I  s²   € Ø ¥-Ð0ˆÔÝ�u�t˜g rÑ*Ô*ˆŒÝ�u�t˜g rÑ*Ô*ˆŒØœG¥S¨#Ô*<Ð=ˆŒÔØœG¥S¨#Ô*<Ð=ˆŒÔØˆŒŒØˆŒŒÝ˜J­¨°bÑ9Ô9ˆŒØ!$¤­#¨sÔ/AÐ BˆŒÔØ"ˆŒÔÐÐrf   c                 ó<   — t          | j        ¦  «        }||_        |S r`   )r{   r7  ro   ©ri  r…   r”   s      rd   r    zPythonMPContext.make_mpfU  ó   € Ý�”‰LŒLˆØˆŒØˆrf   c                 ó<   — t          | j        ¦  «        }||_        |S r`   )r{   r˜   r5  rl  s      rd   Úmake_mpczPythonMPContext.make_mpcZ  rm  rf   c                 óD   — dx| _         | j        d<   d| _        d| _        d S )Nrg  ru   r1  F)Ú_precrx   Ú_dpsÚtrap_complexrh  s    rd   ÚdefaultzPythonMPContext.default_  s+   € Ø,.Ð.ˆŒ	�CÔ& qÑ)ØˆŒØ ˆÔÐÐrf   c                 ó†   — t          dt          |¦  «        ¦  «        x| _        | j        d<   t	          |¦  «        | _        d S )Nr   ru   )ÚmaxrÃ   rq  rx   r   rr  ©ri  Úns     rd   Ú	_set_preczPythonMPContext._set_precd  s5   € Ý,/°µ3°q±6´6©N¬NÐ:ˆŒ	�CÔ& qÑ)Ý˜q‘>”>ˆŒˆˆrf   c                 ó†   — t          |¦  «        x| _        | j        d<   t          dt	          |¦  «        ¦  «        | _        d S r=  )r   rq  rx   rv  rÃ   rr  rw  s     rd   Ú_set_dpszPythonMPContext._set_dpsh  s5   € Ý,7¸©N¬NÐ:ˆŒ	�CÔ& qÑ)Ý�q�#˜a™&œ&‘>”>ˆŒˆˆrf   c                 ó   — | j         S r`   )rq  rh  s    rd   r§   zPythonMPContext.<lambda>l  s   €  ¤	€ rf   c                 ó   — | j         S r`   )rr  rh  s    rd   r§   zPythonMPContext.<lambda>m  s   € ˜sœx€ rf   Tc                 óÊ  — t          |¦  «        | j        v r|S t          |t          ¦  «        r"|                      t          |¦  «        ¦  «        S t          |t          ¦  «        r"|                      t          |¦  «        ¦  «        S t          |t          ¦  «        r;|  	                    t          |j
        ¦  «        t          |j        ¦  «        f¦  «        S t          |¦  «        j        dk    r|                      |¦  «        S t          |t          j        ¦  «        rAt!          j        t%          |j        ¦  «        t%          |j        ¦  «        ¦  «        }n#  Y nxY w| j        \  }}t          |t           j        ¦  «        r.|j        \  }}|                      t/          |||¦  «        ¦  «        S |rLt          |t0          ¦  «        r7	 t3          |||¦  «        }|                      |¦  «        S # t4          $ r Y nw xY wt7          |d¦  «        r|                      |j        ¦  «        S t7          |d¦  «        r|  	                    |j        ¦  «        S t7          |d¦  «        r)|                      |                     ||¦  «        ¦  «        S t          |¦  «        j        dk    r+|                      tA          |||¦  «        ¦  «        S #  Y nxY w|  !                    ||¦  «        S )a»  
        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')

        Únumpyro   r5  r‡   Údecimal)"rz   ÚtypesrŠ   r   r    r   r‹   r   rÍ   ro  r  r  rh   Ú	npconvertÚnumbersÚRationalr[   r™   rÃ   Ú	numeratorÚdenominatorrx   rš   r   r   r   r~   rŽ   ro   r5  r�   r‡   r   Ú_convert_fallback)ri  r’   Ústringsrq   rs   rœ   r�   ro   s           rd   r�   zPythonMPContext.converto  sˆ  € õ, �‰7Œ7�c”iÐÐ¨ Ý�a�Ñ#Ô#ÐE¨C¯LªL½À!¹¼Ñ,EÔ,EÐ%EÝ�a�ÑÔÐC¨¯ªµZÀ±]´]Ñ(CÔ(CÐ!CÝ�a�Ñ!Ô!ð 	JØ—<’<¥¨A¬FÑ!3Ô!3µZÀÄÑ5GÔ5GÐ HÑIÔIÐIÝ�‰7Œ7Ô Ò(Ð(°·²¸qÑ1AÔ1AÐ*AÝ�a�Ô)Ñ*Ô*ð 	Ý”\¥# a¤kÑ"2Ô"2µC¸¼Ñ4FÔ4FÑGÔG��øØ�D�DøøøØÔ+‰ˆˆhÝ�a�œÑ&Ô&ð 	;Ø”7‰DˆAˆqØ—<’<¥¨a°°DÑ 9Ô 9Ñ:Ô:Ð:Øð 	•z !¥ZÑ0Ô0ð 	ðÝ   D¨(Ñ3Ô3�Ø—|’| EÑ*Ô*Ð*øÝð ð ð Ø�ðøøøå�1�gÑÔÐ< s§|¢|°A´GÑ'<Ô'<Ð <Ý�1�gÑÔÐ< s§|¢|°A´GÑ'<Ô'<Ð <Ý�1�jÑ!Ô!ð 	;Ø—;’;˜qŸzšz¨$°Ñ9Ô9Ñ:Ô:Ð:Ý�‰7Œ7Ô Ò*Ð*ØŸš¥\°!°T¸8Ñ%DÔ%DÑEÔEÐEøØ�D�DøøøØ×$Ò$ Q¨Ñ0Ô0Ð0s*   Ä9E ÅEÇ	%G/ Ç/
G<Ç;G<Ê$#K ËKc                 óÞ  — ddl }t          ||j        ¦  «        r/|                      t	          t          |¦  «        ¦  «        ¦  «        S t          ||j        ¦  «        r"|                      t          |¦  «        ¦  «        S t          ||j        ¦  «        r;|  	                    t          |j
        ¦  «        t          |j        ¦  «        f¦  «        S t          dt          |¦  «        z   ¦  «        ‚)z^
        Converts *x* to an ``mpf`` or ``mpc``. *x* should be a numpy
        scalar.
        ru   Nr‰   )r  rŠ   Úintegerr    r   rÃ   Úfloatingr   Úcomplexfloatingro  r  r  r�   r‘   )ri  r’   r  s      rd   r‚  zPythonMPContext.npconvert¡  sÅ   € ð
 	ÐÐÐÝ�a˜œÑ$Ô$ÐK¨S¯\ª\½(Å3ÀqÁ6Ä6Ñ:JÔ:JÑ-KÔ-KÐ&KÝ�a˜œÑ%Ô%ÐK¨c¯lªl½<È¹?¼?Ñ.KÔ.KÐ'KÝ�a˜Ô+Ñ,Ô,ð 	NØ—<’<¥¨a¬fÑ!5Ô!5µ|ÀAÄFÑ7KÔ7KÐ LÑMÔMÐMÝÐ1µD¸±G´GÑ;Ñ<Ô<Ð<rf   c                 ó’  — t          |d¦  «        r|j        t          k    S t          |d¦  «        rt          |j        v S t	          |t
          ¦  «        st	          |t          j        ¦  «        rdS |                      |¦  «        }t          |d¦  «        st          |d¦  «        r|  	                    |¦  «        S t          d¦  «        ‚)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

        ro   r5  Fzisnan() needs a number as input)rŽ   ro   r!   r5  rŠ   r   r[   r™   r�   Úisnanr�   )ri  r’   s     rd   rŽ  zPythonMPContext.isnan­  s»   € õ" �1�gÑÔð 	#Ø”7�d’?Ð"Ý�1�gÑÔð 	#Ý˜1œ7�?Ð"Ý�a�Ñ#Ô#ð 	¥z°!µX´\Ñ'BÔ'Bð 	Ø�5Ø�KŠK˜‰NŒNˆÝ�1�gÑÔð 	 ¥'¨!¨WÑ"5Ô"5ð 	 Ø—9’9˜Q‘<”<ÐÝÐ9Ñ:Ô:Ð:rf   c                 óÔ  — t          |d¦  «        r|j        t          t          fv S t          |d¦  «        r*|j        \  }}|t          t          fv p|t          t          fv S t          |t          ¦  «        st          |t          j        ¦  «        rdS |  	                    |¦  «        }t          |d¦  «        st          |d¦  «        r|  
                    |¦  «        S t          d¦  «        ‚)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

        ro   r5  Fzisinf() needs a number as input)rŽ   ro   r   r    r5  rŠ   r   r[   r™   r�   Úisinfr�   )ri  r’   ÚreÚims       rd   r�  zPythonMPContext.isinfÉ  sÜ   € õ( �1�gÑÔð 	,Ø”7�t¥U˜mÐ+Ð+Ý�1�gÑÔð 	>Ø”W‰FˆB�Ø�$¥˜Ð&Ð=¨"µµu°Ð*=Ð=Ý�a�Ñ#Ô#ð 	¥z°!µX´\Ñ'BÔ'Bð 	Ø�5Ø�KŠK˜‰NŒNˆÝ�1�gÑÔð 	 ¥'¨!¨WÑ"5Ô"5ð 	 Ø—9’9˜Q‘<”<ÐÝÐ9Ñ:Ô:Ð:rf   c                 óH  — t          |d¦  «        rt          |j        d         ¦  «        S t          |d¦  «        rR|j        \  }}t          |d         ¦  «        }t          |d         ¦  «        }|t          k    r|S |t          k    r|S |o|S t          |t          ¦  «        st          |t          j        ¦  «        rt          |¦  «        S |  	                    |¦  «        }t          |d¦  «        st          |d¦  «        r|  
                    |¦  «        S t          d¦  «        ‚)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
        ro   r   r5  z"isnormal() needs a number as input)rŽ   Úboolro   r5  r   rŠ   r   r[   r™   r�   Úisnormalr�   )ri  r’   r‘  r’  Ú	re_normalÚ	im_normals         rd   r•  zPythonMPContext.isnormalé  s  € õ0 �1�gÑÔð 	$Ý˜œ œ
Ñ#Ô#Ð#Ý�1�gÑÔð 	+Ø”W‰FˆB�Ý˜R œU™œˆIÝ˜R œU™œˆIØ•UŠ{ˆ{ 9Ð,Ø•UŠ{ˆ{ 9Ð,ØÐ* Ð*Ý�a�Ñ#Ô#ð 	¥z°!µX´\Ñ'BÔ'Bð 	Ý˜‘7”7ˆNØ�KŠK˜‰NŒNˆÝ�1�gÑÔð 	#¥'¨!¨WÑ"5Ô"5ð 	#Ø—<’< ‘?”?Ð"ÝÐ<Ñ=Ô=Ð=rf   Fc                 ó|  — t          |t          ¦  «        rdS t          |d¦  «        r.|j        x\  }}}}}t	          |r|dk    p
|t
          k    ¦  «        S t          |d¦  «        rQ|j        \  }}	|\  }
}}}|	\  }}}}|r|dk    p
|t
          k    }|r|r|dk    p
|	t
          k    }|o|S |o
|	t
          k    S t          |t          j        ¦  «        r|j	        \  }}||z  dk    S |  
                    |¦  «        }t          |d¦  «        st          |d¦  «        r|                      ||¦  «        S t          d¦  «        ‚)a
  
        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

        Tro   ru   r5  zisint() needs a number as input)rŠ   r   rŽ   ro   r”  r   r5  r[   r™   rš   r�   Úisintr�   )ri  r’   Úgaussianr�   r‚   rƒ   r„   Úxvalr‘  r’  ÚrsignÚrmanÚrexpÚrbcÚisignÚimanÚiexpÚibcÚre_isintÚim_isintrœ   r�   s                         rd   r™  zPythonMPContext.isint  sm  € õ2 �a�Ñ#Ô#ð 	Ø�4Ý�1�gÑÔð 	=Ø()¬Ð/ÑˆD�#�s˜B Ý˜Ð) ¨¢Ð;¨dµeªmÑ<Ô<Ð<Ý�1�gÑÔð 	,Ø”W‰FˆB�Ø%'Ñ"ˆE�4˜˜sØ%'Ñ"ˆE�4˜˜sØÐ* ¨¢Ð:¨rµUª{ˆHØð -Ø Ð. T¨Q¢YÐ>°2½²;�ØÐ, HÐ,ØÐ+ ¥e¢Ð+Ý�a�œÑ&Ô&ð 	Ø”7‰DˆAˆqØ�q‘5˜A’:ÐØ�KŠK˜‰NŒNˆÝ�1�gÑÔð 	*¥'¨!¨WÑ"5Ô"5ð 	*Ø—9’9˜Q Ñ)Ô)Ð)ÝÐ9Ñ:Ô:Ð:rf   c                 ó  — | j         \  }}g }g }|D �]©}dx}	}
t          |d¦  «        r|j        }	njt          |d¦  «        r|j        \  }	}
nO|                      |¦  «        }t          |d¦  «        r|j        }	n"t          |d¦  «        r|j        \  }	}
nt
          ‚|
rå|rŽ|rG|                     t          |	|	¦  «        ¦  «         |                     t          |
|
¦  «        ¦  «         ŒÖt          |	|
fd|dz   ¦  «        \  }	}
|                     |	¦  «         |                     |
¦  «         �Œ|r'|                     t          |	|
f|¦  «        ¦  «         �ŒD|                     |	¦  «         |                     |
¦  «         �Œp|rt          |	|	¦  «        }	n|rt          |	¦  «        }	|                     |	¦  «         �Œ«t          ||||¦  «        }|r'|                      |t          |||¦  «        f¦  «        }n|                      |¦  «        }|S )aX  
        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.
        ru   ro   r5  rt   é
   )rx   rŽ   ro   r5  r�   ra   Úappendr'   rK   r?   r"   r5   ro  r    )ri  ÚtermsÚabsoluteÚsquaredrq   rÊ   r  r  ÚtermÚrevalÚimvalr»   s               rd   ÚfsumzPythonMPContext.fsum@  s;  € ð  Ô&‰	ˆˆcØˆØˆØð !	#ñ !	#ˆDØÐˆE�EÝ�t˜WÑ%Ô%ð .Øœ
��Ý˜˜wÑ'Ô'ð 	.Ø#œz‘��u�uà—{’{ 4Ñ(Ô(�Ý˜4 Ñ)Ô)ð .Ø œJ�E�EÝ˜T 7Ñ+Ô+ð .Ø#'¤:‘L�E˜5˜5å-Ð-Øð #Øð 'Øð +ØŸš¥G¨E°%Ñ$8Ô$8Ñ9Ô9Ð9ØŸš¥G¨E°%Ñ$8Ô$8Ñ9Ô9Ð9Ð9å'2°E¸%°=ÀÀ4ÈÁ7Ñ'KÔ'K™˜˜uØŸš EÑ*Ô*Ð*ØŸš EÑ*Ô*Ð*Ñ*Øð 'Ø—K’K¥¨¨u¨°tÑ <Ô <Ñ=Ô=Ð=Ñ=à—K’K Ñ&Ô&Ð&Ø—K’K Ñ&Ô&Ð&Ñ&àð +Ý# E¨5Ñ1Ô1�E�EØð +Ý# E™NœN�EØ—’˜EÑ"Ô"Ð"Ñ"Ý�D˜$  XÑ.Ô.ˆØð 	 Ø—’˜a¥¨¨t°SÑ!9Ô!9Ð:Ñ;Ô;ˆAˆAà—’˜Q‘”ˆAØˆrf   Nc           	      ó¦  — |�t          ||¦  «        }| j        \  }}g }g }t          }| j        | j        f}	|D �]H\  }
}t          |
¦  «        |	vr|                      |
¦  «        }
t          |¦  «        |	vr|                      |¦  «        } ||
d¦  «        } ||d¦  «        }|r0|r.|                     t          |
j	        |j	        ¦  «        ¦  «         Œœ ||
d¦  «        } ||d¦  «        }|rl|rj|
j	        }|j
        \  }}|rt          |¦  «        }|                     t          ||¦  «        ¦  «         |                     t          ||¦  «        ¦  «         �Œ"|r[|rY|
j
        \  }}|j	        }|                     t          ||¦  «        ¦  «         |                     t          ||¦  «        ¦  «         �Œ|rÂ|rÀ|
j
        \  }}|j
        \  }}|rt          |¦  «        }|                     t          ||¦  «        ¦  «         |                     t          t          ||¦  «        ¦  «        ¦  «         |                     t          ||¦  «        ¦  «         |                     t          ||¦  «        ¦  «         �ŒCt          ‚t          |||¦  «        }|r'|                      |t          |||¦  «        f¦  «        }n|                      |¦  «        }|S )a.  
        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')

        Nro   r5  )Úziprx   rŽ   r7  r˜   rz   r�   r¨  r'   ro   r5  r$   ra   r5   ro  r    )ri  ÚAÚBr  rq   rÊ   r  r  Úhasattr_r�  r”   r•   Úa_realÚb_realÚ	a_complexÚ	b_complexÚavalÚbreÚbimÚareÚaimÚbvalr»   s                          rd   ÚfdotzPythonMPContext.fdot|  sÜ  € ðN ˆ=Ý�A�q‘	”	ˆAØÔ&‰	ˆˆcØˆØˆÝˆØ”˜#œ'Ð"ˆØð !	*ñ !	*‰DˆAˆqÝ�A‰wŒw˜eÐ#Ð#¨¯ª°Q©¬ QÝ�A‰wŒw˜eÐ#Ð#¨¯ª°Q©¬ QØ�X˜a Ñ)Ô)ˆFØ�X˜a Ñ)Ô)ˆFØð ˜&ð Ø—’�G A¤G¨Q¬WÑ5Ô5Ñ6Ô6Ð6ØØ ˜  GÑ,Ô,ˆIØ ˜  GÑ,Ô,ˆIØð *˜)ð *Ø”w�Øœ7‘��SØð 'Ý! #™,œ,�CØ—’�G D¨#Ñ.Ô.Ñ/Ô/Ð/Ø—’�G D¨#Ñ.Ô.Ñ/Ô/Ð/Ñ/Øð *˜Ið *Øœ7‘��SØ”w�Ø—’�G C¨Ñ.Ô.Ñ/Ô/Ð/Ø—’�G C¨Ñ.Ô.Ñ/Ô/Ð/Ñ/Øð *˜yð *àœ7‘��SØœ7‘��SØð 'Ý! #™,œ,�CØ—’�G C¨Ñ-Ô-Ñ.Ô.Ð.Ø—’�G¥G¨C°Ñ$5Ô$5Ñ6Ô6Ñ7Ô7Ð7Ø—’�G C¨Ñ-Ô-Ñ.Ô.Ð.Ø—’�G C¨Ñ-Ô-Ñ.Ô.Ð.Ñ.å)Ð)Ý�D˜$ Ñ$Ô$ˆØð 	 Ø—’˜a¥¨¨t°SÑ!9Ô!9Ð:Ñ;Ô;ˆAˆAà—’˜Q‘”ˆAØˆrf   ú<no doc>c                 óŒ   ‡ ‡‡‡— ˆ ˆˆˆfd„}‰j         dd…         Št          j                             ‰d|z  ¦  «        |_        |S )aO  
        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                 óœ  •— t          | ¦  «        ‰j        vr‰                     | ¦  «        } ‰j        \  }}|rE|                     d|¦  «        }d|v rt          |d         ¦  «        }|                     d|¦  «        }t          | d¦  «        rj	 ‰                      ‰| j        ||¦  «        ¦  «        S # t          $ r7 ‰j
        r‚ ‰                      ‰| j        t          f||¦  «        ¦  «        cY S w xY wt          | d¦  «        r%‰                      ‰| j        ||¦  «        ¦  «        S t          ‰›dt          | ¦  «        ›�¦  «        ‚)Nrq   rr   rs   ro   r5  z of a )rz   r�  r�   rx   ry   r   rŽ   r    ro   r   rs  ro  r   r5  ra   )r’   r€   rq   rs   ri  Úmpc_fÚmpf_fr  s       €€€€rd   Úfz/PythonMPContext._wrap_libmp_function.<locals>.fÝ  sd  ø€ Ý�A‰wŒw˜cœiÐ'Ð'Ø—K’K ‘N”N�Ø Ô/‰NˆD�(Øð <Ø—z’z &¨$Ñ/Ô/�Ø˜F�?�?Ý& v¨e¤}Ñ5Ô5�DØ!Ÿ:š: j°(Ñ;Ô;�Ý�q˜'Ñ"Ô"ð 	DðQØŸ<š<¨¨¨a¬g°t¸XÑ(FÔ(FÑGÔGÐGøÝ$ð Qð Qð QàÔ'ð ØØŸ<š<¨¨¨q¬w½Ð.>ÀÀhÑ(OÔ(OÑPÔPÐPÐPÐPð	Qøøøõ
 ˜˜GÑ$Ô$ð DØ—|’| E E¨!¬'°4¸Ñ$BÔ$BÑCÔCÐCÝ%°d°d°d½DÀ¹G¼G¸GÐ&DÑEÔEÐEs   Â$B4 Â4>C5Ã4C5rv   NzComputes the %s of x)rg   r\   Ú__dict__ry   rj   )ri  rÄ  rÃ  Úmpi_fÚdocrÅ  r  s   ```   @rd   Ú_wrap_libmp_functionz$PythonMPContext._wrap_libmp_functionÓ  sm   øøøø€ ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð( Œ~˜a˜b˜bÔ!ˆÝ!Ô*×.Ò.¨tÐ5KÈcÑ5QÑRÔRˆŒ	Øˆrf   c                 ó’   ‡— |rˆfd„}n‰}t           j                             |‰j        ¦  «        |_        t	          | ||¦  «         d S )Nc                 ó¦   •‡— | j         Šˆfd„|D ¦   «         }| j        }	 | xj        dz  c_         ‰| g|¢R i |¤Ž}|| _        n# || _        w xY w|
 S )Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rl   rl   )Ú.0r”   r�   s     €rd   ú
<listcomp>zDPythonMPContext._wrap_specfun.<locals>.f_wrapped.<locals>.<listcomp>û  s!   ø€ Ð1Ð1Ð1 q˜˜ ™
œ
Ð1Ð1Ð1rf   r§  )r�   rq   )ri  r  r€   rq   Úretvalr�   rÅ  s        @€rd   Ú	f_wrappedz0PythonMPContext._wrap_specfun.<locals>.f_wrappedù  s}   øø€ Øœ+�Ø1Ð1Ð1Ð1¨DÐ1Ñ1Ô1�Ø”x�ð$Ø�H”H ‘N�H”HØ˜Q˜sÐ4 TÐ4Ð4Ð4¨VÐ4Ð4�Fà#�C”H�Hø˜t�C”H�O�O�O�OØ�w�s    A Á	A)r\   rÆ  ry   rj   Úsetattr)rb   r  rÅ  ÚwraprÐ  s     `  rd   Ú_wrap_specfunzPythonMPContext._wrap_specfunö  se   ø€ àð 	ð	ð 	ð 	ð 	ð 	ð 	ð ˆIÝ)Ô2×6Ò6°t¸Q¼YÑGÔGˆ	ÔÝ��T˜9Ñ%Ô%Ð%Ð%Ð%rf   c                 óì  — t          |d¦  «        r|j        \  }}|t          k    r|dfS �nHt          |d¦  «        r	|j        }�n/t	          |¦  «        t
          v rt          |¦  «        dfS d }t          |t          ¦  «        r|\  }}njt          |d¦  «        r|j	        \  }}nOt          |t          ¦  «        r:d|v r6|                     d¦  «        \  }}t          |¦  «        }t          |¦  «        }|�$||z  s||z  dfS |                      ||¦  «        dfS |                      |¦  «        }t          |d¦  «        r|j        \  }}|t          k    r|dfS nt          |d¦  «        r|j        }n|dfS |\  }}}}	|rq|d	k    rR|r| }|d
k    rt          |¦  «        |z  dfS |d	k    r-t          |¦  «        d| z  }}|                      ||¦  «        dfS |                      |¦  «        }|dfS |sdS |dfS )Nr5  ÚCro   ÚZrš   ú/ÚQÚUéüÿÿÿru   r   ÚR)ru   rÖ  )rŽ   r5  r   ro   rz   r   rÃ   rŠ   r|   rš   r   Úsplitr™   r�   r    )
ri  r’   r…   r’  rœ   r�   r�   r‚   rƒ   r„   s
             rd   Ú_convert_paramzPythonMPContext._convert_param  sB  € Ý�1�gÑÔð 	Ø”G‰EˆAˆrØ•UŠ{ˆ{Ø˜#�v�ñ å�Q˜Ñ Ô ð 	Ø”ˆA‰Aå�A‰wŒw�)Ð#Ð#Ý˜1‘v”v˜s�{Ð"ØˆAÝ˜!�UÑ#Ô#ð Ø‘��1�1Ý˜˜GÑ$Ô$ð Ø”w‘��1�1Ý˜A�zÑ*Ô*ð ¨s°a¨x¨xØ—w’w˜s‘|”|‘��1Ý˜‘F”F�Ý˜‘F”F�Øˆ}Ø˜1‘uð 'Ø ™6 3˜;Ð&Ø—w’w˜q ‘|”| SÐ(Ð(Ø—’˜A‘”ˆAÝ�q˜'Ñ"Ô"ð Øœ‘��2Ø�’;�;Ø˜c˜6�Mð å˜˜GÑ$Ô$ð Ø”G��à˜#�v�ØÑˆˆc�3˜Øð 	Ø�bŠyˆyØð Ø˜$�CØ˜!’8�8Ý˜s™8œ8 s™?¨CÐ/Ð/Ø˜"’9�9Ý˜s™8œ8 a¨3¨$¡i�q�AØŸ7š7 1 Q™<œ<¨Ð,Ð,Ø—’˜Q‘”ˆAØ�c�6ˆMØð 	Ø�6à�c�6ˆMrf   c                 óŠ   — |\  }}}}|r||z   S |t           k    r| j        S |t          k    s|t          k    r| j        S | j        S r`   )r   Úninfr   r    ÚinfÚnan)ri  r’   r�   r‚   rƒ   r„   s         rd   Ú_mpf_magzPythonMPContext._mpf_mag9  sP   € ØÑˆˆc�3˜Øð 	Ø�r‘6ˆMØ•Š:ˆ:Ø”8ˆOØ•Š9ˆ9˜�Uš
˜
Ø”7ˆNØŒwˆrf   c                 óZ  — t          |d¦  «        r|                      |j        ¦  «        S t          |d¦  «        rƒ|j        \  }}|t          k    r|                      |¦  «        S |t          k    r|                      |¦  «        S dt          |                      |¦  «        |                      |¦  «        ¦  «        z   S t          |t          ¦  «        r%|rt          t          |¦  «        ¦  «        S | j
        S t          |t          j        ¦  «        rB|j        \  }}|r/dt          t          |¦  «        ¦  «        z   t          |¦  «        z
  S | j
        S |                      |¦  «        }t          |d¦  «        st          |d¦  «        r|                      |¦  «        S t!          d¦  «        ‚)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)

        ro   r5  r   zrequires an mpf/mpc)rŽ   râ  ro   r5  r   rv  rŠ   r   r6   Úabsrß  r[   r™   rš   r�   Úmagr�   )ri  r’   rB  rC  rœ   r�   s         rd   rå  zPythonMPContext.magC  sz  € õ* �1�gÑÔð 	7Ø—<’< ¤Ñ(Ô(Ð(Ý�Q˜Ñ Ô ð 	7Ø”7‰DˆAˆqØ•EŠzˆzØ—|’| A‘”Ð&Ø•EŠzˆzØ—|’| A‘”Ð&Ø•S˜Ÿš a™œ¨#¯,ª,°q©/¬/Ñ:Ô:Ñ:Ð:Ý˜�9Ñ%Ô%ð 	7Øð (Ý¥ A¡¤Ñ'Ô'Ð'Ø”8ˆOÝ˜�8œ<Ñ(Ô(ð 
	7Ø”7‰DˆAˆqØð :Ø�8¥C¨¡F¤FÑ+Ô+Ñ+­h°q©k¬kÑ9Ð9Ø”8ˆOà—’˜A‘”ˆAÝ�q˜'Ñ"Ô"ð 7¥g¨a°Ñ&9Ô&9ð 7Ø—w’w˜q‘z”zÐ!åÐ 5Ñ6Ô6Ð6rf   )T)F)FF)NF)NNrÀ  )rg   rh   ri   rj  r    ro  rt  ry  r{  r  rq   rr   r�   r‚  rŽ  r�  r•  r™  r¯  r¿  rÉ  r
  rÓ  rÝ  râ  rå  rl   rf   rd   re  re  G  sŽ  € € € € € ð
#ð 
#ð 
#ðð ð ð
ð ð ð
!ð !ð !ð
"ð "ð "ð"ð "ð "ð ˆ8Ð)Ð)¨9Ñ5Ô5€DØ
ˆ(Ð'Ð'¨Ñ
2Ô
2€Cð01ð 01ð 01ð 01ðd
=ð 
=ð 
=ð;ð ;ð ;ð8;ð ;ð ;ð@&>ð &>ð &>ðP-;ð -;ð -;ð -;ð^:ð :ð :ð :ðxUð Uð Uð Uðn ð  ð  ð  ðF ð&ð &ñ „[ð&ð"/ð /ð /ðbð ð ð,7ð ,7ð ,7ð ,7ð ,7rf   re  ru   N)r  r  r  )}Ú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   r  r[   r\   r'  re   r{   r^   rn   r  Ú
return_mpfÚ
return_mpcÚmpf_pow_samer  rë   r  r  r   r!  r"  r#  ra  r]  rb  rò   rc  r%  r4  rÍ   r—   re  rƒ  ÚComplexÚregisterÚRealÚImportErrorrl   rf   rd   ú<module>rï     sÉ  ðð -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð. Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à„n€ð"ð "ð "ð "ð "�ñ "ô "ð "ðC)ð C)ð C)ð C)ð C)ˆ9ñ C)ô C)ð C)ðJ€ð< =€
Ø<€
€
ð €z€z�:�:�:ð€ðð ð ð ð ˆi˜ØØ*Ø9ñ;ô ;€„ð
 ˆy˜Ø/°*Ñ<Ø:¸ZÑGØ3°jÑ@ñBô B€„ð
 ˆy˜Ø/°*Ñ<Ø:¸ZÑGØ8¸:ÑEñGô G€„ð
 ˆy˜Ø/°*Ñ<Ø4°zÑAØ3°jÑ@ñBô B€„ð
 ˆy˜Ø/°*Ñ<Ø:¸ZÑGØ3°jÑ@ñBô B€„ð
 ˆy˜Ø/°*Ñ<Ø:¸ZÑGØ1ñ3ô 3€„ð
 ˆy˜ØØ4°zÑAØ8¸:ÑEñGô G€„ð
 ”€„Ø”€„Ø”<€Ô Ø”M€Ô ðJð Jð Jð Jð J�ñ Jô Jð Jð:Z:ð Z:ð Z:ð Z:ð Z:ˆ9ñ Z:ô Z:ð Z:ðz ˜$�€ðh7ð h7ð h7ð h7ð h7�fñ h7ô h7ð h7ðb	Ø€N€N€NØ„O×Ò˜TÑ"Ô"Ð"Ø„L×Ò˜$ÑÔÐÐÐøØð 	ð 	ð 	Ø€D€Dð	øøøs   È8I ÉIÉI