o
    *Î®c%  ã                   @   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 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)ÚDMShapeErrorÚDMNonInvertibleMatrixErrorÚDMNonSquareMatrixErrorc                  C   s0   ddgddgg} t | ƒddgddggksJ ‚d S )Né   é   é   é   )r   ©Úa© r   úL/tmp/pip-target-vg8gfxp4/lib/python/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s!J ‚d S )Nr   r   r   r   é   é   é   é   é
   é   )r   ©r   Úbr   r   r   Útest_ddm_iadd   ó   
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s!J ‚d S )
Nr   r   r   r   r   r    r!   r"   éüÿÿÿ)r   r%   r   r   r   Útest_ddm_isub   r(   r*   c                  C   s4   ddgddgg} t | ƒ | ddgddggksJ ‚d S )	Nr   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sJ ‚ddgddgg} t | dƒ | ddgddggks2J ‚d S )Nr   r   r   r   r    r"   r   )r   r   r   r   r   Útest_ddm_matmul'   s   

r/   c                  C   sÚ   g d¢g d¢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-J ‚g d¢g d¢g d¢g}t ||| ƒ |g d¢g d¢g d¢gksMJ ‚dgdgdgg}d	gd	gg}t || |ƒ |dgdggkskJ ‚d S )N)r   r   r   )r   r   r    r   r   r   r   r   r    r   é   é   é1   é@   )r   r   r   )é	   r$   é   )é   é   é!   )é   é(   é3   é   é    )r
   )r   r&   Úc1Úc2Úb3Úc3r   r   r   Útest_ddm_imatmul1   s   rB   c                  C   s  g } g }g }t | ƒ|ksJ ‚| |ksJ ‚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@J ‚| |ksFJ ‚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~J ‚| |ks„J ‚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¼J ‚| |ksÂJ ‚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üJ ‚| |ksJ ‚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<J ‚| |ksCJ ‚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~J ‚| |ks…J ‚d S )Nr   r   r   r   r   r+   )r   r   )ÚAÚArÚpivotsr   r   r   Útest_ddm_irrefC   sF     ,,,,..,,..rF   c                  C   sb  g } t | tƒtdƒksJ ‚tdƒgg} t | tƒtdƒksJ ‚tdƒtdƒgtdƒtdƒgg} t | tƒtdƒks9J ‚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sdJ ‚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sJ ‚tddƒtddƒgtddƒtddƒgg} t | tƒtdd	ƒks¯J ‚d S )
Nr   r   r   r   r,   r   r+   r   é   )r   r   r   ©rC   r   r   r   Útest_ddm_idetv   s    @@(rI   c                     s\  g ‰ g ‰t ˆˆ tƒ ˆˆ ksJ ‚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~J ‚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                      ó   t ˆˆ tƒS ©N)r   r   r   ©rC   ÚAinvr   r   Ú<lambda>’   ó    ztest_ddm_inv.<locals>.<lambda>r   r   r   c                      rJ   rK   ©r   r   r   rL   r   r   rN   –   rO   r   r   r,   r+   c                      rJ   rK   rP   r   rL   r   r   rN       rO   )r   r   r   Ú
ValueErrorr   r   )ÚAinv_expectedr   rL   r   Útest_ddm_invŠ   s$   ( (( rS   c                  C   s\  g } g }t | ƒ}| |ksJ ‚|g ksJ ‚g g} g g}t | ƒ}| |ks$J ‚|g ks*J ‚tdƒtdƒgtdƒtdƒgg} tdƒtdƒgtdƒtdƒgg}t | ƒ}| |ksTJ ‚|g ksZJ ‚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„J ‚|dgks‹J ‚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ÕJ ‚|g ksÛJ ‚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&J ‚|dgks.J ‚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seJ ‚|g kslJ ‚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s¥J ‚|g ks¬J ‚d S )Nr   r   r   r   r,   r   ©r   r   r   r    r!   r"   r4   r-   éúÿÿÿr+   )r   r   )r   r   )rC   ÚAluÚswapsr   r   r   Útest_ddm_ilu£   sP       @@@@,,..rX   c                  C   s&  g } g }g }g }t || tƒ}| |ksJ ‚||ksJ ‚|g ks J ‚g g} tdƒgg}g g}tdƒgg}t || tƒ}| |ks>J ‚||ksDJ ‚|g ksJJ ‚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–J ‚||ksœJ ‚|g ks¢J ‚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úJ ‚||ksJ ‚|g ksJ ‚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ƒJ ‚||ksŠJ ‚|g ks‘J ‚d S )Nr   r   r   r   r   r,   r   r    r-   rU   )r   r   )ÚUÚLÚUexpÚLexprW   r   r   r   Útest_ddm_ilu_splitÕ   sP       , , .@.@r]   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[J ‚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s·J ‚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.J ‚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J ‚d S )Nr   r   r   r,   r   )r   r   r   rT   r   )r   r   c                      ó   t ˆˆ ˆˆˆƒS rK   ©r   r   ©rZ   rY   r&   rW   Úxr   r   rN   (  ó    z$test_ddm_ilu_solve.<locals>.<lambda>c                      r^   rK   r_   r   r`   r   r   rN   0  rb   )r   r   c                      r^   rK   r_   r   r`   r   r   rN   8  rb   c                      r^   rK   r_   r   )rZ   rY   r@   rW   ra   r   r   rN   <  rb   c                      r^   rK   r_   r   r`   r   r   rN   D  rb   )r   r   r   r   r   ÚNotImplementedErrorr   )Úxexpr   )rZ   rY   r&   r@   rW   ra   r   Útest_ddm_ilu_solve  sf       .@$$  $re   c                     sÄ   g ‰ t ˆ tƒtdƒggksJ ‚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sJJ ‚ttdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nr   r   r   r   r   r    r!   r"   r4   iñÿÿÿiîÿÿÿr   )r   r   c                      s
   t ˆ tƒS rK   )r   r   r   rH   r   r   rN   Y  s   
 z#test_ddm_charpoly.<locals>.<lambda>)r   r   r   r   r   )ÚAvecr   rH   r   Útest_ddm_charpolyP  s   @$rg   N)&Úsympy.testing.pytestr   Úsympy.polysr   r   Úsympy.polys.matrices.ddmr   Úsympy.polys.matrices.denser   r   r   r	   r
   r   r   r   r   r   r   r   r   Úsympy.polys.matrices.exceptionsr   r   r   r   r'   r*   r.   r/   rB   rF   rI   rS   rX   r]   re   rg   r   r   r   r   Ú<module>   s$    <
32/L