
    doi                         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 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_arrayc                    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   )npallshapelinalgmatrix_rank)ABrowArowBs       h/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/optimize/tests/test__remove_redundancy.pyredundancy_removedr      sp    Dvvdl##    771:..q1MMRYY5J5J15MMMMM    c                       \ 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Srg)RRCommonTests$   c                 L    [         R                  R                  S5      U l        g )N  )r   randomdefault_rngrng)selfs    r   setup_methodRRCommonTests.setup_method%   s    99((.r   c                     Su  pU R                   R                  X45      nU R                   R                  U5      nU R                  X45      u  pVpx[        X55        [        XF5        [	        US5        g )N
   r*   r   )r$   r"   rrr   r   	r%   mnA0b0A1b1statusmessages	            r   test_no_redundancy RRCommonTests.test_no_redundancy(   s[    XX__aV$XX__Q"&''"/VQr   c                     [         R                  " S5      nSUSS S 24'   U 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_row1   sJ    FF1I!Q$HHOOA"&''!-VQr   c                 
   [         R                  " S5      nSUSS S 24'   U 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_row8   sw    FF1I!Q$HHOOA!"&''!-VQq!faiL)q!fI&r   c                     Su  pU R                   R                  X45      nU R                   R                  U5      nU R                  X45      u  pVpx[        US5        g )N   r*   r:   r$   r"   r+   r   r,   s	            r   test_infeasible_m_gt_n$RRCommonTests.test_infeasible_m_gt_nB   sK    XX__aV$XX__Q"&''"/VQr   c                     Su  pU R                   R                  X45      nU 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_nI   sd    XX__aV$XX__Q2q5	M2q5	"&''"/VQr   c                    Su  pU R                   R                  X45      nU 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_nQ   sv    XX__aV$XX__QIIa!e$((CR12q5	"&''"/VQr   c                    [         R                  R                  S5      nSu  p#UR                  X#45      nUR                  U5      n[         R                  R	                  US U2S S 24   US U 5      nXCS 2S S 24   R                  U5      XSS & U R                  XE5      u  pxp[        U	S5        [        UR                  S   U5        [        [         R                  R                  U5      U5        g )Ni  rD   r   )
r   r"   r#   r   solverR   r+   r   r   r   )r%   r$   r-   r.   r/   r0   xr1   r2   r3   r4   s              r   test_m_gt_nRRCommonTests.test_m_gt_nY   s    ii##D)ZZZZ]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_deficiente   so    XXqf1a4WWQZ"&''"/VQqsAvJ'qE"r   c                    Su  pU R                   R                  X45      nU 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_deficiento   s    XX__aV$XX__Q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_dense1z   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                 <   [         R                  " S5      nSUS'   SUSS S 24'   U 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%HHOOAGGAJ'q"v""&''!-"2)*VQr   c                    [         R                  R                  S5      nSu  p#SnUR                  X#45      nSXQR                  X#45      U:  '   [         R                  R	                  U5      n[         R
                  " UR                  S   5      nU R                  XW5      u  pp[        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    ii##D)JJv$%**aV
q
 !yy$$Q'HHQWWQZ "&''!-VQRXXa[$'RYY**2.5r   c                    [         R                  R                  S5      nSu  p#SnUR                  X#45      nSXQR                  X#45      U:  '   [         R                  R	                  U5      n[         R
                  " UR                  S   5      nU R                  XW5      u  pp[        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    ii##D)JJv$%**aV
q
 !yy$$Q'HHQWWQZ "&''!-VQRXXa[$'RYY**2.5r   c                    [         R                  R                  S5      nSu  p#SnUR                  X#45      nSXQR                  X#45      U:  '   [         R                  R	                  U5      n[         R
                  " UR                  S   5      nU R                  XW5      u  pp[        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    ii##D)JJv$%**aV
q
 !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__r&   r5   r>   rA   rG   rL   rS   rX   r]   ra   rf   rj   rn   rv   rz   r~   r   r   __static_attributes__ r   r   r   r   $   s\    /  '   
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1qA"(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   <module>r      sp     
 ' D L M C "	Ni4 i4X, ,
4} 4
+} +
1 1r   