o
    tBhg                     @   s   d Z ddl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 ddl	mZ dd	l	mZ dd
lmZ dd Z				dddZdd ZG dd dZG dd deZG dd deZG dd deZG dd deZdS )z9
Unit test for Linear Programming via Simplex Algorithm.
    N)assert_assert_allcloseassert_equal   )magic_square_remove_redundancy_svd_remove_redundancy_pivot_dense)_remove_redundancy_pivot_sparse_remove_redundancy_id)
csc_matrixc                   C   s   t jd d S )N  )nprandomseed r   r   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/optimize/tests/test__remove_redundancy.pysetup_module   s   r   Hz>c                 C   sV   t | j t| jd |d urt| j|d||d |d ur)t| j|d||d d S d S )Nr   z*converged to an unexpected objective value)err_msgrtolatolz#converged to an unexpected solution)r   successr   statusr   funx)resdesired_fun	desired_xr   r   r   r   r   _assert_success   s&   
	
r!   c                 C   sZ   | D ]}|D ]}t ||kr nq dS q| jd t j|   ko*t j|kS   S )zAChecks whether a matrix contains only independent rows of anotherFr   )r   allshapelinalgmatrix_rank)ABrowArowBr   r   r   redundancy_removed7   s   .r*   c                   @   s   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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 )$RRCommonTestsc           	      C   sX   d\}}t j||}t j|}| ||\}}}}t|| t|| t|d d S )N
   r-   r   )r   r   randrrr   r   	selfmnA0b0A1b1r   messager   r   r   test_no_redundancyD   s   

z RRCommonTests.test_no_redundancyc                 C   sH   t d}d|dd d f< t jd}| ||\}}}}t|d d S N   r   r      )r   eyer   r.   r/   r   r1   r&   br6   r7   r   r8   r   r   r   test_infeasible_zero_rowM   s
   
z&RRCommonTests.test_infeasible_zero_rowc                 C   s|   t d}d|dd d f< t jd}d|d< | ||\}}}}t|d t||ddgd d f  t||ddg  d S r:   )r   r=   r   r.   r/   r   r   r>   r   r   r   test_remove_zero_rowT   s   

z"RRCommonTests.test_remove_zero_rowc           	      C   sD   d\}}t j||}t j|}| ||\}}}}t|d d S )N   r-   r<   r   r   r.   r/   r   r0   r   r   r   test_infeasible_m_gt_n^   s
   z$RRCommonTests.test_infeasible_m_gt_nc           	      C   sd   d\}}t j||}t j|}d|dd d f  |dd d f< | ||\}}}}t|d d S )Nr,   r<   rD   r0   r   r   r   test_infeasible_m_eq_ne   s    z$RRCommonTests.test_infeasible_m_eq_nc           	      C   sl   d\}}t j||}t j|}t |d |d d |dd d f< | ||\}}}}t|d d S )N	   r-   r   rG   r<   )r   r   r.   arangedotr/   r   r0   r   r   r   test_infeasible_m_lt_nm   s   (z$RRCommonTests.test_infeasible_m_lt_nc           
      C   s   t jd d\}}t j||}t j|}t j|d |d d f |d | }||d d d f |||d < | ||\}}}}	t|d t|j	d | tt j
|| d S )Ni  rB   r   )r   r   r   r.   r$   solverL   r/   r   r#   r%   )
r1   r2   r3   r4   r5   r   r6   r7   r   r8   r   r   r   test_m_gt_nu   s   &"
zRRCommonTests.test_m_gt_nc           	      C   sz   d\}}t ||f}d|d d df< t |}| ||\}}}}t|d t||ddd d f  t||d  d S )NrB   r   r   )r   zerosonesr/   r   r   r0   r   r   r   test_m_gt_n_rank_deficient   s   

