U
    L?hI4  ã                   @   sÐ   d dl mZ d dlmZ d dlm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„ 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)Úraises)ÚMatrixÚzerosÚeye)ÚSymbol)ÚRational)Úsqrt)Úsimplify)Úxc                     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_op© ©Úer   úV/var/www/html/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_reductions.pyÚ<lambda>   ó    ztest_row_op.<locals>.<lambda>c                      s   ˆ   ¡ S ©Nr   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    r!   r   r   r   r   r   r      r   c                      s   ˆ j ddddS )Nr   r   r    r!   r   r   r   r   r   r      r   c                      s   ˆ j ddddS )Nr   r    r   r!   r   r   r   r   r   r      r   c                      s   ˆ j dddddS ©Nún->n+kmr    r   ©r"   r#   r   r   r   r   r   r   r      r   c                      s   ˆ j dddddS )Nr%   r   r    r&   r   r   r   r   r   r      r   c                      s   ˆ j dddddS )Nr%   r   r    r   r&   r   r   r   r   r   r      r   c                      s   ˆ j dddddS )Nr%   r    r   r   r&   r   r   r   r   r   r      r   c                      s   ˆ j dddddS r$   r   r   r   r   r   r      r   r   r   r   r    r   )r"   r   r   r!   )r   r#   r%   )r   r   r#   )r"   r   r#   é   é   )r   r   Ú
ValueErrorr   r   ÚAssertionError©Ú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   4   r   ztest_col_op.<locals>.<lambda>c                      s   ˆ   ¡ S r   r.   r   r   r   r   r   5   r   c                      s   ˆ j ddddS )Nr   r   ©Úcolr   r.   r   r   r   r   r   6   r   c                      s   ˆ j ddddS )Nr   r   r   r0   r.   r   r   r   r   r   7   r   c                      s   ˆ j ddddS )Nr   r    r   ©Úcol1Úcol2r.   r   r   r   r   r   8   r   c                      s   ˆ j ddddS )Nr   r   r    r2   r.   r   r   r   r   r   9   r   c                      s   ˆ j ddddS )Nr   r   r    r2   r.   r   r   r   r   r   :   r   c                      s   ˆ j ddddS )Nr   r    r   r2   r.   r   r   r   r   r   ;   r   c                      s   ˆ j dddddS ©Nr%   r    r   ©r3   r4   r   r.   r   r   r   r   r   <   r   c                      s   ˆ j dddddS )Nr%   r   r    r6   r.   r   r   r   r   r   =   r   c                      s   ˆ j dddddS )Nr%   r   r    r   r6   r.   r   r   r   r   r   >   r   c                      s   ˆ j dddddS )Nr%   r    r   r   r6   r.   r   r   r   r   r   ?   r   c                      s   ˆ j dddddS r5   r.   r   r   r   r   r   @   r   r   r   r   r    r0   )r3   r   r   r2   )r1   r4   r%   )r1   r   r4   )r3   r   r4   r'   r(   )r   r   r)   r/   r   r*   r+   r   r   r   Útest_col_op1   s8    4466466688&&r7   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   r'   r    r(   r   )r   r   Ú
is_echelonr*   r   r   )ZzroÚidentr,   r   r   r   r   Útest_is_echelonU   s"    






r:   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   r;   r=   r   r   r   r@   ˆ   s     c                 s   s   | ]}|j V  qd S r   r;   r=   r   r   r   r@   ‰   s     )Úallr*   Z	transpose)ÚmatÚrowsÚnullsÚv)Ú	a_echelonr   r   Úverify_row_null_space„   s
    z0test_echelon_form.<locals>.verify_row_null_spacer'   é   r(   é   é   é	   éþÿÿÿc                    s   g | ]}ˆ |d d …f ‘qS r   r   ©r>   Úir+   r   r   Ú
<listcomp>   s     z%test_echelon_form.<locals>.<listcomp>c                    s   g | ]}ˆ |d d …f ‘qS r   r   rM   r+   r   r   rO   ˜   s     éÿÿÿÿéýÿÿÿc                    s   g | ]}ˆ |d d …f ‘qS r   r   rM   r+   r   r   rO   ¦   s     c                    s   g | ]}ˆ |d d …f ‘qS r   r   rM   r+   r   r   rO   ±   s     c                    s   g | ]}ˆ |d d …f ‘qS r   r   rM   r+   r   r   rO   ¿   s     c                    s   g | ]}ˆ |d d …f ‘qS r   r   rM   r+   r   r   rO   É   s     )	r   r   Zechelon_formr*   r   ÚrangerC   r8   r	   )r   rG   rD   rC   r   )r,   rF   r   Útest_echelon_formp   sš    ý

ý
ýüýýýüýrS   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   r'   rH   r(   rI   rJ   rK   rP   r   iùÿÿÿrL   rQ   )r   r'   r   é   é
   é   é   é   é   é   i´ÿÿÿé   éî   r   )r   Úrrefr*   r   r   r	   r   r
   Úzipr   r<   )r   r,   ÚbÚcÚdÚzrB   Zpivot_offsetsr   rN   Újr   r   r   Ú	test_rrefÏ   s†    *$ ý

ÿ

þ

ý
ýüü


ý
ü(  ÿÿre   c                  C   s¢   t dƒ\} }}}tddgddgddgddggƒ}t| |||gƒ}| |¡tddgddgddgddggƒtd| | gd| d |d  g| g|ggƒfksžt‚d S )Nza b c dr   r    r'   r   rH   rL   )r   r   Zrref_rhsr*   )r,   r`   ra   rb   ÚAÚBr   r   r   Útest_rref_rhs  s      
üüürh   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   rH   rP   r    rK   rX   rQ   r   r'   rL   r   rJ   r[   r(   r   r   r!   r%   éüÿÿÿr&   r   r   rZ   é   é   c                      s   ˆ j ddddS )Nr   r'   r(   r!   r   r   ©ÚCr   r   r   0  r   z"test_issue_17827.<locals>.<lambda>c                      s   ˆ j ddddS )Nr   rI   r'   r   r   r   rl   r   r   r   1  r   c                      s   ˆ j dddddS )Nr%   rP   r   r'   r&   r   r   rl   r   r   r   2  r   )r   r   r*   r   r)   )ÚDÚEÚFr   rl   r   Útest_issue_17827  s"    





ú	&&&rq   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    r'   r   rV   r   )r   r   Úrankr*   rR   r   )ÚmÚnÚpr   r   r   Ú	test_rank4  s    rv   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    r'   rH   )r   r   rr   r*   )ZaxZayZbxZbyZcxÚcyZdxZdyÚexZeyÚt0Út1ÚMr   r   r   Útest_issue_11434<  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, lambdarQ   r    r   r   rL   r'   rP   )r   r    r'   )r   r   r^   r   r   Úshaper*   )ÚnuZlambrf   Zexpected_reducedZexpected_pivotsZreducedrT   r   r   r   Útest_rank_regression_from_soF  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   rL   rP   r'   rH   r   )r   r   r   rr   r*   )rf   rg   r   r   r   Útest_issue_15872Z  s
    0r€   N)Zsympy.core.numbersr   Zsympy.core.symbolr   Zsympy.testing.pytestr   Zsympy.matricesr   r   r   r   r	   Z(sympy.functions.elementary.miscellaneousr
   Zsympy.simplify.simplifyr   Z	sympy.abcr   r-   r7   r:   rS   re   rh   rq   rv   r|   r   r€   r   r   r   r   Ú<module>   s&   $$_A
