o
    Ïe6  ã                   @   s  d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dl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 G dd„ deeeƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Z d"d#„ Z!d$d%„ Z"d&S )'é    )ÚI)Úsymbols)Ú_MinimalMatrixÚ_CastableMatrix)ÚMatrixReductions)Úraises)ÚMatrixÚzeros)ÚSymbol)ÚRational)Úsqrt)Úsimplify)Úxc                   @   s   e Zd ZdS )ÚReductionsOnlyMatrixN)Ú__name__Ú
__module__Ú__qualname__© r   r   úTD:\Projects\ConvertPro\env\Lib\site-packages\sympy/matrices/tests/test_reductions.pyr      s    r   c                 C   ó   t | | dd„ ƒS )Nc                 S   s   t | |kƒS ©N)Úint©ÚiÚjr   r   r   Ú<lambda>   s    z eye_Reductions.<locals>.<lambda>©r   ©Únr   r   r   Úeye_Reductions   ó   r   c                 C   r   )Nc                 S   s   dS )Nr   r   r   r   r   r   r      s    z"zeros_Reductions.<locals>.<lambda>r   r   r   r   r   Úzeros_Reductions   r    r!   c                     sP  t dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ  ddd¡tg d¢g d¢g d¢gƒksJ ‚ˆ  ddd¡tg d¢g d¢g d¢gƒks¥J ‚ˆ jddddtg d¢g d¢g d¢gƒks¼J ‚ˆ jddddtg d¢g d¢g d¢gƒksÓJ ‚ˆ  ddd¡tg d¢g d¢g d¢gƒkséJ ‚ˆ jddddtg d¢g d¢g d¢gƒksJ ‚ˆ jddddtg d¢g d¢g d¢gƒksJ ‚ˆ  dddd¡tg d¢g d¢g d¢gƒks1J ‚ˆ jddddd tg d¢g d¢g d¢gƒksJJ ‚ˆ jddddd!tg d¢g d¢g d¢gƒkscJ ‚td"ddgd# ƒ} |  ddd¡td"ddgd# ƒksJ ‚|  ddd¡td"ddgd# ƒks’J ‚|  dddd¡td"ddgd# ƒks¦J ‚d S )$Né   c                      ó
   ˆ   d¡S ©NÚabc©Úelementary_row_opr   ©Úer   r   r      ó   
 ztest_row_op.<locals>.<lambda>c                      ó   ˆ   ¡ S r   r&   r   r(   r   r   r      ó    c                      ó   ˆ j ddddS )Nún->kné   ©ÚrowÚkr&   r   r(   r   r   r      ó    c                      ó   ˆ j ddddS )Nr.   éûÿÿÿr/   r0   r&   r   r(   r   r   r      r3   c                      r4   )Nún<->mé   r/   ©Úrow1Úrow2r&   r   r(   r   r   r      r3   c                      r4   )Nr6   r/   r7   r8   r&   r   r(   r   r   r       r3   c                      r4   )Nr6   r5   r7   r8   r&   r   r(   r   r   r   !   r3   c                      r4   )Nr6   r7   r5   r8   r&   r   r(   r   r   r   "   r3   c                      ó   ˆ j dddddS ©Nún->n+kmr7   r/   ©r9   r:   r2   r&   r   r(   r   r   r   #   ó    c                      ó   ˆ j dddddS )Nr=   r/   r7   r>   r&   r   r(   r   r   r   $   r?   c                      ó   ˆ j dddddS )Nr=   r5   r7   r/   r>   r&   r   r(   r   r   r   %   r?   c                      rA   )Nr=   r7   r5   r/   r>   r&   r   r(   r   r   r   &   r?   c                      ó   ˆ j dddddS r<   r&   r   r(   r   r   r   '   r?   r.   r   r/   ©r/   r   r   ©r   r7   r   ©r   r   r7   r7   ©r7   r   r   ©r   r/   r   r0   )r9   r2   r6   r8   )r1   r:   r=   )r7   r/   r   )r1   r2   r:   )r9   r2   r:   é   é   )r   r   Ú
ValueErrorr'   r   r   ©Úar   r(   r   Útest_row_op   ó8   ,,..,00022&&,rM   c                     sP  t dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ  ddd¡tg d¢g d¢g d¢gƒksJ ‚ˆ  ddd¡tg d¢g d¢g d¢gƒks¥J ‚ˆ jddddtg d¢g d¢g d¢gƒks¼J ‚ˆ jddddtg d¢g d¢g d¢gƒksÓJ ‚ˆ  ddd¡tg d¢g d¢g d¢gƒkséJ ‚ˆ jddddtg d¢g d¢g d¢gƒksJ ‚ˆ jddddtg d¢g d¢g d¢gƒksJ ‚ˆ  dddd¡tg d¢g d¢g d¢gƒks1J ‚ˆ jddddd tg d¢g d¢g d¢gƒksJJ ‚ˆ jddddd!tg d¢g d¢g d¢gƒkscJ ‚td"ddgd# ƒ} |  ddd¡td"ddgd# ƒksJ ‚|  ddd¡td"ddgd# ƒks’J ‚|  dddd¡td"ddgd# ƒks¦J ‚d S )$Nr"   c                      r#   r$   ©Úelementary_col_opr   r(   r   r   r   ?   r*   ztest_col_op.<locals>.<lambda>c                      r+   r   rO   r   r(   r   r   r   @   r,   c                      r-   )Nr.   r/   ©Úcolr2   rO   r   r(   r   r   r   A   r3   c                      r4   )Nr.   r5   r/   rQ   rO   r   r(   r   r   r   B   r3   c                      r4   )Nr6   r7   r/   ©Úcol1Úcol2rO   r   r(   r   r   r   C   r3   c                      r4   )Nr6   r/   r7   rS   rO   r   r(   r   r   r   D   r3   c                      r4   )Nr6   r5   r7   rS   rO   r   r(   r   r   r   E   r3   c                      r4   )Nr6   r7   r5   rS   rO   r   r(   r   r   r   F   r3   c                      r;   ©Nr=   r7   r/   ©rT   rU   r2   rO   r   r(   r   r   r   G   r?   c                      r@   )Nr=   r/   r7   rW   rO   r   r(   r   r   r   H   r?   c                      rA   )Nr=   r5   r7   r/   rW   rO   r   r(   r   r   r   I   r?   c                      rA   )Nr=   r7   r5   r/   rW   rO   r   r(   r   r   r   J   r?   c                      rB   rV   rO   r   r(   r   r   r   K   r?   r.   r   r/   rC   rD   rE   r7   rF   rG   rQ   )rT   r2   r6   rS   )rR   rU   r=   )r/   r7   r   )rR   r2   rU   )rT   r2   rU   rH   rI   )r   r   rJ   rP   r   r   rK   r   r(   r   Útest_col_op<   rN   rX   c                  C   sÌ   t dƒ} tdƒ}| jsJ ‚|jsJ ‚tddg ƒ}|jsJ ‚tddg d¢ƒ}|js*J ‚tddg d¢ƒ}|jr7J ‚tdƒ}tdd|ddgƒ}|jsIJ ‚tdd||dgƒ}|jrWJ ‚tddg d¢ƒ}|jrdJ ‚d S )	Nr"   r   rH   )r"   rH   r7   r   r   rI   )r   r   rI   r"   rH   r7   r   r7   ©	r   r   r   r7   rH   r"   r   r   r   )r!   r   Ú
is_echelonr   r
   )ZzroÚidentrL   r   r   r   r   Útest_is_echelon`   s"   






r\   c                     sÄ  t dƒ‰ tdƒ} ˆ  ¡ ˆ ksJ ‚|  ¡ | ksJ ‚tddg ƒ‰ ˆ  ¡ ˆ ks&J ‚tdddgƒ‰ ˆ  ¡ ˆ ks5J ‚‡fdd„}tddg d¢ƒ‰ tdgdgdggƒg}‡ fd	d
„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjscJ ‚|ˆ ||ƒ tddg d¢ƒ‰ g }‡ fdd
„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjsˆJ ‚|ˆ ||ƒ tddg d¢ƒ‰ ttddƒgdgdggƒttddƒgdgdggƒg}‡ fdd
„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjsÅJ ‚|ˆ ||ƒ tddg d¢ƒ‰ tdgdgdggƒg}‡ fdd
„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjsóJ ‚|ˆ ||ƒ tddg d¢ƒ‰ tdgdgdggƒtdgdgdggƒg}‡ fdd
„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjs+J ‚|ˆ ||ƒ tddg d¢ƒ‰ tdgdgdggƒg}‡ fdd
„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjsZJ ‚|ˆ ||ƒ d S )Nr"   r   r7   r/   c                    sb   |D ]}t dd„ ˆ | D ƒƒsJ ‚q|D ]}t dd„ |D ƒƒs.t dd„ ˆ | ¡  D ƒƒr.J ‚qd S )Nc                 s   ó    | ]}|j V  qd S r   ©Úis_zero©Ú.0Útr   r   r   Ú	<genexpr>‘   ó   € zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>c                 s   r]   r   r^   r`   r   r   r   rc   “   rd   c                 s   r]   r   r^   r`   r   r   r   rc   ”   rd   )ÚallZ	transpose)ÚmatÚrowsÚnullsÚv)Ú	a_echelonr   r   Úverify_row_null_space   s   €þz0test_echelon_form.<locals>.verify_row_null_space©	r7   rH   r"   é   r/   rI   é   é   é	   éþÿÿÿc                    ó   g | ]
}ˆ |d d …f ‘qS r   r   ©ra   r   rK   r   r   Ú
<listcomp>›   ó    z%test_echelon_form.<locals>.<listcomp>)	r7   rH   r"   rm   r/   rI   rn   ro   ro   c                    rr   r   r   rs   rK   r   r   rt   £   ru   )	rH   r7   r"   r   r   r   rH   r7   r"   éÿÿÿÿrH   éýÿÿÿc                    rr   r   r   rs   rK   r   r   rt   ±   ru   )	rH   r7   r"   r   r   r   r7   r7   r"   c                    rr   r   r   rs   rK   r   r   rt   ¼   ru   )	r   r"   r"   r   rH   rH   r   r7   r7   c                    rr   r   r   rs   rK   r   r   rt   Ê   ru   )rH   rH   r"   r"   r"   r   c                    rr   r   r   rs   rK   r   r   rt   Ô   ru   )	r!   r   Zechelon_formr   r   Úrangerg   rZ   r   )r)   rk   rh   rg   r   )rL   rj   r   Útest_echelon_form{   sš   ý


ý
ýü
ý
ýýüýry   c               
   C   sH  t ddg ƒ} | jdd| ksJ ‚t dddgƒ} t dddgƒ}| jdd|jdd  kr1| ks4J ‚ J ‚t ddg d¢ƒ}|jddtdgdgdggƒksNJ ‚t ddg d¢ƒ}|jddtg d¢gƒkseJ ‚t ddg d¢ƒ}|jddtg d	¢g d
¢g d¢gƒks‚J ‚t ddg d¢ƒ}t ddg d¢ƒ}t ddg d¢ƒ}t ddg d¢ƒ}|jdd|jdd  krÇ|jdd  krÇ|jdd  krÇ|ksÊJ ‚ J ‚tdƒ} tdƒ}| jdd| ksÜJ ‚|jdd|ksæJ ‚t g d¢g d¢g d¢g d¢gƒ}| ¡ \}}|tg d¢g d¢g d¢g d¢gƒksJ ‚|dksJ ‚t tddƒtddƒddgg d¢g d¢g d¢gƒ}|jddtdddtddƒgdddtd dƒgdddtd!dƒgg d"¢gƒksXJ ‚td#ƒ}t dd|ddt|ƒ|dgƒ}t|jddddt|ƒ| d  |tddƒ  |  dddt|ƒ| d  gƒD ]\}	}
t	|	|
 ƒj
s J ‚q’d S )$Nr   F)Úpivotsr7   r/   r"   )r7   rH   r"   rl   )r7   r   rv   ©r   r7   rH   )r   r   r   )	r7   rH   r"   r7   rH   r"   r7   rH   r"   )	r7   rH   r"   r   r   r   r   r   r   rY   )	r   r   r   r   r   r   r7   rH   r"   )r   r   r7   rH   rH   r5   r"   )rv   r/   rH   rH   r7   iùÿÿÿr/   )r   r   rq   rw   rw   ro   r5   )rv   r/   r   rv   rq   r7   r   )r7   r5   r   r   r7   r7   rv   )r   r   r7   r   r   rv   r7   )r   r   r   r7   r7   rq   r7   )r   r   r   r   r   r   r   )r   rH   r"   é   rH   )rm   r/   rI   rn   )ro   rp   é
   é   )é   é   é   é   i´ÿÿÿé   r5   éî   ©r   r   r   r   r   )r   Úrrefr   r   r!   r   r
   r   Úzipr   r_   )r)   rL   ÚbÚcÚdÚzrf   Zpivot_offsetsr   r   r   r   r   r   Ú	test_rrefÚ   s„   ,$ý

ÿ
þ
ýýüüýü(ÿÿýrŒ   c                     sþ   t g d¢g d¢g d¢g d¢g d¢g d¢gƒ‰ ˆ jddd	d
} ˆ jdd	ddd}ˆ jdd	dd}| d	d d …f t g d¢gƒks@J ‚|d	d d …f t g d¢gƒksQJ ‚|d	d d …f t g d¢gƒksbJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )N)r"   rm   rv   r7   )rp   r   rw   r"   )r   rH   r7   r"   )rH   r"   r   rq   )r   r"   r"   r5   )ro   r‚   r   rI   r6   rH   r/   r8   r=   r"   éüÿÿÿr>   r.   r0   )r   r"   r   r   )é   é   r   r   c                      r4   )Nr6   rH   rI   r8   r&   r   ©ÚCr   r   r   +  r3   z"test_issue_17827.<locals>.<lambda>c                      r4   )Nr.   rn   rH   r0   r&   r   r   r   r   r   ,  r3   c                      rA   )Nr=   rv   r/   rH   r>   r&   r   r   r   r   r   -  r?   )r   r'   r   rJ   )ÚDÚEÚFr   r   r   Útest_issue_17827  s"   ú	"""r•   c                  C   sj   t ddgtddt  ggƒ} |  ¡ dksJ ‚t ddtddƒƒ}| ¡ dks'J ‚tdƒ}| ¡ dks3J ‚d S )Nr7   rH   r"   r}   r   )r   r   Úrankrx   r	   )Úmr   Úpr   r   r   Ú	test_rank/  s   r™   c                  C   s¸   t dƒ\} }}}}}}}}}	}
}t| || |
 ||
 dg||||
 ||
 dg||||
 ||
 dg||||
 ||
 dg||	d| | ||
  d|	 | |	|
  dggƒ}| ¡ dksZJ ‚d S )Nz/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1r   r7   rH   rm   )r   r   r–   )ÚaxZayÚbxZbyÚcxÚcyZdxZdyÚexZeyÚt0Út1ÚMr   r   r   Útest_issue_114347  s   ÿ,ür¢   c               	   C   sð   t dƒ\} }td|  dddgd|  d|  d ddgdd|  d|  | d dgdd| | dggƒ}tdddd| d | |    gdddd| | |    gdddd| |   gg d	¢gƒ}d
}| ¡ \}}t|| ƒt|jŽ kspJ ‚||ksvJ ‚d S )Nz
nu, lambdarw   r7   r   r"   rq   rH   rv   r…   r{   )r   r   r†   r   r	   Úshape)ÚnuZlambÚAZexpected_reducedZexpected_pivotsZreducedrz   r   r   r   Útest_rank_regression_from_soA  s   ýýr¦   c                  C   sn   t g d¢g d¢g d¢g d¢gƒ} | t  d¡t  }| ¡ dks!J ‚|d  ¡ dks+J ‚|d  ¡ dks5J ‚d S )N)r7   r7   r7   r   )rq   rv   r   rv   )r   r   rv   rv   )r   r   rH   r7   rm   r"   rH   )r   Úeyer   r–   )r¥   ÚBr   r   r   Útest_issue_15872U  s
    r©   N)#Zsympy.core.numbersr   Zsympy.core.symbolr   Zsympy.matrices.commonr   r   Zsympy.matrices.matricesr   Zsympy.testing.pytestr   Zsympy.matricesr   r	   r
   r   Z(sympy.functions.elementary.miscellaneousr   Zsympy.simplify.simplifyr   Z	sympy.abcr   r   r   r!   rM   rX   r\   ry   rŒ   r•   r™   r¢   r¦   r©   r   r   r   r   Ú<module>   s0    $$_@
