a
    kº”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                     sZ  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s J ‚ˆ  ddd¡tg d¢g d¢g d¢gƒksNJ ‚ˆ 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slJ ‚ˆ jddddd tg d¢g d¢g d¢gƒksžJ ‚ˆ jddddd!tg d¢g d¢g d¢gƒksÐJ ‚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sVJ ‚d S )$Né   c                      s
   ˆ   d¡S ©NÚabc©Úelementary_row_op© ©Úer   úR/var/www/auris/lib/python3.9/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   )r"   r   r   r!   )r   r#   r%   )r    r   r   )r   r   r#   )r"   r   r#   é   é   )r   r   Ú
ValueErrorr   r   ©Úar   r   r   Útest_row_op   s8    ..00.00022&&r1   c                     sZ  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s J ‚ˆ  ddd¡tg d¢g d¢g d¢gƒksNJ ‚ˆ 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slJ ‚ˆ jddddd tg d¢g d¢g d¢gƒksžJ ‚ˆ jddddd!tg d¢g d¢g d¢gƒksÐJ ‚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sVJ ‚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   r2   r   r   r   r   r   5   r   c                      s   ˆ j ddddS )Nr   r   ©Úcolr   r2   r   r   r   r   r   6   r   c                      s   ˆ j ddddS )Nr   r   r   r4   r2   r   r   r   r   r   7   r   c                      s   ˆ j ddddS )Nr   r    r   ©Úcol1Úcol2r2   r   r   r   r   r   8   r   c                      s   ˆ j ddddS )Nr   r   r    r6   r2   r   r   r   r   r   9   r   c                      s   ˆ j ddddS )Nr   r   r    r6   r2   r   r   r   r   r   :   r   c                      s   ˆ j ddddS )Nr   r    r   r6   r2   r   r   r   r   r   ;   r   c                      s   ˆ j dddddS ©Nr%   r    r   ©r7   r8   r   r2   r   r   r   r   r   <   r   c                      s   ˆ j dddddS )Nr%   r   r    r:   r2   r   r   r   r   r   =   r   c                      s   ˆ j dddddS )Nr%   r   r    r   r:   r2   r   r   r   r   r   >   r   c                      s   ˆ j dddddS )Nr%   r    r   r   r:   r2   r   r   r   r   r   ?   r   c                      s   ˆ j dddddS r9   r2   r   r   r   r   r   @   r   r   r   r   r'   r(   r)   r    r*   r+   r4   )r7   r   r   r6   )r5   r8   r%   )r   r    r   )r5   r   r8   )r7   r   r8   r,   r-   )r   r   r.   r3   r   r/   r   r   r   Útest_col_op1   s8    ..00.00022&&r;   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sTJ ‚tddg d¢ƒ}|jrnJ ‚tdƒ}tdd|ddgƒ}|js’J ‚tdd||dgƒ}|jr®J ‚tddg d¢ƒ}|jrÈJ ‚d S )	Nr   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   Ú
is_echelonr   r   )ZzroÚidentr0   r   r   r   r   Útest_is_echelonU   s"    






r?   c                     sÊ  t dƒ‰ tdƒ} ˆ  ¡ ˆ ks J ‚|  ¡ | ks0J ‚tddg ƒ‰ ˆ  ¡ ˆ ksLJ ‚tdddgƒ‰ ˆ  ¡ ˆ ksjJ ‚‡fdd„}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¢ƒ‰ 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sºJ ‚|ˆ ||ƒ d S )Nr   r   r    r   c                    sb   |D ]}t dd„ ˆ | D ƒƒsJ ‚q|D ]4}t dd„ |D ƒƒs(t dd„ ˆ | ¡  D ƒƒr(J ‚q(d S )Nc                 s   s   | ]}|j V  qd S r   ©Úis_zero©Ú.0Útr   r   r   Ú	<genexpr>†   r   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r   r@   rB   r   r   r   rE   ˆ   r   c                 s   s   | ]}|j V  qd S r   r@   rB   r   r   r   rE   ‰   r   )ÚallZ	transpose)ÚmatÚrowsÚnullsÚv)Ú	a_echelonr   r   Úverify_row_null_space„   s
    z0test_echelon_form.<locals>.verify_row_null_space©	r    r,   r   é   r   r-   é   é   é	   éþÿÿÿc                    s   g | ]}ˆ |d d …f ‘qS r   r   ©rC   Úir/   r   r   Ú
