o
    tBh5                     @   s   d dl Zd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ eddgd	d
gddggZeg dZG dd dZG dd dZG dd deeZG dd deZdS )    N)lstsq)assert_allcloseassert_equalassert_)rand)aslinearoperator)
lsq_lineargS?gv/gJ+gX9vϿgsh|?ſgS㥫?)gl?gMbX9?gPnؿc                   @   sT   e Z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 )	BaseMixinc                 C   s   t jd| _d S )Nr   )nprandomRandomStaternd)self r   {/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_lsq_linear.pysetup_method   s   zBaseMixin.setup_methodc                 C   s<   | j D ]}ttt| j|d}t|jtttddd  qd S )Nmethod
lsq_solverrcondr   )lsq_solversr   Abr   r   xr   )r   r   resr   r   r   test_dense_no_bounds   s   
zBaseMixin.test_dense_no_boundsc                 C   s  t ddg}t ddg}| jD ]}ttt||f| j|d}t|jt	ttddd  qt dt j
 g}| jD ]}ttt|t j
f| j|d}t|jt ddgd	d
 q9t ddg}| jD ]}ttt|t j
f| j|d}t|jt ddgdd
 q`t t j
dg}| jD ]}tttt j
 |f| j|d}t|jt ddg qt dt j
g}| jD ]}tttt j
 |f| j|d}t|jt ddg qt ddg}t ddg}| jD ]}ttt||f| j|d}t|jt ddg qd S )Nr   i   r   r   r           g1Vư>atolgԡw?gV瞯<ggUw-r 
su?)r
   arrayr   r   r   r   r   r   r   r   inf)r   lbubr   r   r   r   r   test_dense_bounds   sV   





zBaseMixin.test_dense_boundsc                 C   sf   t j }|t t g dg dg}W d    n1 s w   Y  t ddg}t||}d S )N)   r$   r         )
   r   r   r   r+      )r
   testingsuppress_warningsfilterPendingDeprecationWarningmatrixr&   r   )r   supr   ks_tr   r   r   test_np_matrixE   s   
zBaseMixin.test_np_matrixc                 C   s   t ddgg}t dg}ddg}ddg}| jD ]}t||||f| j|d}t|jddg qt ddgd	d
gddgg}t g d}ddg}ddg}| jD ]}t||||f| j|d}t|jddd qPd S )NgSӿgZd;Oǿg#~j?gg?r   gK7A`?gK7A`?gPngPng~jt?g~jt?)g`"gHzG?gJ+?r   r   r   g      gdy=r!   )r
   r&   r   r   r   r   r   
optimality)r   r   r   r(   r)   r   r   r   r   r   test_dense_rank_deficientM   s.   

z#BaseMixin.test_dense_rank_deficientc                 C   s   t ddg}t ddg}ttt||f| jd}t|jddg t|jt }t|j	dt ||  t|j
| t|jddd	 t|jdd
g t|jdk  t|jdkp\|jdk tt|jt t|j d S )Nr   r$   r   r   r%   g      ?r   g-q=r!   r   r0   r-   )r
   r&   r   r   r   r   r   r   dotcostfunr:   r   active_maskr   nitstatus
isinstancemessagestrsuccess)r   r(   r)   r   rr   r   r   test_full_resultd   s   zBaseMixin.test_full_resultc                 C   sL   t g dg dg dg}t g d}t||| jd}t|jdk  d S )N)gSQcU?gn-(8?g(8?)gڌ?g,?gk,?)g\s`?gAʨY?g Y?)gt\O?v?g"He?gFH{?r<   gg5_PG>)r
   r&   r   r   r   r>   )r   r   r   resultr   r   r   test_almost_singularw   s   zBaseMixin.test_almost_singularc                 C   s(  t jd t t jjdddd\}}|d9 }dt jjdd||gd }dt jjdd|gd }dt jt jjddd|fddd }|d	d d f  d7  < t j||}|d d |f }t|||d
dj}t|||ddj}t || | d }	t || | d }
t	t
|	|
 |
d k  d S )Nr   r,     )sizeg      ?ic   )axisr   bvlsboundsr   trf绽|=)r
   r   seedsortrandintchoicer   r   sumr   abs)r   nmr   r   rQ   wx_bvlsx_trf	cost_bvlscost_trfr   r   r   test_large_rank_deficient   s   $z#BaseMixin.test_large_rank_deficientc                 C   s   t g dg dg dg}t g d}t g dg dg}t|||ddj}t|||d	dj}t || | d
 }t || | d
 }tt|| |d k  d S )N)g     H@g     D@      @)g      3rb   g       )g      *g      $@g     @Q@)g     Dg     Vg     G@)g      ?@g      Fg      :@)g      K@rb   g      <@rO   rP   rR   r,   rS   )r
   r&   r   r   rX   r   rY   )r   r   r   rQ   r]   r^   r_   r`   r   r   r   test_convergence_small_matrix   s   

z'BaseMixin.test_convergence_small_matrixN)__name__
__module____qualname__r   r   r*   r9   r;   rH   rJ   ra   rc   r   r   r   r   r	      s    *r	   c                   @   s   e Zd Zdd Zdd ZdS )SparseMixinc                 C   sb   d}d}t ||dd}| j|}t||}t|jddd t|}t||}t|jddd d S )N  rK   r   random_stater    r!   )r   r   randnr   r   r:   r   )r   r[   rZ   r   r   r   r   r   r   test_sparse_and_LinearOperator   s   

z*SparseMixin.test_sparse_and_LinearOperatorc                 C   s   d}d}t ||dd}| j|}| j|}|d }t||||f}t|jddd t||||fd	d
}t|jddd t||||fdd
}t|jddd d S )Nrh   rK   r   ri   r   r   r    r!   gvIh%<=)lsmr_tolauto)r   r   rk   r   r   r:   )r   r[   rZ   r   r   r(   r)   r   r   r   r   test_sparse_bounds   s   zSparseMixin.test_sparse_boundsN)rd   re   rf   rl   ro   r   r   r   r   rg      s    rg   c                   @   s   e Zd ZdZddgZdS )TestTRFrR   exactlsmrNrd   re   rf   r   r   r   r   r   r   rp      s    rp   c                   @   s   e Zd ZdZdgZdS )TestBVLSrO   rq   Nrs   r   r   r   r   rt      s    
rt   )numpyr
   numpy.linalgr   numpy.testingr   r   r   scipy.sparser   scipy.sparse.linalgr   scipy.optimizer   r&   r   r   r	   rg   rp   rt   r   r   r   r   <module>   s"     