a
    <bx                     @   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
   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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J tttks.J tttks>J t	tt
ksNJ tttks^J tttksnJ tttks~J tttksJ tttksJ tttksJ | dk rtttksJ tttksJ qdt _tdksJ tdksJ tdksJ tdk sJ d S )N)	      
         %   P   d      2   r      r      )mpdpspimpftpi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(    r1   c                  C   s   t dD ]} tt| |  | ksJ qtd dD ]T}|t_t dD ]@} td|d d  d|d d  }tt|| |ksFJ qFq4dt_t dD ]`} d	D ]V}tt|| d|  ft|| fksJ tt|| d
|  ft||  fksJ qqd S )N N     r   ,    '  r   r   r   r   r   )r3         i )rangesqrtr   randomseedr   r   randint)ir0   Ar   r
   r
   r   test_exact_sqrtsC   s    
$(rB   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`J t	|| sJ qqt
d d}tttfD ]8}tdD ]*} t|}t||}t||||ksJ qqdt_tdd }tdd }dt_t|d	d
dksJ 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sTJ t|dd
dksjJ ttdtdksJ d S )N)r   r         r   r8   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_sqrtr0   Z
round_downZround_upZmpf_ltZmpf_gtr=   r>   Zround_nearestZround_ceilingr;   Zmpf_randZmpf_mulr   r<   )r@   r   r   r   r0   rndr
   r
   r   test_sqrt_roundingR   s4    

rT   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sTJ tdtdslJ tdtdsJ tdtdsJ td	td	sJ ttjtj	d  ttjtj	d  sJ ttjtj	d  ttjtj	d  sJ d S )
Nr   )r   gHz>皙?      ?r3   r   r   r   rC   gZd;O?g\(S@rV   r                 ?r:   y             )
r   r   r<   r   floatr   cmathmathr   r   xr
   r
   r   test_float_sqrtp   s    0r_   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sTJ t ddtdksjJ d S )Nr   gQ?gQտr   r   rC   )hypotr   r
   r
   r
   r   
test_hypot~   s
    ra   c                  C   s   t dddD ] } tt| |  |  | ksJ qtd dD ]J}|t_td|d d  d|d d  }tt|| | |ks<J q<dt_d S )	Nr   r2      r3   r4   r   r   r   )r;   cbrtr   r=   r>   r   r   r?   )r@   r0   rA   r
   r
   r   test_exact_cbrt   s    
$rd   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sJ d
t_t td dsJ t dt	 dsJ d S )Nr   r3   r7   z8.8068182256629215873e4342iz1.1354838653147360985e-4343)r3   l   V= i5   C   )r3   l   G{QE i=   re   r             @       @)
expr   r   ZbcZbitcountZmanr   r0   r$   r[   r   r
   r
   r   test_exp   s    rl   c                  C   s@   dt _td} td}dt _| 
 ds,J |
 ds<J d S )Ni   r   r3   r   g8,6V?giW
@)r   r   rj   r   )r   r   r
   r
   r   test_issue_73   s    rm   c                  C   s*  dt _tddksJ dddddd	d
 dfD ].} t| t| sHJ t| | dks,J q,tddd	ksnJ td	d d	dksJ tdt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sJ tdjd ds0J tdjd dsJJ tdjd dsdJ tdjd ds~J 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# sJ ttd!d	d$ tdd% s6J ttddtt	 dksVJ t
tttdjspJ t
tttdjsJ t
ttdtjsJ t
ttdtjsJ t
tttdjsJ t
tttdjsJ t
ttdtjsJ t
ttdtjs&J d S )&Nr   r3   r   rV         ?       @g      @r   r   r   Jz5rh   r   rK   ri   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Drb   gZbti)r   r   logr   r\   r[   r   ldexpmpcinfisnannanr   r]   r
   r
   r   test_log   s@    "& rx   c                  C   s:  t tdt tdd D ]} | d }tt|t|sBJ tt|t|s^J tt|t|szJ tt|t|sJ t	t|t	|sJ t
