U
    9%e#                     @   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 s2ttd
D ].}d|d  }tt||| | |k s:tq:d S )N   c                 S   s   t dd|   |  S )N   )cosx r   Y/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/mpmath/tests/test_calculus.py<lambda>       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   )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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
   #   r   z test_polyroots.<locals>.<lambda>)r/   r"   r   sqrtjpytestraises
ValueError)r   qr   r   r	   test_polyroots   s    r6   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 5 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 5 Q R X d S )mN@   	   #!yUMDQj~U4	 r   `<	&&
 xXD`D 	   #~O6dIW6ob9 N$UVOF>`}D	   ha0r3(|Wo9Ecs9lMhPc;/,3 
   p~	#]ls<m W)4G`Y 
   <g?I"GX)p@/ g24Kc89z 
    1_bm-9w:bYj 	@bmDu#pO2> 
   J={|L	m~;` `|fl?'h_K 
   eo.!03a7#  / $+-kMsf]`:	   ;bfLHQLR /v\ QB8%	   e]r+a ;M~DML`|]B`3*0Vwk_ 	   J5]c<OJg1 	x,a6F~E8P     V'6@h>)~&-ME	A"   <-AGn,a;0$S W?n05%Zu    pbz^.qcd qTT    h9N$$).lF4  Ns,1j	   #vsKn?b; `<x!u   #!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>-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   workdpsr2   r3   NoConvergencer/   r   )r    coeffsrootsr   r   r	   test_polyroots_legendre%   s                                  "

                                                 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 5 Q R X ttj t|djdgdh| di W 5 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   r8   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   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   r   r   r   r   r   r   r   z 0.311r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z1.0r   r]   TFrY   r'   )rZ   r[   r   r\   
roots_init   <   )matrixr   r   r   r/   r2   r3   r   maxapplyr   r   )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sjt
qjd	t_d S )
Nr      r   r   r   g?r.   g|=r   )r#   r   r   r   appendZpadeZaranger   r"   expr   )	oneNakr   r   r5   r   r`   r   r   r	   	test_pade   s    (r   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 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   r0   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 s0t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"   r0   r   r   r   r   r   r	   test_differint   s    r   c                  C   s  dt _d} dd }dd }|| }t|| dd|s:tt|| dd|sRtt|| d	d|sjtt|| d
d|std} || }t|| dd|stt|| dd|stt|| d	d|stt|| d
d|std} dd }dd }|| }t|| dd|s$tt|| dd|s>tt|| d	d|sXtt|| d
d|srtd} || }t|| dd|stt|| dd|stt|| d	d|stt|| d
d|st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dehoogZcoheng      ?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   )r   fpftZfttr   r   r	   test_invlap   s:    r   )r2   Zmpmathr   r&   r,   r6   r   r   r   r   r   r   r   r   r   r	   <module>   s   		
8>