B
    &…\ëx  ã               @   sì  d dl T d dlT d dlZd dlZd dlZd dlZefd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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Z d*d+„ Z!d,d-„ Z"d.d/„ Z#d0d1„ Z$d2d3„ Z%d4d5„ Z&d6d7„ Z'd8d9„ Z(d:d;„ Z)d<d=„ Z*d>d?„ Z+d@dA„ Z,dBdC„ Z-dDdE„ Z.dFdG„ Z/dHdI„ Z0dJdK„ Z1dLdM„ Z2dNdO„ Z3dPdQ„ Z4dRdS„ Z5dTdU„ Z6dVdW„ Z7dXdY„ Z8dZd[„ Z9d\d]„ Z:d^d_„ Z;d`da„ Z<dbdc„ Z=ddde„ Z>dfdg„ Z?dhdi„ Z@djdk„ ZAdldm„ ZBdndo„ ZCdS )pé    )Ú*Nc             C   s0   d}|o| j  |j |¡}|o*| j |j|¡}|S )NT)ÚrealÚaeÚimag)ÚaÚbÚepsZres© r	   ú:lib/python3.7/site-packages/mpmath/tests/test_functions.pyÚmpc_ae   s    r   zg3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798zg2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642743zi0.0174532925199432957692369076848861271344287188854172545609719144017100911460344944368224156963450948221zh0.577215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749516zh0.693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542zg2.30258509299404568401799145468436420760110148862877297603332790096757260967735248023599720508959829834zh0.915965594177219015054603514932384110774149374281672134266498119621763019776254769479356512926115106249zg2.68545200106530644530971483548179569382038229399446295305115234555721885953715200280114117493184769800zm1.28242712910062263687534256886979172776768892732500119206374002174040630885882646112973649195820237439420646zg1.20205690315959428539973816151144999076498629234049888179227155534183820578631309018645587360933525815zj1.61803398874989484820458683436563811772030917980576286213544862270526046281890244970720720418939113748475zh0.261497212847642783755426838608695859051566648261199206192064213924924510897368209714142631434246651052zh0.660161815846869573927812110014555778432623360284733413319448423335405642304495277143760031413839867912c              C   s  xÚdD ]Ò} | t _tttƒks t‚tttƒks0t‚ttt	ƒks@t‚t
ttƒksPt‚tttƒks`t‚tttƒkspt‚tttƒks€t‚tttƒkst‚tttƒks t‚tttƒks°t‚| dk rtttƒksÈt‚tttƒkst‚qW dt _tdksît‚tdksút‚tdkst‚tdk st‚d S )N)	é   é   é
   é   é   é%   éP   éd   é   é2   r   éÿÿÿÿé   r   é   )ÚmpÚdpsÚpiÚmpfÚtpiÚAssertionErrorÚeÚteÚdegreeÚtdegreeZeulerÚteulerÚln2Útln2Zln10Útln10ZcatalanÚtcatalanZkhinchinÚ	tkhinchinZglaisherÚ	tglaisherZphiÚtphiZmertensÚtmertensZ	twinprimeÚ
ttwinprime)Úprecr	   r	   r
   Útest_constants-   s(    
r.   c              C   s  x(t dƒD ]} tt| |  ƒƒ| ks
t‚q
W t d¡ x`dD ]X}|t_xLt dƒD ]@} t d|d d  d|d d  ¡}tt|| ƒƒ|ksNt‚qNW q:W dt_xpt dƒD ]d} x^d	D ]V}tt|| d|  fƒƒt|| fƒksÜt‚tt|| d
|  fƒƒt||  fƒks°t‚q°W q¦W d S )Ni N  é   )r   i,  iè  i'  r   r   r   r   r   )r/   é   é   i³¶ éþÿÿÿ)	ÚrangeÚsqrtr   r   ÚrandomÚseedr   r   Úrandint)Úir-   ÚAr   r	   r	   r
   Útest_exact_sqrtsC   s    

$ 
(r:   c              C   sš  xxdD ]p} t | ƒ} xbdD ]Z}|t_tt| tjtƒdtjtƒ}tt| tjtƒdtjtƒ}t|| ƒsdt	‚t
|| ƒst	‚qW qW t d¡ d}xJtttgD ]<}x6tdƒD ]*} t|ƒ}t||ƒ}t|||ƒ|ks¢t	‚q¢W q”W dt_tdƒd }tdƒd }dt_t|d	d
dkst	‚t|dd
dks$t	‚t|dd
dks:t	‚t|d	d
dk sPt	‚t|dd
dksft	‚t|dd
dks|t	‚ttdƒƒtdƒks–t	‚d S )N)r   r   é   é   r   r0   r   é   é   é   é   r   )r   r   éS   éj   iÐ  r   iÒ  r   é	   go™„ÙK@-r   Úd)Úroundingr   ÚnÚuz7.0503726185518891z2.655253776675949)Zfrom_intr   r   Zmpf_pow_intZmpf_sqrtr-   Z
round_downZround_upZmpf_ltr   Zmpf_gtr5   r6   Zround_nearestZround_ceilingr3   Zmpf_randZmpf_mulr   r4   )r8   r   r   r   r-   Úrndr	   r	   r
   Útest_sqrt_roundingR   s4    