z(RRCommonTests.test_m_gt_n_rank_deficientc           	      C   s   d\}}t j||}t j|}t |d |d d |dd d f< t |d |d d |d< | ||\}}}}t|d t|jd d tt j	|d d S )NrI   r   rG   r      )
r   r   r.   rK   rL   r/   r   r#   r$   r%   r0   r   r   r   test_m_lt_n_rank_deficient   s   ( 
z(RRCommonTests.test_m_lt_n_rank_deficientc                 C   s   t d}d|dd df< d|ddd f< d|dd d d df< d|dd df< d|ddd f< t |jd }| ||\}}}}tt|| t|d d S )N)   rU   r   r;   r   rG   r<      )r   rQ   rP   r#   r/   r   r*   r   r>   r   r   r   test_dense1   s   
zRRCommonTests.test_dense1c                 C   sb   t d}d|d< d|dd d f< t |jd }| ||\}}}}tt|| t|d d S NrU   r   )rF   rG   rG   r   )r   r=   rP   r#   r/   r   r*   r   r>   r   r   r   test_dense2   s   
zRRCommonTests.test_dense2c                 C   sz   t d}d|d< d|dd d f< t j|jd }t |d d |d< | ||\}}}}tt|| t	|d d S rX   )
r   r=   r   r.   r#   sumr/   r   r*   r   r>   r   r   r   test_dense3   s   
zRRCommonTests.test_dense3c                 C      t jd d\}}d}t j||}d|t j|||k< t j|}t |jd }| ||\}}}	}
t	|	d t	|jd | t	t j|| d S )Ni  )rC      g?r   
r   r   r   r.   r$   r%   rP   r#   r/   r   r1   r2   r3   pr&   rankr?   r6   r7   r   r8   r   r   r   test_m_gt_n_sparse      
z RRCommonTests.test_m_gt_n_sparsec                 C   r\   )Nr   )rC   2   g?r   r^   r_   r   r   r   test_m_lt_n_sparse   rc   z RRCommonTests.test_m_lt_n_sparsec                 C   r\   )Nr   )d   rf   g{Gz?r   r^   r_   r   r   r   test_m_eq_n_sparse   rc   z RRCommonTests.test_m_eq_n_sparsec           	      C   T   t d\}}}}| ||\}}}}t|d t|jd d ttj|d d S )Nr;   r      r   r/   r   r#   r   r$   r%   	r1   r&   r?   cnumbersr6   r7   r   r8   r   r   r   test_magic_square   
   
zRRCommonTests.test_magic_squarec           	      C   rh   )NrV   r   '   rj   rk   r   r   r   test_magic_square2   ro   z RRCommonTests.test_magic_square2N)__name__
__module____qualname__r9   r@   rA   rE   rH   rM   rO   rR   rT   rW   rY   r[   rb   re   rg   rn   rq   r   r   r   r   r+   C   s$    	

	
r+   c                   @      e Zd Zdd ZdS )	TestRRSVDc                 C   
   t ||S Nr   r1   r&   r?   r   r   r   r/         
zTestRRSVD.rrNrr   rs   rt   r/   r   r   r   r   rv          rv   c                   @   ru   )TestRRPivotDensec                 C   rw   rx   r	   ry   r   r   r   r/      rz   zTestRRPivotDense.rrNr{   r   r   r   r   r}      r|   r}   c                   @   ru   )TestRRIDc                 C   rw   rx   r   ry   r   r   r   r/      rz   zTestRRID.rrNr{   r   r   r   r   r~      r|   r~   c                   @   ru   )TestRRPivotSparsec                 C   s*   t t||}|\}}}}| |||fS rx   )r   r   toarray)r1   r&   r?   rr_resr6   r7   r   r8   r   r   r   r/      s   zTestRRPivotSparse.rrNr{   r   r   r   r   r      r|   r   )NNr   r   )__doc__numpyr   numpy.testingr   r   r   test_linprogr   !scipy.optimize._remove_redundancyr   r
   r   r   scipy.sparser   r   r!   r*   r+   rv   r}   r~   r   r   r   r   r   <module>   s,    
 *