
    ^Mh                        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 Zd Z G d d          Z G d de          Z G d de          Z G d de          Z G 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                  D    t           j                            d           d S )N  )nprandomseed     l/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test__remove_redundancy.pysetup_moduler      s    INN4r   c                     | D ]$}|D ]}t          j        ||k              r n dS %| j        d         t           j                            |           cxk    o"t           j                            |          k    nc S )zAChecks whether a matrix contains only independent rows of anotherFr   )r   allshapelinalgmatrix_rank)ABrowArowBs       r   redundancy_removedr"      s       	 	Dvddl##  55  71:..q11MMMMRY5J5J15M5MMMMMMr   c                   t    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )RRCommonTestsc                 $   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b1statusmessages	            r   test_no_redundancyz RRCommonTests.test_no_redundancy)   s    1Y^^Aq!!Y^^A"&''"b//BBBVQr   c                     t          j        d          }d|dd d f<   t           j                            d          }|                     ||          \  }}}}t          |d           d S N   r   r      )r   eyer   r(   r)   r   r+   r   br0   r1   r2   r3   s          r   test_infeasible_zero_rowz&RRCommonTests.test_infeasible_zero_row2   sc    F1II!QQQ$INN1"&''!Q--BVQr   c                 F   t          j        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 r6   )r   r9   r   r(   r)   r   r   r:   s          r   test_remove_zero_rowz"RRCommonTests.test_remove_zero_row9   s    F1II!QQQ$INN1!"&''!Q--BVQAq!faaaiL)))Aq!fI&&&&&r   c                     d\  }}t           j                            ||          }t           j                            |          }|                     ||          \  }}}}t	          |d           d S )N   r'   r8   r   r   r(   r)   r   r*   s	            r   test_infeasible_m_gt_nz$RRCommonTests.test_infeasible_m_gt_nC   sc    1Y^^Aq!!Y^^A"&''"b//BVQr   c                    d\  }}t           j                            ||          }t           j                            |          }d|dd d f         z  |dd d f<   |                     ||          \  }}}}t	          |d           d S )Nr&   r8   rB   r*   s	            r   test_infeasible_m_eq_nz$RRCommonTests.test_infeasible_m_eq_nJ   s    1Y^^Aq!!Y^^A2qqq5	M2qqq5	"&''"b//BVQr   c                 V   d\  }}t           j                            ||          }t           j                            |          }t          j        |dz
                                |d d                   |dd d f<   |                     ||          \  }}}}t          |d           d S )N	   r'   r   rF   r8   )r   r   r(   arangedotr)   r   r*   s	            r   test_infeasible_m_lt_nz$RRCommonTests.test_infeasible_m_lt_nR   s    1Y^^Aq!!Y^^AIa!e$$((CRC112qqq5	"&''"b//BVQr   c                 f   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  r@   r   )r   r   r   r(   r   solverL   r)   r   r   r   )
r+   r,   r-   r.   r/   xr0   r1   r2   r3   s
             r   test_m_gt_nzRRCommonTests.test_m_gt_nZ   s   
	t1Y^^Aq!!Y^^AIOOBrr111uIr"1"v..ABBEq!!122"&''"b//BVQRXa[!$$$RY**2..22222r   c                 0   d\  }}t          j        ||f          }d|d d df<   t          j        |          }|                     ||          \  }}}}t	          |d           t          ||ddd d f                    t          ||d                    d S )Nr@   r   r   )r   zerosonesr)   r   r   r*   s	            r   test_m_gt_n_rank_deficientz(RRCommonTests.test_m_gt_n_rank_deficientf   s    1Xq!f111a4WQZZ"&''"b//BVQBqsAAAvJ'''BqE"""""r   c                 P   d\  }}t           j                            ||          }t           j                            |          }t          j        |dz
                                |d d                   |dd d f<   t          j        |dz
                                |d d                   |d<   |                     ||          \  }}}}t          |d           t          |j        d         d           t          t           j        	                    |          d           d S )NrI   r   rF   r      )
