B
    +[#                 @   sd   d dl Z d dlT 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S )    N)*c              C   sr   dt _dd } t| ddgddd\}}|d	k s2tx:td
D ].}d|d  }tt||| | |k s<tq<W d S )N   c             S   s   t dd|   |  S )N   )Zcos)x r   9lib/python3.7/site-packages/mpmath/tests/test_calculus.py<lambda>   s    z$test_approximation.<locals>.<lambda>r         T)errorgh㈵>
   g      @)mpdpsZchebyfitAssertionErrorrangeabspolyval)fperrir   r   r   r   test_approximation   s    r   c               C   sB   dt _tdd dtdd s&ttdd tts>td S )Nr   c             S   s   | t |  | d  S )N   )Zsin)r   r   r   r   r      s    ztest_limits.<locals>.<lambda>r         c             S   s   dd|   |  S )Nr   r   )nr   r   r   r      s    )r   r   limitaempfr   infer   r   r   r   test_limits   s     r!   c              C   sr   t g ddkstt dgddks&tt dgddks:tddddg} t | ddksXtt | dddd	ksntd S )
Nr   r      r	      T)Z
derivative)r$      )r   r   )r   r   r   r   test_polyval   s    r&   c              C   s   t ddg} | d dstt dddg\} }| dtdt  sJt|dtdt  sdtt dgg ksvtttdd	  d S )
Nr   r   r	   r   r   c               S   s
   t dgS )Nr   )	polyrootsr   r   r   r   r   #   s    z test_polyroots.<locals>.<lambda>)r)   r   r   sqrtjpytestraises
ValueError)r   qr   r   r   test_polyroots   s    r0   c           B   C   s  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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#gA}t d$ tt j t|d%d&d'| d( d) W d Q R X t|d*d&d'| d( d)}d+d, |D }|d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdlg@ksvtW d Q R X d S )mN@   l	   #!yUMDQj~U4	 r   l`<	&&
 xXD`D l	   #~O6dIW6ob9l N$UVOF>`}Dl	   ha0r3(|Wo9Elcs9lMhPc;/,3 l
   p~	#]ls<m lW)4G`Y l
   <g?I"GX)p@/ lg24Kc89z l
    1_bm-9w:bYj l	@bmDu#pO2> l
   J={|L	m~;` l`|fl?'h_K l
   eo.!03a7# l / $+-kMsf]`:l	   ;bfLHQLRl /v\ QB8%l	   e]r+a ;M~DMLl`|]B`3*0Vwk_ l	   J5]c<OJg1 l	x,a6F~E8P l    V'6@h>)l~&-ME	A"l   <-AGn,a;0$S lW?n05%Zu l   pbz^.qlcd qTT l   h9N$$).lF4 l Ns,1j	l   #vsKn?b; l`<x!ul   #!Oer   r"   TFr   )maxstepscleanupr   	extraprec2   c             S   s   g | ]}t |qS r   )str).0rr   r   r   
<listcomp>P   s    z+test_polyroots_legendre.<locals>.<listcomp>z-0.999z-0.996z-0.991z-0.983z-0.973z-0.961z-0.946z-0.93z-0.911z-0.889z-0.866z-0.841z-0.813z-0.784z-0.753z-0.72z-0.685z-0.649z-0.611z-0.572z-0.531z-0.489z-0.446z-0.402z-0.357z-0.311z-0.265z-0.217z-0.17z-0.121z-0.073z-0.0243z0.0243z0.073z0.121z0.17z0.217z0.265z0.311z0.357z0.402z0.446z0.489z0.531z0.572z0.611z0.649z0.685z0.72z0.753z0.784z0.813z0.841z0.866z0.889z0.911z0.93z0.946z0.961z0.973z0.983z0.991z0.996z0.999)r   workdpsr,   r-   NoConvergencer)   r   )r   coeffsrootsr   r   r   test_polyroots_legendre%   sh    

