U
    L?h,%  ã                   @   sè   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ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d„ Z%dd„ Z&d S )!é    )Úraises)ÚZZÚQQ)ÚDDM)Úddm_transposeÚddm_iaddÚddm_isubÚddm_inegÚddm_imatmulÚddm_imulÚ	ddm_irrefÚddm_idetÚddm_iinvÚddm_iluÚddm_ilu_splitÚddm_ilu_solveÚddm_berk)ÚDMDomainErrorÚDMNonInvertibleMatrixErrorÚDMNonSquareMatrixErrorÚDMShapeErrorc                  C   s0   ddgddgg} t | ƒddgddggks,t‚d S )Né   é   é   é   )r   ÚAssertionError©Úa© r   úW/var/www/html/venv/lib/python3.8/site-packages/sympy/polys/matrices/tests/test_dense.pyÚtest_ddm_transpose   s    r    c                  C   sF   ddgddgg} ddgddgg}t | |ƒ | ddgd	d
ggksBt‚d S )Nr   r   r   r   é   é   é   é   é
   é   )r   r   ©r   Úbr   r   r   Útest_ddm_iadd   s    
r)   c                  C   sF   ddgddgg} ddgddgg}t | |ƒ | d	d	gd	d	ggksBt‚d S )
Nr   r   r   r   r!   r"   r#   r$   éüÿÿÿ)r   r   r'   r   r   r   Útest_ddm_isub   s    
r+   c                  C   s4   ddgddgg} t | ƒ | ddgddggks0t‚d S )	Nr   r   r   r   éÿÿÿÿéþÿÿÿéýÿÿÿr*   )r	   r   r   r   r   r   Útest_ddm_ineg&   s    r/   c                  C   sh   ddgddgg} t | dƒ | ddgddggks2t‚ddgddgg} t | dƒ | ddgddggksdt‚d S )Nr   r   r   r   r"   r$   r   )r   r   r   r   r   r   Útest_ddm_matmul,   s    

r0   c                  C   sê   dddgdddgg} ddgddgddgg}ddgddgg}t || |ƒ |dd	gd
dggks^t‚dddgdddgdddgg}t ||| ƒ |dddgdddgdddggksªt‚dgdgdgg}dgdgg}t || |ƒ |dgdggksæt‚d S )Nr   r   r   r   r!   r"   r   é   é   é1   é@   é	   r&   é   é   é   é!   é   é(   é3   é   é    )r
   r   )r   r(   Úc1Úc2Úb3Úc3r   r   r   Útest_ddm_imatmul6   s    $rC   c                  C   s  g } g }g }t | ƒ|kst‚| |ks(t‚tdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgg}ddg}t | ƒ|ks€t‚| |ksŒt‚tdƒtdƒtdƒgtdƒtdƒtdƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgg}ddg}t | ƒ|ksüt‚| |ks
