U
    ZÊ¹jë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ÚepsÚres© r
   úZ/var/www/html/bwave/python/venv/lib/python3.8/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  dD ]Ò} | t _tttƒkst‚tttƒks.t‚ttt	ƒks>t‚t
ttƒksNt‚tttƒks^t‚tttƒksnt‚tttƒks~t‚tttƒksŽt‚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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Útln10ÚcatalanÚtcatalanZkhinchinÚ	tkhinchinZglaisherÚ	tglaisherÚphiÚtphiZmertensÚtmertensZ	twinprimeÚ
ttwinprime©Úprecr
   r
   r   Útest_constants-   s(    r2   c                  C   sþ   t dƒD ]} tt| |  ƒƒ| kst‚qt d¡ dD ]T}|t_t dƒD ]@} t d|d d  d|d d  ¡}tt|| ƒƒ|ksFt‚qFq4dt_t dƒD ]`} d	D ]V}tt|| d|  fƒƒt|| fƒksÌt‚tt|| d
|  fƒƒt||  fƒks t‚q q˜d S )Né N  é   ©r   é,  éè  é'  r   r   r   r   r   )r4   é   é   i³¶ éþÿÿÿ)	ÚrangeÚsqrtr   r   ÚrandomÚseedr   r   Úrandint)Úir1   ÚAr   r
   r
   r   Útest_exact_sqrtsC   s    
$(rC   c                  C   sˆ  dD ]l} t | ƒ} dD ]Z}|t_tt| tjtƒdtjtƒ}tt| tjtƒdtjtƒ}t|| ƒs`t	‚t
|| ƒst	‚qqt d¡ d}tttfD ]8}tdƒD ]*} t|ƒ}t||ƒ}t|||ƒ|ks–t	‚q–qŠ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 �s>t	‚t|dd
�dk�sTt	‚t|dd
�dk�sjt	‚ttdƒƒtdƒk�s„t	‚d S )N)r   r   é   é   r   r9   r   é   é   é   é   r   )r   r   éS   éj   iÐ  r   éÒ  r   é	   go™„ÙK@-r   Úd©Úroundingr   ÚnÚuz7.0503726185518891z2.655253776675949)Úfrom_intr   r   Zmpf_pow_intZmpf_sqrtr1   Z
round_downZround_upZmpf_ltr   Zmpf_gtr>   r?   Zround_nearestZround_ceilingr<   Zmpf_randZmpf_mulr   r=   )rA   r   r   r   r1   Úrndr
   r
   r   Útest_sqrt_roundingR   s4    

