U
    —9%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   úc/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/matrices/tests/test_reductions.pyr      s   r   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS ©N)Úint©ÚiÚjr   r   r   Ú<lambda>   ó    z eye_Reductions.<locals>.<lambda>©r   ©Únr   r   r   Úeye_Reductions   s    r   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS )Nr   r   r   r   r   r   r      r   z"zeros_Reductions.<locals>.<lambda>r   r   r   r   r   Úzeros_Reductions   s    r    c                     s–  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dddgdddgdddggƒks&t‚ˆ  ddd¡tdddgdddgdddggƒksZt‚ˆ jddddtdddgdddgdddggƒkst‚ˆ jddddtdddgdddgdddggƒksÆt‚ˆ  ddd¡tdddgdddgdddggƒksút‚ˆ jddddtdddgdddgdddggƒks0t‚ˆ jddddtdddgdddgdddggƒksft‚ˆ  dddd¡tdddgdddgdddggƒksœt‚ˆ jdddddtdddgdddgdddggƒksÔt‚ˆ jdddddtdddgdddgdddggƒkst‚tdddgd ƒ} |  ddd¡tdddgd ƒksDt‚|  ddd¡tdddgd ƒksjt‚|  dddd¡tdddgd ƒks’t‚d S )Né   c                      s
   ˆ   d¡S ©NÚabc©Úelementary_row_opr   ©Úer   r   r      r   ztest_row_op.<locals>.<lambda>c                      s   ˆ   ¡ S r   r$   r   r&   r   r   r      r   c                      s   ˆ j ddddS )Nún->kné   ©ÚrowÚkr$   r   r&   r   r   r      r   c                      s   ˆ j ddddS )Nr(   éûÿÿÿr)   r*   r$   r   r&   r   r   r      r   c                      s   ˆ j ddddS )Nún<->mé   r)   ©Úrow1Úrow2r$   r   r&   r   r   r      r   c                      s   ˆ j ddddS )Nr.   r)   r/   r0   r$   r   r&   r   r   r       r   c                      s   ˆ j ddddS )Nr.   r-   r/   r0   r$   r   r&   r   r   r   !   r   c                      s   ˆ j ddddS )Nr.   r/   r-   r0   r$   r   r&   r   r   r   "   r   c                      s   ˆ j dddddS ©Nún->n+kmr/   r)   ©r1   r2   r,   r$   r   r&   r   r   r   #   r   c                      s   ˆ j dddddS )Nr4   r)   r/   r5   r$   r   r&   r   r   r   $   r   c                      s   ˆ j dddddS )Nr4   r-   r/   r)   r5   r$   r   r&   r   r   r   %   r   c                      s   ˆ j dddddS )Nr4   r/   r-   r)   r5   r$   r   r&   r   r   r   &   r   c                      s   ˆ j dddddS r3   r$   r   r&   r   r   r   '   r   r(   r   r)   r/   r*   )r1   r,   r.   r0   )r+   r2   r4   )r+   r,   r2   )r1   r,   r2   é   é   )r   r   Ú
