§
    JŠtjU«  ã                   ó  — d Z ddlZddlmZ ddlmZ ddlmZmZmZmZm	Z	m
Z
 ddlmZmZ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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: e
d	k    rd
Z;ndZ;dZ<e
d	k    rdZ=ndZ=dZ>i Z?dZ@i ZAdZBdZCi ZDdZEdZFdZGi ZHddgZI ed eeB¦  «        dz   ¦  «        D ]!ZJeI eKdeJz  eB¦  «        dz   gdeJdz
  z  z  z  ZIŒ"d„ ZLd„ ZMd„ ZNd„ ZOdXd„ZPeLd„ ¦   «         ZQeLd„ ¦   «         ZR	  ed¦  «        ZS ed ¦  «        ZT ed!¦  «        ZU ed"¦  «        ZVd#„ ZWeLdYd$„¦   «         ZXd%„ ZYd&„ ZZeLd'„ ¦   «         Z[eLd(„ ¦   «         Z\ eMe\¦  «        Z] eMeX¦  «        Z^ eMe[¦  «        Z_ eMeY¦  «        Z` eMeQ¦  «        Za eMeR¦  «        ZbeLd)„ ¦   «         ZceLd*„ ¦   «         Zd eMed¦  «        Ze eMec¦  «        Zfefd+„Zgd,„ Zhd-„ Ziefd.„Zjefd/„ZkdZd0„Zld1„ Zmd2„ Znd[d3„Zod4„ Zpefd5„Zqd6„ Zrd7„ Zsd8„ Ztd9„ Zud:„ Zvefd;„Zwefd<„Zxefd=„Zyefd>„Zzefd?„Z{efd@„Z|efdA„Z}efdB„Z~d[dC„ZdD„ Z€dE„ Z�dF„ Z‚efdG„ZƒedfdH„Z„dI„ Z…eddfdJ„Z†efdK„Z‡efdL„ZˆefdM„Z‰efdN„ZŠefdO„Z‹efdP„ZŒefdQ„Z�efdR„ZŽefdS„Z�dZdT„Z�dZdU„Z‘e
dVk    rg	 ddl’m“c m”c m•Z– e–j4        Z4e–jƒ        Zƒe–jq        Zqe–j‡        Z‡e–jˆ        Zˆe–jg        Zge–j‘        Z‘e–j�        Z�e–jl        ZldS # e—e˜f$ r  e™dW¦  «         Y dS w xY wdS )\a(  
This module implements computation of elementary transcendental
functions (powers, logarithms, trigonometric and hyperbolic
functions, inverse trigonometric and hyperbolic) for real
floating-point numbers.

For complex and interval implementations of the same functions,
see libmpc and libmpi.

é    N)Úbisecté   )Úxrange)ÚMPZÚMPZ_ZEROÚMPZ_ONEÚMPZ_TWOÚMPZ_FIVEÚBACKEND)-Úround_floorÚround_ceilingÚ
round_downÚround_upÚround_nearestÚ
round_fastÚComplexResultÚbitcountÚbctableÚlshiftÚrshiftÚgiant_stepsÚ
sqrt_fixedÚfrom_intÚto_intÚfrom_man_expÚto_fixedÚto_floatÚ
from_floatÚfrom_rationalÚ	normalizeÚfzeroÚfoneÚfnoneÚfhalfÚfinfÚfninfÚfnanÚmpf_cmpÚmpf_signÚmpf_absÚmpf_posÚmpf_negÚmpf_addÚmpf_subÚmpf_mulÚmpf_divÚ	mpf_shiftÚmpf_rdiv_intÚmpf_pow_intÚmpf_sqrtÚreciprocal_rndÚnegative_rndÚmpf_perturbÚ
isqrt_fast)ÚifibÚpythonéX  i�  iÜ  éÈ   é   iÐ  iÄ	  é	   é   i¸  é   é   é   c                 ó^   ‡ — d‰ _         d‰ _        ˆ fd„}‰ j        |_        ‰ j        |_        |S )zè
    Decorator for caching computed values of mathematical
    constants. This decorator should be applied to a
    function taking a single argument prec as input and
    returning a fixed-point value with the given precision.
    éÿÿÿÿNc                 ó¦   •— ‰j         }| |k    r‰j        || z
  z	  S t          | dz  dz   ¦  «        } ‰|fi |¤Ž‰_        |‰_         ‰j        || z
  z	  S )NgÍÌÌÌÌÌð?é
   )Ú	memo_precÚmemo_valÚint)ÚprecÚkwargsrG   ÚnewprecÚfs       €úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/mpmath/libmp/libelefun.pyÚgzconstant_memo.<locals>.g^   sl   ø€ Ø”Kˆ	Ø�9ÒÐØ”: )¨D¡.Ñ1Ð1Ý�d˜4‘i ‘lÑ#Ô#ˆØ�Q�wÐ)Ð) &Ð)Ð)ˆŒ
ØˆŒØŒz˜g d™lÑ+Ð+ó    )rG   rH   Ú__name__Ú__doc__)rM   rO   s   ` rN   Úconstant_memorS   U   sE   ø€ ð €A„KØ€A„Jð,ð ,ð ,ð ,ð ,ð ”€A„JØ”	€A„IØ€HrP   c                 ó8   ‡ — t           fˆ fd„	}‰ j        |_        |S )zÿ
    Create a function that computes the mpf value for a mathematical
    constant, given a function that computes the fixed-point value.

    Assumptions: the constant is positive and has magnitude ~= 1;
    the fixed-point function rounds to floor.
    c                 ó’   •— | dz   } ‰|¦  «        }|t           t          fv r|dz  }t          d|| t          |¦  «        | |¦  «        S )Nr?   r   r   )r   r   r    r   )rJ   ÚrndÚwpÚvÚfixeds       €rN   rM   zdef_mpf_constant.<locals>.fr   sR   ø€ Ø�B‰YˆØˆE�"‰IŒIˆØ•8�]Ð+Ð+Ð+Ø�‰FˆAÝ˜˜A ˜s¥H¨Q¡K¤K°°sÑ;Ô;Ð;rP   )r   rR   )rY   rM   s   ` rN   Údef_mpf_constantrZ   j   s6   ø€ õ ð <ð <ð <ð <ð <ð <ð ”€A„IØ€HrP   c                 ó  — ||z
  dk    r=t          d|z  dz   ¦  «        }|s|dz  rt          || dz  z  |fS t           || dz  z  |fS ||z   dz  }t          | |||¦  «        \  }}}t          | |||¦  «        \  }	}
}|
|z  ||	z  z   ||
z  ||z  fS )Nr   rB   é   )r   r   Úbsp_acot)ÚqÚaÚbÚ
hyperbolicÚa1ÚmÚp1Úq1Úr1Úp2Úq2Úr2s               rN   r]   r]   {   sÁ   € Øˆ1�u�‚z€zÝ��1‘�q‘‰\Œ\ˆØð 	+˜˜1™ð 	+Ý˜B  A¡™I rÐ)Ð)å�8˜R ! Q¡$™Y¨Ð*Ð*Ø	
ˆ1‰ˆq‰€AÝ˜!˜Q  :Ñ.Ô.�J€BˆˆBÝ˜!˜Q  :Ñ.Ô.�J€BˆˆBØˆb‰5�2�b‘5‰=˜"˜R™%  B¡Ð&Ð&rP   c                 óž   — t          d|z  t          j        | ¦  «        z  dz   ¦  «        }t          | d||¦  «        \  }}}||z   |z  || z  z  S )zœ
    Compute acot(a) or acoth(a) for an integer a with binary splitting; see
    http://numbers.computation.free.fr/Constants/Algorithms/splitting.html
    çffffffÖ?r?   r   )rI   ÚmathÚlogr]   )r_   rJ   ra   ÚNÚpr^   Úrs          rN   Ú
acot_fixedrq   ‰   sW   € õ
 	ˆD�4‰K�œ ™œÑ# bÑ(Ñ)Ô)€AÝ�q˜!˜A˜zÑ*Ô*�G€A€qˆ!Øˆq‰S�4‰K˜1˜Q™3ÑÐrP   Fc                 ó–   — d}t           }| D ]9\  }}|t          |¦  «        t          t          |¦  «        ||z   |¦  «        z  z  }Œ:||z	  S )zì
    Evaluate a Machin-like formula, i.e., a linear combination of
    acot(n) or acoth(n) for specific integer values of n, using fixed-
    point arithmetic. The input should be a list [(c, n), ...], giving
    c*acot[h](n) + ...
    rF   )r   r   rq   )ÚcoefsrJ   ra   Ú	extraprecÚsr_   r`   s          rN   Úmachinrv   ’   sZ   € ð €IÝ€AØð Eð E‰ˆˆ1Ø	�S�‰VŒV•j¥ Q¡¤¨¨i©¸ÑDÔDÑDÑDˆˆØ�‰NÐrP   c                 ó(   — t          g d¢| d¦  «        S )zz
    Computes ln(2). This is done with a hyperbolic Machin-type formula,
    with binary splitting at high precision.
    ))é   é   )éþÿÿÿiÁ  )r=   i-"  T©rv   ©rJ   s    rN   Ú	ln2_fixedr}   ¢   s   € õ Ð3Ð3Ð3°T¸4Ñ@Ô@Ð@rP   c                 ó(   — t          g d¢| d¦  «        S )zN
    Computes ln(10). This is done with a hyperbolic Machin-type formula.
    ))é.   é   )é"   é1   )r?   é¡   Tr{   r|   s    rN   Ú
ln10_fixedr„   ª   s   € õ
 Ð1Ð1Ð1°4¸Ñ>Ô>Ð>rP   iqcÏ i¦-~ i@Å	 é   c                 óš  — || z
  dk    rVt          d|z  dz
  d|z  dz
  z  d|z  dz
  z  ¦  «        }|dz  t          dz  z  dz  }d|z  |z  t          t          |z  z   z  }nh|r|dk     rt	          d	| |¦  «         | |z   dz  }t          | ||dz   |¦  «        \  }}	}
t          |||dz   |¦  «        \  }}}|	|z  }||z  }|
|z  ||z  z   }|||fS )
z×
    Computes the sum from a to b of the series in the Chudnovsky
    formula. Returns g, p, q where p/q is the sum as an exact
    fraction and g is a temporary value used to save work
    for recursive calls.
    r   é   é   rB   r\   é   rD   é   z  binary splitting)r   ÚCHUD_CÚCHUD_AÚCHUD_BÚprintÚbs_chudnovsky)r_   r`   ÚlevelÚverboserO   ro   r^   ÚmidÚg1rd   re   Úg2rg   rh   s                 rN   r�   r�   Ó   s
  € ð 	ˆ�sˆa‚x€xÝ��1‘�Q‘˜˜1™˜Q™‘  1¡ Q¡Ñ'Ñ(Ô(ˆØˆq‰D•6˜1‘9Ñ Ñ"ˆØ�!‰G�a‰K�6¥&¨¡(™?Ñ+ˆˆàð 	.�u˜q’y�yÝÐ&¨¨1Ñ-Ô-Ð-Ø�‰s�Q‰hˆÝ" 1 c¨5°©7°GÑ<Ô<‰
