Ë
    0Ò^jã  ã                   óÞ   — 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 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_arrayc                 ó  — | 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   )ÚnpÚallÚshapeÚlinalgÚmatrix_rank)ÚAÚBÚrowAÚrowBs       úw/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/optimize/tests/test__remove_redundancy.pyÚredundancy_removedr      sv   € àò ˆàò 	ˆDÜ�v‰v�d˜d‘lÕ#Ùð	ñ ðð �7‰7�1‰:œŸ™×.Ñ.¨qÓ1ÖM´R·Y±Y×5JÑ5JÈ1Ó5MÑMÐMÑMÐMó    c                   óx   — 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„ Zy)ÚRRCommonTestsc                 óL   — t         j                  j                  d«      | _        y )Néá  )r   ÚrandomÚdefault_rngÚrng)Úselfs    r   Úsetup_methodzRRCommonTests.setup_method%   s   € Ü—9‘9×(Ñ(¨Ó.ˆ�r   c                 óô   — d\  }}| j                   j                  ||f«      }| j                   j                  |«      }| j                  ||«      \  }}}}t        ||«       t        ||«       t	        |d«       y )N©é
   r(   r   )r#   r!   Úrrr   r   ©	r$   ÚmÚnÚA0Úb0ÚA1Úb1ÚstatusÚmessages	            r   Útest_no_redundancyz RRCommonTests.test_no_redundancy(   si   € Ø‰ˆˆ1Ø�X‰X�_‰_˜a ˜VÓ$ˆØ�X‰X�_‰_˜QÓˆØ"&§'¡'¨"¨b£/ÑˆˆB�˜Ü˜˜BÔÜ˜˜BÔÜ�V˜QÕr   c                 ó¼   — t        j                  d«      }d|dd d …f<   | j                  j                  d«      }| j	                  ||«      \  }}}}t        |d«       y ©Né   r   r   é   )r   Úeyer#   r!   r)   r   ©r$   r   Úbr/   r0   r1   r2   s          r   Útest_infeasible_zero_rowz&RRCommonTests.test_infeasible_zero_row1   sP   € Ü�F‰F�1‹IˆØˆˆ!ŠQˆ$‰Ø�H‰H�O‰O˜AÓˆØ"&§'¡'¨!¨Q£-ÑˆˆB�˜Ü�V˜QÕr   c                 ó  — t        j                  d«      }d|dd d …f<   | j                  j                  d«      }d|d<   | j	                  ||«      \  }}}}t        |d«       t        ||ddgd d …f   «       t        ||ddg   «       y r5   )r   r8   r#   r!   r)   r   r   r9   s          r   Útest_remove_zero_rowz"RRCommonTests.test_remove_zero_row8   s�   € Ü�F‰F�1‹IˆØˆˆ!ŠQˆ$‰Ø�H‰H�O‰O˜AÓˆØˆˆ!‰Ø"&§'¡'¨!¨Q£-ÑˆˆB�˜Ü�V˜QÔÜ˜˜A˜q !˜f¢a˜i™LÔ)Ü˜˜A˜q !˜f™IÕ&r   c                 óÄ   — d\  }}| j                   j                  ||f«      }| j                   j                  |«      }| j                  ||«      \  }}}}t        |d«       y )N©é   r(   r7   ©r#   r!   r)   r   r*   s	            r   Útest_infeasible_m_gt_nz$RRCommonTests.test_infeasible_m_gt_nB   sU   € Ø‰ˆˆ1Ø�X‰X�_‰_˜a ˜VÓ$ˆØ�X‰X�_‰_˜QÓˆØ"&§'¡'¨"¨b£/ÑˆˆB�˜Ü�V˜QÕr   c                 óê   — d\  }}| j                   j                  ||f«      }| j                   j                  |«      }d|dd d …f   z  |dd d …f<   | j                  ||«      \  }}}}t        |d«       y )Nr'   r7   éþÿÿÿéÿÿÿÿrA   r*   s	            r   Útest_infeasible_m_eq_nz$RRCommonTests.test_infeasible_m_eq_nI   sn   € Ø‰ˆˆ1Ø�X‰X�_‰_˜a ˜VÓ$ˆØ�X‰X�_‰_˜QÓˆØ˜˜2šq˜5™	‘Mˆˆ2Šqˆ5‰	Ø"&§'¡'¨"¨b£/ÑˆˆB�˜Ü�V˜QÕr   c                 ó&  — d\  }}| j                   j                  ||f«      }| j                   j                  |«      }t        j                  |dz
  «      j	                  |d d «      |dd d …f<   | j                  ||«      \  }}}}t        |d«       y )N©é	   r(   r   rE   r7   )r#   r!   r   ÚarangeÚdotr)   r   r*   s	            r   Útest_infeasible_m_lt_nz$RRCommonTests.test_infeasible_m_lt_nQ   s€   € Ø‰ˆˆ1Ø�X‰X�_‰_˜a ˜VÓ$ˆØ�X‰X�_‰_˜QÓˆÜ—I‘I˜a !™eÓ$×(Ñ(¨¨C¨R¨Ó1ˆˆ2Šqˆ5‰	Ø"&§'¡'¨"¨b£/ÑˆˆB�˜Ü�V˜QÕr   c                 óð  — t         j                  j                  d«      }d\  }}|j                  ||f«      }|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   ÚsolverK   r)   r   r   r   )r$   r#   r+   r,   r-   r.   Úxr/   r0   r1   r2   s              r   Útest_m_gt_nzRRCommonTests.test_m_gt_nY   sÏ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ø�Z‰Z˜˜A˜ÓˆØ�Z‰Z˜‹]ˆÜ�I‰I�O‰O˜B˜r ˜r¢1˜u™I r¨"¨1 vÓ.ˆØ�A‘Bš�E‘—‘˜qÓ!ˆˆ1ˆ2ˆØ"&§'¡'¨"¨b£/ÑˆˆB�˜Ü�V˜QÔÜ�R—X‘X˜a‘[ !Ô$Ü”R—Y‘Y×*Ñ*¨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_deficiente   s}   € Ø‰ˆˆ1Ü�X‰X�q˜!�fÓˆØˆŠ1ˆaˆ4‰Ü�W‰W�Q‹ZˆØ"&§'¡'¨"¨b£/ÑˆˆB�˜Ü�V˜QÔÜ˜˜B˜q ˜s¢A˜v™JÔ'Ü˜˜B˜q™EÕ"r   c                 ó  — d\  }}| j                   j                  ||f«      }| 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 )NrH   r   rE   r   é   )
