o
    g%                     @   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                   @   ,   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.   b/home/ubuntu/cloudmapper/venv/lib/python3.10/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   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)      gr3   )皙?r   g      @)r9   r   go    @r   )rstepr9   r   g-C6?)g<Nё\߿r   gqh  @)r9   r   g@r   r   g}    Y@g:0yE>g    Y@)r#   r$   r   r   r   all)r'   r(   r)   r*   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 )Nr2   r   r   )r   r3   r   r   )r   r   r1   r   )r   g      @r   r   )r   r   r   r   )r#   r$   r&   r	   r   )r'   r(   r)   r*   gvdvr.   r.   r/   test_scaling_vectorj   s   zTestBounds.test_scaling_vectorN)__name__
__module____qualname__r0   r8   r>   rB   r.   r.   r.   r/   r      s
    %r   c                   @   r   )
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   r:   r    r3   )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   rI   r   r   gffffff @gffffff@gffffff@r   )rI   s0gQ@gQÿ)	r#   r%   r   rH   r?   r   rI   r$   r   )r'   r+   abrL   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瞯<r4   r   r   )rO   r   rG   )r   r   r   r#   r&   )r'   rM   rN   tyrO   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@rK   ffffff@r   )rV   gQr   )rW   gzG?r   )r#   r$   r   rH   r?   r   rI   r   )r'   r+   valuevaluesr.   r.   r/   test_evaluate_quadratic   s   


z-TestQuadraticFunction.test_evaluate_quadraticN)rC   rD   rE   rJ   rP   rU   rZ   r.   r.   r.   r/   rF   t   s
    .rF   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   r9   r   )r   r   r   g;fg;f?)	r#   r%   r$   r
   r   r   r6   assert_raises
ValueError)r'   Deltar*   r+   t_negt_posr.   r.   r/   test_intersect   s(   









zTestTrustRegion.test_intersectN)rC   rD   rE   ra   r.   r.   r.   r/   r[      s    r[   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   rR   )dtyperQ   r!   r   r      r   r   )r#   r$   floatr   r   r6   r&   )r(   r)   rT   r*   r?   r.   r.   r/   test_reflective_transformation   s,   
"rf   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   rQ   rQ   r   rR   r!   r      )r   r!   )r   rR      )r#   arangereshaper$   rI   dotr   r   r   matvecmatmatTrmatvec)
Ad_leftDAJ_leftd_rightADJ_rightr*   Xxtr.   r.   r/   test_linear_operators  s    

rz   )numpy.testingr   r   r   pytestr   r\   numpyr#   scipy.optimize._lsq.commonr   r   r   r	   r
   r   r   r   r   r   r   r   rF   r[   rf   rz   r.   r.   r.   r/   <module>   s    4hd