rI   c              C   s  dt _x(dD ] } tt| ƒƒt| ƒd kst‚qW tdƒdks@t‚tdƒ t d¡¡sXt‚tdƒ t d¡¡spt‚tdƒ t d¡¡sˆt‚tdƒ t d¡¡s t‚td	ƒ t d	¡¡s¸t‚ttj	tj
d  ƒ t tj	tj
d  ¡¡sèt‚ttj	tj
d  ƒ t tj	tj
d  ¡¡st‚d S )
Nr   )r   gH¯¼šò×z>gš™™™™™¹?g      à?r/   r   r   r   r;   gZd;ßOÕ?g\Âõ(S@g      à?r   y              ð?r2   éýÿÿÿiœÿÿÿy       €      ð¿)r   r   r4   r   Úfloatr   r   ÚcmathÚmathr   r   )Úxr	   r	   r
   Útest_float_sqrtp   s    
 0rO   c               C   sn   t ddƒdkst‚t ddƒtdƒks(t‚t ddƒtdƒks>t‚t ddƒtdƒksTt‚t ddƒtdƒksjt‚d S )Nr   g…ëQ¸Õ?g…ëQ¸Õ¿r   r   r;   )Zhypotr   r   r	   r	   r	   r
   Ú
test_hypot~   s
    rP   c              C   sš   x0t dddƒD ] } tt| |  |  ƒƒ| kst‚qW t d¡ xRdD ]J}|t_t d|d d  d|d d  ¡}tt|| | ƒƒ|ksBt‚qBW dt_d S )	Nr   i N  éÈ   r/   )r   i,  iè  i'  r   r   r   )	r3   Úcbrtr   r   r5   r6   r   r   r7   )r8   r-   r9   r	   r	   r
   Útest_exact_cbrt…   s     

$ rS   c              C   sº   t dƒdkst‚t dƒ tdƒ¡s&t‚t dƒ tdƒ¡s<t‚t tdƒƒ} | jt| jƒks\t‚dt_t td	ƒƒ} | jt| jƒks‚t‚d
t_t t	d ƒ d¡sžt‚t dƒ t
  d¡¡s¶t‚d S )Nr   r/   i'  z8.8068182256629215873e4342iðØÿÿz1.1354838653147360985e-4343)r/   l   ÍV=€é iËÿÿÿé5   éC   )r/   l   …G‹{ÜQÓE iÄÿÿÿé=   rT   r   i   y       @       @)Úexpr   r   r   ZbcZbitcountZmanr   r-   r$   rL   )r   r	   r	   r
   Útest_exp   s    rX   c              C   s@   dt _tdƒ} tdƒ}dt _| 
  d¡s,t‚|
  d¡s<t‚d S )Ni   r   r/   r   g8ï,6V‹×?giW‹
¿@)r   r   rW   r   r   )r   r   r	   r	   r
   Útest_issue_73œ   s    rY   c              C   s0  dt _tdƒdkst‚xHdddddd	d
 dgD ].} t| ƒ t | ¡¡sJt‚t| | ƒdks.t‚q.W tddƒd	ksrt‚td	d d	ƒdksˆt‚tdƒ t d¡¡s t‚tdƒjd  d¡s¸t‚tdƒjd  d¡sÐt‚tdƒjd  d¡sèt‚tdƒjd  d¡st‚tdƒjd  d¡st‚tdƒjd  d¡s6t‚tdƒjd  d¡sPt‚tdƒjd  d¡sjt‚tdƒjd  d¡s„t‚tdƒjd  d¡sžt‚tdƒjd  d¡s¸t‚tdƒjd	d   d¡sÖt‚td ƒjd	d   d¡sôt‚ttd!d"ƒƒ tdƒd# ¡st‚ttd!d	d$ ƒƒ tdƒd% ¡s<t‚tt	ddƒƒt	t
 dƒks\t‚ttt	tdƒƒjƒsvt‚ttt	tdƒƒjƒst‚ttt	dtƒƒjƒsªt‚ttt	dtƒƒjƒsÄt‚ttt	tdƒƒjƒsÞt‚ttt	tdƒƒjƒsøt‚ttt	dtƒƒjƒst‚ttt	dtƒƒjƒs,t‚d S )&Nr   r/   r   g      à?g      ø?g       @g      @r   r   r   g¸ÔJzî5i   r   iÒ  y       @       @y333333ã?š™™™™™é?l     ;ág €à7yÃ@y333333ã?š™™™™™é¿yš™™™™™é?333333ã¿y      ð?:Œ0âŽyE>l     ‚_Éy      ð?:Œ0âŽyE¾y      ð¿:Œ0âŽyE>y      ð¿:Œ0âŽyE¾y:Œ0âŽyE>      ð?y:Œ0âŽyE¾      ð?y:Œ0âŽyE>      ð¿y:Œ0âŽyE¾      ð¿y      ð?œWw'&l¡7r   yœWw'&l¡7      ð?gX9´Èv¾ó?l      Fµx:^V g@Œµx¯DrQ   gZb××çti)r   r   Úlogr   r   rM   rL   r   ÚldexpÚmpcÚinfÚisnanÚnanr   )rN   r	   r	   r
   Útest_log¤   s@    "& r`   c              C   s>  xÒt tdƒƒt tddƒƒ D ]´} | d }tt|ƒƒ t |¡¡sDt‚tt|ƒƒ t |¡¡s`t‚tt|ƒƒ t |¡¡s|t‚t	t|ƒƒ t 	|¡¡s˜t‚t