t‚tdƒtdƒtdƒgtdƒtdƒtdƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgg}ddg}t | ƒ|ks|t‚| |ksŠt‚tdƒtdƒgtdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgtdƒtdƒgg}ddg}t | ƒ|ks t‚| |kst‚tdƒtdƒtdƒgtdƒtdƒtdƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgg}ddg}t | ƒ|ks€t‚| |ksŽt‚tdƒtdƒgtdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgtdƒtdƒgg}ddg}t | ƒ|kst‚| |kst‚d S )Nr   r   r   r   r   r,   )r   r   r   )ÚAZArZpivotsr   r   r   Útest_ddm_irrefH   sF      ,,,,..,,..rE   c                  C   sf  g } t | tƒtdƒkst‚tdƒgg} t | tƒtdƒks<t‚tdƒtdƒgtdƒtdƒgg} t | tƒtdƒksrt‚tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒgg} t | tƒtdƒksÈt‚tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒgg} t | tƒtdƒks t‚tddƒtddƒgtddƒtddƒgg} t | tƒtdd	ƒksbt‚d S )
Nr   r   r   r   r-   r!   r,   r   é   )r   r   r   r   ©rD   r   r   r   Útest_ddm_idet{   s     @@(rH   c                     s\  g ‰ g ‰t ˆˆ tƒ ˆˆ ks t‚g ‰ g ‰tt‡ ‡fdd„ƒ tdƒtdƒgg‰ tdƒtdƒgg‰tt‡ ‡fdd„ƒ tddƒtddƒgtddƒtddƒgg‰ tdƒtdƒgtdƒtdƒgg‰td	dƒtddƒgtddƒtd
dƒgg} t ˆˆ tƒ ˆ| ksüt‚tddƒtddƒgtddƒtddƒgg‰ tdƒtdƒgtdƒtdƒgg‰tt‡ ‡fdd„ƒ d S )Nc                      s   t ˆˆ tƒS ©N)r   r   r   ©rD   ZAinvr   r   Ú<lambda>—   ó    ztest_ddm_inv.<locals>.<lambda>r   r   r   c                      s   t ˆˆ tƒS rI   ©r   r   r   rJ   r   r   rK   ›   rL   r   r   r-   r,   c                      s   t ˆˆ tƒS rI   rM   r   rJ   r   r   rK   ¥   rL   )r   r   r   r   r   r   r   )ZAinv_expectedr   rJ   r   Útest_ddm_inv   s$    ( (( rN   c                  C   sd  g } g }t | ƒ}| |kst‚|g ks(t‚g g} g g}t | ƒ}| |ksHt‚|g ksTt‚tdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgg}t | ƒ}| |ks¨t‚|g ks´t‚tdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgg}t | ƒ}| |ks
t‚|dgkst‚tdƒtdƒtdƒgtdƒtdƒtd	ƒgtd
ƒtdƒtdƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgtd
ƒtdƒtdƒgg}t | ƒ}| |ks°t‚|g ks¾t‚tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒgg}t | ƒ}| |ksTt‚|dgksdt‚tdƒtdƒtdƒgtdƒtdƒtd	ƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgg}t | ƒ}| |ksÒt‚|g ksàt‚tdƒtdƒgtdƒtdƒgtdƒtd	ƒgg} tdƒtdƒgtdƒtdƒgtdƒtdƒgg}t | ƒ}| |ksRt‚|g ks`t‚d S )Nr   r   r   r   r-   r   ©r   r   r!   r"   r#   r$   r5   r.   éúÿÿÿr,   )r   r   )r   r   r   )rD   ZAluÚswapsr   r   r   Útest_ddm_ilu¨   sP        @@@@,,..rR   c                  C   s.  g } g }g }g }t || tƒ}| |ks(t‚||ks4t‚|g ks@t‚g g} tdƒgg}g g}tdƒgg}t || tƒ}| |ks|t‚||ksˆt‚|g ks”t‚tdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgg}tdƒtdƒgtdƒtdƒgg}tdƒtdƒgtdƒtdƒgg}t || tƒ}| |ks.t‚||ks<t‚|g ksJt‚tdƒtdƒtdƒgtdƒtdƒtdƒgg} tdƒtdƒgtdƒtdƒgg}tdƒtdƒtdƒgtdƒtd	ƒtd
ƒgg}tdƒtdƒgtdƒtdƒgg}t || tƒ}| |ksüt‚||ks
t‚|g kst‚tdƒtdƒgtdƒtdƒgtdƒtdƒgg} tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒgg}tdƒtdƒgtdƒtdƒgtdƒtdƒgg}tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒgg}t || tƒ}| |kst‚||kst‚|g ks*t‚d S )Nr   r   r   r   r   r-   r!   r"   r.   rP   )r   r   r   )ÚUÚLZUexpZLexprQ   r   r   r   Útest_ddm_ilu_splitÚ   sP        , , .@.@rU   c                     s   t dƒt dƒgt dƒt dƒgg‰t dƒt dƒgt dƒt dƒgg‰ g ‰tt dƒgt dƒggdt ƒ‰tt dƒgt dƒggdt ƒ‰tt dƒgt ddƒggdt ƒ} tˆˆ ˆˆˆƒ ˆ| ks¶t‚t dƒt dƒgt dƒt dƒgg‰t dƒt dƒgt dƒt dƒgg‰ dg‰tt dƒgt dƒggdt ƒ‰tt dƒgt dƒggdt ƒ‰tt dƒgt ddƒggdt ƒ} tˆˆ ˆˆˆƒ ˆ| kspt‚t dƒt dƒgt dƒt dƒgt dƒt dƒgg‰t dƒt dƒt dƒgt dƒt dƒt dƒgt d	ƒt dƒt dƒgg‰ g ‰tt dƒgt dƒgt dƒggd
t ƒ‰tt dƒgt dƒggdt ƒ‰tt dƒgt ddƒggdt ƒ} tˆˆ ˆˆˆƒ ˆ| ks^t‚tt dƒgt dƒgt dƒggd
t ƒ‰tt‡ ‡‡‡‡fdd„ƒ t dƒt dƒgt dƒt dƒgg‰t dƒt dƒgt dƒt dƒgg‰ g ‰tt dƒgt dƒggdt ƒ‰tt‡ ‡‡‡‡fdd„ƒ t dƒt dƒgg‰t dƒgg‰ g ‰tt dƒggdt ƒ‰tt‡ ‡‡‡‡fdd„ƒ tt dƒgt dƒgt dƒggd
t ƒ‰tt‡ ‡‡‡‡fdd„ƒ t dƒgg‰t dƒgg‰ g ‰t dƒgg‰g ‰tt‡ ‡‡‡‡fdd„ƒ g ‰g ‰ g ‰g ‰g ‰tˆˆ ˆˆˆƒ ˆg kst‚d S )Nr   r   r   r-   r   )r   r   r   rO   r!   )r   r   c                      s   t ˆˆ ˆˆˆƒS rI   ©r   r   ©rT   rS   r(   rQ   Úxr   r   rK   -  rL   z$test_ddm_ilu_solve.<locals>.<lambda>c                      s   t ˆˆ ˆˆˆƒS rI   rV   r   rW   r   r   rK   5  rL   )r   r   c                      s   t ˆˆ ˆˆˆƒS rI   rV   r   rW   r   r   rK   =  rL   c                      s   t ˆˆ ˆˆˆƒS rI   rV   r   )rT   rS   rA   rQ   rX   r   r   rK   A  rL   c                      s   t ˆˆ ˆˆˆƒS rI   rV   r   rW   r   r   rK   I  rL   )r   r   r   r   r   r   ÚNotImplementedErrorr   )Zxexpr   )rT   rS   r(   rA   rQ   rX   r   Útest_ddm_ilu_solve	  sf        .@$$  $rZ   c                     sÄ   g ‰ t ˆ tƒtdƒggkst‚tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒgg‰ tdƒgtd
ƒgtdƒgtdƒgg} t ˆ tƒ| ks”t‚ttdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nr   r   r   r   r!   r"   r#   r$   r5   iñÿÿÿiîÿÿÿr   )r   r   c                      s
   t ˆ tƒS rI   )r   r   r   rG   r   r   rK   ^  rL   z#test_ddm_charpoly.<locals>.<lambda>)r   r   r   r   r   r   )ZAvecr   rG   r   Útest_ddm_charpolyU  s    @$r[   N)'Zsympy.testing.pytestr   Zsympy.polysr   r   Zsympy.polys.matrices.ddmr   Zsympy.polys.matrices.denser   r   r   r	   r
   r   r   r   r   r   r   r   r   Zsympy.polys.matrices.exceptionsr   r   r   r   r    r)   r+   r/   r0   rC   rE   rH   rN   rR   rU   rZ   r[   r   r   r   r   Ú<module>   s"   <
32/L