rU   c                  C   s  dt _dD ] } tt| ƒƒt| ƒd ks
t‚q
tdƒdks<t‚tdƒ t d¡¡sTt‚tdƒ t d¡¡slt‚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>çš™™™™™¹?ç      à?r4   r   r   r   rD   gZd;ßOÕ?g\�Âõ(S@rW   r   ù              ð?r;   éýÿÿÿéœÿÿÿy       €      ð¿)r   r   r=   r   Úfloatr   r   ÚcmathÚmathr   r    ©Úxr
   r
   r   Útest_float_sqrtp   s    0r`   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   rD   )Úhypotr   r   r
   r
   r
   r   Ú
test_hypot~   s
    rb   c                  C   s’   t dddƒD ] } tt| |  |  ƒƒ| kst‚qt d¡ dD ]J}|t_t d|d d  d|d d  ¡}tt|| | ƒƒ|ks<t‚q<dt_d S )	Nr   r3   éÈ   r4   r5   r   r   r   )	r<   Úcbrtr   r   r>   r?   r   r   r@   )rA   r1   rB   r
   r
   r   Útest_exact_cbrt…   s    
$re   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   r4   r8   z8.8068182256629215873e4342iðØÿÿz1.1354838653147360985e-4343)r4   l   ÍV=€é iËÿÿÿé5   éC   )r4   l   …G‹{ÜQÓE iÄÿÿÿé=   rf   r   é   ù       @       @)Úexpr   r   r   ÚbcZbitcountÚmanr   r1   r%   r\   ©r   r
   r
   r   Útest_exp�   s    ro   c                  C   s@   dt _tdƒ} tdƒ}dt _| 
  d¡s,t‚|
  d¡s<t‚d S )Ni   r   r4   r   g8ï,6V‹×?giW‹
¿@)r   r   rk   r   r   )r   r   r
   r
   r   Útest_issue_73œ   s    rp   c                  C   s*  dt _tdƒdkst‚dddddd	d
 dfD ].} t| ƒ t | ¡¡sHt‚t| | ƒdks,t‚q,tddƒd	ksnt‚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¡�s0t‚tdƒjd  d¡�sJt‚tdƒjd  d¡�sdt‚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% ¡�s6t‚tt	ddƒƒt	t
 dƒk�sVt‚ttt	tdƒƒjƒ�spt‚ttt	tdƒƒjƒ�sŠt‚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   r4   r   rW   ç      ø?ç       @g      @r   r   r   ç¸ÔJzî�5ri   r   rL   rj   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¾ó?ì      Fµx:^V g@Œµx¯Drc   gZb××çti)r   r   Úlogr   r   r]   r\   r   ÚldexpÚmpcÚinfÚisnanÚnanr   r^   r
   r
   r   Útest_log¤   s@    "& r{   c                  C   s:  t tdƒƒt tddƒƒ D ]´} | d }tt|ƒƒ t |¡¡sBt‚tt|ƒƒ t |¡¡s^t‚tt|ƒƒ t |¡¡szt‚t	t|ƒƒ t 	|¡¡s–t‚t
t|ƒƒ t 
|¡¡s²t‚tt|ƒƒ t |¡¡st‚qtdƒ t d¡¡sèt‚tdƒ t d¡¡�st‚tdƒ t d¡¡�st‚tdƒ t d¡¡�s6t‚d S )Nr   rZ   r   gffffff@y      ð?      ð?y      ÀÍÌÌÌÌÌÀ)Úlistr<   Úcosr   r   r]   r   ÚsinÚtanÚcoshÚsinhÚtanhr\   )r_   Útr
   r
   r   Útest_trig_hyperb_basicÉ   s    r„   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   r4   éZ   é´   r   i  ih  )r}   r"   r   r   r~   r
   r
   r
   r   Útest_degrees×   s    r‡   c           	      C   sr   t  d¡ g }t| ƒD ]V}t  dd¡}t  dd¡}t  dd¡}t  dd¡}t||ƒ}t||ƒ}| ||f¡ q|S )Nr4   éöÿÿÿr   )r>   r?   r<   ÚuniformÚcomplexÚappend)	ÚNr   rA   Úx1Úy1Úx2Úy2Úz1Úz2r
   r
   r   Úrandom_complexesã   s    


r“   c                  C   sÈ   dD ]@} | t _tdƒd }|j|j  kr>tdƒd d ksn t‚qdt _t d¡ t	dƒD ](\}}t|ƒt|ƒ  
|| d¡s^t‚q^tt d   
d	¡s t‚d
t _tt d   
d	¡s¾t‚dt _d S )N)r   é   r   rX   rW   r   r   r4   r   çê-�™—q=r   r   )r   r   rw   r   r   r   r   r>   r?   r“   r   r    r   )r   r   r‘   r’   r
   r
   r   Útest_complex_powersð   s    ,
"r–   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²   | D ]¨\}}t |t|  ƒ}tt|| ƒ|ƒs2t‚t | t|  ƒ}tt|| ƒ| ƒs\t‚t |t|  ƒ}tt|| ƒ|ƒs‚t‚t | t|  ƒ}tt|| ƒ| ƒst‚qd S )N)rw   Újr   r=   r   )Úlstr   r   Úzr
   r
   r   Útest_mpc_sqrt   s    z1test_complex_sqrt_accuracy.<locals>.test_mpc_sqrtr   r   r”   c                 S   s$   g | ]}t  d d¡t  d d¡f‘qS )r   r   )r>   r‰   ©Ú.0rA   r
   r
   r   Ú
<listcomp>  s     z.test_complex_sqrt_accuracy.<locals>.<listcomp>c                 S   s$   g | ]}|d  |d d|  f‘qS )rV   çš™™™™™É?r   r
   r›   r
   r
   r   r�     s     r   )r>   r?   r   r   r<   )rš   rŒ   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‚d
D ] } | t _dtdƒ  t¡sŠt‚qŠ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ƒƒ |¡�s8t‚ttdtƒƒ | ¡�sTt‚ttt dƒƒ | ¡�srt‚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Àrs   gšd~ÅQJr   ç¸ÔJzî�µgšd~ÅQÊr   r7   )r:   éF   r   r6   r7   r   r4   r   r   )	r   r   Úatanr   r]   r   r   rw   rx   )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   r4   r   r   r   rY   r   r   r   rˆ   )	r   r   Úatan2r   r   r   rx   ry   rz   r
   r
   r
   r   Ú
test_atan2,  s6    r¥   c                  C   sr  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¡ tdƒD �]:} t	 dd¡}t t|ƒƒ t  |¡¡�st‚tt|ƒƒ t |¡¡�s t‚t	 dd	¡}tt|ƒƒ t |¡j¡�sLt‚ttt|ƒƒtƒ�sdt‚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Òtj}dt_tt dƒtƒ�s0t‚dt_t dƒ td ¡�sNt‚t dƒ t d ¡�sht‚|t_d S )Nr   r4   rW   rr   rV   gš™™™™™ñ?r   rˆ   r   ç+‡ÙÎ÷ï?r   r6   r7   r   )Úasinr   r   ÚasinhÚacoshÚ
isinstancerw   ÚacosÚatanhr>   r?   r<   r‰   r   r]   r\   r   r   r   r   )rA   r_   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˜µýÿÿÿï?ç»½×Ùß|Û=ì    d(	 r4   rs   r   r   gñhãˆµøä¾g˜µýÿÿÿï¿g»½×Ùß|Û½r   r    rt   gC“ž6W_G@lûÿÿÿ   Fµx:^V gC“ž6W_GÀ)r   r   r¨   r   r   r‚   r¬   r
   r
   r
   r   Útest_invhyperb_inaccuracyo  s    r°   c                  C   s:  t tdƒƒt tddƒƒ D �]} t tdƒƒt tddƒƒ D ]ø}t| |ƒd d }tt|ƒƒ t |¡¡slt‚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 |¡¡�st‚tt|ƒƒ t |¡¡s:t‚q:qd S )Nr   rˆ   r   g333333@y        {®Gáz„?)r|   r<   rŠ   rk   rw   r   r\   r   ru   r}   r~   r   r�   r€   r‚   )r_   Úyr™   r
   r
   r   Útest_complex_functions~  s     r²   c                  C   sÊ  dt _dt_tdƒD ]¦\} }tt| ƒƒ | ¡s2t‚t| ƒ t	 | ¡¡sJt‚t
| ƒ t	 
| ¡¡sbt‚t| ƒ t	 | ¡¡szt‚t| ƒjt	 | ¡dd�s–t‚t| ƒjt	 | ¡dd�s²t‚tdƒ}qtdddƒD ]l}tdddƒD ]Z}d	t d|  d
| d|   }tt|ƒƒ}| |¡�st‚tt|ƒƒ}| |¡sØt‚qØqÈtdƒ}d}tdddƒD ]v}tdddƒD ]b}dd|  td
 | d|   }tt|ƒƒ}| ||¡�s t‚tt|ƒƒ}| ||¡�s^t‚�q^�qNd S )Nr   r”   r•   )Zrel_epsr4   é÷ÿÿÿr   r   gÍÌÌÌÌÌì?çš™™™™™é?gVçž¯â<rM   gÍÌÌÌÌÌì¿)r   r   Zivr“   r�   r¨   r   r   r©   r\   r¬   r¢   r§   r«   r   r<   r—   r}   r~   r€   )r‘   r’   ÚonerA   Ú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	¡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‚tdƒ d¡süt‚d S )Nr   gE²W´g)ð¿gÙ°
D<X@g^f]žÀg±ŽØŽm¹?g¹)	è�¹?gL–É<[ð?gÔè‚€²ó?gOã¿Õ?gáž&£�—Ô?rW   g5˜qBõ?gH·•yñôÔ?gï9úþB.Ö?r   g-DTû!ù?y        -DTû!ù?)Ú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   ç      @r   r   g      ô?r   r   rx   r   )r   r   rv   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   rM   )g      â?r   r4   )rW   r4   rž   )r´   r;   r7   )g     @ï?r   )r   r   Ú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   rW   r:   g      @)Úlnru   r   Úlog10Údegreesr"   ÚradiansÚpowerr—   Ú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   rY   r   r4   r   )Úargr   r   r   r—   ry   r¤   rz   rx   Úsignr=   r
   r
   r
   r   Útest_arg_signÓ  s,    rÈ   c                   C   s   dt _tdƒ dt _d S )Nr7   i  r   )r   r   ru   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.0ú2.0ú3.0ú4.0ú5.0ú6.0ú7.0ú8.0ú9.0éûÿÿÿrD   z-5.0z-4.0z-3.0z-2.0z-1.0r   r4   rV   z0.10000000000000001z0.20000000000000001z0.30000000000000004z0.40000000000000002z0.5z0.60000000000000009z0.70000000000000007z0.80000000000000004z0.90000000000000002é   r³   rY   z17.0z14.0z11.0z-7.0rž   gš™™™™™¹¿r7   r   g®Gáz®ó¿g®Gáz®	@gH¯¼šò×z¾)Úaranger   r   r
   r
   r
   r   Útest_arangeò  sN        þ
     þ
 ù
    þ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   rM   r   rÊ   z3.166666666666667z4.3333333333333339z5.5z6.666666666666667z7.8333333333333339rÑ   r   )ZendpointrË   rÌ   rÍ   rÎ   rÏ   rÐ   r4   )Zlinspacer   r   r
   r
   r
   r   Útest_linspace	  s       þ
    ÿ
rÖ   c                  C   s  dt _tdddƒD ] } t| |  |  ƒ | t¡st‚qtdƒ dttdƒ d  ¡sVt‚t	d	ƒd }tddd
ƒdg D ]N} t
| d ƒ} t| ƒ}t  jd7  _t| |ƒ}t  jd8  _| |t¡stt‚qtdt _tdddƒD ]8}d| td  }|| | }t|ƒ}t||tƒsÖt‚qÖdt _d S )Nr”   r   r   rV   r   rW   r   r   r4   gš™™™™™@gš™™™jø@y        š™™™™™ñ?r   i-  gü©ñÒMbP?r   )r   r   rÔ   rd   r   r   r   r—   r=   r   rw   Úpowr<   r   )r   Z	one_thirdÚr1Úr2rQ   Úwr™   Úrr
   r
   r   Útest_float_cbrt  s&    "
rÜ   c            	      C   s¤  dt _t d¡ t dd¡} | |  |  }tt|ƒdƒ}|| ksBt‚tddƒD ]"}||  }tt|ƒ|ƒ| ksLt‚qLdt _tdd	d
ƒD ]~}t ¡ d t ¡ dd
  fD ]\} t| |ƒ}t	| tdƒ| ƒ}| 
|¡sÐt‚t| | ƒ}t	| tdƒ | ƒ}| 
|¡s¢t‚q¢q‚dD ]h}|t _dD ]V}d}tdƒD ]B}|t _tƒ } d| t _| | }|t _t||ƒ}|| k�s$t‚�q$�q�qdt _t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  _| 
|¡�sFt‚t||tƒ�sXt‚t| | ƒ}t  jd7  _t	| tdƒ | ƒ}t  jd8  _| 
|¡�s¤t‚t||tƒ�s€t‚�q€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�s$t‚ttdƒtk�s8t‚ttdƒdk�sLt‚ttdƒdk�s`t‚ttdƒdk�stt‚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�s2t‚tdddƒdk�sHt‚tdddƒdk�s^t‚tdddƒdk�stt‚tdddƒdk�sŠt‚tdddƒdk�s t‚d S )Nr”   r4   r   r8   r   r   r   é(   iˆ  r   )ZnearestÚupZdown)rÒ   rY   r   rD   r   r   é   r   r   g      Ð?r;   rY   é   y               @y       €       ÀiƒÿÿÿrÒ   )r   r   r>   r?   r@   Únthrootr   r   r<   r×   r   rP   r1   Zrandr—   r   r   rx   ry   rz   Úroot)	r   ÚprÛ   rQ   rØ   rT   r1   rA   r   r
   r
   r   Ú	test_root&  s�    
 