t|ƒƒ t 
|¡¡s´t‚tt|ƒƒ t |¡¡st‚qW tdƒ t d¡¡sìt‚tdƒ t d¡¡st‚tdƒ t d¡¡s t‚tdƒ t d¡¡s:t‚d S )Nr   iœÿÿÿr   gffffff@y      ð?      ð?y      ÀÍÌÌÌÌÌÀ)Úlistr3   Úcosr   r   rM   r   ÚsinÚtanÚcoshÚsinhÚtanhrL   )rN   Útr	   r	   r
   Útest_trig_hyperb_basicÉ   s      ri   c               C   sÜ   t dt ƒdkst‚t dt ƒ d¡s*t‚t dt ƒ d¡s@t‚t dt ƒ d¡sVt‚t dt ƒ d¡slt‚tdt ƒdks€t‚tdt ƒ d¡s–t‚tdt ƒ d¡s¬t‚tdt ƒ d¡sÂt‚tdt ƒ d¡sØt‚d S )Nr   r/   éZ   é´   r   i  ih  )rb   r!   r   r   rc   r	   r	   r	   r
   Útest_degrees×   s    rl   c       	      C   sv   t  d¡ g }xbt| ƒD ]V}t  dd¡}t  dd¡}t  dd¡}t  dd¡}t||ƒ}t||ƒ}| ||f¡ qW |S )Nr/   iöÿÿÿr   )r5   r6   r3   ÚuniformÚcomplexÚappend)	ÚNr   r8   Úx1Zy1Úx2Zy2Úz1Úz2r	   r	   r
   Úrandom_complexesã   s    


ru   c              C   sÐ   xHdD ]@} | t _tdƒd }|j|j  kr@tdƒd d ksn t‚qW dt _t d¡ x4t	dƒD ](\}}t|ƒt|ƒ  
|| d¡sdt‚qdW tt d   
d	¡s¨t‚d
t _tt d   
d	¡sÆt‚dt _d S )N)r   é   r   y              ð?g      à?r   r   r/   r   gê-™—q=r   r   )r   r   r\   r   r   r   r   r5   r6   ru   r   r   r   )r   r   rs   rt   r	   r	   r
   Útest_complex_powersð   s    
.
$rw   c              C   sX   dd„ } t  d¡ d}dt_tj}| dd„ t|ƒD ƒƒ | dd„ t|ƒD ƒƒ d	t_d S )
Nc             S   s¶   x°| D ]¨\}}t |t|  ƒ}tt|| ƒ|ƒs4t‚t | t|  ƒ}tt|| ƒ| ƒs^t‚t |t|  ƒ}tt|| ƒ|ƒs„t‚t | t|  ƒ}tt|| ƒ| ƒst‚qW d S )N)r\   Újr   r4   r   )Zlstr   r   Úzr	   r	   r
   Útest_mpc_sqrt   s    z1test_complex_sqrt_accuracy.<locals>.test_mpc_sqrtr   r   rv   c             S   s$   g | ]}t  d d¡t  d d¡f‘qS )r   r   )r5   rm   )Ú.0r8   r	   r	   r
   ú
<listcomp>  s    z.test_complex_sqrt_accuracy.<locals>.<listcomp>c             S   s$   g | ]}|d  |d d|  f‘qS )gš™™™™™¹?gš™™™™™É?r   r	   )r{   r8   r	   r	   r
   r|     s    r   )r5   r6   r   r   r3   )rz   rp   r   r	   r	   r
   Útest_complex_sqrt_accuracyÿ   s    

r}   c              C   s  dt _tdƒ t d¡¡st‚tdƒdks.t‚tdƒ td ¡sDt‚tdƒdksTt‚tdƒ t d ¡slt‚tdd	 ƒ td ¡s†t‚x(d
D ] } | t _dtdƒ  t¡sŒt‚qŒW dt _td }tttdƒƒ |¡sÖt‚tttdƒƒ |¡sît‚tttdƒƒ |¡st‚ttdtƒƒ |¡s"t‚ttdtƒƒ |¡s<t‚ttdtƒƒ | ¡sXt‚ttt dƒƒ | ¡svt‚ttt dƒƒ | ¡s”t‚ttt dƒƒ | ¡s²t‚ttdt ƒƒ | ¡sÐt‚ttdt ƒƒ | ¡sît‚ttdt ƒƒ |¡s
t‚d S )Nr   gffffffÀg¸ÔJzî5gšd~ÅQJr   g¸ÔJzîµgšd~ÅQÊr   iè  )r1   éF   r   i,  iè  r   r/   r   r   )	r   r   Úatanr   rM   r   r   r\   r]   )r   Zpi2r	   r	   r
   Ú	test_atan  s0    
r€   c               C   sp  dt _tddƒ td ¡st‚tddƒ dt d ¡s:t‚tddƒ dt d ¡sVt‚tddƒ t d ¡spt‚tddƒ t d ¡sŠt‚tddƒ td ¡s¢t‚tddƒdks´t‚ttdƒ td ¡sÌt‚tt dƒ t d ¡sèt‚ttttƒƒsút‚ttt tƒƒst‚tttt ƒƒs&t‚ttdtƒƒs:t‚tttdƒƒsNt‚ttdtƒƒsbt‚tttdƒƒsvt‚tdtƒdksŠt‚tdt ƒ t¡s¢t‚td	tƒdks¶t‚td
tƒdksÊt‚td
t ƒ t ¡sät‚td	t ƒ t¡süt‚ttd	ƒ td ¡st‚ttd
ƒ td ¡s0t‚tt d	ƒ t d ¡sNt‚tt d
ƒ t d ¡slt‚d S )Nr   r/   r   r   r   rJ   r   r   r   iöÿÿÿ)	r   r   Úatan2r   r   r   r]   r^   r_   r	   r	   r	   r
   Ú
