o
    …º¥g;A  ã                   @   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
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 d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Z d,d-„ Z!d.d/„ Z"d0d1„ Z#d2d3„ Z$d4d5„ Z%d6d7„ Z&d8d9„ Z'd:d;„ Z(d<d=„ Z)d>d?„ Z*d@dA„ Z+dBdC„ Z,dDdE„ Z-dFdG„ Z.dHdI„ Z/dJS )Ké    )Úraises)ÚGROUND_TYPES)ÚZZÚQQ)ÚDDM)ÚDMShapeErrorÚDMNonInvertibleMatrixErrorÚDMDomainErrorÚDMBadInputErrorc                  C   s”   t dƒt dƒt dƒgt dƒt dƒt dƒgg} d}t| |t ƒ}|j|ks%J ‚|jdks,J ‚|jdks3J ‚|jt ks:J ‚ttdd	„ ƒ ttd
d	„ ƒ d S )Nr   é   é   é   é   é   ©r   r   c                   S   s   t tdƒtdƒggdtƒS )Nr   r   ©r   r   ©r   r   © r   r   úZ/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_ddm.pyÚ<lambda>   s    ztest_DDM_init.<locals>.<lambda>c                   S   s"   t tdƒgtdƒtdƒggdtƒS )Nr   r   r   r   r   r   r   r   r   r      s   " )r   r   ÚshapeÚrowsÚcolsÚdomainr   r
   )Úitemsr   Úddmr   r   r   Útest_DDM_init   s   ,r   c                      sØ   t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ d d tdƒks J ‚ˆ d d tdƒks,J ‚ˆ d d tdƒks8J ‚ˆ d d tdƒksDJ ‚tt‡ fdd	„ƒ tt‡ fd
