U
    »mœdw  ã                   @   sÌ   d dl Z d dlZd dlmZ d dlmZmZ d dl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d„ 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'd(„ ZdS ))é    N)Úexp)Úassert_Úassert_equal)Úrootc                     s$  d} d}t ttdddd�t ttdddd�t ttdd	d	d�t ttd
d	d	d�t ttdddd�t ttdddd�t ttdddd�t t	t
dddd�t t	t
dddd�t ttdddd�g
}t dddgdddgddg¡D �]R\‰‰}|D �]@‰ ˆ d }‡ ‡‡fdd„}|f}ˆ d |ƒˆ }t |¡|  ˆ |tj |||ƒ¡  }dtˆˆ ˆˆ ƒ }	ˆˆ }
tjdd��0 t|||t d|ˆ d d  |
|	|d!�d"d#�}W 5 Q R X tˆˆ|ˆ tj ||j|ƒ¡||j|j|jg	ƒ}t|j|ƒ t|jˆ d d  k|ƒ t|jˆ d$ k|ƒ ttj ||j|ƒ¡|k|ƒ qÚqÊd S )%Ngñhãˆµøä>ç-Cëâ6?iè  é   )ÚFÚx0ÚnÚnitÚnfevi'  é   iô  é   iÐ  éd   é   éc   é   é   iç  é   é   ç      ð?g»½×Ùß|Û=g    _ BÚcruzÚchengr
   c                    s   ˆˆ d | ˆ |ƒ S )Nr   © ©Úxr
   ©ÚproblemZxscaleZyscaler   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/optimize/tests/test__spectral.pyÚ<lambda>)   ó    z"test_performance.<locals>.<lambda>r	   Úignore)Zoverr   r   é   )ÚftolÚfatolÚmaxfevÚsigma_0Ú	sigma_epsÚline_searchúDF-SANE)ÚargsÚoptionsÚmethodr   )ÚdictÚF_1Úx0_1ÚF_2Úx0_2ÚF_6Úx0_6ÚF_7Úx0_7ÚF_9Úx0_9ÚF_10Úx0_10Ú	itertoolsÚproductÚnpÚsqrtÚlinalgÚnormÚminZerrstater   Úreprr   Úsuccessr   r   r   )Ze_aZe_rZtable_1r(   r
   Úfuncr*   r	   r$   r'   r&   ÚsolÚerr_msgr   r   r   Útest_performance
   sV    	õÿ
