o
    lhx                     @   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
   o/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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 ]i} | t _tttksJ tttksJ tttksJ t	tt
ks'J tttks/J tttks7J tttks?J tttksGJ tttksOJ tttksWJ | dk rktttkscJ tttkskJ qdt _tdksuJ tdks{J tdksJ tdk sJ d S )N)	      
         %   P   d      2   r      r      )mpdpspimpftpietedegreetdegreeeulerteulerln2tln2ln10tln10catalantcatalankhinchin	tkhinchinglaisher	tglaisherphitphimertenstmertens	twinprime
ttwinprimeprecr
   r
   r   test_constants-   s*   r7   c                  C   s   t dD ]} tt| |  | ksJ qtd dD ]*}|t_t dD ] } td|d d  d|d d  }tt|| |ksCJ q#qdt_t dD ]0} d	D ]+}tt|| d|  ft|| fksfJ tt|| d
|  ft||  fks{J qPqLd S )N N     r   ,    '  r   r   r   r   r   )r9         i )rangesqrtr   randomseedr   r   randint)ir6   Ar   r
   r
   r   test_exact_sqrtsC   s    
$(,rH   c                  C   s|  dD ]6} t | } dD ]-}|t_tt| tjtdtjt}tt| tjtdtjt}t|| s0J t	|| s7J q
qt
d d}tttfD ]}tdD ]} t|}t||}t||||ks`J qKqEdt_tdd }tdd }dt_t|d	d
dks~J t|dd
dksJ t|dd
dksJ t|d	d
dk sJ t|dd
dksJ t|dd
dksJ ttdtdksJ d S )N)r   r         r   r>   r               r   )r   r   S   j   i  r     r   	   goK@-r   droundingr   nuz7.0503726185518891z2.655253776675949)from_intr   r   mpf_pow_intmpf_sqrtr6   
round_downround_upmpf_ltmpf_gtrC   rD   round_nearestround_ceilingrA   mpf_randmpf_mulr   rB   )rF   r   r   r   r6   rndr
   r
   r   test_sqrt_roundingR   s8   

rd   c                  C   s  dt _dD ]} tt| t| d ksJ qtddksJ tdtds*J tdtds6J tdtdsBJ tdtdsNJ td	td	sZJ ttjtj	d  ttjtj	d  srJ ttjtj	d  ttjtj	d  sJ d S )
Nr   )r   gHz>皙?      ?r9   r   r   r   rI   gZd;O?g\(S@rf   r                 ?r@   y             )
r   r   rB   r   floatr   cmathmathr   r   xr
   r
   r   test_float_sqrtp   s   04ro   c                   C   sn   t dddks	J t ddtdksJ t ddtdksJ t ddtdks*J t ddtdks5J d S )Nr   gQ?gQտr   r   rI   )hypotr   r
   r
   r
   r   
test_hypot~   s
   rq   c                  C   s   t dddD ]} tt| |  |  | ksJ qtd dD ]%}|t_td|d d  d|d d  }tt|| | |ksCJ qdt_d S )	Nr   r8      r9   r:   r   r   r   )rA   cbrtr   rC   rD   r   r   rE   )rF   r6   rG   r
   r
   r   test_exact_cbrt   s   
$
rt   c                  C   s   t ddksJ t dtdsJ t dtdsJ t td} | jt| jks.J dt_t td	} | jt| jksAJ d
t_t td dsOJ t dt	 ds[J d S )Nr   r9   r=   z8.8068182256629215873e4342iz1.1354838653147360985e-4343)r9   l   V= i5   C   )r9   l   G{QE i=   ru   r             @       @)
expr   r   bcbitcountmanr   r6   r%   rk   r   r
   r
   r   test_exp   s   r   c                  C   s@   dt _td} td}dt _| 
 dsJ |
 dsJ d S )Ni   r   r9   r   g8,6V?giW
@)r   r   rz   r   )r   r   r
   r
   r   test_issue_73   s   r   c                  C   s  dt _tddksJ dddddd	d
 dfD ]} t| t| s$J t| | dks-J qtddd	ks7J td	d d	dksBJ tdtdsNJ tdjd dsZJ tdjd dsfJ tdjd dsrJ tdjd ds~J tdjd dsJ tdjd dsJ tdjd dsJ tdjd dsJ tdjd dsJ tdjd dsJ tdjd dsJ tdjd	d  dsJ td jd	d  dsJ ttd!d"tdd# sJ ttd!d	d$ tdd% sJ ttddtt	 dks!J t
tttdjs.J t
tttdjs;J t
ttdtjsHJ t
ttdtjsUJ t
tttdjsbJ t
tttdjsoJ t
ttdtjs|J t
ttdtjsJ d S )&Nr   r9   r   rf         ?       @g      @r   r   r   Jz5rx   r   rQ   ry   y333333??l     ;g 7y@y333333?y?333333y      ?:0yE>l     _y      ?:0yEy      :0yE>y      :0yEy:0yE>      ?y:0yE      ?y:0yE>      y:0yE      y      ?Ww'&l7r   yWw'&l7      ?gX9v?      Fx:^V g@xDrr   gZbti)r   r   logr   rl   rk   r   ldexpmpcinfisnannanr   rm   r
   r
   r   test_log   s@    & r   c                  C   s4  t tdt tdd D ]Z} | d }tt|t|s!J tt|t|s/J tt|t|s=J tt|t|sKJ t	t|t	|sYJ t
t|t
|sgJ qtdtdstJ tdtdsJ tdtdsJ tdtdsJ d S )Nr   ri   r   gffffff@y      ?      ?y      )listrA   cosr   r   rl   sintancoshsinhtanhrk   )rn   tr
   r
   r   test_trig_hyperb_basic   s   r   c                   C   s   t dt dks
J t dt dsJ t dt ds J t dt ds+J t dt ds6J tdt dks@J tdt dsKJ tdt dsVJ tdt dsaJ tdt dslJ d S )Nr   r9   Z      r   i  ih  )r   r!   r   r   r
   r
   r
   r   test_degrees   s   r   c           	      C   sr   t d g }t| D ]+}t dd}t dd}t dd}t dd}t||}t||}|||f q|S )Nr9   r   )rC   rD   rA   uniformcomplexappend)	Nr   rF   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#J  J qdt _td tdD ]\}}t|t| 	|| dsDJ q0t
t d  	d	sQJ d
t _t
t d  	d	s`J dt _d S )N)r      r   rg   rf   r   r   r9   r   -q=r   r   )r   r   r   r   r   r   rC   rD   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t|| |sJ t | t|  }tt|| | s.J t |t|  }tt|| |sAJ t | t|  }tt|| | sVJ qd S )N)r   jr   rB   )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   )rC   r   .0rF   r
   r
   r   