d	„ƒ tdƒˆ d d< ˆ d d tdƒksjJ ‚d S )Nr   r   r   r   r   r   r   c                      ó   ˆ d d S ©Nr   r   r   r   ©r   r   r   r   !   ó    z%test_DDM_getsetitem.<locals>.<lambda>c                      r   ©Nr   r   r   r   r   r   r   r   "   r    éÿÿÿÿ)r   r   r   Ú
IndexErrorr   r   r   r   Útest_DDM_getsetitem   s   (r$   c                  C   sx   t tdƒtdƒgtdƒtdƒggdtƒ} tdkr*t| ƒdks J ‚t| ƒdks(J ‚d S t| ƒd	ks2J ‚t| ƒdks:J ‚d S )
Nr   r   r   r   r   Úgmpyz[[0, 1], [2, 3]]z5DDM([[mpz(0), mpz(1)], [mpz(2), mpz(3)]], (2, 2), ZZ)z!DDM([[0, 1], [2, 3]], (2, 2), ZZ))r   r   r   ÚstrÚreprr   r   r   r   Útest_DDM_str(   s   (r(   c                  C   sP  t dƒt dƒgt dƒt dƒgg} t| dt ƒ}t| dt ƒ}||kdu s$J ‚|| kdu s,J ‚| |kdu s4J ‚||kdu s<J ‚||kdu sDJ ‚||kdu sLJ ‚|| kdu sTJ ‚| |kdu s\J ‚||kdu sdJ ‚||kdu slJ ‚tt dƒt dƒgt dƒt dƒggdt ƒ}t| dtƒ}||kdu sŽJ ‚||kdu s–J ‚||kdu sžJ ‚||kdu s¦J ‚d S )Nr   r   r   r   r   TF)r   r   r   )r   Úddm1Úddm2Úddm3r   r   r   Útest_DDM_eq2   s&    (r,   c                  C   sH   t tdƒtdƒggdtƒ} |  t¡| ksJ ‚|  t¡}|jtks"J ‚d S )Nr   r   ©r   r   )r   r   Ú
convert_tor   r   )r   Úddmqr   r   r   Útest_DDM_convert_toL   s   
r0   c                  C   óL   t  dt¡} t| ƒtdƒgd gd ksJ ‚| jdksJ ‚| jtks$J ‚d S )N©r   r   r   r   r   )r   Úzerosr   Úlistr   r   ©Úddmzr   r   r   Útest_DDM_zerosS   ó    r7   c                  C   r1   )Nr   r   r   r   )r   Úonesr   r4   r   r   )Úddmoner   r   r   Útest_DDM_onesY   r8   r;   c                     sV   t  dt¡} dd„ ‰ t| ƒ‡ fdd„tdƒD ƒksJ ‚| jdks"J ‚| jtks)J ‚d S )Nr   c                 S   s   | |krt dƒS t dƒS )Nr   r   )r   )ÚiÚjr   r   r   r   a   ó    ztest_DDM_eye.<locals>.<lambda>c                    s$   g | ]‰ ‡‡ fd d„t dƒD ƒ‘qS )c                    s   g | ]}ˆ |ˆƒ‘qS r   r   )Ú.0r<   )Úfr=   r   r   Ú
<listcomp>b   s    z+test_DDM_eye.<locals>.<listcomp>.<listcomp>r   )Úrange)r?   ©r@   )r=   r   rA   b   s   $ z test_DDM_eye.<locals>.<listcomp>©r   r   )r   Úeyer   r4   rB   r   r   r5   r   rC   r   Útest_DDM_eye_   s
   "rF   c                  C   sx   t tdƒgtdƒggdtƒ} |  ¡ }| |kdu sJ ‚tdƒ| d d< | |kdu s*J ‚tdƒ|d d< | |kdu s:J ‚d S )Nr   r   ©r   r   Tr"   r   F)r   r   Úcopy)r)   r*   r   r   r   Útest_DDM_copyg   s   rI   c                  C   s¢   t tdƒgtdƒggdtƒ} t tdƒtdƒggdtƒ}|  ¡ |ks#J ‚t g dtƒ}t g g gdtƒ}| ¡ |ks9J ‚| ¡ |ksAJ ‚t g dtƒ}| ¡ |ksOJ ‚d S )Nr   r   rG   r-   ©r   r   ©r   r   ©r   r   )r   r   Ú	transpose)r   ÚddmTÚddm02Úddm02TÚddm0r   r   r   Útest_DDM_transposeq   s   rR   c                     sø   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ƒggdtƒ}t tdƒgtdƒggdtƒ‰ˆ |  ˆ  | ¡  krH|ksKJ ‚ J ‚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 S )Nr   r   rG   r   r   é   c                      s   ˆ t tdƒggdtƒ S )Nr   ©r   r   r   r   ©ÚAr   r   r   „   r>   ztest_DDM_add.<locals>.<lambda>c                      s   ˆ t dƒ S ©Nr   ©r   r   rU   r   r   r   …   r    c                      s   t dƒˆ  S rW   rX   r   rU   r   r   r   †   r    c                      s   ˆ ˆ S ©Nr   r   ©rV   ÚAQr   r   r   ‡   ó    c                      s   ˆˆ  S rY   r   r   rZ   r   r   r   ˆ   r\   )r   r   r   Úaddr   r   Ú	TypeErrorr	   ©ÚBÚCr   rZ   r   Útest_DDM_add}   s   &rb   c                     sr  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ƒggdtƒ}t tdƒgtdƒggdtƒ‰t tdƒggdtƒ‰ˆ |  ˆ  | ¡  krR|ksUJ ‚ J ‚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 S )Nr   r   rG   r   r   éþÿÿÿr   rT   c                      s   ˆ t dƒ S rW   rX   r   rU   r   r   r   “   r    ztest_DDM_sub.<locals>.<lambda>c                      s   t dƒˆ  S rW   rX   r   rU   r   r   r   ”   r    c                      ó   ˆ ˆ S rY   r   r   ©rV   ÚDr   r   r   •   r\   c                      ó   ˆˆ  S rY   r   r   re   r   r   r   –   r\   c                      ó
   ˆ   ˆ¡S rY   ©Úsubr   re   r   r   r   —   ó   
 c                      ó
   ˆ  ˆ ¡S rY   ri   r   re   r   r   r   ˜   rk   c                      rd   rY   r   r   rZ   r   r   r   ™   r\   c                      rg   rY   r   r   rZ   r   r   r   š   r\   c                      rh   rY   ri   r   rZ   r   r   r   ›   rk   c                      rl   rY   ri   r   rZ   r   r   r   œ   rk   )r   r   r   rj   r   r^   r   r	   r_   r   )rV   r[   rf   r   Útest_DDM_sub‹   s    &rm   c                  C   s€   t tdƒgtdƒggdtƒ} t tdƒgtdƒggdtƒ}|  |  ¡   kr*|ks-J ‚ J ‚| | ¡   kr;| ks>J ‚ J ‚d S )Nr   r   rG   r"   rc   )r   r   Úneg)rV   ÚAnr   r   r   Útest_DDM_negŸ   s   "&rp   c                     sx   t tdƒggdtƒ‰ t tdƒggdtƒ} ˆ tdƒ | ksJ ‚tdƒˆ  | ks(J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr   rT   r   c                      s   dggˆ  S rW   r   r   rU   r   r   r   «   r    ztest_DDM_mul.<locals>.<lambda>c                      s   ˆ dgg S rW   r   r   rU   r   r   r   ¬   r    )r   r   r   r^   )ÚA2r   rU   r   Útest_DDM_mul¦   s   rr   c                     s&  t tdƒgtdƒggdtƒ‰ t tdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggd	tƒ}t td