test_atan2,  s6    r‚   c              C   sx  t tdƒƒdkst‚ttdƒƒdks(t‚ttdƒƒdks<t‚tt tdƒƒtƒsRt‚tt tdƒƒtƒsht‚tttdƒƒtƒs~t‚tttdƒƒtƒs”t‚tttdƒƒtƒsªt‚tttdƒƒtƒsÀt‚t	 
d¡ xHtdƒD ]:} t	 dd¡}t t|ƒƒ t  |¡¡st‚tt|ƒƒ t |¡¡s$t‚t	 dd	¡}tt|ƒƒ t |¡j¡sPt‚ttt|ƒƒtƒsht‚t	 dd	¡}tt|ƒƒ t |¡j¡s”t‚ttt|ƒƒtƒs¬t‚t	 dd
¡}ttt|ƒƒtƒsÐt‚t	 dd¡}tt|ƒƒ t |¡j¡süt‚ttt|ƒƒtƒsÖt‚qÖW tj}dt_tt dƒtƒs6t‚dt_t dƒ td ¡sTt‚t dƒ t d ¡snt‚|t_d S )Nr   r/   g      à?g       @gš™™™™™¹?gš™™™™™ñ?r   iöÿÿÿr   g+‡ÙÎ÷ï?r   i,  iè  r   )Úasinr   r   ÚasinhÚacoshÚ
isinstancer\   ÚacosÚatanhr5   r6   r3   rm   r   rM   rL   r   r   r   r   )r8   rN   r   r	   r	   r
   Útest_areal_inversesI  s@    
   r‰   c               C   s  dt _tdƒd  d¡st‚tdƒd  d¡s2t‚tdƒd	d
   d¡sLt‚tdƒd  d¡sbt‚tdƒd  d¡sxt‚tdƒd	d
   d¡s’t‚tdƒ d¡s¤t‚tdƒ d¡s¶t‚tdƒd  d¡sÌt‚tdƒd  d¡sât‚tdƒd  d¡søt‚tdƒd  d¡st‚d S )Nr   gñhãˆµøä>i † g˜µýÿÿÿï?g»½×Ùß|Û=l    d(	 r/   g¸ÔJzî5r   r   gñhãˆµøä¾g˜µýÿÿÿï¿g»½×Ùß|Û½r   g¸ÔJzîµl      Fµx:^V gC“ž6W_G@lûÿÿÿ   Fµx:^V gC“ž6W_GÀ)r   r   r„   r   r   rg   rˆ   r	   r	   r	   r
   Útest_invhyperb_inaccuracyo  s    rŠ   c              C   sH  x@t tdƒƒt tddƒƒ D ] } xt tdƒƒt tddƒƒ D ]ú}t| |ƒd d }tt|ƒƒ t |¡¡stt‚tt|ƒƒ t |¡¡st‚t	t|ƒƒ t 	|¡¡s¬t‚t
t|ƒƒ t 
|¡¡sÈt‚tt|ƒƒ t |¡¡sät‚tt|ƒƒ t |¡¡st‚tt|ƒƒ t |¡¡s t‚tt|ƒƒ t |¡¡sBt‚qBW qW d S )Nr   iöÿÿÿr   g333333@y        {®Gáz„?)ra   r3   rn   rW   r\   r   rL   r   rZ   rb   rc   rd   rf   re   rg   )rN   Úyry   r	   r	   r
   Útest_complex_functions~  s    $"rŒ   c              C   sÞ  dt _dt_x²tdƒD ]¦\} }tt| ƒƒ | ¡s4t‚t| ƒ t	 | ¡¡sLt‚t
| ƒ t	 
| ¡¡sdt‚t| ƒ t	 | ¡¡s|t‚t| ƒjt	 | ¡dds˜t‚t| ƒjt	 | ¡dds´t‚tdƒ}qW x€tdddƒD ]p}xjtdddƒD ]Z}d	t d|  d
| d|   }tt|ƒƒ}| |¡s t‚tt|ƒƒ}| |¡sàt‚qàW qÎW tdƒ}d}xŠtdddƒD ]z}xrtdddƒD ]b}dd|  td
 | d|   }tt|ƒƒ}| ||¡s°t‚tt|ƒƒ}| ||¡snt‚qnW q\W d S )Nr   rv   gê-™—q=)Zrel_epsr/   i÷ÿÿÿr   r   gÍÌÌÌÌÌì?gš™™™™™é?gVçž¯â<rC   gÍÌÌÌÌÌì¿)r   r   Zivru   rf   r„   r   r   r…   rL   rˆ   r   rƒ   r‡   r   r3   rx   rb   rc   re   )rs   rt   Zoner8   Úkr   r   Úerrr	   r	   r
   Útest_complex_inverse_functions‹  s4      r   c               C   s   t dƒ d¡st‚tdƒ d¡s$t‚tdƒ d¡s6t‚tdƒ d¡sHt‚tdƒ d¡sZt‚tdƒ d¡slt‚tdƒ d¡s~t‚t	dƒ d	¡st‚t
dƒ d
¡s¢t‚tdƒ d¡s´t‚tdƒ d¡sÆt‚tdƒ d¡sØt‚t
dƒ d¡sêt‚tdƒ d¡süt‚d S )Nr   gE²W´g)ð¿gÙ°
D<X@g^f]žÀg±ŽØŽm¹?g¹)	è¹?gL–É<[ð?gÔè‚€²ó?gOã¿Õ?gáž&£—Ô?g      à?g5˜qBõ?gH·•yñôÔ?gï9úþB.Ö?r   g-DTû!ù?y        -DTû!ù?)Zsecr   r   ZcscZcotZsechZcschZcothZasecZacscZacotZasechZacschZacothr	   r	   r	   r
   Útest_reciprocal_functions¬  s    r   c               C   sf   dt _ttdƒdƒdkst‚ttdƒdƒdks2t‚ttdƒdƒdksHt‚ttdƒd	ƒtdƒksbt‚d S )