<listcomp>     $ z.test_complex_sqrt_accuracy.<locals>.<listcomp>c                 S   s$   g | ]}|d  |d d|  fqS )re   皙?r   r
   r   r
   r
   r   r     r   r   )rC   rD   r   r   rA   )r   r   r   r
   r
   r   test_complex_sqrt_accuracy   s   


r   c                  C   s  dt _tdtdsJ tddksJ tdtd s"J tddks*J tdt d s6J tdd	 td sCJ d
D ]} | t _dtd tsUJ qEdt _td }tttd|siJ tttd|suJ tttd|sJ ttdt|sJ ttdt|sJ ttdt| sJ ttt d| sJ ttt d| sJ ttt d| sJ ttdt | sJ ttdt | sJ ttdt |sJ d S )Nr   gffffffr   gd~QJr   Jzgd~Qr   r<   )r?   F   r   r;   r<   r   r9   r   r   )r   r   atanr   rl   r   r   r   )r   pi2r
   r
   r   	test_atan  s0   r   c                   C   sV  dt _tddtd sJ tdddt d sJ tdddt d s+J tddt d s8J tddt d sEJ tddtd sQJ tdddksZJ ttdtd sfJ tt dt d stJ tttts}J ttt tsJ tttt sJ ttdtsJ tttdsJ ttdtsJ tttdsJ tdtdksJ tdt tsJ td	tdksJ td
tdksJ td
t t sJ td	t tsJ ttd	td sJ ttd
td sJ tt d	t d sJ tt d
t d s)J d S )Nr   r9   r   r   r   rh   r   r   r   r   )r   r   atan2r   r   r   r   r   r
   r
   r
   r   
