a
    <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   sn   dt _dd } t| ddgddd\}}|d	k s2J td
D ].}d|d  }tt||| | |k s:J q:d S )N   c                 S   s   t dd|   |  S )N   )cosx r   j/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/mpmath/tests/test_calculus.py<lambda>       z$test_approximation.<locals>.<lambda>r         T)errorgh㈵>
   g      @)mpdpsZchebyfit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&J tdd tts>J d S )Nr   c                 S   s   | t |  | d  S )N   )sinr   r   r   r	   r
      r   ztest_limits.<locals>.<lambda>r         c                 S   s   dd|   |  S Nr   r   )nr   r   r	   r
      r   )r   r   limitaempfinfer   r   r   r	   test_limits   s     r%   c                  C   sn   t g ddksJ t dgddks&J t dgddks:J g d} t | ddksTJ t | dddd	ksjJ d S )
Nr   r      )r   r   r&   r      T)Z
derivative)r(      )r   r   r   r   r	   test_polyval   s    r+   c                  C   s   t ddg} | d dsJ t g d\} }| dtdt  sHJ |dtdt  sbJ t dgg kstJ ttdd	  d S )
Nr   r   r   )r   r   r   r   c                   S   s
   t dgS )Nr   )	polyrootsr   r   r   r	   r
   #   r   z test_polyroots.<locals>.<lambda>)r.   r!   sqrtjpytestraises
ValueError)r   qr   r   r	   test_polyroots   s    r5   c               	   C   s   d} g d}t d tt j& t|ddd| d d W d    n1 sP0    Y  t|d	dd| d d}d
d |D }|g dksJ W d    n1 s0    Y  d S )N@   Al	   #!yUMDQj~U4	 r   l`<	&&
 xXD`D r   l	   #~O6dIW6ob9r   l N$UVOF>`}Dr   l	   ha0r3(|Wo9Er   lcs9lMhPc;/,3 r   l
   p~	#]ls<m r   lW)4G`Y r   l
   <g?I"GX)p@/ r   lg24Kc89z r   l
    1_bm-9w:bYj r   l	@bmDu#pO2> r   l
   J={|L	m~;` r   l`|fl?'h_K r   l
   eo.!03a7# r   l / $+-kMsf]`:r   l	   ;bfLHQLRr   l /v\ QB8%r   l	   e]r+a ;M~DMLr   l`|]B`3*0Vwk_ r   l	   J5]c<OJg1 r   l	x,a6F~E8P r   l    V'6@h>)r   l~&-ME	A"r   l   <-AGn,a;0$S r   lW?n05%Zu r   l   pbz^.qr   lcd qTT r   l   h9N$$).lF4 r   l Ns,1j	r   l   #vsKn?b; r   l`<x!ur   l   #!Oer   r&   TFr   maxstepscleanupr   	extraprec2   c                 S   s   g | ]}t |qS r   )str).0rr   r   r	   
<listcomp>P   r   z+test_polyroots_legendre.<locals>.<listcomp>)@-0.999-0.996-0.991-0.983-0.973-0.961-0.946-0.93-0.911-0.889-0.866-0.841-0.813-0.784-0.753-0.72-0.685-0.649-0.611-0.572-0.531-0.489-0.446-0.402-0.357-0.311-0.265-0.217-0.17-0.121-0.073-0.02430.02430.0730.1210.170.2170.265z0.3110.3570.4020.4460.4890.5310.5720.6110.6490.6850.720.7530.7840.8130.8410.8660.8890.9110.930.9460.9610.9730.9830.9910.9960.999)r   workdpsr1   r2   NoConvergencer.   )r   coeffsrootsr   r   r	   test_polyroots_legendre%   s    "
$
r   c               	   C   s  d} g d}t g d}tdtj & t|dddd|  d}W d    n1 sT0    Y  ttj" t|d	dd| d W d    n1 s0    Y  t|d	dd| |d
\}}tt |t |	t
 |k sJ t|ddd| |d d d
\}}tt |t |	t
 |k sJ d S )Nd   r7   )ArA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   z 0.311rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   z1.0r   r<   TFr8   r&   )r9   r:   r   r;   
roots_init   <   )Zmatrixr   r   r   r.   r1   r2   r   maxapplyr   )Z
extra_precr   r   Zroots_exactr   r   Zroots1Zerr1r   r   r	   test_polyroots_legendre_init]   s&    "
$
$

"

r   c            	      C   s   t d} dt_d}| g}d}td|d D ]}||9 }|| |  q*t||d |d \}}tdddD ]@}t|d d d |t|d d d | }|t	|dsjJ qjd	t_d S )
Nr      r   r   r   g?r-   g|=r   )
r"   r   r   r   appendZpadeZaranger   r!   exp)	ZoneNakr   r   r4   r   r?   r   r   r	   	test_pade   s    (r   c                  C   s   dt _tdd ddgd\} }| d ds0J | d d	td
 dt  sRJ | d d
td
 dt  stJ |d dksJ |d d
dt  sJ |d d
dt  sJ t| |fddgddsJ d S )Nr   c                 S   s   | d S r   r   r   r   r   r	   r
      r   ztest_fourier.<locals>.<lambda>r-   r   r   g      ?r   r   r   g?)r   r   Zfourierr!   r/   piZ
fourierval)csr   r   r	   test_fourier   s    ""r   c                   C   s4   dt _tdd dddtdt  d s0J d S )Nr   c                 S   s   | S Nr   tr   r   r	   r
      r   z test_differint.<locals>.<lambda>r   g      r   r   )r   r   Z	differintr!   r/   r   r   r   r   r	   test_differint   s    r   c                  C   s  dt _d} dd }dd }|| }t|| dd|s:J t|| dd|sRJ t|| d	d|sjJ d
} || }t|| dd|sJ t|| dd|sJ t|| d	d|sJ d} dd }dd }|| }t|| dd|sJ t|| dd|sJ t|| d	d|s&J d
} || }t|| dd|sLJ t|| dd|sfJ t|| d	d|sJ d S )Nr   g{Gz?c                 S   s   d| d d  S )Nr   r   r   r*   r   r   r	   r
      r   ztest_invlap.<locals>.<lambda>c                 S   s   | t |   S r   )r   r   r   r   r	   r
      r   Ztalbot)methodZstehfestZdehoogg      ?c                 S   s   t | |  S r   )logr*   r   r   r	   r
      r   c                 S   s   t  t|  S r   )Zeulerr   r   r   r   r	   r
      r   )r   r   Zinvertlaplacer!   )r   fpftZfttr   r   r	   test_invlap   s2    r   )r1   Zmpmathr   r%   r+   r5   r   r   r   r   r   r   r   r   r   r	   <module>   s   		
8>