Nr   g      @r   r   g      ô?r   r   r]   r   )r   r   r[   r   r   r	   r	   r	   r
   Ú
test_ldexp¼  s
    r‘   c               C   sZ   dt _tdƒdkst‚tdƒdks&t‚tdƒdks6t‚tdƒd	ksFt‚td
ƒdksVt‚d S )Nr   r   )g        r   rC   )g      â?r   r/   )g      à?r/   gš™™™™™É?)gš™™™™™é?r2   iè  )g     @ï?r   )r   r   Zfrexpr   r	   r	   r	   r
   Ú
test_frexpÃ  s    r’   c               C   sŠ   t dƒtdƒkst‚tdƒtddƒks*t‚tdƒdt ks>t‚tdƒdt ksRt‚tddƒtksdt‚t	ddƒdkr‚t
t	ddƒtƒs†t‚d S )	Nr   g      @r   gffffff@r   g      à?r1   g      @)ÚlnrZ   r   Zlog10Zdegreesr!   ZradiansZpowerrx   Zfmodr†   r   r	   r	   r	   r
   Útest_aliasesË  s    r”   c               C   s°  t dƒdkst‚t dƒ t¡s"t‚t tƒ td ¡s8t‚t t ƒ t d ¡sRt‚t dƒdksbt‚ttdtƒƒstt‚tttdƒƒs†t‚ttdtƒƒs˜t‚tttdƒƒsªt‚ttttƒƒs¼t‚t tƒdksÌt‚t t ƒ t¡sàt‚tt tƒƒsðt‚t	dƒdkst‚t	dƒdkst‚t	dƒdks&t‚t	tƒdks8t‚t	t ƒdksLt‚tt	tƒƒs^t‚t	tƒtkspt‚t	dt ƒt ksˆt‚t	dt ƒ dt t
dƒ ¡s¬t‚d S )Nr   r   rJ   r   r/   r   )Úargr   r   r   rx   r^   r   r_   r]   Zsignr4   r	   r	   r	   r
   Útest_arg_signÓ  s,    r–   c               C   s   dt _tdƒ dt _d S )Niè  i  r   )r   r   rZ   r	   r	   r	   r
   Útest_misc_bugsì  s    r—   c               C   s’  t dƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtd	ƒtd
ƒtdƒg
ksLt‚t ddƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒg
ksšt‚t dddƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒg
ksêt‚t dd d!ƒtd"ƒtd#ƒtd$ƒtd
ƒtdƒtdƒtdƒtdƒtd%ƒg	ks6t‚t d&dd'ƒtdƒgksRt‚t dƒg ksdt‚t d(d)ƒg ksxt‚t d*d+d,ƒg ksŽt‚d S )-Nr   z0.0z1.0z2.0z3.0z4.0z5.0z6.0z7.0z8.0z9.0éûÿÿÿr;   z-5.0z-4.0z-3.0z-2.0z-1.0r   r/   gš™™™™™¹?z0.10000000000000001z0.20000000000000001z0.30000000000000004z0.40000000000000002z0.5z0.60000000000000009z0.70000000000000007z0.80000000000000004z0.90000000000000002é   i÷ÿÿÿrJ   z17.0z14.0z11.0z-7.0gš™™™™™É?gš™™™™™¹¿iè  r   g®Gáz®ó¿g®Gáz®	@gH¯¼šò×z¾)Úaranger   r   r	   r	   r	   r
   Útest_arangeò  s*    "r›   c            	   C   sž   t dddƒtdƒtdƒtdƒtdƒtdƒtd	ƒtd
ƒgks>t‚t dddddtdƒtdƒtdƒtdƒtdƒtdƒtdƒgks€t‚t dddƒtdƒgksšt‚d S )Nr   rC   r   z2.0z3.166666666666667z4.3333333333333339z5.5z6.666666666666667z7.8333333333333339z9.0r   )Zendpointz3.0z4.0z5.0z6.0z7.0z8.0r/   )Zlinspacer   r   r	   r	   r	   r
   Útest_linspace	  s     "rœ   c              C   s&  dt _x0tdddƒD ] } t| |  |  ƒ | t¡st‚qW tdƒ dttdƒ d  ¡sZt‚t	d	ƒd }xdtddd
ƒdg D ]N} t
| d ƒ} t| ƒ}t  jd7  _t| |ƒ}t  jd8  _| |t¡szt‚qzW dt _xHtdddƒD ]8}d| td  }|| | }t|ƒ}t||tƒsàt‚qàW dt _d S )Nrv   r   r   gš™™™™™¹?r   g      à?r   r   r/   gš™™™™™@gš™™™jø@y        š™™™™™ñ?r   i-  gü©ñÒMbP?r   )r   r   rš   rR   r   r   r   rx   r4   r   r\   Úpowr3   r   )r   Z	one_thirdÚr1Zr2rF   Úwry   Úrr	   r	   r
   Útest_float_cbrt  s&     "
r¡   c        	      C   sÂ  dt _t d¡ t dd¡} | |  |  }tt|ƒdƒ}|| ksBt‚x0tddƒD ]"}||  }tt|ƒ|ƒ| ksNt‚qNW dt _x’tdd	d
ƒD ]‚}x|t ¡ d t ¡ dd
  gD ]\} t| |ƒ}t	| tdƒ| ƒ}| 