test_atan2,  s6   "r   c                  C   s`  t tddks
J ttddksJ ttddksJ tt tdts)J tt tdts4J tttdts?J tttdtsJJ tttdtsUJ tttdts`J t	d t
dD ]} tdd}t t|t |sJ tt|t|sJ tdd	}tt|t|jsJ ttt|tsJ tdd	}tt|t|jsJ ttt|tsJ tdd
}ttt|tsJ tdd}tt|t|jsJ ttt|tsJ qitj}dt_tt dtsJ dt_t dtd sJ t dt d s+J |t_d S )Nr   r9   rf   r   re   g?r   r   r   +?r   r;   r<   r   )asinr   asinhacosh
isinstancer   acosatanhrC   rD   rA   r   r   rl   rk   r   r   r   r   )rF   rn   r   r
   r
   r   test_areal_inversesI  s@   

r   c                   C   s  dt _tdd dsJ tdd dsJ tdd	d
  ds&J tdd ds1J tdd ds<J tdd	d
  dsIJ tddsRJ tdds[J tdd dsfJ tdd dsqJ tdd ds|J tdd dsJ d S )Nr   gh㈵>i g?绽|=    d(	 r9   r   r   r   gh㈵gg|۽r   r   r   gC6W_G@l   Fx:^V gC6W_G)r   r   r   r   r   r   r
   r
   r
   r   test_invhyperb_inaccuracyo  s   r   c                  C   s6  t tdt tdd D ]} t tdt tdd D ]{}t| |d d }tt|t|s5J tt|t|sCJ tt|t|sQJ t	t|t	|s_J t
t|t
|smJ tt|t|s{J tt|t|sJ tt|t|sJ qqd S )Nr   r   r   g333333@y        {Gz?)r   rA   r   rz   r   r   rk   r   r   r   r   r   r   r   )rn   yr   r
   r
   r   test_complex_functions~  s   r   c                  C   s  dt _dt_tdD ]S\} }tt| | sJ t| t| s%J t	| t	| s1J t
| t
| s=J t| jt| ddsKJ t| jt| ddsYJ td}q
tdddD ]5}tdddD ],}d	t d|  d
| d|   }tt|}||sJ tt|}||sJ qlqdtd}d}tdddD ]7}tdddD ].}dd|  td
 | d|   }tt|}|||sJ tt|}|||sJ qqd S )Nr   r   r   )rel_epsr9   r   r   g?皙?gV瞯<rR   g)r   r   ivr   r   r   r   r   rk   r   r   r   r   r   rA   r   r   r   r   )r   r   onerF   kr   r   errr
   r
   r   test_complex_inverse_functions  s:   
  r   c                   C   s   t dds	J tddsJ tddsJ tdds$J tdds-J tdds6J tdds?J tdd	sHJ t	dd
sQJ t
ddsZJ tddscJ tddslJ t	ddsuJ tdds~J d S )Nr   gEWg)gٰ
D<X@g^f]gm?g)	荹?gL<[?g肀?gO?g&?rf   g5qB?gHy?g9B.?r   g-DT!?y        -DT!?)secr   csccotsechcschcothasecacscacotasechacschacothr
   r
   r
   r   test_reciprocal_functions  s   r   c                   C   sf   dt _ttdddksJ ttdddksJ ttdddks$J ttdd	tdks1J d S )
Nr         @r   r   g      ?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J tddksJ tddksJ tdd	ks#J td
dks+J d S )Nr   r   )g        r   rR   )g      ?r   r9   )rf   r9   r   )r   r@   r<   )g     @?r   )r   r   frexpr
   r
   r
   r   
test_frexp  s   r   c                   C   s   t dtdks
J tdtddksJ tddt ksJ tddt ks)J tddtks2J tdddkrAt	tddt
sCJ d S )	Nr   g      @r   gffffff@r   rf   r?   g      @)lnr   log10degreesr!   radianspowerr   fmodr   r   r
   r
   r
   r   test_aliases  s   &r   c                   C   s  t ddksJ t dtsJ t ttd sJ t t t d s)J t ddks1J ttdts:J tttdsCJ ttdtsLJ tttdsUJ tttts^J t tdksfJ t t tspJ tt tsxJ tddksJ tddksJ tddksJ ttdksJ tt dksJ tttsJ tttksJ tdt t ksJ tdt dt t	d sJ d S )Nr   r   rh   r   r9   r   )
argr   r   r   r   r   r   r   signrB   r
   r
   r
   r   test_arg_sign  s,   &r   c                   C   s   dt _td dt _d S )Nr<   i  r   )r   r   r   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s&J 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sMJ 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suJ t dd d!td"td#td$td
tdtdtdtdtd%g	ksJ t d&dd'tdgksJ t dg ksJ t d(d)g ksJ t d*d+d,g ksJ d S )-Nr   z0.0z1.02.03.04.05.06.07.08.09.0rI   z-5.0z-4.0z-3.0z-2.0z-1.0r   r9   re   z0.10000000000000001z0.20000000000000001z0.30000000000000004z0.40000000000000002z0.5z0.60000000000000009z0.70000000000000007z0.80000000000000004z0.90000000000000002   r   rh   z17.0z14.0z11.0z-7.0r   gr<   r   gGzgGz	@gHz)aranger   r
   r
   r
   r   test_arange  s2   



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J t dddddtdtdtdtdtdtdtdgks@J t dddtdgksMJ d S )Nr   rR   r   r   z3.166666666666667z4.3333333333333339z5.5z6.666666666666667z7.8333333333333339r   r   )endpointr   r   r   r   r   r   r9   )linspacer   r
   r
   r
   r   test_linspace	  s   
 
r   c                  C   s  dt _tdddD ]} t| |  |  | tsJ q	tddttd d  s+J td	d }tddd
dg D ]'} t	| d } t| }t  jd7  _t
| |}t  jd8  _||tsaJ q:dt _tdddD ]}d| td  }|| | }t|}t||tsJ qkdt _d S )Nr   r   r   re   r   rf   r   r   r9   g@gj@y        ?r   i-  gMbP?r   )r   r   r   rs   r   r   r   rB   r   r   powrA   r   )r   	one_thirdr1r2rV   wr   rr
   r
   r   test_float_cbrt  s&   "

r   c            	      C   s  dt _td tdd} | |  |  }tt|d}|| ks!J tddD ]}||  }tt||| ks7J q&dt _tdd	d
D ]?}t d t dd
  fD ].} t| |}t| td| }|	|shJ t| | }t| td | }|	|sJ qQqAdD ]0}|t _
dD ](}d}tdD ]}|t _t } d| t _| | }|t _t||}|| ksJ qqqdt _tddD ]}t tt   } t| |	t| td| sJ tt| |t| td| sJ t dd
  tt   } t| |}t  jd7  _t| td| }t  jd8  _|	|sJ t||ts%J t| | }t  jd7  _t| td | }t  jd8  _|	|sKJ t||tsTJ qdt _tdddksbJ tdddkslJ tdddksvJ ttdtksJ ttdtksJ ttdtksJ ttddksJ ttddksJ ttddksJ ttdtksJ ttddksJ ttdt ksJ tttdsJ tttdsJ tttdsJ tttdsJ tddtddksJ tddddksJ tddddksJ tddddks'J tddddks2J tddddks=J tddddksHJ d S )Nr   r9   r   r=   r   r   r   (   i  r   )nearestupdown)r   rh   r   rI   r   r      r   r   g      ?r@   rh      y               @y              ir   )r   r   rC   rD   rE   nthrootr   rA   r   r   rU   r6   randr   r   r   r   r   r   root)	r   pr   rV   r   rc   r6   rF   r   r
   r
   r   	test_root&  s   
 
	


""
r	  c                  C   s   dD ]!} | t _ttdd}|tdd dt  tdd  s#J qd	t _td
dtdd dt  td s=J tdddt dtd  sOJ dt _tdddt td td sfJ dt _d S )N)r   r   z-1e-20r   r   r   r9   r         r   z-1e-3g      z-1e-6r   z-1e100000000
1e25000000r   )r   r   r  r   r   r   rB   )r   r   r
   r
   r   test_issue_136r  s   ,,$(
r  c                  C   s$  dt _td} td}tt| dt| ksJ ttd|tt|t|ks*J tt| dt| ks7J tt| dt| ksDJ ttd|t|ksQJ ttd|tdt|ksaJ t	t| dt	| ksnJ t
t| dt
| ks{J t	td|tt| sJ t
td|tdtt| sJ tt| d\}}|t	| ksJ |t
| ksJ ttd|\}}|tt| sJ |tdtt| sJ tt| d\}}|t| ksJ |t| ksJ ttd|\}}|t|ksJ |tdt|ksJ d S )Nr   g333333?g?r   )r   r   r   rz   r   r   r   r   r   cospisinpir   r   cospi_sinpi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s#J t| dddks-J t|dddks7J t| dddksAJ t|dddk sKJ t| dksSJ t| dddks]J t|dddksgJ t| dddk sqJ t|dddk s{J ttttfD ]<}|| | 
 ksJ || dd| ksJ || dd| k sJ |||
 ksJ ||dd|ksJ ||dd|k sJ qt	t
ttfD ]=}|| | 
 ksJ |||
 ksJ || dd| ksJ ||dd|ksJ || dd| k sJ ||dd|k sJ qt|| 
 ksJ t||
 ksJ t|dd| ks!J t|dd| k s,J t|dd|ks7J t|dd|k sBJ t| dksKJ t|dksTJ t| dddks_J t|dddksjJ t| dddksuJ t|dddksJ d S )	Nr   r   r   r9   r   r  rT   f)r   r   r   rz   r   r   r   r   r   r   r   r   r   r   r   )r   r   r  rS   r  r
   r
   r   test_perturbation_rounding  sT   r  c                   C   sD   t ddksJ tddksJ t ddksJ tddks J d S )Ng	@r   r   y	@      @y      @      @y      @      @)floorceilr
   r
   r
   r   test_integer_parts  s   r  c                   C   s   t ddksJ t ddksJ tddksJ tddks J tddks(J tddks0J tddks8J tdd	ks@J td dksJJ d S )
N3r         @      @rI   y      ?      @r9   r   r   y      @      )fabsreimconjr   	conjugater
   r
   r
   r   test_complex_parts  s   r   c                  C   sP  t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t ddks0J t ddks8J tddks@J tddksHJ tddksPJ tddksXJ tddks`J tddkshJ tddkspJ td	tdd s}J td
} | jtd
t jsJ | jdksJ t d
}|jtd
t jsJ |jdksJ 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J t ||
 tsJ t||
 tsJ t||
 t s'J t ||
 ts3J t ||
 t s@J t||
 t sMJ t|	|
 tsYJ dt|dd  k rjdk smJ  J dt|dd  k r~dk sJ  J dt |dd  k rdk sJ  J dt |dd  k rdk sJ  J dt|dd  k rdk sJ  J dt|dd  k rdk sJ  J dt |dd  k rdk sJ  J dt |	dd  k rdk sJ  J t d|
 tsJ t d|
 t sJ tddksJ tddddk s&J d S )Nr   rf   r9   r   r   r   r   r
  g @ vH7B       @      @#   r=   z1e-15g    @@i'  g    @r   l     I5 r   rS   rT   g+gV瞯<gV瞯Ҽ)r  r  r   rB   r   r   r   r   r   r   r   r   )r   r   r   r   x3x4x5x6x7x8Mr
   r
   r   test_cospi_sinpi  sh   ((((((((r*  c                   C   s   t ddksJ t dttsJ t ttdsJ t dt ttdt  s/J tddks7J tdttt sDJ tttt sPJ tdt ttt dt  scJ tdt dsnJ d S )Nr   r9   r   l  I5 z%2.22579818340535731e+1364376353841841)expjr   rz   r   expjpir   r
   r
   r
   r   	test_expj  s   "&r-  c                   C   s   t dtd  krdksJ  J t ttt  kr!dks$J  J t t tt   kr5dks8J  J t ddsAJ t ddsJJ tddksRJ tdds[J d S )	Nr   r9   r   gF?r!  y?\ar   g)˿)sincsincpir   r   r
   r
   r
   r   	test_sinc  s   $$(r0  c                  C   s   dt _dd tddD g dksJ tddsJ td	d
s%J tdds.J ttdd dks:J dt _td} | d dksIJ dt _tttksTJ tddks\J d S )Nr   c                 S   s   g | ]}t |qS r
   )	fibonaccir   rV   r
   r
   r   r   #  s    z"test_fibonacci.<locals>.<listcomp>r   r   )rI   rh   r   r   r9   r   r9   r9   r   r   rI   r>   rM   r  "   r   g 3?r  yɽ傀C,r<   gaڃe@kr   zv6.24499112864607e+2089876402499787337692720892375554168224592399182109535392875613974104853496745963277658556235103534i4  r=   r   l   E!	 y      @        r   )r   r   rA   fibr   strr1  r   r~   r
   r
   r   test_fibonacci!  s   r6  c                   C   s,   dt _ttdddtdd dk sJ d S )Nr   r9   r   )r   r"  gG^Z9)r   r   absrz   r   r
   r
   r
   r   test_call_with_dps0  s   &r8  c                   C   sb   dt _tddksJ ttdksJ tt dksJ ttts$J ttdddks/J d S )Nr   r   r9   r   r   0)r   r   r   r   r   r   r   r
   r
   r
   r   	test_tanh4  s   r:  c                  C   s   dt _tddksJ tddsJ tddsJ tdtks%J tdt ks.J ttts6J ttdts?J ttdtsHJ t	t
 d	 } tt|  sXJ tt | sbJ tttd|  soJ tttd|  s|J tttd| sJ ttdt| sJ ttdt| sJ ttdt| sJ ttt d| sJ ttt d| sJ ttt d|  sJ ttdt |  sJ ttdt |  sJ ttdt |  sJ d S )