ˆˆB�Ý" 3¨¨5°©7°GÑ<Ô<‰
ˆˆB�Øˆr‰EˆØˆr‰EˆØˆr‰E�B�r‘E‰MˆØˆa�ˆ7€NrP   c                 ó   — t          | dz  dz  dz   ¦  «        }|rt          d|¦  «         t          d|d|¦  «        \  }}}t          t          d| z  z  ¦  «        }|t          z  |z  |t
          |z  z   t          z  z  }|S )z“
    Compute floor(pi * 2**prec) as a big integer.

    This is done using Chudnovsky's series (see comments in
    libelefun.py for details).
    gÿ¢v	O“
@g biå ],@rB   zbinary splitting with N =r   )rI   rŽ   r�   r8   r‹   rŒ   ÚCHUD_D)	rJ   r‘   Úverbose_basern   rO   ro   r^   ÚsqrtCrX   s	            rN   Úpi_fixedr™   é   sŒ   € õ 	ˆD�Ñ˜lÑ*¨QÑ.Ñ/Ô/€AØð .ÝÐ)¨1Ñ-Ô-Ð-Ý˜A˜q ! WÑ-Ô-�G€A€qˆ!Ý•v  $¡Ñ'Ñ(Ô(€EØ	�&‰�‰˜!�F 1™H™*¥fÑ,Ñ-€AØ€HrP   c                 ó&   — t          | ¦  «        dz  S )Né´   )r™   r|   s    rN   Údegree_fixedrœ   ú   s   € Ý�D‰>Œ>˜3ÑÐrP   c                 ó¶   — || z
  dk    rt           t          |¦  «        fS | |z   dz  }t          | |¦  «        \  }}t          ||¦  «        \  }}||z  |z   ||z  fS )ze
    Sum series for exp(1)-1 between a, b, returning the result
    as an exact fraction (p, q).
    r   rB   )r   r   Úbspe)r_   r`   rc   rd   re   rg   rh   s          rN   rž   rž   ý   sf   € ð
 	ˆ�sˆa‚x€xÝ�˜A™œˆÐØ	
ˆ1‰ˆq‰€AÝ�!�Q‰ZŒZ�F€BˆÝ�!�Q‰ZŒZ�F€BˆØˆb‰5�‰8�R˜‘Uˆ?ÐrP   c                 ó’   — t          d| z  t          j        | ¦  «        z  dz   ¦  «        }t          d|¦  «        \  }}||z   | z  |z  S )zö
    Computes exp(1). This is done using the ordinary Taylor series for
    exp, with binary splitting. For a description of the algorithm,
    see:

        http://numbers.computation.free.fr/Constants/
            Algorithms/splitting.html
    gš™™™™™ñ?r?   r   )rI   rl   rm   rž   )rJ   rn   ro   r^   s       rN   Úe_fixedr    	  sK   € õ 	ˆC�‰H•T”X˜d‘^”^Ñ# bÑ(Ñ)Ô)€AÝ��!‰9Œ9�D€A€qØˆq‰S�4‰K˜!ÑÐrP   c                 ó`   — | dz  } t          t          d| z  z  ¦  «        t          | z  z   }|dz	  S )z2
    Computes the golden ratio, (1+sqrt(5))/2
    rF   rB   é   )r8   r
   r   )rJ   r_   s     rN   Ú	phi_fixedr£     s5   € ð
 	ˆB�J€DÝ•8˜a ™fÑ%Ñ&Ô&­'°T©/Ñ:€AØ�‰7€NrP   c           	      ó„   — | dz   }t          t          t          t          |¦  «        d¦  «        |¦  «        | dz
  ¦  «        S )NrF   r   )r   Úmpf_logr1   Úmpf_pi)rJ   rW   s     rN   Úln_sqrt2pi_fixedr§   *  s9   € à	�‰€Bå•G�I¥f¨R¡j¤j°!Ñ4Ô4°bÑ9Ô9¸4À¹6ÑBÔBÐBrP   c                 ó<   — t          t          | ¦  «        | ¦  «        S ©N)r   r™   r|   s    rN   Úsqrtpi_fixedrª   0  s   € å•h˜t‘n”n dÑ+Ô+Ð+rP   c           	      óF  — | \  }}}}|\  }}	}
}|r|
dk     rt          d¦  «        ‚|
dk    rt          | d|z  |	|
z  z  ||¦  «        S |
dk    r£|	dk    rG|r4t          t          t	          | |dz   t
          |         ¦  «        ||¦  «        S t	          | ||¦  «        S |r0t          t	          | |dz   t
          |         ¦  «        |	 ||¦  «        S t          t	          | |dz   |¦  «        |	||¦  «        S t          | |dz   |¦  «        }t          t          ||¦  «        ||¦  «        S )zV
    Compute s**t. Raises ComplexResult if s is negative and t is
    fractional.
    r   z,negative number raised to a fractional powerrD   r   rF   )	r   r3   r0   r"   r4   r5   r¥   Úmpf_expr/   )ru   ÚtrJ   rV   ÚssignÚsmanÚsexpÚsbcÚtsignÚtmanÚtexpÚtbcÚcs                rN   Úmpf_powr·   >  s_  € ð
 Ñ€Eˆ4��sØÑ€Eˆ4��sØð L�˜’�ÝÐJÑKÔKÐKØˆq‚y€yÝ˜1˜r E™k¨T°4©ZÑ8¸$ÀÑDÔDÐDàˆr‚z€zØ�1Š9ˆ9Øð 5Ý�t¥X¨a°°b±Ý" 3Ô'ñ&)ô &)Ø*.°ñ5ô 5ð 5å˜A˜t SÑ)Ô)Ð)àð <Ý"¥8¨A¨t°B©wÝ" 3Ô'ñ$)ô $)Ø+/¨%°°sñ<ô <ð <å�x¨¨4°©7°CÑ8Ô8¸$ÀÀcÑJÔJÐJõ 	��4˜‘7˜CÑ Ô €AÝ•7˜1˜a‘=”= $¨Ñ,Ô,Ð,rP   c                 óä  — |dk    r| | z  dfS t          | ¦  «        }d}d|dt          |¦  «        z  z   dz   z  }t          \  }}}}		 |dz  rR|| z  }||z   }|	|dz
  z  }	|	t          t          ||	z	  ¦  «                 z   }	|	|k    r||	|z
  z	  }||	|z
  z  }|}	|dz  }|snP| | z  } ||z   }||z   dz
  }|t          t          | |z	  ¦  «                 z   }||k    r| ||z
  z	  } |||z
  z  }|}|dz  }Œ§||fS )z‡n-th power of a fixed point number with precision prec

       Returns the power in the form man, exp,
       man * 2**exp ~= y**n
    rB   r   rŠ   r   )r   r"   r   rI   )
ÚyÚnrJ   ÚbcÚexpÚworkprecÚ_ÚpmÚpeÚpbcs
             rN   Úint_pow_fixedrÂ   Z  sW  € ð 	ˆA‚v€vØ�!‘�aˆxˆÝ	�!‰Œ€BØ