|¡sØt‚t| | ƒ}t	| tdƒ | ƒ}| 
|¡sªt‚qªW qˆW xxdD ]p}|t _xbdD ]Z}d}xNtdƒD ]B}|t _tƒ } d| t _| | }|t _t||ƒ}|| ks6t‚q6W q$W qW dt _xFtddƒD ]6}t ¡ tt ¡   } t| |ƒ 
t	| tdƒ| ƒ¡sÚt‚tt| |ƒt	| tdƒ| ƒƒsþt‚t ¡ dd
  tt ¡   } t| |ƒ}t  jd7  _t	| tdƒ| ƒ}t  jd8  _| 
|¡sbt‚t||tƒstt‚t| | ƒ}t  jd7  _t	| tdƒ | ƒ}t  jd8  _| 
|¡sÀt‚t||tƒsœt‚qœW dt _tddƒdksòt‚tddƒdkst‚tddƒdkst‚ttdƒtks.t‚ttdƒtksBt‚ttdƒtksVt‚ttdƒdksjt‚ttdƒdks~t‚ttdƒdks’t‚ttdƒtks¦t‚ttdƒdksºt‚ttdƒt ksÐt‚tttdƒƒsät‚tttdƒƒsøt‚tttdƒƒst‚tttdƒƒs t‚tddƒtddƒks:t‚tdddƒdksPt‚tdddƒdksft‚tdddƒdks|t‚tdddƒdks’t‚tdddƒdks¨t‚tdddƒdks¾t‚d S )Nrv   r/   r   i'  r   r   r   é(   iˆ  r   )ZnearestZupZdown)r˜   rJ   r   r;   r   r   é   r   r   g      Ð?r2   rJ   é   y               @y       €       Àiƒÿÿÿr˜   )r   r   r5   r6   r7   Únthrootr   r   r3   r   r   rE   r-   Zrandrx   r   r   r]   r^   r_   Úroot)	r   Úpr    rF   rž   rH   r-   r8   r   r	   r	   r
   Ú	test_root&  s    
"




 $$
r¨   c              C   sÚ   xJdD ]B} | t _ttdƒdƒ}| tdƒd dt  tdƒd  ¡st‚qW d	t _td
dƒ tdƒd dt  tdƒ ¡s~t‚tddƒ dt dtdƒ  ¡s¢t‚dt _tddƒ dt tdƒ tdƒ ¡sÐt‚dt _d S )N)r   r   z-1e-20r   r   r˜   r/   r   g      à¿r   z-1e-3g      è¿z-1e-6r   z-1e100000000Z
1e25000000r   )r   r   r¥   r   r   rx   r   r4   )r   r    r	   r	   r
   Útest_issue_136r  s    
.,$(r©   c              C   s4  dt _tdƒ} tdƒ}tt| dƒƒt| ƒks0t‚ttd|ƒƒtt|ƒt|ƒƒksTt‚tt| dƒƒt| ƒksnt‚tt| dƒƒt| ƒksˆt‚ttd|ƒƒt|ƒks¢t‚ttd|ƒƒtdt	|ƒƒksÂt‚t
t| dƒƒt
| ƒksÜt‚tt| dƒƒt| ƒksöt‚t
td|ƒƒ tt| ƒ¡st‚ttd|ƒƒ tdt	t| ƒƒ¡s@t‚tt| dƒƒ\}}|t
| ƒksdt‚|t| ƒksvt‚ttd|ƒƒ\}}| tt| ƒ¡s t‚| tdt	t| ƒƒ¡s¾t‚tt| dƒƒ\}}|t| ƒksât‚|t| ƒksôt‚ttd|ƒƒ\}}|t|ƒkst‚|tdt	|ƒƒks0t‚d S )Nr   g333333Ó?gš™™™™™Ù?r   )r   r   r   rW   r\   r   rb   rc   re   rf   ÚcospiÚsinpir   r   Zcospi_sinpiZcos_sin)rN   r‹   ÚcÚsr	   r	   r
   Útest_mpcfun_real_imag  s2    $ "(r®   c              C   s&  dt _tdd  } t dd  }d|  }d| }dt _t| ƒdksFt‚t| dddksZt‚t|dddksnt‚t| dddks‚t‚t|dddk s–t‚t| ƒdks¦t‚t| dddksºt‚t|dddksÎt‚t| dddk sât‚t|dddk söt‚x–tttt	gD ]†}|| ƒ| 
 kst‚|| dd| ks2t‚|| dd| k sHt‚||ƒ|
 ks\t‚||dd|ksrt‚||dd|k st‚qW x–t
tttgD ]†}|| ƒ| 
 ks´t‚||ƒ|
 ksÈt‚|| dd| ksÞt‚||dd|ksôt‚|| dd| k s
t‚||dd|k sœt‚qœW t|ƒ| 
 ks:t‚t|ƒ|
 ksNt‚t|dd| ksdt‚t|dd| k szt‚t|dd|kst‚t|dd|k s¦t‚t| ƒdks¸t‚t|ƒdksÊt‚t| dddksàt‚t|dddksöt‚t| dddkst‚t|dddks"t‚d S )	Nr   r   r   r/   r   r¬   )rE   Úf)r   r   r   rW   r   rb   rc   r   r„   rg   rƒ   rd   rf   rˆ   r“   re   )r   r   r¬   rD   r¯   r	   r	   r
   Útest_perturbation_roundingš  sT    r°   c               C   sD   t dƒdkst‚tdƒdks t‚t dƒdks0t‚tdƒdks@t‚d S )Ngš™™™™™	@r   r   yš™™™™™	@      @y      @      @y      @      @)Zfloorr   Zceilr	   r	   r	   r
   Útest_integer_partsÆ  s    r±   c               C   s˜   t dƒdkst‚t dƒdks t‚tdƒdks0t‚tdƒdks@t‚tdƒdksPt‚tdƒdks`t‚tdƒdkspt‚tdƒd	ks€t‚tdƒ ¡ dks”t‚d S )
NÚ3r   y      @      @r;   y      ð?      @r/   r   r   y      @      À)Zfabsr   ÚreZimZconjr   Ú	conjugater	   r	   r	   r
   Útest_complex_partsÌ  s    rµ   c              C   sH  t dƒdkst‚t dƒdks t‚t dƒdks0t‚t dƒdks@t‚t dƒdksPt‚t dƒdks`t‚t dƒdkspt‚tdƒdks€t‚tdƒdkst‚tdƒdks t‚tdƒdks°t‚tdƒdksÀt‚tdƒdksÐt‚tdƒdksàt‚td	ƒ tdƒd ¡sút‚td
