U
    ZÊ¹j<  ã                   @   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 sŒt‚qŒt
ttttttfD ]&}t| d|d�}t| |ƒƒtk sÆt‚qÆd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/bwave/python/venv/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!   iòþC l   ÊF¡[ r   r   r   r   r   r   "   r   z	5.278e+13z
-5.278e+13)ÚrealÚimagc                 S   s   dS )Néÿÿÿÿr   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>gÍÌÌÌÌÌì¿Z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s¶t‚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   gH¯¼šò×z>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'