t|t
|sJ qtdtdsJ tdtdsJ tdtdsJ tdtds6J d S )Nr   rY   r   gffffff@y      ?      ?y      )listr;   cosr   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J t dt ds*J t dt ds@J t dt dsVJ t dt dslJ tdt dksJ tdt dsJ tdt dsJ tdt dsJ tdt dsJ d S )Nr   r3   Z      r   i  ih  )rz   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 )Nr3   r   )r=   r>   r;   uniformcomplexappend)	Nr   r@   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 J qdt _td tdD ](\}}t|t| 	|| ds^J q^t
t d  	d	sJ d
t _t
t d  	d	sJ dt _d S )N)r      r   rW   rV   r   r   r3   r   -q=r   r   )r   r   rt   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|| |s2J t | t|  }tt|| | s\J t |t|  }tt|| |sJ t | t|  }tt|| | sJ qd S )N)rt   jr   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   .0r@   r
   r
   r   
<listcomp>      z.test_complex_sqrt_accuracy.<locals>.<listcomp>c                 S   s$   g | ]}|d  |d d|  fqS )rU   皙?r   r
   r   r
   r
   r   r     r   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J tddks.J tdtd sDJ tddksTJ tdt d slJ tdd	 td sJ d
D ] } | t _dtd tsJ qdt _td }tttd|sJ tttd|sJ tttd|sJ ttdt|sJ ttdt|s8J ttdt| sTJ ttt d| srJ ttt d| sJ ttt d| sJ ttdt | sJ ttdt | sJ ttdt |sJ d S )Nr   gffffffrp   gd~QJr   Jzgd~Qr   r6   )r9   F   r   r5   r6   r   r3   r   r   )r   r   atanr   r\   r   rt   ru   )r   Zpi2r
   r
   r   	test_atan  s0    r   c                   C   sp  dt _tddtd sJ tdddt d s:J tdddt d sVJ tddt d spJ tddt d sJ tddtd sJ tdddksJ ttdtd sJ tt dt d sJ ttttsJ ttt tsJ tttt s&J ttdts:J tttdsNJ ttdtsbJ tttdsvJ 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 sJ ttd
td s0J tt d	t d sNJ tt d
t d slJ d S )Nr   r3   r   r   r   rX   r   r   r   r   )r   r   atan2r   r   ru   rv   rw   r
   r
   r
   r   
test_atan2,  s6    r   c                  C   sr  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sRJ tt tdtshJ tttdts~J tttdtsJ tttdtsJ tttdtsJ t	d t
dD ]:} tdd}t t|t |sJ tt|t|s J tdd	}tt|t|jsLJ ttt|tsdJ 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 qtj}dt_tt dts0J dt_t dtd sNJ t dt d shJ |t_d S )Nr   r3   rV   ro   rU   g?r   r   r   +?r   r5   r6   r   )asinr   asinhacosh
isinstancert   acosatanhr=   r>   r;   r   r   r\   r[   r   r   r   r   )r@   r^   r   r
   r
   r   test_areal_inversesI  s@    
   r   c                   C   s  dt _tdd dsJ tdd ds2J tdd	d
  dsLJ tdd dsbJ tdd dsxJ tdd	d
  dsJ tddsJ tddsJ tdd dsJ tdd dsJ tdd dsJ tdd dsJ d S )Nr   gh㈵>i g?绽|=    d(	 r3   rp   r   r   gh㈵gg|۽r   r   rq   gC6W_G@l   Fx:^V gC6W_G)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|slJ tt|t|sJ tt|t|sJ t	t|t	|sJ t
t|t
|sJ tt|t|sJ tt|t|sJ tt|t|s:J q:qd S )Nr   r   r   g333333@y        {Gz?)ry   r;   r   rj   rt   r   r[   rr   rz   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| | s2J t| t| sJJ t	| t	| sbJ t
| t
| szJ t| jt| ddsJ t| jt| ddsJ td}qtdddD ]l}tdddD ]Z}d	t d|  d
| d|   }tt|}||sJ tt|}||sJ qqtd}d}tdddD ]v}tdddD ]b}dd|  td
 | d|   }tt|}|||sJ tt|}|||s^J q^qNd S )Nr   r   r   )Zrel_epsr3   r   r   g?皙?gV瞯<rL   g)r   r   Zivr   r~   r   r   r   r[   r   r   r   r   r   r;   r   rz   r{   r}   )r   r   Zoner@   kr   r   errr
   r
   r   test_complex_inverse_functions  s4    
  r   c                   C   s   t ddsJ tdds$J tdds6J tddsHJ tddsZJ tddslJ tdds~J tdd	sJ t	dd
