U
    9%ex                     @   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/Darija-Ai-API/env/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sttttksttttkst| dk rtttksttttkstqdt _tdksttdkst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sttt|| d
|  ft||  fkstqqd 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st	qqdt_tdd }tdd }dt_t|d	d
dkst	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st	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sttdtdsttd	td	stttj	tj
d  ttj	tj
d  stttj	tj
d  ttj	tj
d  std S )
Nr   )r   gHz>皙?      ?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std
t_t t	d dstt dt
 dstd S )Nr   r4   r8   z8.8068182256629215873e4342iz1.1354838653147360985e-4343)r4   l   V= i5   C   )r4   l   G{QE 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sttdtdsttdjd dsttdjd dsttdjd dsttdjd dst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sttdjd dsttdjd	d  dsttd jd	d  dst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stttt	dtjstttt	dtjstttt	tdjstttt	tdjst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   Jz5ri   r   rL   rj   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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	|stt
t|t
|sttt|t|stqtdtdst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sttdt dsttdt dsttdt dsttdt dst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	std
t _tt d  
d	st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|| |st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 std
D ] } | t _dtd tstqdt _td }tttd|sttttd|st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| stttt d| stttdt | stttdt | stttdt |std S )Nr   gffffffrs   gd~QJr   Jzgd~Qr   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 sttddtd sttdddkstttdtd sttt dt d stttttst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sttdt tsttd	tdksttd
tdksttd
t t sttd	t tst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sttttdtsttttdtst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stttt|tstt	dd
}ttt|tstt	dd}tt|t|jstttt|tstqt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sttddsttddsttdd dsttdd dsttdd dsttdd dstd S )Nr   gh㈵>i g?绽|=    d(	 r4   rs   r   r   gh㈵gg|۽r   r   rt   gC6W_G@l   Fx:^V gC6W_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|stt	t|t	|stt
t|t
|sttt|t|sttt|t|sttt|t|sttt|t|s:tq:qd S )Nr   r   r   g333333@y        {Gz?)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stt| jt	| ddst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|}||stqqtd}d}tdddD ]v}tdddD ]b}dd|  td
 | d|   }tt|}|||st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	stt
dd
sttddsttddsttddstt
ddsttddstd S )Nr   gEWg)gٰ
D<X@g^f]gm?g)	荹?gL<[?g肀?gO?g&?rW   g5qB?gHy?g9B.?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rt
t	ddtst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stttdtsttttdstttttstt tdkstt t tsttt tst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stt	dt dt t
d st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st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st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std S )-Nr   z0.0z1.02.03.04.05.06.07.08.09.0rD   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   gr7   r   gGzgGz	@gHz)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stt dddtdgkst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stqdt _d S )Nr   r   r   rV   r   rW   r   r   r4   g@gj@y        ?r   i-  gMbP?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| }|
|stt| | }t	| td | }|
|stqqd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| sttt| |t	| td| st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  _|
|stt||tstqdt _tdddksttdddksttdddkst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stttddkstttdt ksttttdsttttdsttttdst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sttddddkst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              ir   )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  stdt _tdddt td td st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stttd|t|kstttd|tdt	|kstt
t| dt
| ksttt| dt| kst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| st|tdt	t| sttt| d\}}|t| kst|t| kst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stt|dddk stt| dkstt| dddkstt|dddkstt| dddk stt|dddk st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st|||
 kst|| dd| kst||dd|kst|| dd| k st||dd|k stqt|| 
 ks2tt||
 ksFtt|dd| ks\tt|dd| k srtt|dd|kstt|dd|k stt| dkstt|dkstt| dddkstt|dddkst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sttd dkst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sttddksttddksttddksttddksttddksttddksttd	tdd st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 stt||
 t stt|	|
 tstdt|dd  k rdk sn 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 rdk sn tdt |dd  k rdk sn tdt |	dd  k rdk sn 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     I5 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 sttttt sttdt ttt dt  sttdt dstd S )Nr   r4   r   l  I5 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sttddksttddst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stdt _td} | d dkstdt _tttksttddkst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^Z9)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	stt
t d	 } tt|  sttt | sttttd|  sttttd|  st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| stttt d|  stttdt |  stttdt |  stttdt |  std S )
Nr   r   rW   gz?r   gzr4   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       _Bgo   ?)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sttd	ddksttd	ddksttd	ddksttd	d
dkstttddksttt ddkst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}Ô%ITz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stt dddt ddd  kstt d	ddtt gksttt d
dddksttt ddddkstd S )Nr4   r   r   r   y      ࿪LXz?y      ࿪LXzT)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st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stttdd} td| dsttd| dsttd| dsttdddkst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	