a
    kº”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sJJ ‚|jdksXJ ‚|jdksfJ ‚|jt kstJ ‚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   úQ/var/www/auris/lib/python3.9/site-packages/sympy/polys/matrices/tests/test_ddm.pyÚ<lambda>   ó    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      r   )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sXJ ‚ˆ d d tdƒkspJ ‚ˆ d d tdƒksˆJ ‚tt‡ fdd	„ƒ tt‡ fd
d	„ƒ tdƒˆ d d< ˆ d d tdƒksÔJ ‚d S )Nr   r   r   r   r   r   r   c                      s   ˆ d d S ©Nr   r   r   r   ©r   r   r   r   !   r   z%test_DDM_getsetitem.<locals>.<lambda>c                      s   ˆ d d S ©Nr   r   r   r   r   r   r   r   "   r   éÿÿÿÿ)r   r   r   Ú
IndexErrorr   r   r   r   Útest_DDM_getsetitem   s    (r#   c                  C   sv   t tdƒtdƒgtdƒtdƒggdtƒ} tdkrRt| ƒdks@J ‚t| ƒdksrJ ‚n t| ƒd	ksbJ ‚t| ƒdksrJ ‚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   sX  t dƒt dƒgt dƒt dƒgg} t| dt ƒ}t| dt ƒ}||kdu sHJ ‚|| kdu sXJ ‚| |kdu shJ ‚||kdu sxJ ‚||kdu sˆJ ‚||kdu s˜J ‚|| kdu s¨J ‚| |kdu s¸J ‚||kdu sÈJ ‚||kdu sØJ ‚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 s0J ‚||kdu sBJ ‚||kdu sTJ ‚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sDJ ‚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   sL   t  dt¡} t| ƒtdƒgd gd ks,J ‚| jdks:J ‚| jtksHJ ‚d S )N©r   r   r   r   r   )r   Úzerosr   Úlistr   r   ©Zddmzr   r   r   Útest_DDM_zerosS   s     r0   c                  C   sL   t  dt¡} t| ƒtdƒgd gd ks,J ‚| jdks:J ‚| jtksHJ ‚d S )Nr   r   r   r   )r   Zonesr   r.   r   r   )Zddmoner   r   r   Útest_DDM_onesY   s     r1   c                     sV   t  dt¡} dd„ ‰ t| ƒ‡ fdd„tdƒD ƒks6J ‚| jdksDJ ‚| jtksRJ ‚d S )Nr   c                 S   s   | |krt dƒS t dƒS )Nr   r   )r   )ÚiÚjr   r   r   r   a   r   ztest_DDM_eye.<locals>.<lambda>c                    s$   g | ]‰ ‡‡ fd d„t dƒD ƒ‘qS )c                    s   g | ]}ˆ |ˆƒ‘qS r   r   )Ú.0r2   )Úfr3   r   r   Ú
<listcomp>b   r   z+test_DDM_eye.<locals>.<listcomp>.<listcomp>r   )Úrange)r4   ©r5   )r3   r   r6   b   r   z test_DDM_eye.<locals>.<listcomp>©r   r   )r   Úeyer   r.   r7   r   r   r/   r   r8   r   Útest_DDM_eye_   s
    "r;   c                  C   sx   t tdƒgtdƒggdtƒ} |  ¡ }| |kdu s4J ‚tdƒ| d d< | |kdu sTJ ‚tdƒ|d d< | |kdu stJ ‚d S )Nr   r   ©r   r   Tr!   r   F)r   r   Úcopy)r'   r(   r   r   r   Útest_DDM_copyg   s    r>   c                  C   s¢   t tdƒgtdƒggdtƒ} t tdƒtdƒggdtƒ}|  ¡ |ksFJ ‚t g dtƒ}t g g gdtƒ}| ¡ |ksrJ ‚| ¡ |ks‚J ‚t g dtƒ}| ¡ |ksžJ ‚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    rC   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rŽ|ks”n 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   „   r   ztest_DDM_add.<locals>.<lambda>c                      s   ˆ t dƒ S ©Nr   ©r   r   rF   r   r   r   …   r   c                      s   t dƒˆ  S rH   rI   r   rF   r   r   r   †   r   c                      s   ˆ ˆ S ©Nr   r   ©rG   ÚAQr   r   r   ‡   r   c                      s   ˆˆ  S rJ   r   r   rK   r   r   r   ˆ   r   )r   r   r   Úaddr   r   Ú	TypeErrorr	   ©ÚBÚCr   rK   r   Útest_DDM_add}   s    $rR   c                     sp  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r¢|ks¨n 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   rE   c                      s   ˆ t dƒ S rH   rI   r   rF   r   r   r   “   r   ztest_DDM_sub.<locals>.<lambda>c                      s   t dƒˆ  S rH   rI   r   rF   r   r   r   ”   r   c                      s   ˆ ˆ S rJ   r   r   ©rG   ÚDr   r   r   •   r   c                      s   ˆˆ  S rJ   r   r   rT   r   r   r   –   r   c                      s
   ˆ   ˆ¡S rJ   ©Úsubr   rT   r   r   r   —   r   c                      s
   ˆ  ˆ ¡S rJ   rV   r   rT   r   r   r   ˜   r   c                      s   ˆ ˆ S rJ   r   r   rK   r   r   r   ™   r   c                      s   ˆˆ  S rJ   r   r   rK   r   r   r   š   r   c                      s
   ˆ   ˆ¡S rJ   rV   r   rK   r   r   r   ›   r   c                      s
   ˆ  ˆ ¡S rJ   rV   r   rK   r   r   r   œ   r   )r   r   r   rW   r   rN   r   r	   rO   r   )rG   rL   rU   r   Útest_DDM_sub‹   s     $rX   c                  C   s|   t tdƒgtdƒggdtƒ} t tdƒgtdƒggdtƒ}|  |  ¡   krR|ksXn J ‚| | ¡   krr| ksxn J ‚d S )Nr   r   r<   r!   rS   )r   r   Úneg)rG   ZAnr   r   r   Útest_DDM_negŸ   s     rZ   c                     sx   t tdƒggdtƒ‰ t tdƒggdtƒ} ˆ tdƒ | ks<J ‚tdƒˆ  | ksPJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr   rE   r   c                      s   dggˆ  S rH   r   r   rF   r   r   r   «   r   ztest_DDM_mul.<locals>.<lambda>c                      s   ˆ dgg S rH   r   r   rF   r   r   r   ¬   r   )r   r   r   rN   )ÚA2r   rF   r   Útest_DDM_mul¦   s    r\   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r|ks–n J ‚| ˆ  |  ˆ ¡  kr´|ksºn 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rVˆ ks\n 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$n J ‚|| | |¡  krFˆksLn J ‚|| | |¡  krn|kstn J ‚|| | |¡  kr–|ksœn J ‚|| | |¡  kr¾|ksÄn J ‚|| | |¡  kræ|ksìn J ‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ d S )Nr   r   r<   r   r   r*   rD   é   r   é   rE   c                      s   ˆ d S rH   r   r   rF   r   r   r   ¸   r   z!test_DDM_matmul.<locals>.<lambda>c                      s   ˆ ddgg S )Nr   r   r   r   rF   r   r   r   ¹   r   c                      s   ˆ ˆ S rJ   r   r   ©rG   ÚBqr   r   r   ½   r   c                      s   ˆˆ  S rJ   r   r   r_   r   r   r   ¾   r   c                      s   ˆˆ  S rJ   r   r   ©rG   rQ   r   r   r   Ä   r   c                      s
   ˆ  ˆ ¡S rJ   ©Úmatmulr   ra   r   r   r   Å   r   ©r   r   )r   r   r   )r   r   )r   r   r   )r   r   )r   r   rA   c                      s   ˆ ˆ S rJ   r   r   ©ÚZ05ÚZ40r   r   r   Ö   r   c                      s
   ˆ   ˆ¡S rJ   rb   r   re   r   r   r   ×   r   )r   r   rc   r   rN   r   r	   r   )rP   ZABZBAZZ04ZZ50ZZ45ZZ54ZZ00r   )rG   r`   rQ   rf   rg   r   Útest_DDM_matmul¯   s<    ($$(((((((rh   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sfJ ‚|jtkstJ ‚|t tdƒtdƒtdƒtdƒtdƒggd
tƒks¨J ‚|  ||¡}|jdksÂJ ‚|jtksÐJ ‚|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*   rD   rE   )r   r   )r   rD   )r   r   Zhstackr   r   ©rG   rP   rQ   ZAhr   r   r   Útest_DDM_hstackÚ   s     
4rk   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slJ ‚|jtkszJ ‚|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sÐJ ‚|jtksÞJ ‚|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<   rD   rE   )r   r   )rD   r   )r   r   Zvstackr   r   rj   r   r   r   Útest_DDM_vstackê   s    $
<rm   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sXJ ‚d S )	Nr   r   r   ri   r   rD   c                 S   s   d|  S )Nr   r   ©Úxr   r   r   r   ý   r   z$test_DDM_applyfunc.<locals>.<lambda>)r   r   Z	applyfunc©rG   rP   r   r   r   Útest_DDM_applyfuncú   s      rq   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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ƒ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s¨J ‚d S )Nrd   r   r   r   r   r   r   r   r!   ©r   r   )r   r   Zrref)rG   ZArZpivotsr   r   r   Útest_DDM_rrefÿ   s,    ((44446644rs   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)rG   ZAnullZ	nonpivotsr   r   r   Útest_DDM_nullspace  s    (rt   c                  C   s6   t tdƒtdƒggdtƒ} |  ¡ t  dt¡ks2J ‚d S )Nr   r   r*   rE   )r   r   Z
particularr-   rF   r   r   r   Útest_DDM_particular&  s    ru   c                      sx  t g dtƒ‰ ˆ  ¡ tdƒks J ‚t tdƒggdtƒ‰ ˆ  ¡ tdƒksHJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  ¡ tdƒ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ƒksàJ ‚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 )NrA   r   r   rE   r   r   r   rS   r   r9   r   r!   é   r<   c                      s   ˆ   ¡ S rJ   ©Údetr   rF   r   r   r   B  r   ztest_DDM_det.<locals>.<lambda>©r   r   c                      s   ˆ   ¡ S rJ   rw   r   rF   r   r   r   F  r   )r   r   rx   r   r   r   r   r   rF   r   Útest_DDM_det+  s    (H0rz   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spJ ‚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sÞJ ‚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   rS   r!   r*   c                      s   ˆ   ¡ S rJ   ©Úinvr   rF   r   r   r   O  r   ztest_DDM_inv.<locals>.<lambda>rE   c                      s   ˆ   ¡ S rJ   r{   r   rF   r   r   r   R  r   rA   c                      s   ˆ   ¡ S rJ   r{   r   rF   r   r   r   X  r   )r   r   r|   r   r   r   r	   r   )ZAinvr   rF   r   Útest_DDM_invI  s    00(r}   c                  C   sp  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sfJ ‚|t tdƒtdƒgtdƒtdƒggdtƒks–J ‚|g ks¢J ‚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sPJ ‚||ks^J ‚|g kslJ ‚d S )Nr   r   r   r   r   r   rS   )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   )r4   Úe©Údomr   r   r6   e  r   z<test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r   )r4   Úrowr   r   r   r6   e  r   z1test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>r   )r   r€   r   r   r   r   e  r   ztest_DDM_lu.<locals>.<lambda>)r   r   )r   r   Zlu)rG   ÚLÚUZswapsZLexpZUexpZto_domr   r   r   Útest_DDM_lu[  s     (00r„   c                     sZ  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stJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  ˆ¡| 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ƒgtdƒgtdƒggdtƒ‰ˆ  ˆ¡| ksJ ‚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   rD   rr   rl   c                      s
   ˆ   ˆ¡S rJ   ©Úlu_solver   ©rG   Úbr   r   r     r   z#test_DDM_lu_solve.<locals>.<lambda>c                      s
   ˆ   ˆ¡S rJ   r…   r   r‡   r   r   r   †  r   r*   rE   c                      s
   ˆ   ˆ¡S rJ   r…   r   r‡   r   r   r   ‹  r   c                      s
   ˆ   ˆ¡S rJ   r…   r   )rG   Úbzr   r   r     r   c                      s
   ˆ   ˆ¡S rJ   r…   r   )rG   Úb3r   r   r   “  r   )	r   r   r†   r   r   ÚNotImplementedErrorr   r	   r   rn   r   )rG   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s–J ‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )NrA   r   r   r   r   r   rD   é   r]   é	   r9   iñÿÿÿiîÿÿÿr   r*   c                      s   ˆ   ¡ S rJ   )Úcharpolyr   rF   r   r   r   ¢  r   z#test_DDM_charpoly.<locals>.<lambda>)r   r   r   r   r   )ZAvecr   rF   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s`J ‚ˆ  dd¡tdƒksxJ ‚ˆ  dd¡tdƒksJ ‚tt‡ fdd„ƒ d S )Nr   r   r   r   r   rD   r   r]   rŽ   r9   rS   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sJJ ‚tt‡ fdd„ƒ d S )	Nr9   r   r   rS   r!   r   c                      s   ˆ   ddd¡S )Nr   r   )Úsetitemr   r“   r   r   r   ¹  r   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shJ ‚|  tddƒtdƒ¡t dgdggdtƒks–J ‚|  tddƒtdƒ¡t dgdggdtƒksÄJ ‚|  tddƒtdƒ¡t tdƒggdtƒksòJ ‚|  tddƒtdƒ¡t dgdggdtƒks"J ‚|  tdƒtdƒ¡t ddgddggdtƒksTJ ‚|  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   rD   r   r]   rŽ   r9   r   rS   r<   rE   r!   r   r@   r?   rA   )r   r   Zextract_sliceÚslicer“   r   r   r   Útest_DDM_extract_slice¼  s     ýý ...02,(r™   c                     sN  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sŒJ ‚|  ddgddg¡ˆ ks¨J ‚|  g g ¡t  dt¡ksÄJ ‚|  dgg ¡t  dt¡ksâJ ‚|  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   rD   r   r]   rŽ   r9   r   r   rS   r!   rA   )r   r   ry   c                      s   ˆ   dgdg¡S r   ©Úextractr   ©Zdm2r   r   r   Ý  r   z"test_DDM_extract.<locals>.<lambda>c                      s   ˆ   dgdg¡S r    rš   r   rœ   r   r   r   Þ  r   c                      s   ˆ   dgdg¡S )Nr‘   r   rš   r   rœ   r   r   r   ß  r   c                      s   ˆ   dgdg¡S )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sPJ ‚d S )NrD   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 sDJ ‚| ¡ du sTJ ‚d S )Nr   r   r   r*   FT)r   r   r-   Zis_zero_matrix)rG   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 sÄJ ‚| ¡ du sÔJ ‚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   rD   r   r]   rŽ   r,   TF)r   r   é
   )r   r   Zis_upperrp   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 sÌJ ‚| ¡ du sÜJ ‚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   rB   Zis_lowerrp   r   r   r   Útest_DDM_is_lower  sD    ýüýüüûüû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+   r0   r1   r;   r>   rC   rR   rX   rZ   r\   rh   rk   rm   rq   rs   rt   ru   rz   r}   r„   rŒ   r   r•   r—   r™   r   rž   rŸ   r¢   r£   r   r   r   r   Ú<module>   sL   

	+'
 