
    4[g                         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y)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                  B    t         j                  j                  d       y )N  )nprandomseed     g/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/optimize/tests/test__remove_redundancy.pysetup_moduler      s    IINN4r   c                    | D ]$  }|D ]  }t        j                  ||k(        s #  y | j                  d   t         j                  j	                  |       cxk(  xr" t         j                  j	                  |      k(  S 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"      sl    Dvvddl#    771:..q1MRYY5J5J15MMMMMr   c                   r    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y)RRCommonTestsc                    d\  }}t         j                  j                  ||      }t         j                  j                  |      }| j                  ||      \  }}}}t	        ||       t	        ||       t        |d       y )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)   sg    1YY^^Aq!YY^^A"&''"b/BBBVQr   c                     t        j                  d      }d|dd d f<   t         j                  j                  d      }| j	                  ||      \  }}}}t        |d       y 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   sP    FF1I!Q$IINN1"&''!Q-BVQr   c                    t        j                  d      }d|dd d f<   t         j                  j                  d      }d|d<   | j	                  ||      \  }}}}t        |d       t        ||ddgd d f          t        ||ddg          y r6   )r   r9   r   r(   r)   r   r   r:   s          r   test_remove_zero_rowz"RRCommonTests.test_remove_zero_row9   s    FF1I!Q$IINN1!"&''!Q-BVQAq!faiL)Aq!fI&r   c                     d\  }}t         j                  j                  ||      }t         j                  j                  |      }| j                  ||      \  }}}}t	        |d       y )N   r'   r8   r   r   r(   r)   r   r*   s	            r   test_infeasible_m_gt_nz$RRCommonTests.test_infeasible_m_gt_nC   sS    1YY^^Aq!YY^^A"&''"b/BVQr   c                     d\  }}t         j                  j                  ||      }t         j                  j                  |      }d|dd d f   z  |dd d f<   | j                  ||      \  }}}}t	        |d       y )Nr&   r8   rB   r*   s	            r   test_infeasible_m_eq_nz$RRCommonTests.test_infeasible_m_eq_nJ   sl    1YY^^Aq!YY^^A2q5	M2q5	"&''"b/BVQr   c                 4   d\  }}t         j                  j                  ||      }t         j                  j                  |      }t        j                  |dz
        j	                  |d d       |dd d f<   | j                  ||      \  }}}}t        |d       y )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YY^^Aq!YY^^AIIa!e$((CR12q5	"&''"b/BVQr   c                 &   t         j                  j                  d       d\  }}t         j                  j                  ||      }t         j                  j                  |      }t         j                  j                  |d |d d f   |d |       }||d d d f   j                  |      ||d  | j                  ||      \  }}}}	t        |d       t        |j                  d   |       t        t         j                  j                  |      |       y )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YY^^Aq!YY^^AIIOOBrr1uIr"1v.ABEq!12"&''"b/BVQRXXa[!$RYY**2.2r   c                    d\  }}t        j                  ||f      }d|d d df<   t        j                  |      }| j                  ||      \  }}}}t	        |d       t        ||ddd d f          t        ||d          y )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XXq!f1a4WWQZ"&''"b/BVQBqsAvJ'BqE"r   c                    d\  }}t         j                  j                  ||      }t         j                  j                  |      }t        j                  |dz
        j	                  |d d       |dd d f<   t        j                  |dz
        j	                  |d d       |d<   | j                  ||      \  }}}}t        |d       t        |j                  d   d       t        t         j                  j                  |      d       y )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YY^^Aq!YY^^AIIa!e$((CR12q5	1q5!%%b"g.2"&''"b/BVQRXXa[!$RYY**2.2r   c                 B   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         }| j	                  ||      \  }}}}t        t        ||             t        |d       y )N)   rZ   r   r7   r   rF   r8      )r   rT   rS   r   r)   r   r"   r   r:   s          r   test_dense1zRRCommonTests.test_dense1{   s    GGFO!RaR%!QR%!"cc'
!RaR%!QR%HHQWWQZ "&''!Q-B"2q)*VQr   c                     t        j                  d      }d|d<   d|dd d f<   t        j                  |j                  d         }| j	                  ||      \  }}}}t        t        ||             t        |d       y NrZ   r   )rE   rF   rF   r   )r   r9   rS   r   r)   r   r"   r   r:   s          r   test_dense2zRRCommonTests.test_dense2   sm    FF1I&	"a%HHQWWQZ "&''!Q-B"2q)*VQr   c                 H   t        j                  d      }d|d<   d|dd d f<   t         j                  j                  |j                  d         }t        j
                  |d d       |d<   | j                  ||      \  }}}}t        t        ||             t        |d       y r^   )
r   r9   r   r(   r   sumr)   r   r"   r   r:   s          r   test_dense3zRRCommonTests.test_dense3   s    FF1I&	"a%IINN1771:&q"v""&''!Q-B"2q)*VQr   c                 (   t         j                  j                  d       d\  }}d}t         j                  j                  ||      }d|t         j                  j                  ||      |kD  <   t         j                  j                  |      }t        j                  |j                  d         }| j                  ||      \  }}}	}
t        |	d       t        |j                  d   |       t        t         j                  j                  |      |       y )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IINN1a &'"))..A

"#yy$$Q'HHQWWQZ "&''!Q-BVQRXXa[$'RYY**2.5r   c                 (   t         j                  j                  d       d\  }}d}t         j                  j                  ||      }d|t         j                  j                  ||      |kD  <   t         j                  j                  |      }t        j                  |j                  d         }| j                  ||      \  }}}	}
t        |	d       t        |j                  d   |       t        t         j                  j                  |      |       y )Nr   )rA   2   g?r   re   rf   s              r   test_m_lt_n_sparsez RRCommonTests.test_m_lt_n_sparse   s    
		t1IINN1a &'"))..A

"#yy$$Q'HHQWWQZ "&''!Q-BVQRXXa[$'RYY**2.5r   c                 (   t         j                  j                  d       d\  }}d}t         j                  j                  ||      }d|t         j                  j                  ||      |kD  <   t         j                  j                  |      }t        j                  |j                  d         }| j                  ||      \  }}}	}
t        |	d       t        |j                  d   |       t        t         j                  j                  |      |       y )Nr   )d   rn   g{Gz?r   re   rf   s              r   test_m_eq_n_sparsez RRCommonTests.test_m_eq_n_sparse   s    
		t1IINN1a &'"))..A

"#yy$$Q'HHQWWQZ "&''!Q-BVQRXXa[$'RYY**2.5r   c                     t        d      \  }}}}}| j                  ||      \  }}}}	t        |d       t        |j                  d   d       t        t        j
                  j                  |      d       y )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   c    *1o1a!"&''!Q-BVQRXXa["%RYY**2.3r   c                     t        d      \  }}}}}| j                  ||      \  }}}}	t        |d       t        |j                  d   d       t        t        j
                  j                  |      d       y )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$   (   sW      '   
3#	3   66644r   r$   c                       e Zd Zd Zy)	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y)TestRRPivotDensec                     t        ||      S r   r
   r   s      r   r)   zTestRRPivotDense.rr   s    -a33r   Nr   r   r   r   r   r      s    4r   r   c                       e Zd Zd Zy)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y)TestRRPivotSparsec                 b    t        t        |      |      }|\  }}}}|j                         |||fS r   )r   r   toarray)r+   r   r;   rr_resr0   r1   r2   r3   s           r   r)   zTestRRPivotSparse.rr   s5    0AB"(Bzz|R00r   Nr   r   r   r   r   r      s    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      su     
 ' D L M C #	Nf4 f4R, ,
4} 4
+} +
1 1r   