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   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 } x8t	t
tttgD ]&}t| d|d}t| |tk stqW x<t
ttttttgD ]&}t| d|d}t| |tk stqW dd } ttj| dddtstttj| dddts6ttt0 td tdd tddd W d Q R X W d Q R X tt tdd d W d Q R X tt tdd d W d Q R X d S )N   c             S   s   d|  d S )N       )xr   r   <lib/python3.7/site-packages/mpmath/tests/test_rootfinding.py<lambda>	   s    ztest_findroot.<locals>.<lambda>   g      ?r   gQ	@c             S   s   | |  d S )N   r   )r   r   r   r   r      s    y       @       @y              ?c             S   s   t | S )N)Zcos)r   r   r   r   r      s    g       @)solver)g      ?g       @c             S   s   | d d S )N   r   )r   r   r   r   r      s    r   g|=)Ztoly      ?        r   c             S   s   | d d|   d S )Nr   iC l   F[ r   )r   r   r   r   r   #   s    z	5.278e+13z
-5.278e+13)realimagc             S   s   dS )Nr   )r   r   r   r   r   (   s    r   c             S   s   d|  d d S )Nr      r   )pr   r   r   r   ,   s    g?)mpZdpsfindrootZmpfZaeAssertionErrorZsinZpiZmpcr   r   r   r   r
   absepsr   r   r   r   r	   
isinstancefpfloatcomplexpytestZraises
ValueErrorZworkprec)fr   r   r   r   r   test_findroot   s0     

"r*   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   0   s    z test_bisection.<locals>.<lambda>)r   r   Zbisect)r   r   )r   r    r   r   r   r   test_bisection.   s    r+   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polyval)r   r   r   r   r   3   s    ztest_mnewton.<locals>.<lambda>gZmnewton)r   )r   r!   r"   r    )r)   r   r   r   r   test_mnewton2   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   8   s    ztest_anewton.<locals>.<lambda>g      ?)r   )r   r
   r!   r"   r    )r)   r   r   r   r   test_anewton7   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   =   s    ztest_muller.<locals>.<lambda>g      ?)r   )r   r   r!   r"   r    )r)   r   r   r   r   test_muller<   s    r/   c                  sH   x,t ddD ] t fddd kstqW tdd ddksDtd S )Nr   r   c                s   | d   S )Nr   r   )r   )ir   r   r   C   s    z#test_multiplicity.<locals>.<lambda>c             S   s   | d S )Nr   r   )r   r   r   r   r   D   s    r   )rangeZmultiplicityr    r   r   )r0   r   test_multiplicityA   s    r2   c                 s   dd } t t| dtddgddgg dd	k s4tx"tt| ddd
d dD ]\}}qLW t| | ddk snt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   r)   G   s    z test_multidimensional.<locals>.f)r      r3   r   r4   r   gHz>c             S   s
   t | tS )N)norminf)r   r   r   r   r   K   s    z'test_multidimensional.<locals>.<lambda>)verboser6   r   g+=c             S   s   |  d|  S )Nr   r   )r   yr   r   r   r   P   s    c             S   s(   | d | |d d   d|  | d  S )Nr   r   r   )r   r9   r   r   r   r   Q   s    c             S   s   t | d |d  S )Nr   )Zsqrt)r   r9   r   r   r   r   R   s    c                s&    | |}| || | || fS )Nr   )r   r9   Zf1x)f1f2f3r   r   r)   S   s    
)
   r=   c             S   s   g | ]}t t|qS r   )intround).0r0   r   r   r   
<listcomp>W   s    z)test_multidimensional.<locals>.<listcomp>r   r   )ZmnormZjacobianZmatrixr    r   r   r6   r   )r)   r   errorr   )r:   r;   r<   r   test_multidimensionalF   s    ,
rC   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   Z   s    ztest_trivial.<locals>.<lambda>r   c             S   s   | S )Nr   )r   r   r   r   r   [   s    r   )r   r    r   r   r   r   test_trivialY   s    rD   )r'   ZmpmathZmpmath.calculus.optimizationr   r   r   r   r   r   r	   r
   r   r   r   r*   r+   r,   r.   r/   r2   rC   rD   r   r   r   r   <module>   s   4(