U
    »mœd%  ã                   @   sš   d dl mZmZmZ d dlmZ d dlZ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 G dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZdd„ Zdd„ ZdS )é    )Úassert_Úassert_allcloseÚassert_equal)ÚraisesN)Ústep_size_to_boundÚfind_active_constraintsÚmake_strictly_feasibleÚCL_scaling_vectorÚintersect_trust_regionÚbuild_quadratic_1dÚminimize_quadratic_1dÚevaluate_quadraticÚreflective_transformationÚleft_multiplied_operatorÚright_multiplied_operatorc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
TestBoundsc                 C   sb  t  dddg¡}t  dddg¡}t  dddg¡}t  d	ddg¡}t||||ƒ\}}t|d
ƒ t|dddgƒ t  dddg¡}t||||ƒ\}}t|dƒ t|dddgƒ t  dddg¡}t||||ƒ\}}t|t  d¡ƒ t|dddgƒ t  dddg¡}t||||ƒ\}}t|dƒ t|dddgƒ t  d¡}t||||ƒ\}}t|t jƒ t|dddgƒ d S )Nç      ð¿g      @ç      $@ç      ð?ç      @ç      Y@ç        g      (@çš™™™™™¹?é
   é   r   g{®Gáz„?gš™™™™™©?é   éÿÿÿÿg-Cëâ6¿ç      à?ç       Àé   )ÚnpÚarrayr   r   ÚzerosÚinf)ÚselfÚlbÚubÚxÚsÚstepÚhits© r+   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/optimize/tests/test_lsq_common.pyÚtest_step_size_to_bounds   s.    



z#TestBounds.test_step_size_to_boundsc                 C   s†  t  dddg¡}t  dddg¡}t  dddg¡}t|||ƒ}t|dddgƒ t  ddd	g¡}t|||ƒ}t|d
ddgƒ t|||dd�}t|d
ddgƒ t  dddg¡}t|||ƒ}t|dddgƒ t|||dd�}t|d
ddgƒ t  dt j t j g¡}t  t jd	t jg¡}t  d¡}t|||ƒ}t|d
ddgƒ t  dddg¡}t|||ƒ}t|d
ddgƒ t|||dd�}t|d
ddgƒ d S )Nr   ç      $Àr   r   r   ç      Àç       @r   r   r   r   ©Zrtolg•Ö&è.>g:Œ0âŽyE¾gíþÿÿÿX@gßA:ÜÅ>r   g      &@)r    r!   r   r   r#   Úones)r$   r%   r&   r'   Úactiver+   r+   r,   Útest_find_active_constraints+   s2    
z'TestBounds.test_find_active_constraintsc                 C   s6  t  dddg¡}t  dddg¡}t  dddg¡}t|||d	d
�}t|d	 dkƒ t|dd … |dd … ƒ t|||dd
�}t|dddgƒ t  dddg¡}t|||ƒ}tt  ||k||k@ ¡ƒ t|||d	d
�}tt  ||k||k@ ¡ƒ t  ddg¡}t  ddg¡}t  d	dg¡}t|||dd
�}t|d	dgƒ d S )Nç      à¿gš™™™™™é¿r0   çš™™™™™é?r   g      @r   gœo    @r   )Zrstepr   g-Cëâ6?g<NÑ‘\þß¿gq¬‹Ûh  @r   gÍÌÌÌÌÌ@r   g}    Y@g:Œ0âŽyE>g¾    Y@)r    r!   r   r   r   Úall)r$   r%   r&   r'   Zx_newr+   r+   r,   Útest_make_strictly_feasibleP   s$    z&TestBounds.test_make_strictly_feasiblec                 C   sŽ   t  t j ddt j g¡}t  dt jdt jg¡}t  ddddg¡}t  ddd	dg¡}t||||ƒ\}}t|dd
ddgƒ t|ddddgƒ d S )Nr/   r   r   r   r0   r   r   r   r.   g      @r   )r    r!   r#   r	   r   )r$   r%   r&   r'   ÚgÚvZdvr+   r+   r,   Útest_scaling_vectorj   s    zTestBounds.test_scaling_vectorN)Ú__name__Ú
__module__Ú__qualname__r-   r4   r8   r;   r+   r+   r+   r,   r      s   %r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestQuadraticFunctionc                 C   sB   t  ddgddgddgg¡| _t  ddg¡| _t  ddg¡| _d S )	Nr   çš™™™™™É?r   r   r   r6   r   r0   )r    r!   ÚJr9   Údiag)r$   r+   r+   r,   Úsetup_methodu   s    ýz"TestQuadraticFunction.setup_methodc                 C   s  t  d¡}t| j| j|ƒ\}}t|dƒ t|dƒ t| j| j|| jd�\}}t|dƒ t|dƒ t  ddg¡}t| j| j|ƒ\}}t|dƒ t|dƒ t| j| j|| jd�\}}t|dƒ t|dƒ t  d	d	g¡}t| j| j|| j|d
�\}}}t|dƒ t|dƒ t|dƒ d S )Nr   r   ©rB   r   r   gffffff @gffffff@gffffff@r   )rB   Ús0g…ëQ¸@g…ëQ¸…Ã¿)	r    r"   r   rA   r9   r   rB   r!   r   )r$   r(   ÚaÚbrE   Úcr+   r+   r,   Útest_build_quadratic_1d}   s&    










