a
    Re%                     @   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   sJ  t g d}t g d}t g d}t g d}t||||\}}t|d t|g d t g d}t||||\}}t|d t|g d	 t g d
}t||||\}}t|t d t|g d t g d}t||||\}}t|d t|g d t d}t||||\}}t|t j t|g d d S )N)            @      $@)      ?      @      Y@)        r   g      (@)皙?r   r   
   )   r   r   )g{Gz?g?r      )r   r   )r   g-C6r   r   )r   r   r   )r         ?       r   )r   r   r      r   r   r   )nparrayr   r   zerosinf)selflbubxsstephits r-   X/var/www/sunrise/env/lib/python3.9/site-packages/scipy/optimize/tests/test_lsq_common.pytest_step_size_to_bounds   s.    



z#TestBounds.test_step_size_to_boundsc                 C   sj  t g d}t g d}t g d}t|||}t|g d t g d}t|||}t|g d t|||dd}t|g d t g d	}t|||}t|g d
 t|||dd}t|g d t dt j t j g}t t jdt jg}t d}t|||}t|g d t g d}t|||}t|g d t|||dd}t|g d d S )N)r         $r   )r   r   r   )r                @r!   )r   r   r   )r   r   r   r   Zrtol)g&.>g:0yEgX@)r   r   r   gA:>)r   r   r   r   r   r    )r   r   r   )r   g      &@r   )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   s,  t g d}t g d}t g d}t|||dd}t|d dk t|dd  |dd   t|||dd}t|g d	 t g d
}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)      gr2   )皙?r   g      @)r7   r   go    @r   )Zrstepr7   r   g-C6?)g<Nё\߿r   gqh  @)r7   r   g@r   r   g}    Y@g:0yE>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 g d}t g d}t||||\}}t|g d t|g d d S )Nr1   r   r   )r   r2   r   r   )r   r   r0   r   )r   g      @r   r   )r   r   r   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/   r6   r:   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   r8   r   r2   )r"   r#   Jr;   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   rD   r   r   gffffff @gffffff@gffffff@r   )rD   s0gQ@gQÿ)	r"   r$   r   rC   r;   r   rD   r#   r   )r&   r*   abrG   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瞯<r3   r   r   )rJ   r   rB   )r   r   r   r"   r%   )r&   rH   rI   tyrJ   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|g d t| j| j|| jd}t|g d d S )	Nr   r   ffffff@rF   ffffff@r   )rQ   gQr   )rR   gzG?r   )r"   r#   r   rC   r;   r   rD   r   )r&   r*   valuevaluesr-   r-   r.   test_evaluate_quadratic   s    


z-TestQuadraticFunction.test_evaluate_quadraticN)r>   r?   r@   rE   rK   rP   rU   r-   r-   r-   r.   rA   t   s   .rA   c                   @   s   e Zd Zdd ZdS )TestTrustRegionc                 C   s   d}t d}t g d}t|||\}}t|d t|d t g d}t|||\}}t|d t|d t g d	}t g d
}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   r   )r   r   r   g3Eyg3Ey?)r   r7   r   )r   r   r   g;fg;f?)	r"   r$   r#   r
   r   r   r4   assert_raises
ValueError)r&   Deltar)   r*   Zt_negZt_posr-   r-   r.   test_intersect   s(    









zTestTrustRegion.test_intersectN)r>   r?   r@   rZ   r-   r-   r-   r.   rV      s   rV   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   rM   )ZdtyperL   r    r   r      r   r   )r"   r#   floatr   r   r4   r%   )r'   r(   rO   r)   r;   r-   r-   r.   test_reflective_transformation   s,    
"r^   c            
      C   s  t dd} t g d}t || }t| |}t ddg}| t |}t| |}t ddg}dt dd	d
 }t g d}	t|||	| t|||
| t|j|	||	 t|||	| t|||
| t|j|	||	 d S )N   )r    r   )r   r   rL   rL   r   rM   r    r      )r   r    )r   rM      )r"   ZarangeZreshaper#   rD   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     

rf   )Znumpy.testingr   r   r   Zpytestr   rW   numpyr"   Zscipy.optimize._lsq.commonr   r   r   r	   r
   r   r   r   r   r   r   r   rA   rV   r^   rf   r-   r-   r-   r.   <module>   s   4hd