€CØ�D˜1�X a™[œ[™=Ñ(¨1Ñ,Ñ-€HÝ�N€A€rˆ2ˆsðØˆq‰5ð 	Ø�A‘ˆBØ�C‘ˆBØ�2˜‘6‰MˆCØ�¥ B¨#¡I¡¤Ô/Ñ/ˆCØ�XŠ~ˆ~Ø˜C ™LÑ)�Ø�c˜H‘nÑ$�Ø�Ø�‰FˆAØð ØØˆa‰CˆØ�#‰gˆØ�"‰W�q‰[ˆØ•'�#˜a 2™g™,œ,Ô'Ñ'ˆØ�Š=ˆ=Ø�b˜‘kÑ"ˆAØ�2˜‘=Ñ ˆCØˆBØ�‰Fˆð+ð, ˆrˆ6€MrP   c                 ó\  — d}	 t          | |||z  z
  ¦  «        }t          t          |d|z  z  ¦  «        ¦  «        }n`# t          $ rS t	          ||¦  «        }t	          |¦  «        }t          d||¦  «        }t          |||¦  «        }t          |¦  «        }Y nw xY wd}|}	|}
t          |||z   ¦  «        D ]u}t          ||dz
  |
¦  «        \  }}t          ||dz
  |
z  |z
  |z
  |	z
  ¦  «        }t          | d|z  |z
  |	z   ¦  «        |z  }||dz
  t          |||
z
  ¦  «        z  z   |z  }|}
Œv|S )Né2   g      ð?r   rF   rB   )r   r   rI   ÚOverflowErrorr   r2   r·   r   r   rÂ   r   )r¹   rº   rJ   Úexp1ÚstartÚy1rp   ÚfnÚextraÚextra1Úprevpro   r¿   rÀ   ri   ÚBs                   rN   Únthroot_fixedrÎ   �  sf  € Ø€EðÝ�A�t˜a ™g‘~Ñ&Ô&ˆÝ•�B˜˜Q™‘KÑ Ô Ñ!Ô!ˆˆøÝð ð ð Ý�b˜%Ñ Ô ˆÝ�a‰[Œ[ˆÝ˜!˜R Ñ'Ô'ˆÝ�B˜˜EÑ"Ô"ˆÝ�1‰IŒIˆˆˆðøøøð €EØ€FØ€EÝ˜  U¡
Ñ+Ô+ð ð ˆÝ˜q ! A¡# uÑ-Ô-‰ˆˆBÝ�B˜˜1™˜e™ a™¨"Ñ,¨vÑ5Ñ6Ô6ˆÝ�1�a˜‘c˜$‘h˜v‘oÑ&Ô&¨Ñ*ˆØ�!�A‘#�  1 U¡7Ñ+Ô+Ñ+Ñ+¨aÑ/ˆØˆˆØ€Hs   „8= ½ABÂBc                 ó¶  — | \  }}}}|rt          d¦  «        ‚|s[| t          k    rt          S | t          k    r!|dk    rt          S |dk    rt          S t          S |st          S |dk     rt          S t          S d}|dk     rZ|dk    rt          S |dk    rt          | ||¦  «        S |dk    rt          t          | ||¦  «        S t          |         }d}d}	||	z  }| }|d	k    r£|d
k    s|t          dd|dz  z  z   ¦  «        k     r�|dz   }
t          |¦  «        }t          d||
¦  «        }t          | ||
|¦  «        }t          |d         |d         |d         |d         ||¦  «        } |rt          t          | ||	z
  |¦  «        S | S |d|z  z   ||z  z
  }
|dk    r|
|
dz  z  }
|
|
|z  z
  }
||
z
  }d}||z   }|dk     rd}| }|r	|||z  z  }n|||z  z  }t          ||¦  «        }d}||z   |dz
  |
z  z
  |z  |z
  }d}|r|dk    s|dk    rd}n|dk    s|dk    rd}t          ||z   ||
|¦  «        }t          ||||¦  «        } |rt          t          | ||	z
  |¦  «        S | S )zanth-root of a positive number

    Use the Newton method when faster, otherwise use x**(1/n)
    znth root of a negative numberr   FrB   r   rD   Trˆ   r?   i N  éé   gÍÌÌÌÌL<@g×£p=
×ã?rF   r\   Úur¶   ÚdrM   )r   r'   r!   r"   r%   r+   r0   r5   rI   r   r2   r·   r    r   rÎ   r   )ru   rº   rJ   rV   ÚsignÚmanr¼   r»   Úflag_inverseÚextra_inverseÚprec2rÉ   Únthrp   ÚshiftÚsign1ÚesrÊ   rÆ   Ú	rnd_shifts                       rN   Úmpf_nthrootrÝ   ¦  s  € ð
 Ñ€Dˆ#ˆs�BØð =ÝÐ;Ñ<Ô<Ð<Øð Ø•Š9ˆ9ÝˆKØ•Š:ˆ:Ø�1ŠuˆuÝ�Ø�AŠvˆvÝ�ÝˆKàð 	ÝˆKØˆqŠ5ˆ5ÝˆLÝˆØ€LØˆ1‚u€uØ�Š6ˆ6ÝˆKØ�Š6ˆ6Ý˜1˜d CÑ(Ô(Ð(Ø�Š7ˆ7Ý�4  D¨#Ñ.Ô.Ð.å˜SÔ!ˆØˆØˆØ�ÑˆØˆBˆØˆ2‚v€v�1˜’:�: ­¨C°$¸¸D¹±.Ñ,@Ñ(AÔ(AÒ!AÐ!AØ�r‘	ˆÝ�a‰[Œ[ˆÝ˜1˜b %Ñ(Ô(ˆÝ�A�s˜E 3Ñ'Ô'ˆÝ�a˜”d˜A˜aœD ! A¤$¨¨!¬¨d°CÑ8Ô8ˆØð 	Ý�4  D¨Ñ$6¸Ñ<Ô<Ð<àˆHà�1�Q‘3‰J˜$˜q™&Ñ!€Eð 	ˆ2‚v€vØ�˜‘ÑˆØ˜˜a™‘ˆà�‰J€Eà€EØ	ˆU‰€BØ	ˆA‚v€vØˆØˆSˆØð Ø��A‘‰ˆˆà��A‘‰ˆÝ
��eÑ
Ô
€CØ€EØ�‰Y˜˜!™˜U‘{Ñ" QÑ&¨%Ñ/€DØ€IØð Ø�#Š:ˆ:˜ š˜ØˆIøà�#Š:ˆ:˜ š˜ØˆIÝ
˜˜I™ q¨%°Ñ
6Ô
6€CÝ�S˜$  cÑ*Ô*€AØð Ý•t˜Q  ]Ñ 2°CÑ8Ô8Ð8àˆrP   c                 ó&   — t          | d||¦  «        S )zcubic root of a positive numberr\   )rÝ   )ru   rJ   rV   s      rN   Úmpf_cbrtrß   ù  s   € å�q˜!˜T 3Ñ'Ô'Ð'rP   c                 óˆ  — | t           v rt           |          \  }}||k    r|||z
  z	  S |dz   }|t          k    r?|€t          |¦  «        }t          | ¦  «        }| ||z
  z  }t	          ||¦  «        ||z  z   }n.t          t          t          | ¦  «        |dz   ¦  «        |¦  «        }| t          k     r||ft           | <   |||z
  z	  S )z`
    Fast computation of log(n), caching the value for small n,
    intended for zeta sums.
    rF   Nrˆ   )	Úlog_int_cacheÚLOG_TAYLOR_SHIFTr}   r   Úlog_taylor_cachedr   r¥   r   ÚMAX_LOG_INT_CACHE)	rº   rJ   Úln2ÚvalueÚvprecrW   rp   ÚxrX   s	            rN   Úlog_int_fixedré     s×   € ð
 	�MÐÐÝ$ QÔ'‰ˆˆuØ�DŠ=ˆ=Ø˜U T™\Ñ*Ð*Ø	�‰€BØ	ÕÒÐØˆ;Ý˜B‘-”-ˆCÝ�Q‰KŒKˆØ�"�Q‘$‰KˆÝ˜a Ñ$Ô$ q¨¡uÑ,ˆˆå•W�X a™[œ[¨"¨Q©$Ñ/Ô/°Ñ4Ô4ˆØÕÒÐØ˜r˜7��aÑØ��D‘‰>ÐrP   c                 óˆ   — d}	 | |z   dz	  }|dk    rt          | |z
  ¦  «        dk     r| S t          | |z  ¦  «        }|} |dz  }Œ@)z^
    Fixed-point computation of agm(a,b), assuming
    a, b both close to unit magnitude.
    r   r   rŠ   r=   )Úabsr8   )r_   r`   rJ   ÚiÚanews        rN   Ú	agm_fixedrî     s]   € ð
 	
€AðØ�!‘�a‰xˆØˆqŠ5ˆ5•S˜˜4™‘[”[ 1’_�_ØˆHÝ�q˜‘s‰OŒOˆØˆØ	ˆQ‰ˆðrP   c                 ój  — | | z  |z	  }|x}x}}|r||z  |z	  }||z  |z	  }||z  }|°|t           |z  z  }||z  |dz
  z	  }|t          | |z  ¦  «        z  |z	  }| x}x}}|r||z  |z	  }||z  |z	  }||z  }|°t           |z  |dz  z   }||z  |z	  }t          |||¦  «        }t          |¦  «        |z  |z  S )a*  
    Fixed-point computation of -log(x) = log(1/x), suitable
    for large precision. It is required that 0 < x < 1. The
    algorithm used is the Sasaki-Kanada formula

        -log(x) = pi/agm(theta2(x)^2,theta3(x)^2). [1]

    For faster convergence in the theta functions, x should
    be chosen closer to 0.

    Guard bits must be added by the caller.

    HYPOTHESIS: if x = 2^(-n), n bits need to be added to
    account for the truncation to a fixed-point number,
    and this is the only significant cancellation error.

    The number of bits lost to roundoff is small and can be
    considered constant.

    [1] Richard P. Brent, "Fast Algorithms for High-Precision
        Computation of Elementary Functions (extended abstract)",
        http://wwwmaths.anu.edu.au/~brent/pd/RNC7-Brent.pdf

    rB   r   )r   r8   rî   r™   )rè   rJ   Úx2ru   r_   r`   r­   ro   s           rN   Úlog_agmrñ   )  s  € ð2 ˆA‰#�$‰€Bà€N€A€NˆˆAØ
ð Øˆr‰T�d‰NˆØˆq‰S�T‰MˆØ	ˆQ‰ˆð ð ð �'�4‰-Ñ€AØ	
ˆ1‰��Q‘‰€AØ	
�:�a˜‘gÑÔÑ	 Ñ%€Aà€M€A€MˆˆAØ
ð Øˆr‰T�d‰NˆØˆq‰S�T‰MˆØ	ˆQ‰ˆð ð õ 
�$‰˜1˜a™4Ñ €AØ	
ˆ1‰ˆt‰€Aå�!�Q˜ÑÔ€AÝ�T‰NŒN˜dÑ" qÑ(Ð(rP   c                 óR  — t          |¦  «        D ]}t          | |z  ¦  «        } Œt          |z  }| |z
  |z  | |z   z  }|dk     }|r| }||z  |z	  }||z  |z	  }|}	|dz  }
||z  |z	  }d}|r$|	||z  z  }	|dz  }|
||z  z  }
||z  |z	  }|dz  }|°$|
|z  |z	  }
|	|
z   d|z   z  }|r| S |S )a:  
    Fixed-point calculation of log(x). It is assumed that x is close
    enough to 1 for the Taylor series to converge quickly. Convergence
    can be improved by specifying r > 0 to compute
    log(x^(1/2^r))*2^r, at the cost of performing r square roots.

    The caller must provide sufficient guard bits.
    r   r\   rˆ   rB   r   )r   r8   r   )rè   rJ   rp   rì   ÚonerX   rÓ   Úv2Úv4Ús0Ús1Úkru   s                rN   Ú