z-TestQuadraticFunction.test_build_quadratic_1dc                 C   s`  d}d}t ||ddƒ\}}t|dƒ t|||d  ||  dd� t ||ddƒ\}}t|dƒ t|||d  ||  dd� t ||ddƒ\}}t|dƒ t|||d  ||  dd� d	}t ||dd|d
�\}}t|dƒ t|||d  ||  | dd� t ||tj tj|d
�\}}t|dƒ t|||d  ||  | dd� t ||dtj|d
�\}}t|dƒ t|||d  ||  | dd� t ||tj d|d
�\}}t|dƒ t|||d  ||  | dd� d}d}t ||tj tjƒ\}}t|tj ƒ t ||dtjƒ\}}t|tjƒ t|tj ƒ t ||tj dƒ\}}t|tj ƒ t|tj ƒ d S )Né   r   r   r   gVçž¯Ò<r1   éþÿÿÿr   r   )rH   r   r@   )r   r   r   r    r#   )r$   rF   rG   ÚtÚyrH   r+   r+   r,   Útest_minimize_quadratic_1d–   sD    



"
"
"
"z0TestQuadraticFunction.test_minimize_quadratic_1dc                 C   s®   t  ddg¡}t| j| j|ƒ}t|dƒ t| j| j|| jd�}t|dƒ t  ddgddgddgg¡}t| j| j|ƒ}t|dddgƒ t| j| j|| jd�}t|dddgƒ d S )	Nr   r   gffffff@rD   gffffff@r   g…ëQ¸í¿gáz®Gáâ?)r    r!   r   rA   r9   r   rB   r   )r$   r(   ÚvalueÚvaluesr+   r+   r,   Útest_evaluate_quadraticÄ   s    


þz-TestQuadraticFunction.test_evaluate_quadraticN)r<   r=   r>   rC   rI   rN   rQ   r+   r+   r+   r,   r?   t   s   .r?   c                   @   s   e Zd Zdd„ ZdS )ÚTestTrustRegionc                 C   sü   d}t  d¡}t  dddg¡}t|||ƒ\}}t|dƒ t|dƒ t  dddg¡}t|||ƒ\}}t|dƒ t|dƒ t  d	d
dg¡}t  dddg¡}t|||ƒ\}}t|dƒ t|dƒ t  d¡}ttt|||ƒ t  d¡}t  d¡}ttt|||ƒ d S )Nr   r   r   r   r   r   g3�E§yâ¿g3�E§yâ?r   r5   r   gÍ;fž æ¿gÍ;fž æ?)	r    r"   r!   r
   r   r   r2   Úassert_raisesÚ
ValueError)r$   ÚDeltar'   r(   Zt_negZt_posr+   r+   r,   Útest_intersectÙ   s(    









zTestTrustRegion.test_intersectN)r<   r=   r>   rV   r+   r+   r+   r,   rR   Ø   s   rR   c                  C   sv  t jddgtd�} t jddgtd�}t  ddg¡}t|| |ƒ\}}t||ƒ t|t  d¡ƒ t jdd	gtd�}t|| t  t jt jg¡ƒ\}}t|dd	gƒ t|dd
gƒ t|t  t j t j g¡|ƒ\}}t|ddgƒ t|d
dgƒ t|| |ƒ\}}t|ddgƒ t|ddgƒ t  t j dg¡} t  dt jg¡}t jddgtd�}t|| |ƒ\}}t|ddgƒ t|dd
gƒ d S )Nr   rK   )ZdtyperJ   r   r   r   éüÿÿÿé   r   r   )r    r!   Úfloatr   r   r2   r#   )r%   r&   rM   r'   r9   r+   r+   r,   Útest_reflective_transformationõ   s,    
"rZ   c            
      C   s"  t  d¡ d¡} t  dddg¡}t  |¡ | ¡}t| |ƒ}t  ddg¡}|  t  |¡¡}t| |ƒ}t  ddg¡}dt  dd	¡ d
¡ }t  dddg¡}	t| |¡| 	|¡ƒ t| |¡| 
|¡ƒ t|j |	¡| |	¡ƒ t| |¡| 	|¡ƒ t| |¡| 
|¡ƒ t|j |	¡| |	¡ƒ d S )Né   )r   r   r   r   rJ   r   rK   r   é   )r   r   r   é   )r    ZarangeZreshaper!   rB   Údotr   r   r   ZmatvecZmatmatÚTZrmatvec)
ÚAZd_leftZDAZJ_leftZd_rightZADZJ_rightr'   ÚXZxtr+   r+   r,   Útest_linear_operators  s     

rb   )Znumpy.testingr   r   r   Zpytestr   rS   Únumpyr    Zscipy.optimize._lsq.commonr   r   r   r	   r
   r   r   r   r   r   r   r   r?   rR   rZ   rb   r+   r+   r+   r,   Ú<module>   s   4hd