( þü   ÿrF   c                  C   s`   dd„ } d}d}t | ||dd�}t|jƒ tj | |ƒ¡}tj | |jƒ¡}t||| kƒ d S )Nc                 S   s   | d d d S )Nr   r"   ù               @r   )Úzr   r   r   rC   B   s    ztest_complex.<locals>.funcrG   r   r)   )Ztolr,   )r   r   rB   r<   r>   r?   r   )rC   r	   r#   rD   Zf0Zfxr   r   r   Útest_complexA   s    
rI   c                  C   s®   d
dd„} d}t j d¡ t  || ¡ ||¡}||| t  dt  |¡ ¡  }tt j |¡ 	¡ dkƒ t  |¡d }| ||dƒ | ||d	ƒ | | |dƒ | | |d	ƒ d S )Nr   c              	      st   ‡ ‡fdd„}t j ˆ ˆ¡}t j ||ƒ¡d }t|ˆt|dd|d�dd�}t|jƒ tt j ||jƒ¡|kƒ d S )	Nc                    s   ˆ   | ¡ˆ S ©N)Údot)r   ©ÚAÚbr   r   r   X   r    zAtest_linear_definite.<locals>.check_solvability.<locals>.<lambda>g     @�@r   isD  )r$   r#   r%   r(   r)   )r+   r,   )	r<   r>   Zsolver?   r   r-   r   rB   r   )rM   rN   r(   rC   ZxpZepsrD   r   rL   r   Úcheck_solvabilityW   s    ÿ
z/test_linear_definite.<locals>.check_solvabilityéZ   iÒ  r"   r   r   r   )r   )
r<   ÚrandomÚseedÚarangeZreshapeZdiagr   r>   Zeigvalsr@   )rO   r
   rM   rN   r   r   r   Útest_linear_definiteP   s    
	 rT   c                  C   sf   dd„ } t tfD ]P}t ddg¡}tjddg|d�}t| ||fdd�}t|jƒ t|j	j
|j
ƒ qd S )Nc                 S   s   | | S rJ   r   )r   Úargr   r   r   Úfq   s    ztest_shape.<locals>.fr   )Zdtyper)   )r*   r,   )ÚfloatÚcomplexr<   ÚzerosÚonesr   r   rB   r   r   Úshape)rV   Údtr   rU   rD   r   r   r   Ú
test_shapep   s    
r]   c                 C   sd   t  |g¡}t  d|d ¡}t| d d ƒd |d< |t| dd … d ƒ| dd …   |dd …< |S )Nr   r"   r   ©r<   rY   rS   r   ©r   r
   ÚgÚir   r   r   r.   €   s
    ,r.   c                 C   s"   t  | g¡}| | | d  ¡ |S ©Nr"   ©r<   ÚemptyÚfill©r
   r	   r   r   r   r/   ‡   s    r/   c                 C   sd   t  |g¡}t  d|d ¡}t| d ƒd |d< d| t| dd … ƒ| d d…  d  |dd …< |S )Nr   r"   r   gš™™™™™¹?éÿÿÿÿr^   r_   r   r   r   r0   Œ   s
    0r0   c                 C   s"   t  | g¡}| d| d  ¡ |S )Nr"   r   rc   rf   r   r   r   r1   “   s    r1   c                 C   s0  t |d dƒ t |g¡}d| d d d…  d| dd d… d   d| dd d… d   d| dd d…   d	 |d d d…< d
| d d d…  d| dd d… d   d| dd d… d   d| dd d…   | dd d…  d| dd d… d   d |dd d…< d| dd d…  d| dd d… d   |dd d…< |S )Né   r   g333333ã?gš™™™™™ù?r"   gÍÌÌÌÌÌ@r   g333333#@g333333@g¸…ëQ¸Þ?g
×£p=
ç?gìQ¸…ë	@gHáz®G@gš™™™™™É?gHáz®G@g      ô?g      Ð?)r   r<   rY   )r   r
   r`   r   r   r   ÚF_4˜   s    ^‚2ri   c                 C   s*   t | d dƒ t dddg| d  ¡}|S )Nrh   r   rg   ç      à?©r   r<   Úarrayrf   r   r   r   Úx0_4¢   s    rm   c                 C   sd   d}t  d|d ¡d | }| dd|d|  |d d …d f |  |d d …d f |  jdd�    S )NgÍÌÌÌÌÌì?r"   rj   r   )Zaxis)r<   rS   Úsum)r   r
   ÚcÚmur   r   r   r2   §   s    r2   c                 C   s   t  | g¡S rJ   ©r<   rZ   ©r
   r   r   r   r3   ¬   s    r3   c                 C   sœ   t |d dƒ dd„ }t |g¡}d| dd d… d  d |d d d…< t| d d d…  ƒt| dd d…  ƒ d |dd d…< || dd d… ƒ|dd d…< |S )	Nrh   r   c                 S   sd   d|  d }d| d  d| d   d|   d d | d	k || d	k< d|  d | dk || dk< |S )
Nrj   r   i°ýÿÿrh   ix  iÇ  i„  iÎ  rg   r   )ÚtÚvr   r   r   Úphi²   s    8zF_7.<locals>.phig     ˆÃ@r"   r   gq¬‹Ûh ð?)r   r<   rY   r   )r   r
   ru   r`   r   r   r   r4   ¯   s    $6r4   c                 C   s&   t | d dƒ t dddg| d  ¡S )Nrh   r   gü©ñÒMbP?r   r"   rk   rr   r   r   r   r5   ½   s    r5   c                 C   s´   t  |g¡}t  d|¡}| d d d | d d d  |d< | dd… d  d || dd… d  d  | dd … d d  |dd…< | d d  d || d d  d  |d< |S )Nr   r   rh   r"   rg   )r<   rY   rS   r_   r   r   r   r6   Á   s    $J*r6   c                 C   s   t  | g¡S rJ   rq   rr   r   r   r   r7   É   s    r7   c                 C   s   t  d|  ¡| |  S rb   )r<   Úlogr   r   r   r   r8   Ì   s    r8   c                 C   s   t  | g¡S rJ   rq   rr   r   r   r   r9   Ï   s    r9   )r:   Únumpyr<   r   Znumpy.testingr   r   Zscipy.optimizer   rF   rI   rT   r]   r.   r/   r0   r1   ri   rm   r2   r3   r4   r5   r6   r7   r8   r9   r   r   r   r   Ú<module>   s,   7 