log_taylorrù   X  s  € õ �A‰YŒYð  ð  ˆÝ�q˜$‘wÑÔˆˆÝ
�T‰/€CØ
ˆC‰%�$‰˜!˜C™%Ñ €AØˆqŠ5€DØð ØˆBˆØ
ˆA‰#�$‰€BØ
ˆR‰%�D‰€BØ	
€BØ	
ˆA‰€BØ	
ˆ2‰�$‰€AØ	€AØ
ð Ø
ˆa�1‰f‰ˆØ	ˆQ‰ˆØ
ˆa�1‰f‰ˆØˆr‰T�d‰NˆØ	ˆQ‰ˆð ð ð ˆR‰%�D‰€BØ	ˆB‰�A�a‘CÑ€AØð Øˆrˆ	Ø€HrP   c                 óÜ  — | |t           z
  z	  }t          |         }||z
  }||ft          v rt          ||f         \  }}n,||t           z
  z  }t          ||d¦  «        }||ft          ||f<   ||z  }||z  }| |z
  |z  |z  }||z  t          |z  |z   z  }||z  |z	  }	|	|	z  |z	  }
|}|dz  }||
z  |z	  }d}|r$|||z  z  }|dz  }|||z  z  }||
z  |z	  }|dz  }|°$||	z  |z	  }||z   dz  }||z   S )zd
    Fixed-point computation of log(x), assuming x in (0.5, 2)
    and prec <= LOG_TAYLOR_PREC.
    r=   r\   rˆ   rB   r   )râ   Úcache_prec_stepsÚlog_taylor_cacherù   r	   )rè   rJ   rº   Úcached_precÚdprecr_   Úlog_arÑ   rX   rô   rõ   rö   r÷   rø   ru   s                  rN   rã   rã   z  sg  € ð
 	
ˆdÕ#Ñ#Ñ$€AÝ" 4Ô(€KØ˜$Ñ€EØ	ˆ;ÐÕ+Ð+Ð+Ý# A { NÔ3‰ˆˆ5ˆ5à�+Õ 0Ñ0Ñ1ˆÝ˜1˜k¨1Ñ-Ô-ˆØ,-¨u¨:Õ˜˜K˜Ñ(Øˆ%�K€AØ	ˆe�O€EØ
ˆa‰%�D‰˜QÑ€AØ	
ˆd‰� D™¨AÑ-Ñ.€AØ
ˆA‰#�$‰€BØ
ˆR‰%�D‰€BØ	
€BØ	
ˆA‰€BØ	
ˆ2‰�$‰€AØ	€AØ
ð Ø
ˆa�‰d‰
ˆØ	ˆQ‰ˆØ
ˆa�‰d‰
ˆØˆr‰T�d‰NˆØ	ˆQ‰ˆð ð ð ˆR‰%�D‰€BØ	ˆB‰�1‰€AØ�1‰9ÐrP   c                 óø  — | \  }}}}|s6| t           k    rt          S | t          k    rt          S | t          k    rt          S |rt	          d¦  «        ‚|dz   }|dk    r,|st           S t          |t          |¦  «        z  | ||¦  «        S ||z   }t          |¦  «        }	|	dk    rmd|	z
  }
|
rt          |z  |z
  }n|t          |dz
  z  z
  }t          |¦  «        }||z
  }||k    r)t          |
||	|z
  ||d¦  «        }t          ||
||¦  «        S ||z  }|	dk    r6t          |	¦  «        |k    r#t          |t          |¦  «        z  | ||¦  «        S |t          k    r9t          t          |||z
  ¦  «        |¦  «        }|r||t          |¦  «        z  z  }nZ| t          z  }||z
  }t!          | |¦  «        } || z  }t#          t%          | |¦  «        |¦  «         }||t          |¦  «        z  z  }t          || ||¦  «        S )zj
    Compute the natural logarithm of the mpf value x. If x is negative,
    ComplexResult is raised.
    zlogarithm of a negative numberr?   r   rº   i'  )r!   r&   r%   r'   r   r   r}   rë   r   r   r    r7   ÚLOG_TAYLOR_PRECrã   r   ÚLOG_AGM_MAG_PREC_RATIOr1   rñ   r   )rè   rJ   rV   rÓ   rÔ   r¼   r»   rW   ÚmagÚabs_magr²   r³   rµ   Úcancellationr­   rc   Úoptimal_magrº   s                     rN   r¥   r¥   œ  sA  € ð
 Ñ€Dˆ#ˆs�Bð ð "Ø•Š:ˆ:�e�|Ø•Š9ˆ9�T�kØ•Š9ˆ9�T�kØð >ÝÐ<Ñ=Ô=Ð=Ø	�‰€Bð ˆa‚x€xØð 	ÝˆLÝ˜C¥	¨"¡¤Ñ-°¨s°D¸#Ñ>Ô>Ð>Ø
ˆb‰&€CÝ�#‰hŒh€Gð �!‚|€|à�'‘	ˆØð 	+Ý˜R‘K 3Ñ&ˆDˆDà�' B q¡D™/Ñ*ˆDÝ�t‰nŒnˆØ˜C‘xˆØ˜"ÒÐÝ˜%  w¨r¡z°3¸¸SÑAÔAˆAÝ˜q %¨¨sÑ3Ô3Ð3à�,ÑˆBð �‚€Ý�GÑÔ˜rÒ!Ð!Ý ¥I¨b¡M¤MÑ 1°B°3¸¸cÑBÔBÐBð 
�_ÒÐÝ�f S¨"¨R©%Ñ0Ô0°"Ñ5Ô5ˆØð 	#Ø�•Y˜r‘]”]Ñ"Ñ"ˆAøà�cÕ1Ñ1ˆØ˜#ÑˆÝ�a˜‰OŒOˆØ
�ˆ|ÑˆÝ•X˜a ‘_”_ bÑ)Ô)Ð)ˆØ	ˆQ�y˜‰}Œ}‰_ÑˆÝ˜˜B˜3  cÑ*Ô*Ð*rP   c           
      ó¬  — |d         s|| }} | d         s|d         s5| |cxk    rt           k    r
n nt          S t          | |fv rt          S t          S | t           k    rt	          t          |¦  «        ||¦  «        S | t          k    rt          S t          S t          | | ¦  «        }t          ||¦  «        }d}t          ||||z   ¦  «        }t          |t          d¦  «        }|d         |d         z   }	|t           k    s
|	| dz  k     r1t          ||||z   t          |d         |d         ¦  «        z
  ¦  «        }t          t	          |||¦  «        d¦  «        S )z1
    Computes log(sqrt(a^2+b^2)) accurately.
    r   r?   rF   rB   r\   rD   )r!   r&   r'   r%   r¥   r*   r/   r-   r#   Úminr1   )