r   r   r(   rK   rL   r)   r   r   r   r   r*   s	            r   test_m_lt_n_rank_deficientz(RRCommonTests.test_m_lt_n_rank_deficientp   s    1Y^^Aq!!Y^^AIa!e$$((CRC112qqq5	1q5!!%%b"g..2"&''"b//BVQRXa[!$$$RY**2..22222r   c                 \   t          j        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        |j        d                   }|                     ||          \  }}}}t          t          ||                     t          |d           d S )N)   rZ   r   r7   r   rF   r8      )r   rT   rS   r   r)   r   r"   r   r:   s          r   test_dense1zRRCommonTests.test_dense1{   s    GFOO!RaR%!QRR%!""ccc'
!RaR%!QRR%HQWQZ  "&''!Q--B"2q))***VQr   c                    t          j        d          }d|d<   d|dd d f<   t          j        |j        d                   }|                     ||          \  }}}}t          t          ||                     t          |d           d S NrZ   r   )rE   rF   rF   r   )r   r9   rS   r   r)   r   r"   r   r:   s          r   test_dense2zRRCommonTests.test_dense2   s    F1II&	"aaa%HQWQZ  "&''!Q--B"2q))***VQr   c                 l   t          j        d          }d|d<   d|dd d f<   t           j                            |j        d                   }t          j        |d d                   |d<   |                     ||          \  }}}}t          t          ||                     t          |d           d S r^   )
r   r9   r   r(   r   sumr)   r   r"   r   r:   s          r   test_dense3zRRCommonTests.test_dense3   s    F1II&	"aaa%INN171:&&q"v""&''!Q--B"2q))***VQr   c                 B   t           j                            d           d\  }}d}t           j                            ||          }d|t           j                            ||          |k    <   t           j                            |          }t          j        |j        d                   }|                     ||          \  }}}	}
t          |	d           t          |j        d         |           t          t           j                            |          |           d S )Ni  )rA      g?r   
r   r   r   r(   r   r   rS   r   r)   r   r+   r,   r-   pr   rankr;   r0   r1   r2   r3   s              r   test_m_gt_n_sparsez RRCommonTests.test_m_gt_n_sparse   s    
	t1INN1a  &'")..A


"#y$$Q''HQWQZ  "&''!Q--BVQRXa[$'''RY**2..55555r   c                 B   t           j                            d           d\  }}d}t           j                            ||          }d|t           j                            ||          |k    <   t           j                            |          }t          j        |j        d                   }|                     ||          \  }}}	}
t          |	d           t          |j        d         |           t          t           j                            |          |           d S )Nr   )rA   2   g?r   re   rf   s              r   test_m_lt_n_sparsez RRCommonTests.test_m_lt_n_sparse   s    
	t1INN1a  &'")..A


"#y$$Q''HQWQZ  "&''!Q--BVQRXa[$'''RY**2..55555r   c                 B   t           j                            d           d\  }}d}t           j                            ||          }d|t           j                            ||          |k    <   t           j                            |          }t          j        |j        d                   }|                     ||          \  }}}	}
t          |	d           t          |j        d         |           t          t           j                            |          |           d S )Nr   )d   rn   g{Gz?r   re   rf   s              r   test_m_eq_n_sparsez RRCommonTests.test_m_eq_n_sparse   s    
	t1INN1a  &'")..A


"#y$$Q''HQWQZ  "&''!Q--BVQRXa[$'''RY**2..55555r   c                    t          d          \  }}}}}|                     ||          \  }}}}	t          |d           t          |j        d         d           t          t          j                            |          d           d S )Nr7   r      r   r)   r   r   r   r   r   
r+   r   r;   cnumbers_r0   r1   r2   r3   s
             r   test_magic_squarezRRCommonTests.test_magic_square   ~    *1oo1a!"&''!Q--BVQRXa["%%%RY**2..33333r   c                    t          d          \  }}}}}|                     ||          \  }}}}	t          |d           t          |j        d         d           t          t          j                            |          d           d S )Nr[   r   '   rr   rs   s
             r   test_magic_square2z RRCommonTests.test_magic_square2   rx   r   N)__name__
__module____qualname__r4   r<   r>   rC   rG   rM   rQ   rU   rX   r\   r_   rb   ri   rl   ro   rw   r{   r   r   r   r$   r$   (   s                 ' ' '               
3 
3 
3# # #	3 	3 	3               6 6 66 6 66 6 64 4 44 4 4 4 4r   r$   c                       e Zd Zd ZdS )	TestRRSVDc                 "    t          ||          S Nr   r+   r   r;   s      r   r)   zTestRRSVD.rr   s    %a+++r   Nr|   r}   r~   r)   r   r   r   r   r      s#        , , , , ,r   r   c                       e Zd Zd ZdS )TestRRPivotDensec                 "    t          ||          S r   r
   r   s      r   r)   zTestRRPivotDense.rr   s    -a333r   Nr   r   r   r   r   r      s#        4 4 4 4 4r   r   c                       e Zd Zd ZdS )TestRRIDc                 "    t          ||          S r   r   r   s      r   r)   zTestRRID.rr   s    $Q***r   Nr   r   r   r   r   r      s#        + + + + +r   r   c                       e Zd Zd ZdS )TestRRPivotSparsec                 z    t          t          |          |          }|\  }}}}|                                |||fS r   )r   r   toarray)r+   r   r;   rr_resr0   r1   r2   r3   s           r   r)   zTestRRPivotSparse.rr   s<    0ABB"(Bzz||R00r   Nr   r   r   r   r   r      s#        1 1 1 1 1r   r   )__doc__numpyr   numpy.testingr   r   r   test_linprogr   !scipy.optimize._remove_redundancyr	   r   r   r   scipy.sparser   r   r"   r$   r   r   r   r   r   r   r   <module>r      s                
 ' & & & & & D D D D D D L L L L L L M M M M M M C C C C C C # # # # # #  	N 	N 	Nf4 f4 f4 f4 f4 f4 f4 f4R, , , , , , , ,
4 4 4 4 4} 4 4 4
+ + + + +} + + +
1 1 1 1 1 1 1 1 1 1r   