r#   r!   r   rJ   rK   r)   r   r   r   r   r*   s	            r   Útest_m_lt_n_rank_deficientz(RRCommonTests.test_m_lt_n_rank_deficiento   sÒ   € Ø‰ˆˆ1Ø�X‰X�_‰_˜a ˜VÓ$ˆØ�X‰X�_‰_˜QÓˆÜ—I‘I˜a !™eÓ$×(Ñ(¨¨C¨R¨Ó1ˆˆ2Šqˆ5‰	Ü—‘˜1˜q™5Ó!×%Ñ% b¨¨" gÓ.ˆˆ2‰Ø"&§'¡'¨"¨b£/ÑˆˆB�˜Ü�V˜QÔÜ�R—X‘X˜a‘[ !Ô$Ü”R—Y‘Y×*Ñ*¨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)é   rY   r   r6   r   rE   r7   é   )r   rS   rR   r   r)   r   r   r   r9   s          r   Útest_dense1zRRCommonTests.test_dense1z   sª   € Ü�G‰G�F‹OˆØˆˆ!ˆRˆaˆRˆ%‰Øˆˆ!ˆQ‰Rˆ%‰Øˆˆ!‰"‰c�ˆcˆ'‰
Øˆˆ!ˆRˆaˆRˆ%‰Øˆˆ!ˆQ‰Rˆ%‰Ü�H‰H�Q—W‘W˜Q‘ZÓ ˆà"&§'¡'¨!¨Q£-ÑˆˆB�˜ÜÔ" 2 qÓ)Ô*Ü�V˜QÕr   c                 óþ   — t        j                  d«      }d|d<   d|dd d …f<   t        j                  |j                  d   «      }| j	                  ||«      \  }}}}t        t        ||«      «       t        |d«       y ©NrY   r   )rD   rE   rE   r   )r   r8   rR   r   r)   r   r   r   r9   s          r   Útest_dense2zRRCommonTests.test_dense2‡   sm   € Ü�F‰F�1‹IˆØˆˆ&‰	Øˆˆ"Šaˆ%‰Ü�H‰H�Q—W‘W˜Q‘ZÓ ˆØ"&§'¡'¨!¨Q£-ÑˆˆB�˜ÜÔ" 2 qÓ)Ô*Ü�V˜QÕr   c                 ó@  — t        j                  d«      }d|d<   d|dd d …f<   | j                  j                  |j                  d   «      }t        j
                  |d d «      |d<   | j                  ||«      \  }}}}t        t        ||«      «       t        |d«       y r]   )
