
    (ph                         S r SSKrSSKJrJrJr  SSKJr  SSK	J
r
  SSK	Jr  SSK	Jr  SS	K	Jr  SS
KJr  S rS r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)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    [         R                  R                  S5        g )N  )nprandomseed     _/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test__remove_redundancy.pysetup_moduler      s    IINN4r   c                    U  H,  nU H#  n[         R                  " X#:H  5      (       d  M"    M*       g   U R                  S   [         R                  R	                  U 5      s=:H  =(       a"    [         R                  R	                  U5      :H  $ s  $ )zAChecks whether a matrix contains only independent rows of anotherFr   )r   allshapelinalgmatrix_rank)ABrowArowBs       r   redundancy_removedr"      sp    Dvvdl##    771:..q1MMRYY5J5J15MMMMMr   c                   z    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)RRCommonTests(   c                     Su  p[         R                  R                  X5      n[         R                  R                  U5      nU R                  X45      u  pVpx[	        X55        [	        XF5        [        US5        g )N
   r(   r   )r   r   randrrr   r   	selfmnA0b0A1b1statusmessages	            r   test_no_redundancy RRCommonTests.test_no_redundancy)   sY    YY^^A!YY^^A"&''"/VQr   c                     [         R                  " S5      nSUSS S 24'   [         R                  R                  S5      nU R	                  X5      u  p4pV[        US5        g N   r   r      )r   eyer   r)   r*   r   r,   r   br1   r2   r3   r4   s          r   test_infeasible_zero_row&RRCommonTests.test_infeasible_zero_row2   sJ    FF1I!Q$IINN1"&''!-VQr   c                    [         R                  " S5      nSUSS S 24'   [         R                  R                  S5      nSUS'   U R	                  X5      u  p4pV[        US5        [        X1SS/S S 24   5        [        XBSS/   5        g r8   )r   r;   r   r)   r*   r   r   r<   s          r   test_remove_zero_row"RRCommonTests.test_remove_zero_row9   sw    FF1I!Q$IINN1!"&''!-VQq!faiL)q!fI&r   c                     Su  p[         R                  R                  X5      n[         R                  R                  U5      nU R                  X45      u  pVpx[	        US5        g )N   r(   r:   r   r   r)   r*   r   r+   s	            r   test_infeasible_m_gt_n$RRCommonTests.test_infeasible_m_gt_nC   sI    YY^^A!YY^^A"&''"/VQr   c                     Su  p[         R                  R                  X5      n[         R                  R                  U5      nSUSS S 24   -  USS S 24'   U R                  X45      u  pVpx[	        US5        g )Nr'   r:   rF   r+   s	            r   test_infeasible_m_eq_n$RRCommonTests.test_infeasible_m_eq_nJ   sb    YY^^A!YY^^A2q5	M2q5	"&''"/VQr   c                 ,   Su  p[         R                  R                  X5      n[         R                  R                  U5      n[         R                  " US-
  5      R	                  US S 5      USS S 24'   U R                  X45      u  pVpx[        US5        g )N	   r(   r   rK   r:   )r   r   r)   arangedotr*   r   r+   s	            r   test_infeasible_m_lt_n$RRCommonTests.test_infeasible_m_lt_nR   st    YY^^A!YY^^AIIa!e$((CR12q5	"&''"/VQr   c                    [         R                  R                  S5        Su  p[         R                  R                  X5      n[         R                  R                  U5      n[         R                  R                  US U2S S 24   US U 5      nX2S 2S S 24   R                  U5      XBS & U R                  X45      u  pgp[        US5        [        UR                  S   U5        [        [         R                  R                  U5      U5        g )Ni  rD   r   )r   r   r   r)   r   solverR   r*   r   r   r   )
r,   r-   r.   r/   r0   xr1   r2   r3   r4   s
             r   test_m_gt_nRRCommonTests.test_m_gt_nZ   s    
		tYY^^A!YY^^AIIOOBrr1uIr"1v.BEq!2"&''"/VQRXXa[!$RYY**2.2r   c                     Su  p[         R                  " X45      nSUS S 2S4'   [         R                  " U5      nU R                  X45      u  pVpx[	        US5        [        XSSS2S S 24   5        [        XdS   5        g )NrD   r   r   )r   zerosonesr*   r   r   r+   s	            r   test_m_gt_n_rank_deficient(RRCommonTests.test_m_gt_n_rank_deficientf   so    XXqf1a4WWQZ"&''"/VQqsAvJ'qE"r   c                    Su  p[         R                  R                  X5      n[         R                  R                  U5      n[         R                  " US-
  5      R	                  US S 5      USS S 24'   [         R                  " US-
  5      R	                  US S 5      US'   U R                  X45      u  pVpx[        US5        [        UR                  S   S5        [        [         R                  R                  U5      S5        g )NrO   r   rK   r      )
r   r   r)   rQ   rR   r*   r   r   r   r   r+   s	            r   test_m_lt_n_rank_deficient(RRCommonTests.test_m_lt_n_rank_deficientp   s    YY^^A!YY^^AIIa!e$((CR12q5	1q5!%%b"g.2"&''"/VQRXXa[!$RYY**2.2r   c                 >   [         R                  " S5      nSUSS S24'   SUSSS 24'   SUSS 2S S S24'   SUSS S24'   SUSSS 24'   [         R                  " UR                  S   5      nU R	                  X5      u  p4pV[        [        X15      5        [        US5        g )N)   rd   r   r9   r   rK   r:      )r   r\   r[   r   r*   r   r"   r   r<   s          r   test_dense1RRCommonTests.test_dense1{   s    GGFO!RaR%!QR%!"cc'
!RaR%!QR%HHQWWQZ "&''!-"2)*VQr   c                     [         R                  " S5      nSUS'   SUSS S 24'   [         R                  " UR                  S   5      nU R	                  X5      u  p4pV[        [        X15      5        [        US5        g Nrd   r   )rJ   rK   rK   r   )r   r;   r[   r   r*   r   r"   r   r<   s          r   test_dense2RRCommonTests.test_dense2   se    FF1I&	"a%HHQWWQZ "&''!-"2)*VQr   c                 D   [         R                  " S5      nSUS'   SUSS S 24'   [         R                  R                  UR                  S   5      n[         R
                  " US S 5      US'   U R                  X5      u  p4pV[        [        X15      5        [        US5        g ri   )
r   r;   r   r)   r   sumr*   r   r"   r   r<   s          r   test_dense3RRCommonTests.test_dense3   s    FF1I&	"a%IINN1771:&q"v""&''!-"2)*VQr   c                    [         R                  R                  S5        Su  pSn[         R                  R                  X5      nSU[         R                  R                  X5      U:  '   [         R                  R                  U5      n[         R                  " UR                  S   5      nU R                  XF5      u  pxp[        U	S5        [        UR                  S   U5        [        [         R                  R                  U5      U5        g )Ni  )rE      g?r   
r   r   r   r)   r   r   r[   r   r*   r   r,   r-   r.   pr   rankr=   r1   r2   r3   r4   s              r   test_m_gt_n_sparse RRCommonTests.test_m_gt_n_sparse   s    
		tIINN1 &'"))..

"#yy$$Q'HHQWWQZ "&''!-VQRXXa[$'RYY**2.5r   c                    [         R                  R                  S5        Su  pSn[         R                  R                  X5      nSU[         R                  R                  X5      U:  '   [         R                  R                  U5      n[         R                  " UR                  S   5      nU R                  XF5      u  pxp[        U	S5        [        UR                  S   U5        [        [         R                  R                  U5      U5        g )Nr   )rE   2   g?r   rr   rs   s              r   test_m_lt_n_sparse RRCommonTests.test_m_lt_n_sparse   s    
		tIINN1 &'"))..

"#yy$$Q'HHQWWQZ "&''!-VQRXXa[$'RYY**2.5r   c                    [         R                  R                  S5        Su  pSn[         R                  R                  X5      nSU[         R                  R                  X5      U:  '   [         R                  R                  U5      n[         R                  " UR                  S   5      nU R                  XF5      u  pxp[        U	S5        [        UR                  S   U5        [        [         R                  R                  U5      U5        g )Nr   )d   r}   g{Gz?r   rr   rs   s              r   test_m_eq_n_sparse RRCommonTests.test_m_eq_n_sparse   s    
		tIINN1 &'"))..

"#yy$$Q'HHQWWQZ "&''!-VQRXXa[$'RYY**2.5r   c                     [        S5      u  pp4nU R                  X5      u  pgp[        US5        [        UR                  S   S5        [        [        R
                  R                  U5      S5        g )Nr9   r      r   r*   r   r   r   r   r   
r,   r   r=   cnumbers_r1   r2   r3   r4   s
             r   test_magic_squareRRCommonTests.test_magic_square   Y    *1oa!"&''!-VQRXXa["%RYY**2.3r   c                     [        S5      u  pp4nU R                  X5      u  pgp[        US5        [        UR                  S   S5        [        [        R
                  R                  U5      S5        g )Nre   r   '   r   r   s
             r   test_magic_square2 RRCommonTests.test_magic_square2   r   r   r   N)__name__
__module____qualname____firstlineno__r5   r>   rA   rG   rL   rS   rX   r]   ra   rf   rj   rn   rv   rz   r~   r   r   __static_attributes__r   r   r   r$   r$   (   sW      '   
3#	3   66644r   r$   c                       \ rS rSrS rSrg)	TestRRSVD   c                     [        X5      $ Nr   r,   r   r=   s      r   r*   TestRRSVD.rr   s    %a++r   r   Nr   r   r   r   r*   r   r   r   r   r   r      s    ,r   r   c                       \ rS rSrS rSrg)TestRRPivotDense   c                     [        X5      $ r   r
   r   s      r   r*   TestRRPivotDense.rr   s    -a33r   r   Nr   r   r   r   r   r      s    4r   r   c                       \ rS rSrS rSrg)TestRRID   c                     [        X5      $ r   r   r   s      r   r*   TestRRID.rr   s    $Q**r   r   Nr   r   r   r   r   r      s    +r   r   c                       \ rS rSrS rSrg)TestRRPivotSparse   c                 \    [        [        U5      U5      nUu  pEpgUR                  5       XVU4$ r   )r   r   toarray)r,   r   r=   rr_resr1   r2   r3   r4   s           r   r*   TestRRPivotSparse.rr   s/    0AB"(zz|R00r   r   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   