o
    à8VaU6  ã                   @   sü   d dl mZ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 )&é    )ÚsymbolsÚI)Ú_MinimalMatrixÚ_CastableMatrix)ÚMatrixReductions)Úraises)ÚMatrixÚzeros)ÚSymbol)ÚRational)Úsqrt)Úsimplify)Úxc                   @   s   e Zd ZdS )ÚReductionsOnlyMatrixN)Ú__name__Ú
__module__Ú__qualname__© r   r   úF/usr/lib/python3/dist-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   @   r3   c                      r4   )Nr.   r5   r/   rQ   rO   r   r(   r   r   r   A   r3   c                      r4   )Nr6   r7   r/   ©Úcol1Úcol2rO   r   r(   r   r   r   B   r3   c                      r4   )Nr6   r/   r7   rS   rO   r   r(   r   r   r   C   r3   c                      r4   )Nr6   r5   r7   rS   rO   r   r(   r   r   r   D   r3   c                      r4   )Nr6   r7   r5   rS   rO   r   r(   r   r   r   E   r3   c                      r;   ©Nr=   r7   r/   ©rT   rU   r2   rO   r   r(   r   r   r   F   r?   c                      r@   )Nr=   r/   r7   rW   rO   r   r(   r   r   r   G   r?   c                      rA   )Nr=   r5   r7   r/   rW   rO   r   r(   r   r   r   H   r?   c                      rA   )Nr=   r7   r5   r/   rW   rO   r   r(   r   r   r   I   r?   c                      rB   rV   rO   r   r(   r   r   r   J   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zroZ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   rb   ’   rc   c                 s   r\   r   r]   r_   r   r   r   rb   “   rc   )Ú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   ©r`   r   rK   r   r   Ú
<listcomp>š   ó    z%test_echelon_form.<locals>.<listcomp>)	r7   rH   r"   rl   r/   rI   rm   rn   rn   c                    rq   r   r   rr   rK   r   r   rs   ¢   rt   )	rH   r7   r"   r   r   r   rH   r7   r"   éÿÿÿÿrH   éýÿÿÿc                    rq   r   r   rr   rK   r   r   rs   °   rt   )	rH   r7   r"   r   r   r   r7   r7   r"   c                    rq   r   r   rr   rK   r   r   rs   »   rt   )	r   r"   r"   r   rH   rH   r   r7   r7   c                    rq   r   r   rr   rK   r   r   rs   É   rt   )rH   rH   r"   r"   r"   r   c                    rq   r   r   rr   rK   r   r   rs   Ó   rt   )	r!   r   Zechelon_formr   r   Úrangerf   rZ   r   )r)   rj   rg   rf   r   )rL   ri   r   Útest_echelon_formz   sš   ý


ý
ýü
ý
ýýüýrx   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"   rk   )r7   r   ru   ©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"   )ru   r/   rH   rH   r7   iùÿÿÿr/   )r   r   rp   rv   rv   rn   r5   )ru   r/   r   ru   rp   r7   r   )r7   r5   r   r   r7   r7   ru   )r   r   r7   r   r   ru   r7   )r   r   r   r7   r7   rp   r7   )r   r   r   r   r   r   r   )r   rH   r"   é   rH   )rl   r/   rI   rm   )rn   ro   é
   é   )é   é   é   é   i´ÿÿÿé   r5   éî   ©r   r   r   r   r   )r   Úrrefr   r   r!   r   r
   r   Úzipr   r^   )r)   rL   ÚbÚcÚdÚzre   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"   rl   ru   r7   )ro   r~   rv   r"   )r   rH   r7   r"   )rH   r"   r   rp   )r   r"   r"   r5   )rn   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.   rm   rH   r0   r&   r   r   r   r   r   +  r3   c                      rA   )Nr=   ru   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   Úrankrw   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   rl   )r   r   r•   )ZaxZayZbxZbyZcxÚcyZdxZdyÚexZeyZt0Út1ÚMr   r   r   Útest_issue_114346  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, lambdarv   r7   r   r"   rp   rH   ru   r„   rz   )r   r   r…   r   r	   Úshape)ZnuZlambÚAZexpected_reducedZexpected_pivotsZreducedry   r   r   r   Útest_rank_regression_from_so@  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   )rp   ru   r   ru   )r   r   ru   ru   )r   r   rH   r7   rl   r"   rH   )r   Zeyer   r•   )rŸ   ÚBr   r   r   Útest_issue_15872T  s
    r¢   N)$Zsympyr   r   Zsympy.matrices.commonr   r   Zsympy.matrices.matricesr   Zsympy.testing.pytestr   Zsympy.matricesr   r	   Zsympy.core.symbolr
   Zsympy.core.numbersr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.simplify.simplifyr   Z	sympy.abcr   r   r   r!   rM   rX   r[   rx   r‹   r”   r˜   r   r    r¢   r   r   r   r   Ú<module>   s.    $$_@