r_   r`   rJ   rV   Úa2Úb2rÊ   Úh2Ú	cancelledÚmag_cancelleds
             rN   Úmpf_log_hypotr  ä  sV  € ð
 ˆQŒ4ð Ø�!ˆ1ˆàˆQŒ4ð à�Œtð 	Ø�AˆˆŠˆ�ŠˆˆˆˆÝ�Ý˜˜1�vˆ~ˆ~Ý�åˆKà•Š:ˆ:å�7 1™:œ: t¨SÑ1Ô1Ð1Ø•Š9ˆ9ÝˆKÝˆå	��1‰Œ€BÝ	��1‰Œ€BØ€Eå	��R˜˜e™Ñ	$Ô	$€BÝ˜�E 2Ñ&Ô&€IØ˜a”L ¨1¤Ñ-€Mð •EÒÐ˜]¨e¨V°Q©YÒ6Ð6Ý�R˜˜T %™Z­¨B¨q¬E°"°Q´%Ñ(8Ô(8Ñ8Ñ9Ô9ˆÝ•W˜R  sÑ+Ô+¨RÑ0Ô0Ð0rP   c                 ó  — |dk    r+t          j        t          | |dz
  z	  ¦  «        dz  ¦  «        }n't          j        t          | ¦  «        d|z  z  ¦  «        }d}t          t          |dz  ¦  «        d|z
  z	  ¦  «        }d}t	          ||¦  «        D ]^}||z  }|||z
  z  }t          ||¦  «        \  }}||z  |z  }|t          | ||z
  ¦  «        z
  |z  t          |z  |dz  |z	  z   z  }	||	z
  }|}Œ_t          |||z
  ¦  «        S )Néd   é5   g      @Cg       @rÄ   rB   )rl   ÚatanrI   r   r   Úcos_sin_fixedr   r   )
rè   rJ   rp   rÌ   Úextra_prW   ÚcosÚsinÚtanr_   s
             rN   Úatan_newtonr    s"  € Øˆs‚{€{ÝŒI•c˜1˜t B™w™<Ñ)Ô)¨'Ñ1Ñ2Ô2ˆˆåŒI•c˜!‘f”f˜S $™YÑ&Ñ'Ô'ˆØ€EÝ�C��G‘ÑÔ  E¡Ñ*Ñ+Ô+€AØ€GÝ˜% Ñ&Ô&ð ð ˆØ
ˆg‰ˆØ�"�U‘(‰OˆÝ   BÑ'Ô'‰ˆˆSØ�b‰y˜SÑ ˆØ•&˜˜D ™GÑ$Ô$Ñ$¨Ñ+µ'¸2±+À3ÈÁ6ÈBÁ,Ñ1OÑPˆØ�‰EˆØˆˆÝ�!�U˜4‘ZÑ Ô Ð rP   c                 óâ   — dt          |dz
  ¦  «        z  dz   }||z
  }| |ft          v rt          | |f         \  }}n+| |t          z
  z  }t          ||¦  «        }||ft          | |f<   ||z	  ||z	  fS )Nr   r?   )r   Úatan_taylor_cacheÚATAN_TAYLOR_SHIFTr  )rº   rJ   r×   rþ   r_   Úatan_as         rN   Úatan_taylor_get_cachedr  "  s‘   € ð
 •˜$˜q™&Ñ!Ô!Ñ" bÑ(€EØ�D‰L€EØ	ˆ5€zÕ&Ð&Ð&Ý% a¨ hÔ/‰	ˆˆ6ˆ6à�%Õ+Ñ+Ñ,ˆÝ˜Q Ñ&Ô&ˆØ'(¨& kÕ˜!˜U˜(Ñ#Ø�‰J˜& E™/Ð*Ð*rP   c                 óB  — | |t           z
  z	  }t          ||¦  «        \  }}| |z
  }||z  |dz  |z	  ||z  |z	  z   t          |z  z   z  x}}|dz  |z	  }||z  |z	  }	|dz  }
||	z  |z	  }d}|r$|||z  z  }|dz  }|
||z  z  }
||	z  |z	  }|dz  }|°$|
|z  |z	  }
||
z
  }||z   S )NrB   r\   rˆ   )r  r  r   )rè   rJ   rº   r_   r  rÒ   rö   rX   rô   rõ   r÷   rø   ru   s                rN   Úatan_taylorr  1  s  € Ø	
ˆtÕ%Ñ%Ñ	&€AÝ& q¨$Ñ/Ô/�I€A€vØ	ˆA‰€AØ�4‰i˜a ™d d™l¨q°©s°d©{Ñ;½wÈ$¹ÑOÑPÐP€BˆØ
ˆQ‰$�$‰,€BØ
ˆr‰'�dÑ	€BØ	
ˆA‰€BØ	
ˆR‰�DÑ€AØ	€AØ
ð Ø
ˆa�1‰f‰ˆØ	ˆQ‰ˆØ
ˆa�1‰f‰ˆØ�‰V˜ÑˆØ	ˆQ‰ˆð ð ð ˆr‰'�dÑ	€BØ
ˆR‰€AØ�A‰:ÐrP   c           	      ó®   — | st          t          ||¦  «        d¦  «        S t          t          t          |t          |         ¦  «        d¦  «        ¦  «        S )NrD   )r1   r¦   r,   r6   )rÓ   rJ   rV   s      rN   Úatan_infr!  E  sK   € Øð 0Ý�  cÑ*Ô*¨BÑ/Ô/Ð/Ý•9�V D­,°sÔ*;Ñ<Ô<¸bÑAÔAÑBÔBÐBrP   c                 óz  — | \  }}}}|sQ| t           k    rt           S | t          k    rt          d||¦  «        S | t          k    rt          d||¦  «        S t          S ||z   }||dz   k    rt          |||¦  «        S | |dz   k    rt          | d|z
  ||¦  «        S |dz   t          |¦  «        z   }|dk    rt          d| |¦  «        } d}	nd}	t          | |¦  «        }
|r|
 }
|t          k     rt          |
|¦  «        }nt          |
|¦  «        }|	rt          |¦  «        dz	  dz   |z
  }|r| }t          || ||¦  «        S )Nr   r   r?   é   rB   TF)r!   r%   r!  r&   r'   r7   rë   r2   r   ÚATAN_TAYLOR_PRECr  r  r™   r   )rè   rJ   rV   rÓ   rÔ   r¼   r»   r  rW   Ú
reciprocalr­   r_   s               rN   Úmpf_atanr&  J  su  € ØÑ€Dˆ#ˆs�BØð Ø•Š:ˆ:�e�|Ø•Š9ˆ9�X a¨¨sÑ3Ô3Ð3Ø•Š:ˆ:�h q¨$°Ñ4Ô4Ð4ÝˆØ
�‰(€Cà
ˆT�"‰W‚}€}Ý˜˜d CÑ(Ô(Ð(à€tˆd�2‰g‚~€~Ý˜1˜a ™f d¨CÑ0Ô0Ð0Ø	�‰•S˜‘X”XÑ	€Bà
ˆa‚x€xÝ˜˜A˜rÑ"Ô"ˆØˆ
ˆ
àˆ
Ý��B‰Œ€AØð ØˆBˆØ	ÕÒÐÝ˜˜2ÑÔˆˆå˜˜2ÑÔˆØð &Ý�r‰lŒl˜A‰o˜qÑ  AÑ%ˆØð ØˆBˆÝ˜˜B˜3  cÑ*Ô*Ð*rP   c           	      óÄ  — |\  }}}}| \  }}	}
}|	sÍ| t           k    r5|t          k    r*t          |¦  «        dk    rt           S t          ||¦  «        S | t          t
          fv rv|t          t
          fv rt          S | t          k    rt          t          ||¦  «        d¦  «        S t          t          t          |t          |         ¦  «        d¦  «        ¦  «        S t          S |r7t          t          t          | ¦  «        ||t          |         ¦  «        ¦  «        S |so|t          k    rt          S |t          k    rt           S |t
          k    rt          ||¦  «        S | t           k    rt           S t          t          ||¦  «        d¦  «        S t          t          | ||dz   ¦  «        |dz   ¦  «        }|r"t          t          |dz   ¦  «        |||¦  «        S t          |||¦  «        S )Nr   rD   rŠ   )r!   r'   r)   r¦   r%   r&   r1   r,   r6   Ú	mpf_atan2r&  r0   r-   r+   )r¹   rè   rJ   rV   ÚxsignÚxmanÚxexpÚxbcÚysignÚymanÚyexpÚybcÚtquos                rN   r(  r(  m  s¿  € ØÑ€Eˆ4��sØÑ€Eˆ4��sØð Ø•Š:ˆ:˜!�tš)˜)Ý˜‰{Œ{˜aÒÐÝ�Ý˜$ Ñ$Ô$Ð$Ø••u�ÐÐØ•T�5�MÐ!Ð!Ý�à•DŠyˆyÝ ¥¨¨cÑ!2Ô!2°BÑ7Ô7Ð7å�9¥V¨Dµ,¸sÔ2CÑ%DÔ%DÀbÑIÔIÑJÔJÐJÝˆØð JÝ•y¥¨¡¤¨Q°µlÀ3Ô6GÑHÔHÑIÔIÐIØð 	0Ø•Š9ˆ9ÝˆKØ•Š9ˆ9ÝˆLØ•Š:ˆ:Ý˜$ Ñ$Ô$Ð$Ø•Š:ˆ:ÝˆLÝ�  cÑ*Ô*¨BÑ/Ô/Ð/Ý•G˜A˜q $ q¡&Ñ)Ô)¨4°©6Ñ2Ô2€DØð (Ý•v˜d 1™f‘~”~ t¨T°3Ñ7Ô7Ð7å�t˜T 3Ñ'Ô'Ð'rP   c           
      óZ  — | \  }}}}||z   dk    r| t           t          fvrt          d¦  «        ‚|dz   }t          | | ¦  «        }t	          t           t          t          t           ||¦  «        |¦  «        |¦  «        }	t          | |	|¦  «        }
t          t          |
||¦  «        d¦  «        S )Nr   z%asin(x) is real only for -1 <= x <= 1é   r   )
r"   r#   r   r/   r-   r4   r.   r0   r1   r&  ©rè   rJ   rV   rÓ   rÔ   r¼   r»   rW   r_   r`   r¶   s              rN   Úmpf_asinr5  �  s¤   € ØÑ€Dˆ#ˆs�BØ	ˆ#�v�‚z€z�a¥¥e˜}Ð,Ð,ÝÐCÑDÔDÐDà	�‰€BÝ��1‰Œ€AÝ••h�w¥t¨Q°Ñ3Ô3°RÑ8Ô8¸"Ñ=Ô=€AÝ��1�bÑÔ€AÝ•X˜a  sÑ+Ô+¨QÑ/Ô/Ð/rP   c                 ó�  — | \  }}}}||z   dk    r:| t           t          fvrt          d¦  «        ‚| t          k    rt          ||¦  «        S |dz   }t	          | | ¦  «        }t          t          t           ||¦  «        |¦  «        }	t          |	t          t           | |¦  «        |¦  «        }
t          t          |
||¦  «        d¦  «        S )Nr   z%acos(x) is real only for -1 <= x <= 1r3  r   )r"   r#   r   r¦   r/   r4   r.   r0   r-   r1   r&  r4  s              rN   Úmpf_acosr7  ›  s¾   € àÑ€Dˆ#ˆs�BØ	ˆC�x�!‚|€|Ø•T�5�MÐ!Ð!ÝÐ GÑHÔHÐHØ•Š:ˆ:Ý˜$ Ñ$Ô$Ð$Ø	�‰€BÝ��1‰Œ€AÝ•�˜q "Ñ%Ô% rÑ*Ô*€AÝ�•7�4  BÑ'Ô'¨Ñ,Ô,€AÝ•X˜a  sÑ+Ô+¨QÑ/Ô/Ð/rP   c                 óŒ  — |dz   }| \  }}}}||z   }|dk     r"|| k     rt          | d|z
  ||¦  «        S || z  }t          t          t          | | ¦  «        t          |¦  «        |¦  «        }	t          t          | ¦  «        |	|¦  «        }	|r)t          t          |	|t          |         ¦  «        ¦  «        S t          |	||¦  «        S )Nr?   éøÿÿÿr   )	r7   r4   r-   r/   r"   r*   r,   r¥   r6   )
rè   rJ   rV   rW   rÓ   rÔ   r¼   r»   r  r^   s
             rN   Ú	mpf_asinhr:  ©  sÎ   € Ø	�‰€BØÑ€Dˆ#ˆs�BØ