sJ t
ddsJ tddsJ tddsJ t	ddsJ tddsJ d S )Nr   gEWg)gٰ
D<X@g^f]gm?g)	荹?gL<[?g肀?gO?g&?rV   g5qB?gHy?g9B.?r   g-DT!?y        -DT!?)secr   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J ttdddks2J ttdddksHJ ttdd	tdksbJ d S )
Nr         @r   r   g      ?r   r   ru   r   )r   r   rs   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s6J tdd	ksFJ td
dksVJ d S )Nr   r   )g        r   rL   )g      ?r   r3   )rV   r3   r   )r   r:   r6   )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sRJ tddtksdJ tdddkrt	tddt
sJ d S )	Nr   g      @r   gffffff@r   rV   r9   g      @)lnrr   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 s8J t t t d sRJ t ddksbJ ttdtstJ tttdsJ ttdtsJ tttdsJ ttttsJ t tdksJ t t tsJ tt tsJ tddksJ tddksJ tddks&J ttdks8J tt dksLJ ttts^J tttkspJ tdt t ksJ tdt dt t	d sJ d S )Nr   r   rX   r   r3   r   )
argr   r   r   rv   r   rw   ru   signr<   r
   r
   r
   r   test_arg_sign  s,    r   c                   C   s   dt _td dt _d S )Nr6   i  r   )r   r   rr   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sLJ 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sJ 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sJ t dd d!td"td#td$td
tdtdtdtdtd%g	ks6J t d&dd'tdgksRJ t dg ksdJ t d(d)g ksxJ 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.0rC   z-5.0z-4.0z-3.0z-2.0z-1.0r   r3   rU   z0.10000000000000001z0.20000000000000001z0.30000000000000004z0.40000000000000002z0.5z0.60000000000000009z0.70000000000000007z0.80000000000000004z0.90000000000000002   r   rX   z17.0z14.0z11.0z-7.0r   gr6   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sJ t dddtdgksJ d S )Nr   rL   r   r   z3.166666666666667z4.3333333333333339z5.5z6.666666666666667z7.8333333333333339r   r   )Zendpointr   r   r   r   r   r   r3   )Z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  sVJ td	d }tddd
dg D ]N} t	| d } t| }t  jd7  _t
| |}t  jd8  _||tstJ qtdt _tdddD ]8}d| td  }|| | }t|}t||tsJ qdt _d S )Nr   r   r   rU   r   rV   r   r   r3   g@gj@y        ?r   i-  gMbP?r   )r   r   r   rc   r   r   r   r<   r   rt   powr;   r   )r   Z	one_thirdr1Zr2rP   wr   rr
   r
   r   test_float_cbrt  s&    "
r   c            	      C   s  dt _td tdd} | |  |  }tt|d}|| ksBJ tddD ]"}||  }tt||| ksLJ qLdt _tdd	d
D ]~}t d t dd
  fD ]\} t| |}t| td| }|	|sJ t| | }t| td | }|	|sJ qqdD ]h}|t _
