o
    GZŽh;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   úR/var/www/auris/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   Z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Úddm2Z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   Z
convert_tor   r   )r   Zddmqr   r   r   Útest_DDM_convert_toL   s   
r,   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   ©Zddmzr   r   r   Útest_DDM_zerosS   ó    r2   c                  C   r-   )Nr   r   r   r   )r   Zonesr   r0   r   r   )Zddmoner   r   r   Útest_DDM_onesY   r3   r4   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   )Ú.0r5   )Úfr6   r   r   Ú
<listcomp>b   s    z+test_DDM_eye.<locals>.<listcomp>.<listcomp>r   )Úrange)r8   ©r9   )r6   r   r:   b   s   $ z test_DDM_eye.<locals>.<listcomp>©r   r   )r   Úeyer   r0   r;   r   r   r1   r   r<   r   Útest_DDM_eye_   s
   "r?   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   rB   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   r@   r+   ©r   r   ©r   r   ©r   r   )r   r   Ú	transpose)r   ZddmTZddm02Zddm02TZddm0r   r   r   Útest_DDM_transposeq   s   rG   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   r@   r   r   é   c                      s   ˆ t tdƒggdtƒ S )Nr   ©r   r   r   r   ©ÚAr   r   r   „   r7   ztest_DDM_add.<locals>.<lambda>c                      s   ˆ t dƒ S ©Nr   ©r   r   rJ   r   r   r   …   r    c                      s   t dƒˆ  S rL   rM   r   rJ   r   r   r   †   r    c                      s   ˆ ˆ S ©Nr   r   ©rK   ÚAQr   r   r   ‡   ó    c                      s   ˆˆ  S rN   r   r   rO   r   r   r   ˆ   rQ   )r   r   r   Úaddr   r   Ú	TypeErrorr	   ©ÚBÚCr   rO   r   Útest_DDM_add}   s   &rW   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   r@   r   r   éþÿÿÿr   rI   c                      s   ˆ t dƒ S rL   rM   r   rJ   r   r   r   “   r    ztest_DDM_sub.<locals>.<lambda>c                      s   t dƒˆ  S rL   rM   r   rJ   r   r   r   ”   r    c                      ó   ˆ ˆ S rN   r   r   ©rK   ÚDr   r   r   •   rQ   c                      ó   ˆˆ  S rN   r   r   rZ   r   r   r   –   rQ   c                      ó
   ˆ   ˆ¡S rN   ©Úsubr   rZ   r   r   r   —   ó   
 c                      ó
   ˆ  ˆ ¡S rN   r^   r   rZ   r   r   r   ˜   r`   c                      rY   rN   r   r   rO   r   r   r   ™   rQ   c                      r\   rN   r   r   rO   r   r   r   š   rQ   c                      r]   rN   r^   r   rO   r   r   r   ›   r`   c                      ra   rN   r^   r   rO   r   r   r   œ   r`   )r   r   r   r_   r   rS   r   r	   rT   r   )rK   rP   r[   r   Útest_DDM_sub‹   s    &rb   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   r@   r"   rX   )r   r   Úneg)rK   ZAnr   r   r   Útest_DDM_negŸ   s   "&rd   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   rI   r   c                      s   dggˆ  S rL   r   r   rJ   r   r   r   «   r    ztest_DDM_mul.<locals>.<lambda>c                      s   ˆ dgg S rL   r   r   rJ   r   r   r   ¬   r    )r   r   r   rS   )ÚA2r   rJ   r   Útest_DDM_mul¦   s   rf   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   r@   r   r   r+   rH   é   r   é   rI   c                      s   ˆ d S rL   r   r   rJ   r   r   r   ¸   rQ   z!test_DDM_matmul.<locals>.<lambda>c                      s   ˆ ddgg S )Nr   r   r   r   rJ   r   r   r   ¹   ó    c                      ó   ˆ ˆ S rN   r   r   ©rK   ÚBqr   r   r   ½   rQ   c                      ó   ˆˆ  S rN   r   r   rk   r   r   r   ¾   rQ   c                      rm   rN   r   r   ©rK   rV   r   r   r   Ä   rQ   c                      ra   rN   ©Úmatmulr   rn   r   r   r   Å   r`   ©r   r   )r   r   r   )r   r   )r   r   r   )r   r   )r   r   rE   c                      rj   rN   r   r   ©ÚZ05ÚZ40r   r   r   Ö   rQ   c                      r]   rN   ro   r   rr   r   r   r   ×   r`   )r   r   rp   r   rS   r   r	   r   )rU   ZABZBAZZ04ZZ50ZZ45ZZ54ZZ00r   )rK   rl   rV   rs   rt   r   Útest_DDM_matmul¯   s<   (&&&******ru   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+   rH   rI   )r   r   )r   rH   )r   r   Zhstackr   r   ©rK   rU   rV   ZAhr   r   r   Útest_DDM_hstackÚ   s    
4>rx   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   r@   rH   rI   )r   r   )rH   r   )r   r   Zvstackr   r   rw   r   r   r   Útest_DDM_vstackê   s   $
<Hrz   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   rv   r   rH   c                 S   s   d|  S )Nr   r   ©Úxr   r   r   r   ý   rQ   z$test_DDM_applyfunc.<locals>.<lambda>)r   r   Z	applyfunc©rK   rU   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 )Nrq   r   r   r   r   r   r   r   r"   ©r   r   )r   r   Zrref)rK   ZArZ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   Z	nullspace)rK   ZAnullZ	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+   rI   )r   r   Z
particularr/   rJ   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 )NrE   r   r   rI   r   r   r   rX   r   r=   r   r"   é   r@   c                      ó   ˆ   ¡ S rN   ©Údetr   rJ   r   r   r   B  rQ   ztest_DDM_det.<locals>.<lambda>©r   r   c                      r„   rN   r…   r   rJ   r   r   r   F  rQ   )r   r   r†   r   r   r   r   r   rJ   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   rX   r"   r+   c                      r„   rN   ©Úinvr   rJ   r   r   r   O  rQ   ztest_DDM_inv.<locals>.<lambda>rI   c                      r„   rN   r‰   r   rJ   r   r   r   R  rQ   rE   c                      r„   rN   r‰   r   rJ   r   r   r   X  rQ   )r   r   rŠ   r   r   r   r	   r   )ZAinvr   rJ   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   rX   )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   )r8   Úe©Údomr   r   r:   e  s    z<test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r   )r8   Úrowr   r   r   r:   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   Zlu)rK   ÚLÚUZswapsZLexpZUexpZ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   r@   r   r   rH   r   ry   c                      r]   rN   ©Úlu_solver   ©rK   Úbr   r   r     r`   z#test_DDM_lu_solve.<locals>.<lambda>c                      r]   rN   r“   r   r•   r   r   r   †  r`   r+   rI   c                      r]   rN   r“   r   r•   r   r   r   ‹  r`   c                      r]   rN   r“   r   )rK   Úbzr   r   r     r`   c                      r]   rN   r“   r   )rK   Úb3r   r   r   “  r`   )	r   r   r”   r   r   ÚNotImplementedErrorr   r	   r   r{   r   )rK   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 )NrE   r   r   r   r   r   rH   é   rg   é	   r=   iñÿÿÿiîÿÿÿr   r+   c                      r„   rN   )Úcharpolyr   rJ   r   r   r   ¢  rQ   z#test_DDM_charpoly.<locals>.<lambda>)r   r   r   r   r   )ZAvecr   rJ   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   rH   r›   rg   rœ   r=   rX   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 )	Nr=   r   r   rX   r"   r   c                      s   ˆ   ddd¡S )Nr   r   )Úsetitemr   r¡   r   r   r   ¹  ri   z"test_DDM_setitem.<locals>.<lambda>)r   r/   r   r¤   r>   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   rH   r›   rg   rœ   r=   r   rX   r@   rI   r"   r   rD   rC   rE   )r   r   Z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   rH   r›   rg   rœ   r=   r   r   rX   r"   rE   )r   r   r‡   c                      ó   ˆ   dgdg¡S r   ©Úextractr   ©Z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ª   r/   r   r#   )Z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 )NrH   r   r   r   r   )r   r   Z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   r/   Zis_zero_matrix)rK   Z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   rH   r›   rg   rœ   r.   TF)r   r   é
   )r   r   Z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   rF   Zis_lowerr}   r   r   r   Útest_DDM_is_lower  sT   ýüüýüüüûûüûûr³   N)0Zsympy.testing.pytestr   Zsympy.external.gmpyr   Zsympy.polysr   r   Zsympy.polys.matrices.ddmr   Zsympy.polys.matrices.exceptionsr   r   r	   r
   r   r$   r'   r*   r,   r2   r4   r?   rB   rG   rW   rb   rd   rf   ru   rx   rz   r~   r€   r   r‚   rˆ   r‹   r’   rš   rž   r£   r¥   r§   r­   r®   r¯   r²   r³   r   r   r   r   Ú<module>   sN    

	+'
 