ˆb‰&€CØ
ˆR‚x€xØ�"�Š9ˆ9Ý˜q ! D¡&¨$°Ñ4Ô4Ð4Ø
�ˆt‰ˆõ 	•�  A™œ­¨bÑ1Ô1°2Ñ6Ô6€AÝ•˜‘
”
˜A˜rÑ"Ô"€AØð %Ý•w˜q $­°SÔ(9Ñ:Ô:Ñ;Ô;Ð;å�q˜$ Ñ$Ô$Ð$rP   c                 ó   — |dz   }t          | t          ¦  «        dk    rt          d¦  «        ‚t          t	          t          | | ¦  «        t          |¦  «        |¦  «        }t          t	          | ||¦  «        ||¦  «        S )Nr3  rD   z acosh(x) is real only for x >= 1)r(   r"   r   r4   r-   r/   r#   r¥   )rè   rJ   rV   rW   r^   s        rN   Ú	mpf_acoshr<  º  sp   € à	�‰€BÝˆq•$ÑÔ˜2ÒÐÝÐ>Ñ?Ô?Ð?Ý•�  1™œ¥u¨bÑ1Ô1°2Ñ6Ô6€AÝ•7˜1˜a Ñ$Ô$ d¨CÑ0Ô0Ð0rP   c           	      óÖ  — | \  }}}}|s#|r!| t           t          fv r| S t          d¦  «        ‚||z   }|dk    r/|dk    r|dk    rt          t          g|         S t          d¦  «        ‚|dz   }|dk     r|| k     rt          | |||¦  «        S || z  }t          | t          |¦  «        }	t          t          | |¦  «        }
t          t          t          |	|
|¦  «        ||¦  «        d¦  «        S )Nz&atanh(x) is real only for -1 <= x <= 1r   r   r3  r9  rD   )r!   r'   r   r%   r&   r7   r-   r"   r.   r1   r¥   r0   )rè   rJ   rV   rÓ   rÔ   r¼   r»   r  rW   r_   r`   s              rN   Ú	mpf_atanhr>  Â  s  € àÑ€Dˆ#ˆs�BØð F�Sð FØ•��ÐÐØˆHÝÐDÑEÔEÐEØ
ˆs‰(€CØ
ˆQ‚w€wØ�!Š8ˆ8˜˜qš˜Ý�%�= Ô&Ð&ÝÐDÑEÔEÐEØ	�‰€BØ
ˆR‚x€xØ�"�Š9ˆ9Ý˜q $¨¨cÑ2Ô2Ð2Ø
�ˆt‰ˆÝ�•4˜ÑÔ€AÝ•�a˜ÑÔ€AÝ•W�W Q¨¨2Ñ.Ô.°°cÑ:Ô:¸BÑ?Ô?Ð?rP   c                 ó  — | \  }}}}|s| t           k    rt          S | S t          ||z   ¦  «        }|dk    rD|dk     s|t          |¦  «        k    r+t	          t          t          | ¦  «        ¦  «        ||¦  «        S ||z   dz   }t          |¦  «        }	t          t          |	d¦  «        t          |¦  «        }
t          |	| |¦  «        }t          | |¦  «        }t          |||¦  «        }t          |||¦  «        }t          ||
||¦  «        }|S )Nr   rF   r?   r   )r&   r'   rë   r   r   r9   r   Úmpf_phir-   r1   r#   r·   Ú
mpf_cos_pir0   r.   )rè   rJ   rV   rÓ   rÔ   r¼   r»   ÚsizerW   r_   r`   rÑ   rX   s                rN   Úmpf_fibonaccirC  ×  s  € ØÑ€Dˆ#ˆs�BØð Ø•Š:ˆ:ÝˆKØˆåˆs�2‰v‰;Œ;€DØ
ˆa‚x€xà�"Š9ˆ9˜¥¨¡¤Ò.Ð.Ý�D¥¨¡¤™OœO¨T°3Ñ7Ô7Ð7à	�‰�rÑ	€BÝ�‰Œ€AÝ•	˜!˜Q‘”¥¨Ñ+Ô+€AÝ��1�bÑÔ€AÝ�1�bÑÔ€AÝ��1�bÑÔ€AÝ��1�bÑÔ€AÝ��1�d˜CÑ Ô €AØ€HrP   c                 ó(  — | dk     r|  } d}nd}t          d|dz  z  ¦  «        }t          | ¦  «        |z
  }t          d||z   ¦  «        }ddt          || ¦  «        z  z   }||z   }| ||z
  z  } t          |z  }|dk    }	|t          k     rp| | z  |z	  x}
}|
|
z  |z	  }t
          x}}d}|r4||dz
  |z  z  }||z  }|dz  }||dz
  |z  z  }||z  }|dz  }||z  |z	  }|°4|
|z  |z	  }|	r
||z
  |z   }�n||z   |z   }nüt          d|dz  z  ¦  «        }| | z  |z	  x}
}||
g}t          d|¦  «        D ]#}|                     |d         |
z  |z	  ¦  «         Œ$t
          g|z  }d}|rZt          |¦  «        D ]:}||dz
  |z  z  }|	r|dz  r||xx         |z  cc<   n||xx         |z  cc<   |dz  }Œ;||d         z  |z	  }|°Zt          d|¦  «        D ]}||         ||         z  |z	  ||<   Œt          |¦  «        |z   }|dk    rDt          ||z  ||z  z
  ¦  «        }|r||z
  }n||z   }t          |¦  «        D ]
}||z  |z	  }Œ||z	  S |dz
  }t          |¦  «        D ]}||z  |z	  |z
  }Œt          t          ||z  ||z  z
  ¦  «        ¦  «        }|r| }||z	  ||z	  fS )	zÇ
    Taylor series for cosh/sinh or cos/sin.

    type = 0 -- returns exp(x)  (slightly faster than cosh+sinh)
    type = 1 -- returns (cosh(x), sinh(x))
    type = 2 -- returns (cos(x), sin(x))
    r   r   ç      à?rF   rB   g333333Ó?rk   rD   )rI   r   Úmaxr   ÚEXP_SERIES_U_CUTOFFr   r   ÚappendÚsumr8   rë   )rè   rJ   ÚtyperÓ   rp   ÚxmagrÊ   rW   ró   Úaltrð   r_   Úx4rö   r÷   rø   r¶   rÑ   Úxpowersrì   Úsumsru   rX   Úpshifts                           rN   Úexponential_seriesrQ  ó  s�  € ð 	ˆ1‚u€uØˆBˆØˆˆàˆÝˆC��c‘	‰MÑÔ€AÝ�A‰;Œ;˜Ñ€DÝˆAˆt�a‰xÑÔ€AØ�•3�q˜$˜‘<”<‘Ñ€EØ	�‰€BØˆ5�1‰9Ñ€AÝ
�R‰-€CØ�1Š9€CØÕ!Ò!Ð!Ø�A‘#˜"‘ÐˆˆQØ�‰e˜‰]ˆÝÐˆˆRØˆØð 	Ø�1�Q‘3˜‘'‰MˆA˜2 ™7˜2 A¨¡F AØ�1�Q‘3˜‘'‰MˆA˜2 ™7˜2 A¨¡F AØ�2‘˜"‘ˆAð ð 	ð �‰e˜‰]ˆØð 	Ø�R‘˜#‘ˆA‰Aà�R‘˜#‘ˆAˆAå��D˜$‘J‘ÑÔˆØ�A‘#˜"‘ÐˆˆQØ˜�)ˆÝ˜˜1‘”ð 	1ð 	1ˆAØ�NŠN˜G BœK¨™N¨RÑ/Ñ0Ô0Ð0Ð0Ýˆz˜A‰~ˆØˆØð 	&Ý˜A‘Y”Yð ð �Ø�q˜‘s˜A‘g‘�Øð /˜1˜q™5ð / $ q ' '¤'¨Q¡, ' '¡' 'Ø"& q ' '¤'¨Q¡, ' '¡'Ø�Q‘��Ø�7˜2”;‘ 2Ñ%ˆAð ð 	&õ ˜˜1‘”ð 	1ð 	1ˆAØ˜A”w˜w qœzÑ)¨bÑ0ˆD�‰GˆGÝ�‰IŒI˜‰OˆØˆq‚y€yÝ�q˜‘s˜c 2™g‘Ñ'Ô'ˆØð 	Ø�A‘ˆAˆAà�A‘ˆAÝ˜‘”ð 	ð 	ˆAØ�1‘˜‘ˆAˆAØ�E‰zÐð
 �A‘ˆÝ˜‘”ð 	(ð 	(ˆAØ�A‘#˜&‘ CÑ'ˆAˆAå•s˜C ™G q¨¡s™?Ñ+Ô+Ñ,Ô,ˆØð 	Ø�ˆAØ�5‘˜A˜u™HÐ%Ð%rP   c                 ó6  — |t           k    rt          | |d¦  «        S t          |dz  ¦  «        }||z  }t          |z  x}}d}| | z  |z	  x}}|r(||z  }||z  }|dz  }||z  }||z  }|dz  }||z  |z	  }|°(|| z  |z	  }||z   }|}	|r||z  |z	  }|dz  }|°||	z	  S )zÄ
    Compute exp(x) as a fixed-point number. Works for any x,
    but for speed should have |x| < 1. For an arbitrary number,
    use exp(x) = exp(x-m*log(2)) * 2^m where m = floor(x/log(2)).
    r   rE  rB   r   )ÚEXP_COSH_CUTOFFrQ  rI   r   )
rè   rJ   rp   rö   r÷   rø   r_   rð   ru   rÑ   s
             rN   Úexp_basecaserT  >  sÿ   € ð �oÒÐÝ! ! T¨1Ñ-Ô-Ð-ÝˆD�#‰I‰Œ€AØˆA�I€DÝ˜$‰Ð€BˆØ	€AØ�‰c�d‰]Ð€AˆØ
ð Ø	ˆa‰ˆ��q‘�˜!˜q™&˜!Ø	ˆa‰ˆ��q‘�˜!˜q™&˜!Øˆr‰T�d‰Nˆð ð ð ˆQ‰$�4‰€BØ
ˆR‰€AØ	€AØ
ð Øˆq‰S�T‰MˆØ	ˆQ‰ˆð ð ð �‰6€MrP   c                 óœ   — |t           k    rt          | |d¦  «        \  }}||z   ||z
  fS t          | |¦  «        }t          ||z   z  |z  }||fS )z(
    Computation of exp(x), exp(-x)
    r   )rS  rQ  rT  r   )rè   rJ   ÚcoshÚsinhr_   r`   s         rN   Úexp_expneg_basecaserX  W  sb   € ð �oÒÐÝ'¨¨4°Ñ3Ô3‰
ˆˆdØ�D‰y˜$˜t™)Ð#Ð#Ý�Q˜ÑÔ€AÝ	�T˜$‘YÑ	 AÑ%€AØˆaˆ4€KrP   c                 ó2  — |t           k    rt          | |d¦  «        S |t          z
  }| |z	  }t          |¦  «        }|t          vrC|dt           z   t          z
  z  }t          |dt           z   d¦  «        \  }}|dz	  |dz	  ft          |<   t          |         \  }}t           |z
  }||z  }||z  }| ||z  z  } t
          |z  }	| }
d}| | z  |z	   }|r1||z  }|	|z  }	|dz  }|| z  |z	  }||z  }|
|z  }
|dz  }|| z  |z	   }|°1|	|z  |
|z  z
  |z	  |
|z  |	|z  z   |z	  fS )zÈ
    Compute cos(x), sin(x) as fixed-point numbers, assuming x
    in [0, pi/2). For an arbitrary number, use x' = x - m*(pi/2)
    where m = floor(x/(pi/2)) along with quarter-period symmetries.
    rB   rF   r   )ÚCOS_SIN_CACHE_PRECrQ  ÚCOS_SIN_CACHE_STEPrI   Úcos_sin_cacher   )rè   rJ   Úprecsr­   rº   ÚwÚcos_tÚsin_tÚoffsetr  r  rø   r_   s                rN   Úcos_sin_basecaserb  b  s€  € ð Õ Ò Ð Ý! ! T¨1Ñ-Ô-Ð-ØÕ%Ñ%€EØ	ˆU‰