r>   c           B   C   s  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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#gA}t d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddgA}tdetj  t|dfdgdhde|  di}W d Q R X ttj t|djdgdh| di W d Q R X t|djdgdg| |dk\}}tt |t |	t
 |k stt|dldgdg| |d dm dk\}}tt |t |	t
 |k std S )nNd   l	   #!yUMDQj~U4	 r   l`<	&&
 xXD`D l	   #~O6dIW6ob9l N$UVOF>`}Dl	   ha0r3(|Wo9Elcs9lMhPc;/,3 l
   p~	#]ls<m lW)4G`Y l
   <g?I"GX)p@/ lg24Kc89z l
    1_bm-9w:bYj l	@bmDu#pO2> l
   J={|L	m~;` l`|fl?'h_K l
   eo.!03a7# l / $+-kMsf]`:l	   ;bfLHQLRl /v\ QB8%l	   e]r+a ;M~DMLl`|]B`3*0Vwk_ l	   J5]c<OJg1 l	x,a6F~E8P l    V'6@h>)l~&-ME	A"l   <-AGn,a;0$S lW?n05%Zu l   pbz^.qlcd qTT l   h9N$$).lF4 l Ns,1j	l   #vsKn?b; l`<x!ul   #!Oez-0.999z-0.996z-0.991z-0.983z-0.973z-0.961z-0.946z-0.93z-0.911z-0.889z-0.866z-0.841z-0.813z-0.784z-0.753z-0.72z-0.685z-0.649z-0.611z-0.572z-0.531z-0.489z-0.446z-0.402z-0.357z-0.311z-0.265z-0.217z-0.17z-0.121z-0.073z-0.0243z0.0243z0.073z0.121z0.17z0.217z0.265z 0.311z0.357z0.402z0.446z0.489z0.531z0.572z0.611z0.649z0.685z0.72z0.753z0.784z0.813z0.841z0.866z0.889z0.911z0.93z0.946z0.961z0.973z0.983z0.991z0.996z0.999z1.0r   r5   TF)r2   r3   r   r4   r"   )r2   r3   r   r4   
roots_init   <   )Zmatrixr   r:   r   r)   r,   r-   r;   maxZapplyr   r   )Z
extra_precr<   r@   Zroots_exactr=   r   Zroots1Zerr1r   r   r   test_polyroots_legendre_init]   sv    













$
rD   c        	      C   s   t d} dt_d}| g}d}x,td|d D ]}||9 }|| |  q,W t||d |d \}}xPtdddD ]@}t|d d d |t|d d d | }|t	|dspt
qpW d	t_d S )
Nr      r   r   r   g?r(   g|=r   )r   r   r   r   appendZpadeZaranger   r   expr   )	ZoneNakr   r   r/   r   r8   r   r   r   	test_pade   s    (rK   c              C   s   dt _tdd ddgd\} }| d ds0t| d d	td
 dt  sRt| d d
td
 dt  stt|d dkst|d d
dt  st|d d
dt  stt| |fddgddstd S )Nr   c             S   s   | d S )Nr   r   )r   r   r   r   r      s    ztest_fourier.<locals>.<lambda>r(   r   r   g      ?r   r   r	   g?)r   r   Zfourierr   r   r*   piZ
fourierval)csr   r   r   test_fourier   s    ""rP   c               C   s4   dt _tdd dddtdt  d s0td S )Nr   c             S   s   | S )Nr   )tr   r   r   r      s    z test_differint.<locals>.<lambda>r   g      r
   r   )r   r   Z	differintr   r*   rM   r   r   r   r   r   test_differint   s    rR   c              C   s  dt _d} dd }dd }|| }t|| dd|s:tt|| dd|sRtt|| d	d|sjtd
} || }t|| dd|stt|| dd|stt|| d	d|std} dd }dd }|| }t|| dd|stt|| dd|stt|| d	d|s&td
} || }t|| dd|sLtt|| dd|sftt|| d	d|std S )Nr   g{Gz?c             S   s   d| d d  S )Nr   r   r   )r   r   r   r   r      s    ztest_invlap.<locals>.<lambda>c             S   s   | t |   S )N)rG   )rQ   r   r   r   r      s    Ztalbot)methodZstehfestZdehoogg      ?c             S   s   t | |  S )N)log)r   r   r   r   r      s    c             S   s   t  t|  S )N)ZeulerrT   )rQ   r   r   r   r      s    )r   r   Zinvertlaplacer   r   )rQ   fpZftZfttr   r   r   test_invlap   s2    rV   )r,   Zmpmathr   r!   r&   r0   r>   rD   rK   rP   rR   rV   r   r   r   r   <module>   s   		
8>