dD ]V}d}tdD ]B}|t _t } d| t _| | }|t _t||}|| ks$J q$qqdt _tddD ]6}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  _|	|sFJ t||tsXJ t| | }t  jd7  _t| td | }t  jd8  _|	|sJ t||tsJ qdt _tdddksJ tdddksJ tdddksJ ttdtksJ ttdtks$J ttdtks8J ttddksLJ ttddks`J ttddkstJ 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sJ tddtddksJ tddddks2J tddddksHJ tddddks^J tddddkstJ tddddksJ tddddksJ d S )Nr   r3   r   r7   r   r   r   (   i  r   )ZnearestZupZdown)r   rX   r   rC   r   r      r   r   g      ?r:   rX      y               @y              ir   )r   r   r=   r>   r?   nthrootr   r;   r   r   rO   r0   Zrandr   r   r   ru   rv   rw   root)	r   pr   rP   r   rS   r0   r@   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J qd	t _td
dtdd dt  td szJ tdddt dtd  sJ dt _tdddt td td sJ dt _d S )N)r   r   z-1e-20r   r   r   r3   r         r   z-1e-3g      z-1e-6r   z-1e100000000Z
1e25000000r   )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s0J ttd|tt|t|ksTJ tt| dt| ksnJ tt| dt| ksJ ttd|t|ksJ ttd|tdt|ksJ t	t| dt	| ksJ t
t| dt
| ksJ t	td|tt| sJ t
td|tdtt| s@J tt| d\}}|t	| ksdJ |t
| ksvJ 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s0J d S )Nr   g333333?g?r   )r   r   r   rj   rt   rz   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sFJ t| dddksZJ t|dddksnJ t| dddksJ t|dddk sJ t| 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ttfD ]}|| | 
 ksJ || dd| ks0J || dd| k sFJ |||
 ksZJ ||dd|kspJ ||dd|k sJ qt	t
ttfD ]}|| | 
 ksJ |||
 ksJ || dd| ksJ ||dd|ksJ || dd| k sJ ||dd|k sJ qt|| 
 ks2J t||
 ksFJ t|dd| ks\J t|dd| k srJ t|dd|ksJ t|dd|k sJ t| dksJ t|dksJ t| dddksJ t|dddksJ t| dddksJ t|dddksJ d S )	Nr   r   r   r3   r   r   rN   f)r   r   r   rj   rz   r{   r   r   r   r   r|   r~   r   r   r}   )r   r   r   rM   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s0J 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s0J tddks@J tddksPJ tddks`J tddkspJ tdd	ksJ td dksJ d S )
N3r         @      @rC   y      ?      @r3   r   r   y      @      )fabsreZimZconjr   	conjugater
   r
   r
   r   test_complex_parts  s    r   c                  C   sH  t ddksJ t ddks J t ddks0J t ddks@J t ddksPJ t ddks`J t ddkspJ tddksJ tddksJ tddksJ tddksJ tddksJ tddksJ tddksJ td	tdd sJ td
} | jtd
t jsJ | jdks.J t d
}|jtd
t jsRJ |jdksbJ 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 sVJ t ||
 tsnJ t ||
 t sJ t||
 t sJ t|	|
 tsJ dt|dd  k rdk sn J dt|dd  k r dk sn J dt |dd  k r&dk s,n J dt |dd  k rLdk sRn J dt|dd  k rrdk sxn J dt|dd  k rdk sn J dt |dd  k rdk sn J dt |	dd  k rdk sn J t d|
 tsJ t d|
 t sJ tddks.J tddddk sDJ d S )Nr   rV   r3   rn   r   r   r   r   g @ vH7B       @      @#   r7   z1e-15g    @@i'  g    @r   l     I5 r   rM   rN   g+gV瞯<gV瞯Ҽ)r   r   r   r<   r   rz   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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snJ tdttt sJ tttt sJ tdt ttt dt  sJ tdt dsJ d S )Nr   r3   r   l  I5 z%2.22579818340535731e+1364376353841841)Zexpjr   rj   r   Zexpjpir   r
   r
   r
   r   	test_expj  s    "&r   c                   C   s   t dtd  krdks"n J t ttt  kr>dksDn J t t tt   krddksjn J t dds|J t ddsJ tddksJ tddsJ d S )	Nr   r3   r   gF?r   y?\arn   g)˿)ZsincZsincpiru   r   r
   r
   r
   r   	test_sinc  s    ""&r   c                  C   s   dt _dd tddD g dks&J tdds8J td	d
sJJ tdds\J ttdd dkstJ dt _td} | d dksJ dt _tttksJ tddksJ d S )Nr   c                 S   s   g | ]}t |qS r
   )	fibonaccir   rP   r
   r
   r   r   #  r   z"test_fibonacci.<locals>.<listcomp>r   r   )rC   rX   r   r   r3   r   r3   r3   r   r   rC   r8   rG   r   "   r   g 3?r   yɽ傀C,r6   gaڃe@kr   zv6.24499112864607e+2089876402499787337692720892375554168224592399182109535392875613974104853496745963277658556235103534i4  r7   r   l   E!	 y      @        r   )r   r   r;   Zfibr   strr   ru   rk   r
   r
   r   test_fibonacci!  s    r   c                   C   s,   dt _ttdddtdd dk s(J d S )Nr   r3   r   )r   r   gG^Z9)r   r   absrj   r   r
   r
   r
   r   test_call_with_dps0  s    r   c                   C   sb   dt _tddksJ ttdks&J tt dks8J tttsHJ ttdddks^J d S )Nr   r   r3   r   ru   0)r   r   r   ru   rv   rw   rt   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sJJ tdt ks\J tttslJ ttdts~J ttdtsJ t	t
 d	 } tt|  sJ tt | sJ tttd|  sJ tttd|  sJ tttd| sJ ttdt| s,J ttdt| sFJ ttdt| s`J ttt d| s|J ttt d| sJ ttt d|  sJ ttdt |  sJ ttdt |  sJ ttdt |  sJ d S )