€AÝˆA‰Œ€AØ•ÐÐØ�Õ%Ñ%Õ&8Ñ8Ñ9ˆÝ)¨!¨RÕ0BÑ-BÀAÑFÔF‰ˆˆuØ! 2™I¨°©Ð3��aÑÝ  Ô#�L€Eˆ5Ý $Ñ&€FØ	ˆfÑ€EØ	ˆfÑ€EØˆˆe‰�O€AÝ
�T‰/€CØ
€CØ	€AØˆQ‰3�4‰-Ð€AØ
ð 8Ø	ˆa‰ˆ�˜‘�˜1 ™6˜1¨¨!©°¡} 1Ø	ˆa‰ˆ�˜‘�˜1 ™6˜1¨!¨A©#°$©Ð'7 1ð ð 8ð �‰Y�s˜5‘yÑ  TÑ)¨c°%©i¸¸E¹	Ñ.AÀdÑ-JÐKÐKrP   c                 ó^  — | \  }}}}|�r||z   }|dz   }|r| }|dk    r=|dk    r7t          |t          d|z  ¦  «        z   ¦  «        }	t          |	||z  ||¦  «        S || k     rt          t          |||¦  «        S |dk    rS||z   }
||
z   }|dk    r||z  }n|| z	  }t          |
¦  «        }t          ||¦  «        \  }}t          |¦  «        }||z  }n||z   }|dk    r||z  }n|| z	  }d}t          ||¦  «        }t          |||z
  ||¦  «        S |st          S | t          k    rt          S | S )Né   r;   r   g333333÷?r   )Úmpf_erI   r3   r7   r"   r}   ÚdivmodrT  r   r&   r!   )rè   rJ   rV   rÓ   rÔ   r¼   r»   r  rW   ÚeÚwpmodra  r­   Úlg2rº   s                  rN   r¬   r¬     sƒ  € ØÑ€Dˆ#ˆs�BØ
ñ #2Ø�3‰hˆØ�B‰YˆØð 	Ø�$ˆCà�#Š:ˆ:˜# š(˜(å�b�˜T #™X™œÑ&Ñ'Ô'ˆAÝ˜q # s¡(¨D°#Ñ6Ô6Ð6Ø�"�Š9ˆ9Ý�t T¨4°Ñ5Ô5Ð5à�Š7ˆ7ð ˜‘HˆEØ˜5‘[ˆFØ˜Š{ˆ{Ø˜6‘M��à˜V˜GÑ$�Ý˜EÑ"Ô"ˆCÝ˜!˜S‘>”>‰DˆAˆqÝ�A‘”ˆAØ�#‰IˆAˆAà˜2‘XˆFØ˜Š{ˆ{Ø˜6‘M��à˜V˜GÑ$�ØˆAÝ˜1˜bÑ!Ô!ˆÝ˜C  2¡ t¨SÑ1Ô1Ð1Øð ÝˆØ�E‚z€zÝˆØ€HrP   c                 ó˜  — | \  }}}}|so|rm|r+| t           k    rt          S | t          k    rt          S t          S | t           k    rt           t           fS | t          k    rt           t          fS t          t          fS ||z   }|dz   }	|dk     rQ||	 k     rD|rt          | d|z
  ||¦  «        S t          t          d||¦  «        }
t          | |||¦  «        }|
|fS |	| z  }	|dk    r{dd|dz
  z  z  |	k    rl|r't          t          t          g|         d|z
  ||¦  «        S t          t          t          | ¦  «        ||¦  «        d¦  «        x}}|rt          |¦  «        }||fS |dk    rS|	|z   }||z   }|dk    r||z  }n|| z	  }t          |¦  «        }t          ||¦  «        \  }}t          |¦  «        }||z  }n||	z   }|dk    r||z  }n|| z	  }d}t          ||	¦  «        \  }}||d|z  z	  z   }
||d|z  z	  z
  }|r| }|r||	z  |
z  }t          ||	 ||¦  «        S t          |
||	z
  dz
  ||¦  «        }
t          |||	z
  dz
  ||¦  «        }|
|fS )	z4Simultaneously compute (cosh(x), sinh(x)) for real xrd  éüÿÿÿr   r   rF   r\   rD   rB   )r%   r"   r&   r#   r'   r7   r1   r¬   r*   r,   r}   rf  rI   rX  r   )rè   rJ   rV   ÚtanhrÓ   rÔ   r¼   r»   r  rW   rV  rW  r¶   ru   rh  ra  r­   ri  rº   r_   r`   s                        rN   Úmpf_cosh_sinhrm  ¬  sÎ  € àÑ€Dˆ#ˆs�BØð �Sð Øð 	Ø•DŠyˆy¥˜+Ø•EŠzˆz¥%˜<ÝˆKØ•Š9ˆ9�d¥D˜\Ð)Ø•Š:ˆ:�t¥U˜mÐ+Ý•TˆzÐØ
ˆb‰&€CØ	ˆb‰€BØ
ˆR‚x€xà�"�Š9ˆ9Øð 9Ý" 1 a¨¡f¨d°CÑ8Ô8Ð8Ý�t Q¨¨cÑ2Ô2ˆDÝ˜q $¨¨cÑ2Ô2ˆDØ˜�:Ðà
�ˆt‰ˆà
ˆR‚x€xØˆa�#�a‘%‰j‰>˜BÒÐàð JÝ"¥D­ <°Ô#5°q¸±v¸tÀSÑIÔIÐIÝ�g¥g¨a¡j¤j°$¸Ñ<Ô<¸bÑAÔAÐAˆA�Øð Ý˜A‘J”J�Ø�a�4ˆKà
ˆQ‚w€wØ�S‘ˆØ�u‘ˆØ�QŠ;ˆ;Ø�v‘ˆAˆAà˜˜Ñ ˆAÝ˜ÑÔˆÝ�a˜‰~Œ~‰ˆˆ1Ý�‰FŒFˆØ	ˆc‰	ˆˆà�r‘ˆØ�QŠ;ˆ;Ø�v‘ˆAˆAà˜˜Ñ ˆAØˆÝ˜q "Ñ%Ô%�D€A€qà��A�a‘C‘‰>€DØ��A�a‘C‘‰>€DØð ØˆuˆØð Ø�r‰z˜dÑ"ˆÝ˜C "  d¨CÑ0Ô0Ð0å˜D ! B¡$ q¡&¨$°Ñ4Ô4ˆÝ˜D ! B¡$ q¡&¨$°Ñ4Ô4ˆØ�TˆzÐrP   c                 ól  — |dk    r‹d}	 d|z  }||z   |z   }t          |dz
  ¦  «        }|dz	  }||z   }	|	dk    r| |	z  }
n| |	 z	  }
t          |
|¦  «        \  }}||k    r||z
  }n|}|||z   dz
  z	  rt          |¦  «        }||z	  }
||z
  }n|dz  }Œ‡n|| z  }||z   }	|	dk    r| |	z  }
n| |	 z	  }
d}|
||fS )Nr   r   r?   rF   )r™   rf  rI   )rÔ   r¼   r  rW   rì   Úcancellation_precrh  Úpi2Úpi4ra  r­   rº   r¹   Úsmalls                 rN   Úmod_pi2rs  ï  s)  € à
ˆQ‚w€wØˆð	Ø " a¡ÐØ˜‘HÐ0Ñ0ˆEÝ˜5 ™7Ñ#Ô#ˆCØ˜‘(ˆCØ˜S‘[ˆFØ˜Š{ˆ{Ø˜6‘M��à˜V˜GÑ$�Ý˜!˜S‘>”>‰DˆAˆqØ�3ŠwˆwØ˜a™��à�Ø˜˜C™ ™Ñ#ð Ý˜‘F”F�Ø˜‘H�Ø˜S‘[�ØØ�‰FˆAð)	ð& ð 	�ˆt‰ˆØ�r‘ˆØ�QŠ;ˆ;Ø�v‘ˆAˆAà˜˜Ñ ˆAØˆØˆa�ˆ8€OrP   c                 óL  — | \  }}}}|sA|rt           t           }
}	nt          t          }
}	|dk    r|	|
fS |dk    r|	S |dk    r|
S |dk    r|
S ||z   }|dz   }|dk     r„|| k     r}|rt          | t	          |¦  «        ¦  «        } t          t          d||¦  «        }	t          | d|z
  ||¦  «        }
|dk    r|	|
fS |dk    r|	S |dk    r|
S |dk    rt          | |||¦  «        S |rò|dk    rŠ|dk    r/t          }	t          t          ft          |dz  ¦  «        |z           }
n#|dk    rt          t          }
}	nt          t          }
}	|dk    r|	|
fS |dk    r|	S |dk    r|
S |dk    rt          |
|	||¦  «        S || dz
  z	  dz   dz	  }||| dz
  z  z
  }t          |¦  «        |z   }|dz   |z
  }||z   }|dk    r||z  }n|| z	  }|t          |¦  «        z  |z	  }nt          ||||¦  «        \  }}}t          ||¦  «        \  }	}
|dz  }|dk    r|
 |	}
}	n|dk    r|	 |
 }
}	n|dk    r|
|	 }
}	|r|
 }
|dk    r*t          |	| ||¦  «        }	t          |
| ||¦  «        }
|	|
fS |dk    rt          |	| ||¦  «        S |dk    rt          |
| ||¦  «        S |dk    rt          |
|	||¦  «        S dS )z–
    which:
    0 -- return cos(x), sin(x)
    1 -- return cos(x)
    2 -- return sin(x)
    3 -- return tan(x)

    if pi=True, compute for pi*x
    r   r   rB   r\   rF   rD   N)r'   r"   r!   r/   r¦   r7   r#   Úboolr0   r   r™   rs  rb  r   r   )rè   rJ   rV   ÚwhichÚpirÓ   rÔ   r¼   r»   r¶   ru   r  rW   rº   Úmag2ra  r­   rc   s                     rN   Úmpf_cos_sinry    sq  € ð Ñ€Dˆ#ˆs�BØð  Øð 	Ý�ˆqˆAˆAå�ˆqˆAØ�AŠ:ˆ:˜a ˜d�{Ø�AŠ:ˆ:˜a�xØ�AŠ:ˆ:˜a�xØ�AŠ:ˆ:˜a�xà