ƒ} | j td
t ƒj¡st‚| jdks.t‚t d
ƒ}|j t	d
t ƒj¡sRt‚|jdksbt‚dt
_tdƒtdƒ }tdƒtdƒ }tdƒtdƒ }tdƒtdƒ }tdƒtdƒ }tdƒtdƒ }tdƒtdƒ }tdƒtdƒ }	dt
_d}
t |ƒ|
  t ¡st‚t |ƒ|
  t¡s$t‚t|ƒ|
  t¡s<t‚t|ƒ|
  t ¡sVt‚t |ƒ|
  t¡snt‚t |ƒ|
  t ¡sˆt‚t|ƒ|
  t ¡s¢t‚t|	ƒ|
  t¡sºt‚dt|dd  k rÚdk sàn t‚dt|dd  k r dk sn t‚dt |dd  k r&dk s,n t‚dt |dd  k rLdk sRn t‚dt|dd  k rrdk sxn t‚dt|dd  k r˜dk sžn t‚dt |dd  k r¾dk sÄn t‚dt |	dd  k rädk sên t‚t dƒ|
  t¡st‚t dƒ|
  t ¡st‚tdƒdks.t‚tddddk sDt‚d S )Nr   g      à?r/   g      ø?r   r   g      @g      à¿g @ èvH7By       @      @é#   i'  z1e-15g    @ˆÃ@i'  g    ÀˆÃ@r   l     Iú5 g+‡ÙÎ÷ï?rD   )rE   g+‡ÙÎ÷ï¿gVçž¯Ò<gVçž¯Ò¼)r«   r   rª   r   r4   r   rb   r   r   rc   r   r   r   )r   r   rq   rr   Zx3Zx4Zx5Zx6Zx7Zx8ÚMr	   r	   r
   Útest_cospi_sinpi×  sh    &&&&&&&&r¸   c               C   sà   t dƒdkst‚t dƒ ttƒ¡s&t‚t tƒ tdƒ¡s<t‚t dt ƒ ttdt  ƒ¡s^t‚tdƒdksnt‚tdƒ ttt ƒ¡sˆt‚ttƒ tt ƒ¡s t‚tdt ƒ ttt dt  ƒ¡sÆt‚tdt ƒ d¡sÜt‚d S )Nr   r/   r   lüÿÿÿ  Iú5 z%2.22579818340535731e+1364376353841841)Zexpjr   r   rW   rx   Zexpjpir   r	   r	   r	   r
   Ú	test_expj  s    "&r¹   c               C   s´   t dƒtdƒ  krdks"n t‚t tƒttƒ  kr>dksDn t‚t t ƒtt ƒ  krddksjn t‚t dƒ d¡s|t‚t dƒ d¡sŽt‚tdƒdksžt‚tdƒ d¡s°t‚d S )	Nr   r/   r   gF´ÑêöÝ?y       @      @yŒ–À¤§Ü?\šaÀg      ø?g¶·ç•)Ë¿)ZsincZsincpir   r]   r   r	   r	   r	   r
   Ú	test_sinc  s    ""&rº   c              C   sÖ   dt _dd„ tddƒD ƒdddd	d