Nr   r   rV   gz?r   gzr3   r   r   )r   r   r   r   ru   rv   rw   r   r   r   r   rt   )Zjpi2r
   r
   r   
test_atanh<  s0    r  c                   C   sl   dt _tddksJ tdtdd s0J tttks@J tddsRJ tdd dshJ d S )	Nr   r   r   r3   rp   r       _Bgo   ?)r   r   expm1r   rj   ru   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sNJ tdd dsdJ d S )	Nr   r   r   r   rp   r   r  g ?)r   r   log1pr   rr   ru   r
   r
   r
   r   
test_log1p_  s    r  c                   C   sH  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sNJ tdddks`J tdd	dksrJ 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dksJ tt ddksJ tddd tsJ tdddks J ttd	dddd
d d
sDJ d S )Nr   r   r   r   r   r   r:   r   r3   rC   r   g0.++g}Ô%ITz1e-100000000000T)exact)r   r   Zpowm1r   r   r$   Zfaddr
   r
   r
   r   
test_powm1g  s"    r  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sNJ |ds\J t ddddgksrJ t ddddgksJ t dddt ddd  ksJ t d	ddtt gksJ tt d
dddksJ tt ddddksJ d S )Nr3   r   r   r   y      ࿪LXz?y      ࿪LXzT)Z	primitiver   r   r   r8   )Z	unitrootsr   r   len)r   r   r   r
   r
   r   test_unitrootsz  s     r
  c                  C   s  dt _dd tdD g dks$J dd tdD g dksBJ 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sJ 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sJ tdtd
ksJ tdtd
ksJ ttdd} td| ds2J td| dsHJ td| d
s^J tddd
ksrJ 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   s   g | ]}t |d qS )r3   
cyclotomicr   r
   r
   r   r     r   z#test_cyclotomic.<locals>.<listcomp>   )r3   r   r   r   r   rC   r3   r   r   r   r3   rE   r3   rG   r3   r3   r   r   r3      r3   r3   r3      r3   rC   r3   r   r3   r   r3   c                 S   s   g | ]}t |d qS )r   r  r   r
   r
   r   r     r   )r3   r:   r   r3   r   r3   r   r3   r   r3   rC   r3   r3   r3   r   r3   r   r3   r   r3   r3   r3   rE   r3   r3   r3   rG   r3   r3   r3   r3   c                 S   s   g | ]}t |tqS r
   r  r   r   r
   r
   r   r     r   r   r3   r   r   r   r   rC   c                 S   s   g | ]}t |t qS r
   r  r   r
   r
   r   r     r   iX  i@  i  r/   r8   r   g?3OP@i  r   rn   g      @g     #@r   g    cy@)r   r   r;   r   r  r<   r   )rQ   r
   r
   r   test_cyclotomic  s     RVr  )DZmpmath.libmpZmpmathr=   timer\   r[   r   r   r   r    r"   r#   r%   r&   r(   r)   r*   Ztaperyr,   r-   r.   r1   rB   rT   r_   ra   rd   rl   rm   rx   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	