a
    <b<                     @   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   sJ  dt _tdd tdds"J tttdts:J tttdtdftsZJ tdd td	d
svJ dd } tt	t
ttfD ]&}t| d|d}t| |tk sJ qt	ttttttfD ]&}t| d|d}t| |tk sJ qdd } tt| dddtsJ ttj| dddtjs.J ttj| dddtsJJ ttj| dddtsfJ ttP td& tdd tddd W d    n1 s0    Y  W d    n1 s0    Y  tt tdd d W d    n1 s0    Y  tt tdd d W d    n1 s<0    Y  d S )N   c                 S   s   d|  d S )N       xr   r   m/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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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     

D.r4   c                   C   s   t dd ddddksJ 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   test_bisection-   s    r7   c                  C   s.   dd } t | ddd}t| |tk s*J d S )Nc                 S   s   t g d| S )N)r   r   r   r   )Zpolyvalr   r   r   r   r   2   r   ztest_mnewton.<locals>.<lambda>gZmnewtonr   )r(   r+   r,   r3   r   r   r   r   test_mnewton1   s    r9   c                  C   s.   dd } t | dtd}t| |tk s*J 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,   r8   r   r   r   test_anewton6   s    r;   c                  C   s.   dd } t | dtd}t| |tk s*J 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,   r8   r   r   r   test_muller;   s    r<   c                      sD   t ddD ] t fddd ks
J q
tdd ddks@J 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   test_multiplicity@   s    r@   c                     s   dd } t t| dtddgddgg dd	k s4J tt| ddd
d dD ]\}}qJt| | ddk sjJ dd  dd dd  fdd} t| d}dd |D ddgksJ 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   r3   F   s    z test_multidimensional.<locals>.f)r      rA   r   rB   r   gHz>c                 S   s
   t | tS r   )norminfr   r   r   r   r   J   r   z'test_multidimensional.<locals>.<lambda>)verboserD   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   rG   r   r   r   r   P   r   c                 S   s   t | d |d  S r    )sqrtrG   r   r   r   r   Q   r   c                    s&    | |}| || | || fS r   r   )r   rH   Zf1xf1f2Zf3r   r   r3   R   s    
)
   rM   c                 S   s   g | ]}t t|qS r   )intround).0r>   r   r   r   
<listcomp>V   r   z)test_multidimensional.<locals>.<listcomp>r   r   )ZmnormZjacobianZmatrixr   r'   rD   r(   )r3   r   errorr   rJ   r   test_multidimensionalE   s    ,

rS   c                   C   s0   t dd ddksJ t dd ddks,J 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   r6   r   r   r   r   test_trivialX   s    rT   )r1   ZmpmathZmpmath.calculus.optimizationr   r   r   r   r   r   r	   r
   r   r   r   r4   r7   r9   r;   r<   r@   rS   rT   r   r   r   r   <module>   s   4'