o
    "`<                     @   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J tttdtsJ tttdtdfts-J tdd td	d
s;J dd } tt	t
ttfD ]}t| d|d}t| |tk sYJ qFt	ttttttfD ]}t| d|d}t| |tk svJ qcdd } tt| dddtsJ ttj| dddtjsJ ttj| dddtsJ ttj| dddtsJ tt' td tdd tddd W d    n1 sw   Y  W d    n1 sw   Y  tt tdd d W d    n1 sw   Y  tt tdd d W d    d S 1 sw   Y  d S )N   c                 S   s   d|  d S )N       xr   r   ?/usr/lib/python3/dist-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)Zcosr   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   "       z	5.278e+13z
-5.278e+13)realimagc                 S      dS )Nr   r   r   r   r   r   '       r   c                 S   s   d|  d d S )Nr      r   )pr   r   r   r   +       g?)mpZdpsfindrootZmpfZaeZsinZ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   sB    

$r6   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!   Zbisectr   r   r,   r   r   r   r   test_bisection-   s   r8   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       ztest_mnewton.<locals>.<lambda>gZmnewtonr   )r,   r-   r.   r5   r   r   r   r   test_mnewton1      r;   c                  C   .   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.   r:   r   r   r   test_anewton6   r<   r?   c                  C   r=   )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:   r   r   r   test_muller;   r<   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   rA   r   test_multiplicity@   s   rD   c                     s   dd } t t| dtddgddgg dd	k sJ tt| ddd
d dD ]\}}q%t| | ddk s5J dd  dd dd  fdd} t| d}dd |D ddgks[J 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   r5   F   s   Xz test_multidimensional.<locals>.f)r      rE   r   rF   r   gHz>c                 S   s
   t | tS r   )norminfr   r   r   r   r   J   s   
 z'test_multidimensional.<locals>.<lambda>)verboserH   r!   g+=c                 S   s   |  d|  S r    r   r   yr   r   r   r   O   r9   c                 S   s(   | d | |d d   d|  | d  S )Nr!   r   r   rK   r   r   r   r   P   s   ( c                 S   s   t | d |d  S r    )ZsqrtrK   r   r   r   r   Q   r"   c                    s&    | |}| || | || fS r   r   )r   rL   Zf1xf1f2Zf3r   r   r5   R   s   
)
   rP   c                 S   s   g | ]}t t|qS r   )intround).0rB   r   r   r   
<listcomp>V   s    z)test_multidimensional.<locals>.<listcomp>r   r   )ZmnormZjacobianZmatrixr   r+   rH   r,   )r5   r   errorr   rM   r   test_multidimensionalE   s   ,

rV   c                   C   s0   t dd ddksJ t dd ddksJ d S )Nc                 S   r%   )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   rW   )r3   ZmpmathZmpmath.calculus.optimizationr   r   r   r   r   r   r	   r
   r   r   r   r6   r8   r;   r?   r@   rD   rV   rW   r   r   r   r   <module>   s    4'