ValueErrorr%   r   ÚAssertionErrorr   ©Úar   r&   r   Útest_row_op   s8    4466466688&&r<   c                     s–  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dddgdddgdddggƒks&t‚ˆ  ddd¡tdddgdddgdddggƒksZt‚ˆ jddddtdddgdddgdddggƒkst‚ˆ jddddtdddgdddgdddggƒksÆt‚ˆ  ddd¡tdddgdddgdddggƒksút‚ˆ jddddtdddgdddgdddggƒks0t‚ˆ jddddtdddgdddgdddggƒksft‚ˆ  dddd¡tdddgdddgdddggƒksœt‚ˆ jdddddtdddgdddgdddggƒksÔt‚ˆ jdddddtdddgdddgdddggƒkst‚tdddgd ƒ} |  ddd¡tdddgd ƒksDt‚|  ddd¡tdddgd ƒksjt‚|  dddd¡tdddgd ƒks’t‚d S )Nr!   c                      s
   ˆ   d¡S r"   ©Úelementary_col_opr   r&   r   r   r   ?   r   ztest_col_op.<locals>.<lambda>c                      s   ˆ   ¡ S r   r=   r   r&   r   r   r   @   r   c                      s   ˆ j ddddS )Nr(   r)   ©Úcolr,   r=   r   r&   r   r   r   A   r   c                      s   ˆ j ddddS )Nr(   r-   r)   r?   r=   r   r&   r   r   r   B   r   c                      s   ˆ j ddddS )Nr.   r/   r)   ©Úcol1Úcol2r=   r   r&   r   r   r   C   r   c                      s   ˆ j ddddS )Nr.   r)   r/   rA   r=   r   r&   r   r   r   D   r   c                      s   ˆ j ddddS )Nr.   r-   r/   rA   r=   r   r&   r   r   r   E   r   c                      s   ˆ j ddddS )Nr.   r/   r-   rA   r=   r   r&   r   r   r   F   r   c                      s   ˆ j dddddS ©Nr4   r/   r)   ©rB   rC   r,   r=   r   r&   r   r   r   G   r   c                      s   ˆ j dddddS )Nr4   r)   r/   rE   r=   r   r&   r   r   r   H   r   c                      s   ˆ j dddddS )Nr4   r-   r/   r)   rE   r=   r   r&   r   r   r   I   r   c                      s   ˆ j dddddS )Nr4   r/   r-   r)   rE   r=   r   r&   r   r   r   J   r   c                      s   ˆ j dddddS rD   r=   r   r&   r   r   r   K   r   r(   r   r)   r/   r?   )rB   r,   r.   rA   )r@   rC   r4   )r@   r,   rC   )rB   r,   rC   r6   r7   )r   r   r8   r>   r   r9   r   r:   r   r&   r   Útest_col_op<   s8    4466466688&&rF   c                  C   sê   t dƒ} tdƒ}| jst‚|js$t‚tddg ƒ}|js:t‚tddddddddgƒ}|js\t‚tddddddddgƒ}|jr~t‚tdƒ}tdd|ddgƒ}|js¢t‚tdd||dgƒ}|jr¾t‚tdddddddddddg	ƒ}|jræt‚d S )Nr!   r   r6   r/   r7   r   )r    r   Ú
is_echelonr9   r   r
   )ZzroÚidentr;   r   r   r   r   Útest_is_echelon`   s"    






rI   c                     s  t dƒ‰ tdƒ} ˆ  ¡ ˆ ks t‚|  ¡ | ks0t‚tddg ƒ‰ ˆ  ¡ ˆ ksLt‚tdddgƒ‰ ˆ  ¡ ˆ ksjt‚‡fdd„}tdddddddd	d
ddg	ƒ‰ tdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjsÔt‚|ˆ ||ƒ tdddddddd	d
ddg	ƒ‰ g }‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjs.t‚|ˆ ||ƒ tdddddddddddg	ƒ‰ 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¸t‚|ˆ ||ƒ tdddddddddddg	ƒ‰ tdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjs$t‚|ˆ ||ƒ tdddddddddddg	ƒ‰ 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¢t‚|ˆ ||ƒ tddddddddgƒ‰ tdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjst‚|ˆ ||ƒ d S )Nr!   r   r/   r)   c                    sb   |D ]}t dd„ ˆ | D ƒƒst‚q|D ]4}t dd„ |D ƒƒs(t dd„ ˆ | ¡  D ƒƒr(t‚q(d S )Nc                 s   s   | ]}|j V  qd S r   ©Úis_zero©Ú.0Útr   r   r   Ú	<genexpr>‘   s     zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r   rJ   rL   r   r   r   rO   “   s     c                 s   s   | ]}|j V  qd S r   rJ   rL   r   r   r   rO   ”   s     )Úallr9   Z	transpose)ÚmatÚrowsÚnullsÚv)Ú	a_echelonr   r   Úverify_row_null_space   s
    z0test_echelon_form.<locals>.verify_row_null_spacer6   é   r7   é   é   é	   éþÿÿÿc                    s   g | ]}ˆ |d d …f ‘qS r   r   ©rM   r   r:   r   r   Ú
<listcomp>›   s     z%test_echelon_form.<locals>.<listcomp>c                    s   g | ]}ˆ |d d …f ‘qS r   r   r\   r:   r   r   r]   £   s     éÿÿÿÿéýÿÿÿc                    s   g | ]}ˆ |d d …f ‘qS r   r   r\   r:   r   r   r]   ±   s     c                    s   g | ]}ˆ |d d …f ‘qS r   r   r\   r:   r   r   r]   ¼   s     c                    s   g | ]}ˆ |d d …f ‘qS r   r   r\   r:   r   r   r]   Ê   s     c                    s   g | ]}ˆ |d d …f ‘qS r   r   r\   r:   r   r   r]   Ô   s     )
r    r   Zechelon_formr9   r   r   ÚrangerR   rG   r   )r'   rV   rS   rR   r   )r;   rU   r   Útest_echelon_form{   sš    ý

ý
ýüýýýüýra   c                  C   s  t ddg ƒ} | jdd| ks t‚t dddgƒ} t dddgƒ}| jdd|jdd  kr`| ksfn t‚t dddddgƒ}|jddtdgdgdggƒksœt‚t dddddgƒ}|jddtdddggƒksÎt‚t dddddddd	d
ddg	ƒ}|jddtdddgdddgdddggƒkst‚t dddddddddddg	ƒ}t dddddddddddg	ƒ}t dddddddddddg	ƒ}t dddddddddddg	ƒ}|jdd|jdd  kræ|jdd  kræ|jdd  kræ|ksìn t‚tdƒ} tdƒ}| jdd| kst‚|jdd|ks(t‚t dddddddgdddddddgdddddddgdddddddggƒ}| ¡ \}}|tdddddddgdddddddgdddddddgdddddddggƒksÎt‚|dksÜt‚t tddƒtddƒddgddd	d
gddddgddddg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ddddggƒkslt‚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àt‚qàd S )Nr   F)Úpivotsr/   r)   r!   r6   rW   r7   rX   rY   rZ   r^   r-   iùÿÿÿr[   r_   )r   r6   r!   é   é
   é   é   é   é   é   i´ÿÿÿé   éî   r   )r   Úrrefr9   r   r   r    r   r
   r   Úzipr   rK   )r'   r;   ÚbÚcÚdÚzrQ   Zpivot_offsetsr   r   r   r   r   r   Ú	test_rrefÚ   s†    *$ ý