<listcomp>   r   z%test_echelon_form.<locals>.<listcomp>)	r    r,   r   rN   r   r-   rO   rP   rP   c                    s   g | ]}ˆ |d d …f ‘qS r   r   rS   r/   r   r   rU   ˜   r   )	r,   r    r   r   r   r   r,   r    r   éÿÿÿÿr,   éýÿÿÿc                    s   g | ]}ˆ |d d …f ‘qS r   r   rS   r/   r   r   rU   ¦   r   )	r,   r    r   r   r   r   r    r    r   c                    s   g | ]}ˆ |d d …f ‘qS r   r   rS   r/   r   r   rU   ±   r   )	r   r   r   r   r,   r,   r   r    r    c                    s   g | ]}ˆ |d d …f ‘qS r   r   rS   r/   r   r   rU   ¿   r   )r,   r,   r   r   r   r   c                    s   g | ]}ˆ |d d …f ‘qS r   r   rS   r/   r   r   rU   É   r   )r   r   Zechelon_formr   ÚrangerH   r=   r	   )r   rL   rI   rH   r   )r0   rK   r   Útest_echelon_formp   sš    ý

ý
ýüýýýüýrY   c               
   C   sR  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r`| ksfn J ‚t ddg d¢ƒ}|jddt dgdgdggƒksšJ ‚t ddg d¢ƒ}|jddt g d¢gƒksÈJ ‚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šn 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sºJ ‚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)Úpivotsr    r   r   )r    r,   r   rM   )r    r   rV   ©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   r   r   r   r    r,   r   )r   r   r    r,   r,   r   r   )rV   r   r,   r,   r    iùÿÿÿr   )r   r   rR   rW   rW   rP   r   )rV   r   r   rV   rR   r    r   )r    r   r   r   r    r    rV   )r   r   r    r   r   rV   r    )r   r   r   r    r    rR   r    )r   r   r   r   r   r   r   )r   r,   r   é   r,   )rN   r   r-   rO   )rP   rQ   é
   é   )é   é   é   é   i´ÿÿÿé   r   éî   ©r   r   r   r   r   )
r   Úrrefr   r   r	   r   r
   Úzipr   rA   )r   r0   ÚbÚcÚdÚzrG   Zpivot_offsetsr   rT   Újr   r   r   Ú	test_rrefÏ   s‚    *$ý

ÿ

þ

ý
ýüüýü(ÿÿrm   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žJ ‚d S )Nza b c dr   r    r,   r   rN   rR   )r   r   Zrref_rhs)r0   rh   ri   rj   ÚAÚBr   r   r   Útest_rref_rhs  s      
üüürp   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s¢J ‚|d	d d …f t g d¢gƒksÄJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )N)r   rN   rV   r    )rQ   r_   rW   r   )r   r,   r    r   )r,   r   r   rR   )r   r   r   r   )rP   rb   r   r-   r   r,   r   r!   r%   r   éüÿÿÿr&   r   r   )r   r   r   ra   )é   é   r   r_   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   rO   r,   r   r   r   rt   r   r   r   1  r   c                      s   ˆ j dddddS )Nr%   rV   r   r,   r&   r   r   rt   r   r   r   2  r   )r   r   r   r.   )ÚDÚEÚFr   rt   r   Útest_issue_17827  s"    ú	"""ry   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sNJ ‚tdƒ}| ¡ dksfJ ‚d S )Nr    r,   r   r]   r   )r   r   ÚrankrX   r   )ÚmÚnÚpr   r   r   Ú	test_rank4  s    r~   c                  C   s¸   t dƒ\} }}}}}}}}}	}
}t| || |
 ||
 dg||||
 ||
 dg||||
 ||
 dg||||
 ||
 dg||	d| | ||
  d|	 | |	|
  dggƒ}| ¡ dks´J ‚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,   rN   )r   r   rz   )ÚaxZayÚ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g d	¢gƒ}d
}| ¡ \}}t|| ƒt|jŽ ksàJ ‚||ksìJ ‚d S )Nz
nu, lambdarW   r    r   r   rR   r,   rV   re   r[   )r   r   rf   r   r   Úshape)ÚnuZlambrn   Zexpected_reducedZexpected_pivotsZreducedrZ   r   r   r   Útest_rank_regression_from_soF  s    ýýr‰   c                  C   sn   t g d¢g d¢g d¢g d¢gƒ} | t  d¡t  }| ¡ dksBJ ‚|d  ¡ dksVJ ‚|d  ¡ dksjJ ‚d S )N)r    r    r    r   )rR   rV   r   rV   )r   r   rV   rV   )r   r   r,   r    rN   r   r,   )r   r   r   rz   )rn   ro   r   r   r   Útest_issue_15872Z  s
     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   r1   r;   r?   rY   rm   rp   ry   r~   r†   r‰   rŠ   r   r   r   r   Ú<module>   s&   $$_A