r   r8   r#   r!   r   Úsumr)   r   r   r   r9   s          r   Útest_dense3zRRCommonTests.test_dense3�   sˆ   € Ü�F‰F�1‹IˆØˆˆ&‰	Øˆˆ"Šaˆ%‰Ø�H‰H�O‰O˜AŸG™G A™JÓ'ˆÜ—‘�q˜˜"�v“ˆˆ"‰Ø"&§'¡'¨!¨Q£-ÑˆˆB�˜ÜÔ" 2 qÓ)Ô*Ü�V˜QÕr   c                 óô  — t         j                  j                  d«      }d\  }}d}|j                  ||f«      }d||j                  ||f«      |kD  <   t         j                  j	                  |«      }t        j
                  |j                  d   «      }| j                  ||«      \  }}	}
}t        |
d«       t        |j                  d   |«       t        t         j                  j	                  |«      |«       y )NiÝ  )r@   é   gš™™™™™¹?r   ©	r   r!   r"   r   r   rR   r   r)   r   ©r$   r#   r+   r,   Úpr   Úrankr:   r/   r0   r1   r2   s               r   Útest_m_gt_n_sparsez RRCommonTests.test_m_gt_n_sparseš   sÉ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1ØˆØ�J‰J˜˜1�vÓˆØ$%ˆˆ#�*‰*�a˜�VÓ
˜qÑ
 Ñ!Ü�y‰y×$Ñ$ QÓ'ˆÜ�H‰H�Q—W‘W˜Q‘ZÓ ˆØ"&§'¡'¨!¨Q£-ÑˆˆB�˜Ü�V˜QÔÜ�R—X‘X˜a‘[ $Ô'Ü”R—Y‘Y×*Ñ*¨2Ó.°Õ5r   c                 óô  — t         j                  j                  d«      }d\  }}d}|j                  ||f«      }d||j                  ||f«      |kD  <   t         j                  j	                  |«      }t        j
                  |j                  d   «      }| j                  ||«      \  }}	}
}t        |
d«       t        |j                  d   |«       t        t         j                  j	                  |«      |«       y )Nr    )r@   é2   gš™™™™™©?r   rd   re   s               r   Útest_m_lt_n_sparsez RRCommonTests.test_m_lt_n_sparse§   sÉ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1ØˆØ�J‰J˜˜1�vÓˆØ$%ˆˆ#�*‰*�a˜�VÓ
˜qÑ
 Ñ!Ü�y‰y×$Ñ$ QÓ'ˆÜ�H‰H�Q—W‘W˜Q‘ZÓ ˆØ"&§'¡'¨!¨Q£-ÑˆˆB�˜Ü�V˜QÔÜ�R—X‘X˜a‘[ $Ô'Ü”R—Y‘Y×*Ñ*¨2Ó.°Õ5r   c                 óô  — t         j                  j                  d«      }d\  }}d}|j                  ||f«      }d||j                  ||f«      |kD  <   t         j                  j	                  |«      }t        j
                  |j                  d   «      }| j                  ||«      \  }}	}
}t        |
d«       t        |j                  d   |«       t        t         j                  j	                  |«      |«       y )Nr    )éd   rm   g{®Gáz„?r   rd   re   s               r   Útest_m_eq_n_sparsez RRCommonTests.test_m_eq_n_sparse´   sÉ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1ØˆØ�J‰J˜˜1�vÓˆØ$%ˆˆ#�*‰*�a˜�VÓ
˜qÑ
 Ñ!Ü�y‰y×$Ñ$ QÓ'ˆÜ�H‰H�Q—W‘W˜Q‘ZÓ ˆØ"&§'¡'¨!¨Q£-ÑˆˆB�˜Ü�V˜QÔÜ�R—X‘X˜a‘[ $Ô'Ü”R—Y‘Y×*Ñ*¨2Ó.°Õ5r   c                 óð   — t        d«      \  }}}}}| j                  ||«      \  }}}}	t        |d«       t        |j                  d   d«       t        t        j
                  j                  |«      d«       y )Nr6   r   é   ©r   r)   r   r   r   r   r   ©
r$   r   r:   ÚcÚnumbersÚ_r/   r0   r1   r2   s
             r   Útest_magic_squarezRRCommonTests.test_magic_squareÁ   óc   € Ü*¨1›oÑˆˆ1ˆa�˜!Ø"&§'¡'¨!¨Q£-ÑˆˆB�˜Ü�V˜QÔÜ�R—X‘X˜a‘[ "Ô%Ü”R—Y‘Y×*Ñ*¨2Ó.°Õ3r   c                 óð   — t        d«      \  }}}}}| j                  ||«      \  }}}}	t        |d«       t        |j                  d   d«       t        t        j
                  j                  |«      d«       y )NrZ   r   é'   rq   rr   s
             r   Útest_magic_square2z RRCommonTests.test_magic_square2È   rw   r   N)Ú__name__Ú
__module__Ú__qualname__r%   r3   r;   r=   rB   rF   rL   rP   rT   rW   r[   r^   ra   rh   rk   rn   rv   rz   © r   r   r   r   $   s\   „ ò/ò ò ò'ò ò ò ò
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_resr/   r0   r1   r2   s           r   r)   zTestRRPivotSparse.rrà   s5   € Ü0´¸1³¸qÓAˆØ"(ÑˆˆB�˜Ø�z‰z‹|˜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   ú<module>r–      sp   ðñó ÷ñ õ
 'Ý DÝ LÝ MÝ Cå "ò	N÷i4ñ i4ôX,�ô ,ô
4�}ô 4ô
+ˆ}ô +ô
1˜õ 1r   