Nr   r   rf   gz?r
  gzr9   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )jpi2r
   r
   r   
test_atanh<  s0    r<  c                   C   sl   dt _tddksJ tdtdd sJ tttks J tdds)J tdd ds4J d S )	Nr   r   r   r9   r   r       _Bgo   ?)r   r   expm1r   rz   r   r
   r
   r
   r   
test_expm1W  s   r?  c                   C   sh   dt _tddksJ tdtdsJ tttksJ tdds'J tdd ds2J d S )	Nr   r   r   r   r   r   r=  g ?)r   r   log1pr   r   r   r
   r
   r
   r   
test_log1p_  s   rA  c                   C   sB  dt _tdddksJ tdddksJ tdddksJ tdddks'J tdddks0J tdd	dks9J tdddksBJ td	ddksKJ td	ddksTJ td	ddks]J td	d
dksfJ ttddksoJ tt ddksyJ tddd tsJ tdddksJ ttd	dddd
d d
sJ d S )Nr   r   r   r   r   r   r@   r  r9   rI   r   g0.++g}Ô%ITz1e-100000000000T)exact)r   r   powm1r   r   r%   faddr
   r
   r
   r   
test_powm1g  s"   &rE  c                  C   s   t ddgks	J t dddgksJ t d\} }}| dks J |ds'J |ds.J t ddddgks9J t ddddgksDJ t dddt ddd  ksTJ t d	ddtt gksaJ tt d
dddksmJ tt ddddksyJ d S )Nr9   r   r   r   y      ࿪LXz?y      ࿪LXzT)	primitiver   r   r  r>   )	unitrootsr   r   len)r   r   r  r
   r
   r   test_unitrootsz  s    rI  c                  C   s  dt _dd tdD g dksJ dd tdD g dks!J 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sJJ 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suJ tdtd
