U
    9%e<                     @   s   d dl Z d dlT d dlmZmZmZmZmZmZm	Z	m
Z
mZmZm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)*)SecantMuller	BisectionIllinoisPegasusAndersonRidderANewtonNewtonMNewtonMDNewtonc               
   C   s  dt _tdd tdds"ttttdts:ttttdtdftsZttdd td	d
svtdd } t	t
tttfD ]&}t| d|d}t| |tk stqt
ttttttfD ]&}t| d|d}t| |tk stqdd } tt| dddtstttj| dddtjs.tttj| dddtsJtttj| dddtsfttt0 td tdd tddd W 5 Q R X W 5 Q R X tt tdd d W 5 Q R X tt tdd d W 5 Q R X d S )N   c                 S   s   d|  d S )N       xr   r   \/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/mpmath/tests/test_rootfinding.py<lambda>	       ztest_findroot.<locals>.<lambda>   g      ?r   gQ	@c                 S   s   | |  d S N   r   r   r   r   r   r      r   y       @       @y              ?c                 S   s   t | S N)cosr   r   r   r   r      r          @solver)      ?r   c                 S   s   | d d S N   r   r   r   r   r   r      r   r   g|=)Ztolr   y      ?        r!   c                 S   s   | d d|   d S )Nr!   iC l   F[ r   r   r   r   r   r   "   r   z	5.278e+13z
-5.278e+13)realimagc                 S   s   dS )Nr   r   r   r   r   r   '   r   r   c                 S   s   d|  d d S )Nr      r   )pr   r   r   r   +   r   g?)mpZdpsfindrootZmpfZaeAssertionErrorsinpiZmpcr   r   r   r   r
   absepsr   r   r   r   r	   
isinstanceZivfpfloatcomplexpytestZraises
ValueErrorZworkprec)fr   r   r   r   r   test_findroot   s8     

r5   c                   C   s   t dd ddddkstd S )Nc                 S   s   | d d S )Nr!   r   r   r   r   r   r   r   /   r   z test_bisection.<locals>.<lambda>)r   r!   bisectr   r   r(   r)   r   r   r   r   test_bisection-   s    r8   c                  C   s.   dd } t | ddd}t| |tk s*td S )Nc                 S   s   t ddddg| S )Nr   r   )Zpolyvalr   r   r   r   r   2   r   ztest_mnewton.<locals>.<lambda>gZmnewtonr   )r(   r,   r-   r)   r4   r   r   r   r   test_mnewton1   s    r:   c                  C   s.   dd } t | dtd}t| |tk s*td S )Nc                 S   s   | d d S )Nr!   d   r   r   r   r   r   r   7   r   ztest_anewton.<locals>.<lambda>r   r   )r(   r
   r,   r-   r)   r9   r   r   r   test_anewton6   s    r<   c                  C   s.   dd } t | dtd}t| |tk s*td S )Nc                 S   s   d|  d d S )Nr!   r   r   r   r   r   r   r   <   r   ztest_muller.<locals>.<lambda>r   r   )r(   r   r,   r-   r)   r9   r   r   r   test_muller;   s    r=   c                      sD   t ddD ] t fddd ks
tq
tdd ddks@td S )Nr   r   c                    s   | d   S r   r   r   ir   r   r   B   r   z#test_multiplicity.<locals>.<lambda>c                 S   s   | d S r    r   r   r   r   r   r   C   r   r   )rangeZmultiplicityr)   r   r   r>   r   test_multiplicity@   s    rA   c                     s   dd } t t| dtddgddgg dd	k s4ttt| ddd
d dD ]\}}qJt| | ddk sjtdd  dd dd  fdd} t| d}dd |D ddgkstd S )Nc                  W   sX   d| d d  d| d d   d | d d d| d   | d d  d| d   d gS )Nr   r   r!   r      r   r   r   r   r   r4   F   s    z test_multidimensional.<locals>.f)r      rB   r   rC   r   gHz>c                 S   s
   t | tS r   )norminfr   r   r   r   r   J   r   z'test_multidimensional.<locals>.<lambda>)verboserE   r!   g+=c                 S   s   |  d|  S r    r   r   yr   r   r   r   O   r   c                 S   s(   | d | |d d   d|  | d  S )Nr!   r   r   rH   r   r   r   r   P   r   c                 S   s   t | d |d  S r    )sqrtrH   r   r   r   r   Q   r   c                    s&    | |}| || | || fS r   r   )r   rI   Zf1xf1f2Zf3r   r   r4   R   s    
)
   rN   c                 S   s   g | ]}t t|qS r   )intround).0r?   r   r   r   
<listcomp>V   s     z)test_multidimensional.<locals>.<listcomp>r   r   )ZmnormZjacobianmatrixr)   r   r'   rE   r(   )r4   r   errorr   rK   r   test_multidimensionalE   s    ,

rU   c                   C   s0   t dd ddkstt dd ddks,td S )Nc                 S   s   dS )Nr   r   r   r   r   r   r   Y   r   ztest_trivial.<locals>.<lambda>r   c                 S   s   | S r   r   r   r   r   r   r   Z   r   r   r7   r   r   r   r   test_trivialX   s    rV   )r2   ZmpmathZmpmath.calculus.optimizationr   r   r   r   r   r   r	   r
   r   r   r   r5   r8   r:   r<   r=   rA   rU   rV   r   r   r   r   <module>   s   4'