ˆs‰(€CØ	�‰€Bð ˆQ‚w€wØ�"�Š9ˆ9Øð +Ý˜A�v b™zœzÑ*Ô*�Ý�D ! T¨3Ñ/Ô/ˆAÝ˜A˜q ™v t¨SÑ1Ô1ˆAØ˜Šzˆz ! Q $˜;Ø˜Šzˆz !˜8Ø˜Šzˆz !˜8Ø˜Šzˆz¥+¨a°°t¸SÑ"AÔ"AÐAØ	ð .Ø�"Š9ˆ9Ø�bŠyˆyÝ�Ý�5�M¥$ s¨Q¡w¡-¤-°$Ñ"6Ô7��Ø˜’�Ý�u�1��å�e�1�Ø˜Šzˆz ! Q $˜;Ø˜Šzˆz !˜8Ø˜Šzˆz !˜8Ø˜Šzˆz¥'¨!¨Q°°cÑ":Ô":Ð:à�s�d˜1‘f‰o Ñ" qÑ(ˆØ�Q˜C˜4 ™6‘]Ñ#ˆÝ˜‰}Œ}˜sÑ"ˆØ�B‰Y˜ÑˆØ�r‘ˆØ�QŠ;ˆ;Ø�v‘ˆAˆAà˜˜Ñ ˆAØ�x˜‰|Œ|‰^ Ñ"ˆˆå˜3  S¨"Ñ-Ô-‰ˆˆ1ˆbÝ˜A˜rÑ"Ô"�D€A€qØ	ˆA‰€AØ	
ˆaŠˆ˜˜˜A�A��Ø	
ˆaŠˆ˜˜˜Q˜B�A��Ø	
ˆaŠˆ˜˜A˜2�A�Øð ØˆBˆØ�‚z€zÝ˜˜R˜C  sÑ+Ô+ˆÝ˜˜R˜C  sÑ+Ô+ˆØ�!ˆtˆØ�‚z€zÝ˜A ˜s D¨#Ñ.Ô.Ð.Ø�‚z€zÝ˜A ˜s D¨#Ñ.Ô.Ð.Ø�‚z€zÝ˜Q  4¨Ñ-Ô-Ð-ð €zrP   c                 ó&   — t          | ||d¦  «        S ©Nr   ©ry  ©rè   rJ   rV   s      rN   Úmpf_cosr~  b  ó   € ­[¸¸DÀ#ÀqÑ-IÔ-IÐ&IrP   c                 ó&   — t          | ||d¦  «        S )NrB   r|  r}  s      rN   Úmpf_sinr�  c  r  rP   c                 ó&   — t          | ||d¦  «        S )Nr\   r|  r}  s      rN   Úmpf_tanrƒ  d  r  rP   c                 ó(   — t          | ||dd¦  «        S )Nr   r   r|  r}  s      rN   Úmpf_cos_sin_pir…  e  s   € µKÀÀ4ÈÈaÐQRÑ4SÔ4SÐ-SrP   c                 ó(   — t          | ||dd¦  «        S r{  r|  r}  s      rN   rA  rA  f  ó   € µ¸A¸tÀSÈ!ÈQÑ0OÔ0OÐ)OrP   c                 ó(   — t          | ||dd¦  «        S )NrB   r   r|  r}  s      rN   Ú
mpf_sin_pir‰  g  r‡  rP   c                 ó0   — t          | ||¦  «        d         S ©Nr   ©rm  r}  s      rN   Úmpf_coshr�  h  ó   € ­m¸A¸tÀSÑ.IÔ.IÈ!Ô.LÐ'LrP   c                 ó0   — t          | ||¦  «        d         S r{  rŒ  r}  s      rN   Úmpf_sinhr�  i  rŽ  rP   c                 ó(   — t          | ||d¬¦  «        S )Nr   )rl  rŒ  r}  s      rN   Úmpf_tanhr’  j  s   € ­m¸A¸tÀSÈqÐ.QÑ.QÔ.QÐ'QrP   c                 óú   — |€t          |dz
  ¦  «        }t          | |¦  «        \  }}t          |¦  «        }t          ||¦  «        \  }}|dz  }|dk    r||fS |dk    r| |fS |dk    r| | fS |dk    r|| fS d S )Nr   r\   r   rB   )r™   rf  rI   rb  )rè   rJ   rp  rº   r­   r¶   ru   rc   s           rN   r  r  o  s    € Ø
€{Ý�t˜A‘vÑÔˆÝ�!�S‰>Œ>�D€A€qÝˆA‰Œ€AÝ˜A˜tÑ$Ô$�D€A€qØ	ˆA‰€AØˆA‚v€v�a˜�dˆ{ØˆA‚v€v�q�b˜!�eˆ|ØˆA‚v€v�q�b˜1˜"�fˆ}ØˆA‚v€v�a˜!˜�eˆ|€v€vrP   c                 óª   — |€t          |¦  «        }t          | |¦  «        \  }}t          |¦  «        }t          ||¦  «        }|dk    r||z  S || z	  S r‹  )r}   rf  rI   rT  )rè   rJ   rå   rº   r­   rX   s         rN   Ú	exp_fixedr•  {  s[   € Ø
€{Ý˜‰oŒoˆÝ�!�S‰>Œ>�D€A€qÝˆA‰Œ€AÝ�Q˜ÑÔ€AØˆA‚v€vØ�A‰vˆà�a�R‰yÐrP   Úsagez)Warning: Sage imports in libelefun failed)F)FNr©   )r   )šrR   rl   r   Úbackendr   r   r   r   r	   r
   r   Úlibmpfr   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   Ú
libintmathr9   rS  rG  rZ  r[  r\  rä   rá   r  râ   rü   r  r$  r  r  rû   rø   r  rS   rZ   r]   rq   rv   r}   r„   rŒ   r�   r‹   r–   r�   r™   rœ   rž   r    r£   r@  r¦   re  Ú
mpf_degreeÚmpf_ln2Úmpf_ln10r§   rª   Ú
mpf_sqrtpiÚmpf_ln_sqrt2pir·   rÂ   rÎ   rÝ   rß   ré   rî   rñ   rù   rã   r¥   r  r  r  r  r!  r&  r(  r5  r7  r:  r<  r>  rC  rQ  rT  rX  rb  r¬   rm  rs  ry  r~  r�  rƒ  r…  rA  r‰  r�  r�  r’  r  r•  Úsage.libs.mpmath.ext_libmpÚlibsÚmpmathÚ	ext_libmpÚ_lbmpÚImportErrorÚAttributeErrorrŽ   © rP   rN   ú<module>r§     si	  ðð	ð 	ð €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ð ˆhÒÐØ€O€Oà€OàÐ ð ˆhÒÐØÐÐàÐØÐ Ø€ð Ð Ø€à€ØÐ ØÐ àÐ àÐ ØÐ ØÐ ð �r�7Ð Ø	ˆ��8�8˜OÑ,Ô,¨QÑ.Ñ	/Ô	/ð Bð B€AØ˜˜˜Q ™T /Ñ2Ô2°2Ñ5Ð6¸¸Q¸q¹S¹ÑAÑAÐÐðð ð ð*ð ð ð"
'ð 
'ð 
'ð ð  ð  ðð ð ð ð  ðAð Añ „ðAð ð?ð ?ñ „ð?ðð8 
ˆˆX‰Œ€Ø	ˆˆY‰Œ€Ø	ˆˆV‰Œ€Ø	ˆˆR‰Œ€ðð ð ð, ðð ð ñ „ðð ð ð ð
ð 
ð 
ð ðð ñ „ðð ðð ñ „ðð Ð˜iÑ(Ô(€ØÐ˜hÑ'Ô'€ØÐ˜gÑ&Ô&€ØÐ˜lÑ+Ô+€
ØÐ˜iÑ(Ô(€ØÐ˜jÑ)Ô)€ð ðCð Cñ „ðCð
 ð,ð ,ñ „ð,ð  Ð Ñ-Ô-€
Ø#Ð#Ð$4Ñ5Ô5€ð 'ð -ð -ð -ð -ð8"ð "ð "ðlð ð ð, !+ð Qð Qð Qð Qðf %ð (ð (ð (ð (ðð ð ð ð,ð ð ð-)ð -)ð -)ð^ ð  ð  ð  ðD ð  ð  ðD $ð F+ð F+ð F+ð F+ðP%1ð %1ð %1ðX!ð !ð !ð$+ð +ð +ðð ð ð(Cð Cð Cð
 %ð  +ð  +ð  +ð  +ðF )ð !(ð !(ð !(ð !(ðF %ð 	0ð 	0ð 	0ð 	0ð %ð 0ð 0ð 0ð 0ð &ð %ð %ð %ð %ð" &ð 1ð 1ð 1ð 1ð &ð @ð @ð @ð @ð*  *ð ð ð ð ð8I&ð I&ð I&ð I&ðVð ð ð2	ð 	ð 	ðLð Lð Lð: $ð *ð *ð *ð *ðZ  *°ð @ð @ð @ð @ðF!ð !ð !ðH (¨q°Uð M.ð M.ð M.ð M.ð^ $Ð IÐ IÐ IÐ IØ#Ð IÐ IÐ IÐ IØ#Ð IÐ IÐ IÐ IØ *Ð SÐ SÐ SÐ SØ&Ð OÐ OÐ OÐ OØ&Ð OÐ OÐ OÐ OØ$Ð LÐ LÐ LÐ LØ$Ð LÐ LÐ LÐ LØ$Ð QÐ QÐ QÐ Qð

ð 
ð 
ð 
ð	ð 	ð 	ð 	ð ˆfÒÐð;Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø”>ˆØ”-ˆØ”-ˆØ”-ˆØ”-ˆØ”-ˆØ”Oˆ	ØÔ+ˆØÔ+ˆˆˆøØ˜Ð(ð ;ð ;ð ;ØˆÐ9Ñ:Ô:Ð:Ð:Ð:Ð:ð;øøøð Ðs   ÊAK, Ë,LÌL