$$
rä   c                  C   sÖ   dD ]B} | t _ttdƒdƒ}| tdƒd dt  tdƒd  ¡st‚qd	t _td
dƒ tdƒd dt  tdƒ ¡szt‚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Ò   r4   r   ç      à¿r   z-1e-3g      è¿z-1e-6r   z-1e100000000Z
1e25000000r   )r   r   rá   r   r   r—   r   r=   )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   rk   rw   r   r}   r~   r€   r�   ÚcospiÚsinpir   r   Zcospi_sinpiZcos_sin)r_   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‚tttt	fD ]†}|| ƒ| 
 k�st‚|| dd�| k�s0t‚|| dd�| k �sFt‚||ƒ|
 k�sZt‚||dd�|k�spt‚||dd�|k �st‚�qt
tttf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–t|ƒ| 
 k�s2t‚t|ƒ|
 k�sFt‚t|dd�| k�s\t‚t|dd�| k �srt‚t|dd�|k�sˆt‚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   r4   r   ré   rO   Úf)r   r   r   rk   r   r}   r~   r¢   r¨   r‚   r§   r   r�   r¬   r¿   r€   )r   r   ré   rN   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      @      @)Úfloorr   Ú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   ù      @      @rD   y      ð?      @r4   r   r   y      @      À)Ú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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ƒ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   rW   r4   rq   r   r   r»   rå   g @ èvH7Bù       @      @é#   r8   z1e-15g    @ˆÃ@i'  g    ÀˆÃ@r   l     �Iú5 r¦   rN   rO   g+‡ÙÎ÷ï¿gVçž¯Ò<gVçž¯Ò¼)rè   r   rç   r   r=   r   r}   r   r   r~   r   r   r   )r   r   r�   r�   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   r4   r   lüÿÿÿ  �Iú5 z%2.22579818340535731e+1364376353841841)Zexpjr   r   rk   r—   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   r4   r   gF´ÑêöÝ?r÷   yŒ–À¤§�Ü?\šaÀrq   g¶·ç•)Ë¿)ZsincZsincpir   rx   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œ   rQ   r
   r
   r   r�   #  s     z"test_fibonacci.<locals>.<listcomp>rÒ   r   rD   rY   r   r   r4   r   r   r9   rH   rß   é"   r»   g áÞ3Ô÷?rò   yÉ½å‚€´ÀºÆC,û¹ËÀr7   ga¹Úƒeì@kr   zv6.24499112864607e+2089876402499787337692720892375554168224592399182109535392875613974104853496745963277658556235103534i4  r8   r¯   l   ÛEÑ!	 y      @        )	r   r   r<   r   Zfibr   Ústrrý   rx   rn   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   r4   r”   )r   rø   gG³¦þ^Zé9)r   r   Úabsrk   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   r4   r   rx   Ú0)r   r   r‚   r   rx   ry   rz   rw   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	ƒs�t‚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   rW   g­zê“á?rå   g­zê“á¿r4   r   r   )r   r   r¬   r   r   rx   ry   rz   rª   r   r—   r   rw   )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   r4   rs   r®   ç    _ Bgœo   ð?)r   r   Úexpm1r   r   rk   rx   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   rs   r®   r  gÈ ùÿÿÿï?)r   r   Úlog1pr   r   ru   rx   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   r;   rò   r4   rD   r   g0Žä.ÿ++g}Ã”%­I²Tz1e-100000000000T)Úexact)r   r   Zpowm1r   r—   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 )Nr4   r   r   r   y      à¿ªLXèz¶ë?y      à¿ªLXèz¶ë¿T)Z	primitiver   rÓ   rà   r9   )Z	unitrootsr   r   r—   Ú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 )r4   ©Ú
cyclotomicrþ   r
   r
   r   r�   Š  s     z#test_cyclotomic.<locals>.<listcomp>é   r4   r   r   r   rD   r   rF   rH   rÓ   é   é   r   c                 S   s   g | ]}t |d ƒ‘qS )r   r  rþ   r
   r
   r   r�   ‹  s     r;   c                 S   s   g | ]}t |tƒ‘qS r
   ©r  r—   rþ   r
   r
   r   r�   Œ  s     rß   r   c                 S   s   g | ]}t |t ƒ‘qS r
   r  rþ   r
   r
   r   r�   �  s     iX  i@ƒ  iô  r0   r9   r”   gæ�?3OP@iø  r»   rq   g      @g     €#@g    Àcy@)r   r   r<   r   r—   r  r=   r   )rR   r
   r
   r   Útest_cyclotomicˆ  s     XXTXr  )DZmpmath.libmpZmpmathr>   Útimer]   r\   r   r   r   r!   r#   r$   r&   r'   r)   r*   r+   Ztaperyr-   r.   r/   r2   rC   rU   r`   rb   re   ro   rp   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
   r   Ú<module>   s„   

%&!L,6	