ÿ

þ

ý
ýüü


ý
ü(  ÿÿrr   c               
      s"  t ddddgddddgdd	ddgd	ddd
gddddgddddggƒ‰ ˆ jdd	dd} ˆ jddddd}ˆ jddd	d}| dd d …f t dd	ddggƒksœt‚|dd d …f t ddddggƒksÂt‚|dd d …f t ddddggƒksèt‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr!   rW   r^   r/   rZ   rf   r_   r   r6   r[   r-   rY   ri   r7   r.   r)   r0   r4   éüÿÿÿr5   r(   r*   rh   é   é   c                      s   ˆ j ddddS )Nr.   r6   r7   r0   r$   r   ©ÚCr   r   r   +  r   z"test_issue_17827.<locals>.<lambda>c                      s   ˆ j ddddS )Nr(   rX   r6   r*   r$   r   rv   r   r   r   ,  r   c                      s   ˆ j dddddS )Nr4   r^   r)   r6   r5   r$   r   rv   r   r   r   -  r   )r   r%   r9   r   r8   )ÚDÚEÚFr   rv   r   Útest_issue_17827  s"    





ú	&&&r{   c                  C   sj   t ddgtddt  ggƒ} |  ¡ dks,t‚t ddtddƒƒ}| ¡ dksNt‚tdƒ}| ¡ dksft‚d S )Nr/   r6   r!   rd   r   )r   r   Úrankr9   r`   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s´t‚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   r/   r6   rW   )r   r   r|   r9   )ZaxZayZbxZbyZ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ddddggƒ}d	}| ¡ \}}t|| ƒt|jŽ ksät‚||ksðt‚d S )
Nz
nu, lambdar_   r/   r   r!   r[   r6   r^   )r   r/   r6   )r   r   rl   r   r	   Úshaper9   )ÚnuZlambÚAZexpected_reducedZexpected_pivotsZreducedrb   r   r   r   Útest_rank_regression_from_soA  s    ý
ýr‰   c                  C   s~   t ddddgddddgddddgddddggƒ} | t  d¡t  }| ¡ dksRt‚|d  ¡ dksft‚|d  ¡ dkszt‚d S )Nr/   r   r[   r^   r6   rW   r!   )r   Úeyer   r|   r9   )rˆ   ÚBr   r   r   Útest_issue_15872U  s
    0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    r<   rF   rI   ra   rr   r{   r   r…   r‰   rŒ   r   r   r   r   Ú<module>   s.   $$_@