dd
d
dddddddgks@t‚tdƒ d¡sRt‚tdƒ d¡sdt‚tdƒ d¡svt‚ttdd ƒƒdksŽt‚dt _tdƒ} | d dks¬t‚dt _ttƒtksÂt‚tdƒdksÒt‚d S )Nr   c             S   s   g | ]}t |ƒ‘qS r	   )Ú	fibonacci)r{   rF   r	   r	   r
   r|   #  s    z"test_fibonacci.<locals>.<listcomp>r˜   r   r;   rJ   r   r   r/   r   r   r0   r?   r£   é"   g      @g áÞ3Ô÷?y      @      @yÉ½å‚€´ÀºÆC,û¹ËÀiè  ga¹Úƒeì@kr   zv6.24499112864607e+2089876402499787337692720892375554168224592399182109535392875613974104853496745963277658556235103534i4  i'  l    d(	 l   ÛEÑ!	 y      @        )	r   r   r3   r   Zfibr   Ústrr»   r]   )r   r	   r	   r
   Útest_fibonacci!  s    (r¾   c               C   s,   dt _ttdddtdd ƒdk s(t‚d S )Nr   r/   rv   )r   r¶   gG³¦þ^Zé9)r   r   ÚabsrW   r   r   r	   r	   r	   r
   Útest_call_with_dps0  s    rÀ   c               C   sb   dt _tdƒdkst‚ttƒdks&t‚tt ƒdks8t‚tttƒƒsHt‚ttddƒƒdks^t‚d S )Nr   r   r/   r   r]   Ú0)r   r   rg   r   r]   r^   r_   r\   r	   r	   r	   r
   Ú	test_tanh4  s    rÂ   c              C   s  dt _tdƒdkst‚tdƒ d¡s(t‚tdƒ d¡s:t‚tdƒtksJt‚tdƒt ks\t‚tttƒƒslt‚ttdƒt	ƒs~t‚ttdƒt	ƒst‚t
t d	 } ttƒ |  ¡s°t‚tt ƒ | ¡sÄt‚tttdƒƒ |  ¡sÞt‚tttdƒƒ |  ¡søt‚tttdƒƒ | ¡st‚ttdtƒƒ | ¡s,t‚ttdtƒƒ | ¡sFt‚ttdtƒƒ | ¡s`t‚ttt dƒƒ | ¡s|t‚ttt dƒƒ | ¡s˜t‚ttt dƒƒ |  ¡s¶t‚ttdt ƒƒ |  ¡sÔt‚ttdt ƒƒ |  ¡sòt‚ttdt ƒƒ |  ¡st‚d S )
Nr   r   g      à?g­zê“á?g      à¿g­zê“á¿r/   r   r   )r   r   rˆ   r   r   r]   r^   r_   r†   r   rx   r   r\   )Zjpi2r	   r	   r
   Ú
test_atanh<  s0    rÃ   c               C   sl   dt _tdƒdkst‚tdƒ tdƒd ¡s0t‚ttƒtks@t‚tdƒ d¡sRt‚tdƒd  d¡sht‚d S )	Nr   r   r   r/   g¸ÔJzî5g»½×Ùß|Û=g    _ Bgœo   ð?)r   r   Zexpm1r   r   rW   r]   r	   r	   r	   r
   Ú
test_expm1W  s    rÄ   c               C   sh   dt _tdƒdkst‚tdƒ tdƒ¡s,t‚ttƒtks<t‚tdƒ d¡sNt‚tdƒd  d¡sdt‚d S )	Nr   r   r   r   g¸ÔJzî5g»½×Ùß|Û=g    _ BgÈ ùÿÿÿï?)r   r   Zlog1pr   r   rZ   r]   r	   r	   r	   r
   Ú
test_log1p_  s    rÅ   c               C   sH  dt _tddƒdkst‚tddƒdks*t‚tddƒdks<t‚tddƒdksNt‚tddƒdks`t‚tdd	ƒdksrt‚tddƒdks„t‚td	dƒdks–t‚td	dƒdks¨t‚td	dƒdksºt‚td	d
ƒdksÌt‚ttdƒdksÞt‚tt dƒdksòt‚tddƒd  t¡st‚tddƒdks t‚ttd	dddd
ƒd  d
¡sDt‚d S )Nr   r   r   r   r   r   r2   y      @      @r/   r;   r   g0Žä.ÿ++g}Ã”%­I²Tz1e-100000000000T)Úexact)r   r   Zpowm1r   rx   r   r$   Zfaddr	   r	   r	   r
   Ú
test_powm1g  s"    rÇ   c              C   sö   t dƒdgkst‚t dƒddgks&t‚t dƒ\} }}| dks@t‚| d¡sNt‚| d¡s\t‚t ddddgksrt‚t ddddgksˆt‚t dddt dƒdd … ks¨t‚t d	ddtt gksÂt‚tt d
ddƒdksÚt‚tt dddƒdksòt‚d S )Nr/   r   r   r   y      à¿ªLXèz¶ë?y      à¿ªLXèz¶ë¿T)Z	primitiver   r™   r¤   r0   )Z	unitrootsr   r   rx   Úlen)r   r   r¬   r	   r	   r
   Útest_unitrootsz  s     rÉ   c               C   s@  dt _dd„ tdƒD ƒdddddd	dd
dddddddddddddddddd	dddddgks^t‚dd„ tdƒD ƒddddddddddd	dddd
ddddddddddddddddgks¶t‚dd„ tdƒD ƒddt dt tddt tdt dtddt dddttd	gks
t‚dd„ tdƒD ƒddt dt t ddtt dtdt ddtdddt t d	gksbt‚tdtƒdksvt‚tdtƒdksŠt‚ttdd} td| ƒ d¡s¬t‚td| ƒ d¡sÂt‚td| ƒ d¡sØt‚tddƒdksìt‚tddƒd ks t‚tddƒd!kst‚tddƒd"ks(t‚td
dƒd#ks<t‚d S )$Nr   c             S   s   g | ]}t |d ƒ‘qS )r/   )Ú
cyclotomic)r{   rF   r	   r	   r
   r|   Š  s    z#test_cyclotomic.<locals>.<listcomp>é   r/   r   r   r   r;   r   r=   r?   r™   é   é   r   c             S   s   g | ]}t |d ƒ‘qS )r   )rÊ   )r{   rF   r	   r	   r
   r|   ‹  s    r2   c             S   s   g | ]}t |tƒ‘qS r	   )rÊ   rx   )r{   rF   r	   r	   r
   r|   Œ  s    r£   r   c             S   s   g | ]}t |t ƒ‘qS r	   )rÊ   rx   )r{   rF   r	   r	   r
   r|     s    iX  i@ƒ  iô  )r-   r0   rv   gæ?3OP@iø  g      @g      ø?g      @g     €#@g    Àcy@)r   r   r3   r   rx   rÊ   r4   r   )rG   r	   r	   r
   Útest_cyclotomicˆ  s     XXTXrÎ   )DZmpmath.libmpZmpmathr5   ZtimerM   rL   r   r   r   r    r"   r#   r%   r&   r'   r(   r)   Ztaperyr*   r+   r,   r.   r:   rI   rO   rP   rS   rX   rY   r`   ri   rl   ru   rw   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
   Ú<module>   s„   
%&!L,6	