ks~J tdtd
ksJ ttdd} td| dsJ td| dsJ td| d
sJ tddd
ksJ td
ddksJ tdddksJ tdddksJ tdddksJ d S )Nr   c                 S      g | ]}t |d qS )r9   
cyclotomicr2  r
   r
   r   r         z#test_cyclotomic.<locals>.<listcomp>   )r9   r   r   r   r   rI   r9   r   r   r   r9   rK   r9   rM   r9   r9   r   r   r9      r9   r9   r9      r9   rI   r9   r   r9   r   r9   c                 S   rJ  )r   rK  r2  r
   r
   r   r     rM  )r9   r@   r   r9   r   r9   r   r9   r   r9   rI   r9   r9   r9   r   r9   r   r9   r   r9   r9   r9   rK   r9   r9   r9   rM   r9   r9   r9   r9   c                 S   s   g | ]}t |tqS r
   rL  r   r2  r
   r
   r   r     rM  r  r9   r   r   r   r   rI   c                 S   s   g | ]}t |t qS r
   rQ  r2  r
   r
   r   r     s    iX  i@  i  r5   r>   r   g?3OP@i  r   r   g      @g     #@r   g    cy@)r   r   rA   r   rL  rB   r   )rW   r
   r
   r   test_cyclotomic  s    RVrR  )Dmpmath.libmpmpmathrC   timerl   rk   r   r   r   r    r"   r$   r&   r(   r*   r,   r.   taperyr0   r2   r4   r7   rH   rd   ro   rq   rt   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  r6  r8  r:  r<  r?  rA  rE  rI  rR  r
   r
   r
   r   <module>   s    

%&!L,6	