§
    µ³Ù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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© ó    úb/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/tests/test__remove_redundancy.pyÚsetup_moduler      s   € Ý„I‡N‚N�4ÑÔÐÐÐ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ÝŒv�d˜d’lÑ#Ô#ð Ø�ðð �5�5ð ð Œ7�1Œ:�œ×.Ò.¨qÑ1Ô1ÐMÐMÒMÐMµR´Y×5JÒ5JÈ1Ñ5MÔ5MÒ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�^Š^˜A˜qÑ!Ô!ˆÝŒY�^Š^˜AÑÔˆØ"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý˜˜BÑÔÐÝ˜˜BÑÔÐÝ�V˜QÑÔÐÐÐ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   € ÝŒF�1‰IŒIˆØˆˆ!ˆQˆQˆQˆ$‰ÝŒI�NŠN˜1ÑÔˆØ"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜Ý�V˜QÑÔÐÐÐ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¤   € ÝŒF�1‰IŒIˆØˆˆ!ˆQˆQˆQˆ$‰ÝŒI�NŠN˜1ÑÔˆØˆˆ!‰Ø"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜Ý�V˜QÑÔÐÝ˜˜A˜q !˜f a a a˜iœLÑ)Ô)Ð)Ý˜˜A˜q !˜fœIÑ&Ô&Ð&Ð&Ð&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�^Š^˜A˜qÑ!Ô!ˆÝŒY�^Š^˜AÑÔˆØ"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý�V˜QÑÔÐÐÐ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�^Š^˜A˜qÑ!Ô!ˆÝŒY�^Š^˜AÑÔˆØ˜˜2˜q˜q˜q˜5œ	‘Mˆˆ2ˆqˆqˆqˆ5‰	Ø"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý�V˜QÑÔÐÐÐ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�^Š^˜A˜qÑ!Ô!ˆÝŒY�^Š^˜AÑÔˆÝ”I˜a !™eÑ$Ô$×(Ò(¨¨C¨R¨C¬Ñ1Ô1ˆˆ2ˆqˆqˆqˆ5‰	Ø"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý�V˜QÑÔÐÐÐ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�^Š^˜A˜qÑ!Ô!ˆÝŒY�^Š^˜AÑÔˆÝŒI�OŠO˜B˜r ˜r 1 1 1˜uœI r¨"¨1¨"¤vÑ.Ô.ˆØ�A�B�B˜˜˜�E”—’˜qÑ!Ô!ˆˆ1ˆ2ˆ2‰Ø"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý�V˜QÑÔÐÝ�R”X˜a”[ !Ñ$Ô$Ð$Ý•R”Y×*Ò*¨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ÝŒX�q˜!�fÑÔˆØˆˆ1ˆ1ˆ1ˆaˆ4‰ÝŒW�Q‰ZŒZˆØ"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý�V˜QÑÔÐÝ˜˜B˜q ˜s A A A˜vœJÑ'Ô'Ð'Ý˜˜B˜qœEÑ"Ô"Ð"Ð"Ð"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�^Š^˜A˜qÑ!Ô!ˆÝŒY�^Š^˜AÑÔˆÝ”I˜a !™eÑ$Ô$×(Ò(¨¨C¨R¨C¬Ñ1Ô1ˆˆ2ˆqˆqˆqˆ5‰	Ý”˜1˜q™5Ñ!Ô!×%Ò% b¨¨"¨¤gÑ.Ô.ˆˆ2‰Ø"&§'¢'¨"¨b¡/¤/ÑˆˆB�˜Ý�V˜QÑÔÐÝ�R”X˜a”[ !Ñ$Ô$Ð$Ý•R”Y×*Ò*¨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È   € ÝŒG�F‰OŒOˆØˆˆ!ˆRˆaˆRˆ%‰Øˆˆ!ˆQˆRˆRˆ%‰Øˆˆ!ˆ"ˆ"ˆcˆc�ˆcˆ'‰
Øˆˆ!ˆRˆaˆRˆ%‰Øˆˆ!ˆQˆRˆRˆ%‰ÝŒH�Q”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         ¦  «        }|                      ||¦  «        \  }}}}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‡   € ÝŒF�1‰IŒIˆØˆˆ&‰	Øˆˆ"ˆaˆaˆaˆ%‰ÝŒH�Q”W˜Q”ZÑ Ô ˆØ"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜ÝÕ" 2 qÑ)Ô)Ñ*Ô*Ð*Ý�V˜QÑÔÐÐÐ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¤   € ÝŒF�1‰IŒIˆØˆˆ&‰	Øˆˆ"ˆaˆaˆaˆ%‰ÝŒI�NŠN˜1œ7 1œ:Ñ&Ô&ˆÝ”�q˜˜"˜”v‘”ˆˆ"‰Ø"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜ÝÕ" 2 qÑ)Ô)Ñ*Ô*Ð*Ý�V˜QÑÔÐÐÐ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ØˆÝŒI�NŠN˜1˜aÑ Ô ˆØ&'ˆ�"Œ)�.Š.˜˜AÑ
Ô
 Ò
"Ñ#ÝŒy×$Ò$ QÑ'Ô'ˆÝŒH�Q”W˜Q”ZÑ Ô ˆØ"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜Ý�V˜QÑÔÐÝ�R”X˜a”[ $Ñ'Ô'Ð'Ý•R”Y×*Ò*¨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ØˆÝŒI�NŠN˜1˜aÑ Ô ˆØ&'ˆ�"Œ)�.Š.˜˜AÑ
Ô
 Ò
"Ñ#ÝŒy×$Ò$ QÑ'Ô'ˆÝŒH�Q”W˜Q”ZÑ Ô ˆØ"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜Ý�V˜QÑÔÐÝ�R”X˜a”[ $Ñ'Ô'Ð'Ý•R”Y×*Ò*¨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{®Gáz„?r   re   rf   s              r   Útest_m_eq_n_sparsez RRCommonTests.test_m_eq_n_sparseµ   sè   € Ý
Œ	�Š�tÑÔÐØ‰ˆˆ1ØˆÝŒI�NŠN˜1˜aÑ Ô ˆØ&'ˆ�"Œ)�.Š.˜˜AÑ
Ô
 Ò
"Ñ#ÝŒy×$Ò$ QÑ'Ô'ˆÝŒH�Q”W˜Q”ZÑ Ô ˆØ"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜Ý�V˜QÑÔÐÝ�R”X˜a”[ $Ñ'Ô'Ð'Ý•R”Y×*Ò*¨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Â   ó~   € Ý*¨1™oœoÑˆˆ1ˆa�˜!Ø"&§'¢'¨!¨Q¡-¤-ÑˆˆB�˜Ý�V˜QÑÔÐÝ�R”X˜a”[ "Ñ%Ô%Ð%Ý•R”Y×*Ò*¨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�˜Ø�zŠz‰|Œ|˜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4ðR,ð ,ð ,ð ,ð ,�ñ ,ô ,ð ,ð
4ð 4ð 4ð 4ð 4�}ñ 4ô 4ð 4ð
+ð +ð +ð +ð +ˆ}ñ +ô +ð +ð
1ð 1ð 1ð 1ð 1˜ñ 1ô 1ð 1ð 1ð 1r   