ƒggdtƒ}ˆ |  ˆ  | ¡  krI|ksLJ ‚ J ‚| ˆ  |  ˆ ¡  kr\|ks_J ‚ J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ t tdƒtdƒggdtƒ‰tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ t tdƒggdtƒ‰ˆ ˆ ˆ  ˆ¡  kr¬ˆ ks¯J ‚ J ‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ t g dtƒ}t g gd dtƒ‰t g gd dtƒ}t g dtƒ‰t dgd gd dtƒ}t dgd gd dtƒ}t g dtƒ}|| | |¡  krˆksJ ‚ J ‚|| | |¡  kr&ˆks)J ‚ J ‚|| | |¡  kr;|ks>J ‚ J ‚|| | |¡  krP|ksSJ ‚ J ‚|| | |¡  kre|kshJ ‚ J ‚|| | |¡  krz|ks}J ‚ J ‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ d S )Nr   r   rG   r   r   r-   rS   é   r   é   rT   c                      s   ˆ d S rW   r   r   rU   r   r   r   ¸   r\   z!test_DDM_matmul.<locals>.<lambda>c                      s   ˆ ddgg S )Nr   r   r   r   rU   r   r   r   ¹   ó    c                      ó   ˆ ˆ S rY   r   r   ©rV   ÚBqr   r   r   ½   r\   c                      ó   ˆˆ  S rY   r   r   rw   r   r   r   ¾   r\   c                      ry   rY   r   r   ©rV   ra   r   r   r   Ä   r\   c                      rl   rY   ©Úmatmulr   rz   r   r   r   Å   rk   ©r   r   )r   r   r   )r   r   )r   r   r   )r   r   )r   r   rL   c                      rv   rY   r   r   ©ÚZ05ÚZ40r   r   r   Ö   r\   c                      rh   rY   r{   r   r~   r   r   r   ×   rk   )r   r   r|   r   r^   r   r	   r   )r`   ÚABÚBAÚZ04ÚZ50ÚZ45ÚZ54ÚZ00r   )rV   rx   ra   r   r€   r   Útest_DDM_matmul¯   s<   (&&&******rˆ   c               	   C   s  t tdƒtdƒtdƒggdtƒ} t tdƒtdƒggdtƒ}t tdƒggd	tƒ}|  |¡}|jd
ks3J ‚|jtks:J ‚|t tdƒtdƒtdƒtdƒtdƒggd
tƒksTJ ‚|  ||¡}|jdksaJ ‚|jtkshJ ‚|t tdƒtdƒtdƒtdƒtdƒtdƒggdtƒks…J ‚d S )Nr   r   r   ©r   r   r   r   r-   rS   rT   )r   r   )r   rS   )r   r   Úhstackr   r   ©rV   r`   ra   ÚAhr   r   r   Útest_DDM_hstackÚ   s    
4>r   c               	   C   s&  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gd	tƒ}|  |¡}|jd
ks6J ‚|jtks=J ‚|t tdƒgtdƒgtdƒgtdƒgtdƒggd
tƒks[J ‚|  ||¡}|jdkshJ ‚|jtksoJ ‚|t tdƒgtdƒgtdƒgtdƒgtdƒgtdƒggdtƒks‘J ‚d S )Nr   r   r   ©r   r   r   r   rG   rS   rT   )r   r   )rS   r   )r   r   Úvstackr   r   r‹   r   r   r   Útest_DDM_vstackê   s   $
<Hr   c                  C   s\   t tdƒtdƒtdƒggdtƒ} t tdƒtdƒtdƒggdtƒ}|  dd„ t¡|ks,J ‚d S )	Nr   r   r   r‰   r   rS   c                 S   s   d|  S )Nr   r   ©Úxr   r   r   r   ý   r\   z$test_DDM_applyfunc.<locals>.<lambda>)r   r   Ú	applyfunc©rV   r`   r   r   r   Útest_DDM_applyfuncú   s     r•   c                  C   s¨  t g dtƒ} |  ¡ | g fksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}ddg}|  ¡ ||fksFJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} t tdƒtdƒtd	ƒgtdƒtdƒtdƒggdtƒ}ddg}|  ¡ ||fksˆJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} t tdƒtdƒtd	ƒgtdƒtdƒtdƒggdtƒ}ddg}|  ¡ ||fksÊJ ‚t tdƒtdƒgtdƒtdƒgtdƒtdƒggd
tƒ} t tdƒtdƒgtdƒtdƒgtdƒtdƒggd
tƒ}ddg}|  ¡ ||fksJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ}ddg}|  ¡ ||fksRJ ‚d S )Nr}   r   r   r   r   r   r   r   r"   ©r   r   )r   r   Úrref)rV   ÚArÚpivotsr   r   r   Útest_DDM_rrefÿ   s,   ((44446644rš   c                  C   s`   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒggdtƒ}dg}|  ¡ ||fks.J ‚d S )Nr   r   r"   r-   )r   r   Ú	nullspace)rV   ÚAnullÚ	nonpivotsr   r   r   Útest_DDM_nullspace  s   (rž   c                  C   s6   t tdƒtdƒggdtƒ} |  ¡ t  dt¡ksJ ‚d S )Nr   r   r-   rT   )r   r   Ú
particularr3   rU   r   r   r   Útest_DDM_particular&  s   r    c                      sv  t g dtƒ‰ ˆ  ¡ tdƒksJ ‚t tdƒggdtƒ‰ ˆ  ¡ tdƒks$J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  ¡ tdƒksBJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ‰ ˆ  ¡ tdƒkspJ ‚t tddƒtddƒgtddƒtddƒggdtƒ‰ ˆ  ¡ tddƒks“J ‚t tdƒgtdƒggdtƒ‰ tt‡ fdd„ƒ t g dtƒ‰ tt‡ fdd„ƒ d S )NrL   r   r   rT   r   r   r   rc   r   rD   r   r"   é   rG   c                      ó   ˆ   ¡ S rY   ©Údetr   rU   r   r   r   B  r\   ztest_DDM_det.<locals>.<lambda>©r   r   c                      r¢   rY   r£   r   rU   r   r   r   F  r\   )r   r   r¤   r   r   r   r   r   rU   r   Útest_DDM_det+  s   (H0r¦   c                     s  t tddƒtddƒgtddƒtddƒggdtƒ‰ t tddƒtddƒgtddƒtddƒggdtƒ} ˆ  ¡ | ks8J ‚t tdƒtdƒggdtƒ‰ tt‡ fd	d
„ƒ t tdƒggdtƒ‰ tt‡ fdd
„ƒ t g dtƒ‰ ˆ  ¡ ˆ ksoJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ tt‡ fdd
„ƒ d S )Nr   r   r   r   r   rc   r"   r-   c                      r¢   rY   ©Úinvr   rU   r   r   r   O  r\   ztest_DDM_inv.<locals>.<lambda>rT   c                      r¢   rY   r§   r   rU   r   r   r   R  r\   rL   c                      r¢   rY   r§   r   rU   r   r   r   X  r\   )r   r   r¨   r   r   r   r	   r   )ÚAinvr   rU   r   Útest_DDM_invI  s   00(rª   c                  C   sj  t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ \}}}|t tdƒtdƒgtdƒtdƒggdtƒks3J ‚|t tdƒtdƒgtdƒtdƒggdtƒksKJ ‚|g ksQJ ‚g d¢g d	¢g d
¢g d¢g} g d¢g d¢g d¢g d
¢g}g d¢g d	¢g d
¢g d¢g}dd„ }t || tƒdtƒ} t ||tƒdtƒ}t ||tƒdtƒ}|  ¡ \}}}||ks§J ‚||ks­J ‚|g ks³J ‚d S )Nr   r   r   r   r   r   rc   )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   c                    s   ‡ fdd„| D ƒS )Nc                    s   g | ]}‡ fd d„|D ƒ‘qS )c                    s   g | ]}ˆ |ƒ‘qS r   r   )r?   Úe©Údomr   r   rA   e  s    z<test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r   )r?   Úrowr¬   r   r   rA   e  s    z1test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>r   )r   r­   r   r¬   r   r   e  s    ztest_DDM_lu.<locals>.<lambda>)r   r   )r   r   Úlu)rV   ÚLÚUÚswapsÚLexpÚUexpÚto_domr   r   r   Útest_DDM_lu[  s    (00r¶   c                     sX  t tdƒtdƒgtdƒ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ƒ} ˆ  ˆ¡| ks:J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  ˆ¡| ksWJ ‚t tdƒtdƒgtdƒtdƒgtdƒtd	ƒggd
tƒ‰ t tdƒgtdƒgtdƒggdtƒ‰ˆ  ˆ¡| ksJ ‚t tdƒgtdƒgtdƒggdtƒ‰tt‡ ‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd„ƒ t tdƒtdƒggdtƒ‰ t tdƒggdtƒ‰tt‡ ‡fdd„ƒ t tdƒg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„ƒ d S )Nr   r   r   r   r   rG   r   r   rS   r–   rŽ   c                      rh   rY   ©Úlu_solver   ©rV   Úbr   r   r     rk   z#test_DDM_lu_solve.<locals>.<lambda>c                      rh   rY   r·   r   r¹   r   r   r   †  rk   r-   rT   c                      rh   rY   r·   r   r¹   r   r   r   ‹  rk   c                      rh   rY   r·   r   )rV   Úbzr   r   r     rk   c                      rh   rY   r·   r   )rV   Úb3r   r   r   “  rk   )	r   r   r¸   r   r   ÚNotImplementedErrorr   r	   r   r‘   r   )rV   rº   r¼   r»   r   Útest_DDM_lu_solveo  s*   ((6$$($r¾   c                     sÆ   t g dtƒ‰ ˆ  ¡ tdƒgksJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtd	ƒtd
ƒggdtƒ‰ tdƒtdƒtdƒtdƒg} ˆ  ¡ | ksKJ ‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )NrL   r   r   r   r   r   rS   é   rs   é	   rD   iñÿÿÿiîÿÿÿr   r-   c                      r¢   rY   )Úcharpolyr   rU   r   r   r   ¢  r\   z#test_DDM_charpoly.<locals>.<lambda>)r   r   rÁ   r   r   )ÚAvecr   rU   r   Útest_DDM_charpoly–  s   ýýrÃ   c                      s¦   t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ‰ ˆ  dd¡tdƒks0J ‚ˆ  dd¡tdƒks<J ‚ˆ  dd¡tdƒksHJ ‚tt‡ fdd„ƒ d S )Nr   r   r   r   r   rS   r¿   rs   rÀ   rD   rc   r"   éýÿÿÿc                      s   ˆ   dd¡S )Nr   )Úgetitemr   ©Údmr   r   r   ¯  r    z"test_DDM_getitem.<locals>.<lambda>)r   r   rÅ   r   r#   r   r   rÆ   r   Útest_DDM_getitem¥  s   ýýrÈ   c                      s`   t  dt¡‰ ˆ  ddd¡ ˆ  ddd¡ ˆ  ddd¡ ˆ t  dt¡ks%J ‚tt‡ fdd„ƒ d S )	NrD   r   r   rc   r"   r   c                      s   ˆ   ddd¡S )Nr   r   )Úsetitemr   rÆ   r   r   r   ¹  ru   z"test_DDM_setitem.<locals>.<lambda>)r   r3   r   rÉ   rE   r   r#   r   r   rÆ   r   Útest_DDM_setitem²  s   rÊ   c                  C   sÌ  t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} |  tddƒtddƒ¡| ks4J ‚|  tddƒtdƒ¡t dgdggdtƒksKJ ‚|  tddƒtdƒ¡t dgdggdtƒksbJ ‚|  tddƒtdƒ¡t tdƒggdtƒksyJ ‚|  tddƒtdƒ¡t dgdggdtƒksJ ‚|  tdƒtdƒ¡t ddgddggdtƒks¨J ‚|  tdƒtddƒ¡t g g gdtƒks½J ‚|  tddƒtdƒ¡t g dtƒksÐJ ‚|  tddƒtddƒ¡t g dtƒksäJ ‚d S )Nr   r   r   r   r   rS   r¿   rs   rÀ   rD   r   rc   rG   rT   r"   r   rK   rJ   rL   )r   r   Úextract_sliceÚslicerÆ   r   r   r   Útest_DDM_extract_slice¼  s    ýý ....0*&,rÍ   c                     sL  t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} t tdƒtdƒgtdƒtdƒggdtƒ‰ |  ddgddg¡ˆ ksFJ ‚|  ddgddg¡ˆ ksTJ ‚|  g g ¡t  dt¡ksbJ ‚|  dgg ¡t  dt¡ksqJ ‚|  g dg¡t  dt¡ks€J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr   r   r   r   r   rS   r¿   rs   rÀ   rD   r   r   rc   r"   rL   )r   r   r¥   c                      ó   ˆ   dgdg¡S r   ©Úextractr   ©Údm2r   r   r   Ý  ó    z"test_DDM_extract.<locals>.<lambda>c                      rÎ   r!   rÏ   r   rÑ   r   r   r   Þ  rÓ   c                      rÎ   )NrÄ   r   rÏ   r   rÑ   r   r   r   ß  rÓ   c                      rÎ   )Nr   rÄ   rÏ   r   rÑ   r   r   r   à  rÓ   )r   r   rÐ   r3   r   r#   )Údm1r   rÑ   r   Útest_DDM_extractÎ  s,   ýýþþrÕ   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgks(J ‚d S )NrS   r   r   r   r   )r   r   ÚflatrÆ   r   r   r   Útest_DDM_flatã  s   þþ,r×   c                  C   sX   t tdƒtdƒgtdƒtdƒggdtƒ} t  dt¡}|  ¡ du s"J ‚| ¡ du s*J ‚d S )Nr   r   r   r-   FT)r   r   r3   Úis_zero_matrix)rV   ÚAzeror   r   r   Útest_DDM_is_zero_matrixê  s   (rÚ   c                  C   s°  t tdƒtdƒtdƒtdƒgtdƒtdƒtdƒtdƒgtdƒtdƒtd	ƒtd
ƒggdtƒ} t tdƒtdƒtdƒtdƒgtdƒtdƒtdƒtdƒgtdƒtdƒtd	ƒtd
ƒggdtƒ}|  ¡ du sbJ ‚| ¡ du sjJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒgtdƒtdƒtdƒggdtƒ} t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒgtdƒtdƒtdƒggdtƒ}|  ¡ du sÎJ ‚| ¡ du sÖJ ‚d S ©Nr   r   r   r   r   r   rS   r¿   rs   rÀ   r2   TF)r   r   é
   )r   r   Úis_upperr”   r   r   r   Útest_DDM_is_upperñ  sD   ýüýüüûüûrÞ   c                  C   sÀ  t tdƒtdƒtdƒtdƒgtdƒtdƒtdƒtdƒgtdƒtdƒtd	ƒtd
ƒggdtƒ ¡ } t tdƒtdƒtdƒtdƒgtdƒtdƒtdƒtdƒgtdƒtdƒtd	ƒtd
ƒggdtƒ ¡ }|  ¡ du sfJ ‚| ¡ du snJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒgtdƒtdƒtdƒggdtƒ ¡ } t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒgtdƒtdƒtdƒggdtƒ ¡ }|  ¡ du sÖJ ‚| ¡ du sÞJ ‚d S rÛ   )r   r   rM   Úis_lowerr”   r   r   r   Útest_DDM_is_lower  sT   ýüüýüüüûûüûûrà   N)0Úsympy.testing.pytestr   Úsympy.external.gmpyr   Úsympy.polysr   r   Úsympy.polys.matrices.ddmr   Úsympy.polys.matrices.exceptionsr   r   r	   r
   r   r$   r(   r,   r0   r7   r;   rF   rI   rR   rb   rm   rp   rr   rˆ   r   r   r•   rš   rž   r    r¦   rª   r¶   r¾   rÃ   rÈ   rÊ   rÍ   rÕ   r×   rÚ   rÞ   rà   r   r   r   r   Ú<module>   sN    

	+'
 