U
    	Ç-e 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)ÚHAS_GMPY)Ú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sJt‚|jdksXt‚|jdksft‚|jt kstt‚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   úd/var/www/html/Darija-Ai-Train/env/lib/python3.8/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ÚAssertionErrorÚ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@t‚ˆ d d tdƒksXt‚ˆ d d tdƒkspt‚ˆ d d tdƒksˆt‚tt‡ fdd	„ƒ tt‡ fd
d	„ƒ tdƒˆ d d< ˆ d d tdƒksÔt‚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   r   Ú
IndexErrorr   r   r    r   Útest_DDM_getsetitem   s    (r$   c                  C   sr   t tdƒtdƒgtdƒtdƒggdtƒ} trNt| ƒdks<t‚t| ƒdksnt‚n t| ƒdks^t‚t| ƒdksnt‚d S )	Nr   r   r   r   r   z[[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   Ústrr   Ú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ksHt‚|| kdksXt‚| |kdksht‚||kdksxt‚||kdksˆt‚||kdks˜t‚|| kdks¨t‚| |kdks¸t‚||kdksÈt‚||kdksØt‚tt dƒt dƒgt dƒt dƒggdt ƒ}t| dtƒ}||kdkst‚||kdks0t‚||kdksBt‚||kdksTt‚d S )Nr   r   r   r   r   TF)r   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,t‚|  t¡}|jtksDt‚d S )Nr   r   ©r   r   )r   r   Z
convert_tor   r   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,t‚| jdks:t‚| jtksHt‚d S )N©r   r   r   r   r   )r   Úzerosr   Úlistr   r   r   ©Zddmzr   r   r   Útest_DDM_zerosS   s     r1   c                  C   sL   t  dt¡} t| ƒtdƒgd gd ks,t‚| jdks:t‚| jtksHt‚d S )Nr   r   r   r   )r   Zonesr   r/   r   r   r   )Zddmoner   r   r   Útest_DDM_onesY   s     r2   c                     sV   t  dt¡} dd„ ‰ t| ƒ‡ fdd„tdƒD ƒks6t‚| jdksDt‚| jtksRt‚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   )Ú.0r3   )Úfr4   r   r   Ú
<listcomp>b   s     z+test_DDM_eye.<locals>.<listcomp>.<listcomp>r   )Úrange)r5   ©r6   )r4   r   r7   b   s     z test_DDM_eye.<locals>.<listcomp>©r   r   )r   Úeyer   r/   r8   r   r   r   r0   r   r9   r   Útest_DDM_eye_   s
    "r<   c                  C   sx   t tdƒgtdƒggdtƒ} |  ¡ }| |kdks4t‚tdƒ| d d< | |kdksTt‚tdƒ|d d< | |kdkstt‚d S )Nr   r   ©r   r   Tr"   r   F)r   r   Úcopyr   )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sFt‚t g dtƒ}t g g gdtƒ}| ¡ |ksrt‚| ¡ |ks‚t‚t g dtƒ}| ¡ |ksžt‚d S )Nr   r   r=   r+   ©r   r   ©r   r   ©r   r   )r   r   Ú	transposer   )r   ZddmTZddm02Zddm02TZddm0r   r   r   Útest_DDM_transposeq   s    rD   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 t‚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   rG   r   r   r   …   r   c                      s   t dƒˆ  S rI   rJ   r   rG   r   r   r   †   r   c                      s   ˆ ˆ S ©Nr   r   ©rH   ÚAQr   r   r   ‡   r   c                      s   ˆˆ  S rK   r   r   rL   r   r   r   ˆ   r   )	r   r   r   Úaddr   r   r   Ú	TypeErrorr	   ©ÚBÚCr   rL   r   Útest_DDM_add}   s    $rS   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 t‚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   rF   c                      s   ˆ t dƒ S rI   rJ   r   rG   r   r   r   “   r   ztest_DDM_sub.<locals>.<lambda>c                      s   t dƒˆ  S rI   rJ   r   rG   r   r   r   ”   r   c                      s   ˆ ˆ S rK   r   r   ©rH   ÚDr   r   r   •   r   c                      s   ˆˆ  S rK   r   r   rU   r   r   r   –   r   c                      s
   ˆ   ˆ¡S rK   ©Úsubr   rU   r   r   r   —   r   c                      s
   ˆ  ˆ ¡S rK   rW   r   rU   r   r   r   ˜   r   c                      s   ˆ ˆ S rK   r   r   rL   r   r   r   ™   r   c                      s   ˆˆ  S rK   r   r   rL   r   r   r   š   r   c                      s
   ˆ   ˆ¡S rK   rW   r   rL   r   r   r   ›   r   c                      s
   ˆ  ˆ ¡S rK   rW   r   rL   r   r   r   œ   r   )	r   r   r   rX   r   r   rO   r   r	   rP   r   )rH   rM   rV   r   Útest_DDM_sub‹   s     $rY   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 t‚| | ¡   krr| ksxn t‚d S )Nr   r   r=   r"   rT   )r   r   Únegr   )rH   ZAnr   r   r   Útest_DDM_negŸ   s     r[   c                     sx   t tdƒggdtƒ‰ t tdƒggdtƒ} ˆ tdƒ | ks<t‚tdƒˆ  | ksPt‚tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr   rF   r   c                      s   dggˆ  S rI   r   r   rG   r   r   r   «   r   ztest_DDM_mul.<locals>.<lambda>c                      s   ˆ dgg S rI   r   r   rG   r   r   r   ¬   r   )r   r   r   r   rO   )ÚA2r   rG   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 t‚| ˆ  |  ˆ ¡  kr´|ksºn t‚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 t‚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 t‚|| | |¡  krFˆksLn t‚|| | |¡  krn|kstn t‚|| | |¡  kr–|ksœn t‚|| | |¡  kr¾|ksÄn t‚|| | |¡  kræ|ksìn t‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ d S )Nr   r   r=   r   r   r+   rE   é   r   é   rF   c                      s   ˆ d S rI   r   r   rG   r   r   r   ¸   r   z!test_DDM_matmul.<locals>.<lambda>c                      s   ˆ ddgg S )Nr   r   r   r   rG   r   r   r   ¹   r   c                      s   ˆ ˆ S rK   r   r   ©rH   ÚBqr   r   r   ½   r   c                      s   ˆˆ  S rK   r   r   r`   r   r   r   ¾   r   c                      s   ˆˆ  S rK   r   r   ©rH   rR   r   r   r   Ä   r   c                      s
   ˆ  ˆ ¡S rK   ©Úmatmulr   rb   r   r   r   Å   r   ©r   r   )r   r   r   )r   r   )r   r   r   )r   r   )r   r   rB   c                      s   ˆ ˆ S rK   r   r   ©ÚZ05ÚZ40r   r   r   Ö   r   c                      s
   ˆ   ˆ¡S rK   rc   r   rf   r   r   r   ×   r   )	r   r   rd   r   r   rO   r   r	   r   )rQ   ZABZBAZZ04ZZ50ZZ45ZZ54ZZ00r   )rH   ra   rR   rg   rh   r   Útest_DDM_matmul¯   s<    ($$(((((((ri   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sft‚|jtkstt‚|t tdƒtdƒtdƒtdƒtdƒggd
tƒks¨t‚|  ||¡}|jdksÂt‚|jtksÐt‚|t tdƒtdƒtdƒtdƒtdƒtdƒggdtƒkst‚d S )Nr   r   r   ©r   r   r   r   r+   rE   rF   )r   r   )r   rE   )r   r   Zhstackr   r   r   ©rH   rQ   rR   ZAhr   r   r   Útest_DDM_hstackÚ   s     
4rl   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slt‚|jtkszt‚|t tdƒgtdƒgtdƒgtdƒgtdƒggd
tƒks¶t‚|  ||¡}|jdksÐt‚|jtksÞt‚|t tdƒgtdƒgtdƒgtdƒgtdƒgtdƒggdtƒks$t‚d S )Nr   r   r   ©r   r   r   r   r=   rE   rF   )r   r   )rE   r   )r   r   Zvstackr   r   r   rk   r   r   r   Útest_DDM_vstackê   s    $
<rn   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sXt‚d S )	Nr   r   r   rj   r   rE   c                 S   s   d|  S )Nr   r   ©Úxr   r   r   r   ý   r   z$test_DDM_applyfunc.<locals>.<lambda>)r   r   Z	applyfuncr   ©rH   rQ   r   r   r   Útest_DDM_applyfuncú   s      rr   c                  C   s¬  t g dtƒ} |  ¡ | g fks t‚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Œt‚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t‚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˜t‚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"t‚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¨t‚d S )Nre   r   r   r   r   r   r   r   r"   ©r   r   )r   r   Zrrefr   )rH   ZArZpivotsr   r   r   Útest_DDM_rrefÿ   s,    ((44446644rt   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\t‚d S )Nr   r   r"   r+   )r   r   Z	nullspacer   )rH   ZAnullZ	nonpivotsr   r   r   Útest_DDM_nullspace  s    (ru   c                  C   s6   t tdƒtdƒggdtƒ} |  ¡ t  dt¡ks2t‚d S )Nr   r   r+   rF   )r   r   Z
particularr.   r   rG   r   r   r   Útest_DDM_particular%  s    rv   c                      sx  t g dtƒ‰ ˆ  ¡ tdƒks t‚t tdƒggdtƒ‰ ˆ  ¡ tdƒksHt‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  ¡ tdƒks„t‚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àt‚t tddƒtddƒgtddƒtddƒggdtƒ‰ ˆ  ¡ tddƒks(t‚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 )NrB   r   r   rF   r   r   r   rT   r   r:   r   r"   é   r=   c                      s   ˆ   ¡ S rK   ©Údetr   rG   r   r   r   A  r   ztest_DDM_det.<locals>.<lambda>©r   r   c                      s   ˆ   ¡ S rK   rx   r   rG   r   r   r   E  r   )r   r   ry   r   r   r   r   r   r   rG   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spt‚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Þt‚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   rT   r"   r+   c                      s   ˆ   ¡ S rK   ©Úinvr   rG   r   r   r   N  r   ztest_DDM_inv.<locals>.<lambda>rF   c                      s   ˆ   ¡ S rK   r|   r   rG   r   r   r   Q  r   rB   c                      s   ˆ   ¡ S rK   r|   r   rG   r   r   r   W  r   )	r   r   r}   r   r   r   r   Ú
ValueErrorr   )ZAinvr   rG   r   Útest_DDM_invH  s    00(r   c                  C   s   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sft‚|t tdƒtdƒgtdƒtdƒggdtƒks–t‚|g ks¢t‚ddddgddddgddddgddddgg} ddddgddddgddddgddddgg}ddddgddddgddddgddddgg}dd	„ }t || tƒd
tƒ} t ||tƒd
tƒ}t ||tƒd
tƒ}|  ¡ \}}}||ks€t‚||ksŽt‚|g ksœt‚d S )Nr   r   r   r   r   r   rT   c                    s   ‡ fdd„| D ƒS )Nc                    s   g | ]}‡ fd d„|D ƒ‘qS )c                    s   g | ]}ˆ |ƒ‘qS r   r   )r5   Úe©Údomr   r   r7   d  s     z<test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r   )r5   Úrowr   r   r   r7   d  s     z1test_DDM_lu.<locals>.<lambda>.<locals>.<listcomp>r   )r   r‚   r   r   r   r   d  r   ztest_DDM_lu.<locals>.<lambda>)r   r   )r   r   Zlur   )rH   ÚLÚUZswapsZLexpZUexpZto_domr   r   r   Útest_DDM_luZ  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stt‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  ˆ¡| ks®t‚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t‚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   rE   rs   rm   c                      s
   ˆ   ˆ¡S rK   ©Úlu_solver   ©rH   Úbr   r   r   €  r   z#test_DDM_lu_solve.<locals>.<lambda>c                      s
   ˆ   ˆ¡S rK   r‡   r   r‰   r   r   r   …  r   r+   rF   c                      s
   ˆ   ˆ¡S rK   r‡   r   r‰   r   r   r   Š  r   c                      s
   ˆ   ˆ¡S rK   r‡   r   )rH   Úbzr   r   r   Ž  r   c                      s
   ˆ   ˆ¡S rK   r‡   r   )rH   Úb3r   r   r   ’  r   )
r   r   rˆ   r   r   r   ÚNotImplementedErrorr   r	   r   ro   r   )rH   rŠ   rŒ   r‹   r   Útest_DDM_lu_solven  s*    ((6$$($rŽ   c                     sÆ   t g dtƒ‰ ˆ  ¡ tdƒgks"t‚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–t‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )NrB   r   r   r   r   r   rE   é   r^   é	   r:   iñÿÿÿiîÿÿÿr   r+   c                      s   ˆ   ¡ S rK   )Úcharpolyr   rG   r   r   r   ¡  r   z#test_DDM_charpoly.<locals>.<lambda>)r   r   r‘   r   r   r   )ZAvecr   rG   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`t‚ˆ  dd¡tdƒksxt‚ˆ  dd¡tdƒkst‚tt‡ fdd„ƒ d S )Nr   r   r   r   r   rE   r   r^   r   r:   rT   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•   r   Útest_DDM_getitem¤  s    ý ýr—   c                      s`   t  dt¡‰ ˆ  ddd¡ ˆ  ddd¡ ˆ  ddd¡ ˆ t  dt¡ksJt‚tt‡ fdd„ƒ d S )	Nr:   r   r   rT   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•   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sht‚|  tddƒtdƒ¡t dgdggdtƒks–t‚|  tddƒtdƒ¡t dgdggdtƒksÄt‚|  tddƒtdƒ¡t tdƒggdtƒksòt‚|  tddƒtdƒ¡t dgdggdtƒks"t‚|  tdƒtdƒ¡t ddgddggdtƒksTt‚|  tdƒtddƒ¡t g g gdtƒks€t‚|  tddƒtdƒ¡t g dtƒks¨t‚|  tddƒtddƒ¡t g dtƒksÒt‚d S )Nr   r   r   r   r   rE   r   r^   r   r:   r   rT   r=   rF   r"   r   rA   r@   rB   )r   r   Zextract_sliceÚslicer   r•   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Œt‚|  ddgddg¡ˆ ks¨t‚|  g g ¡t  dt¡ksÄt‚|  dgg ¡t  dt¡ksât‚|  g dg¡t  dt¡kst‚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   rE   r   r^   r   r:   r   r   rT   r"   rB   )r   r   rz   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   r#   )Zdm1r   rž   r   Útest_DDM_extractÍ  s0    ý ýþ þ 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sPt‚d S )NrE   r   r   r   r   )r   r   Zflatr   r•   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ksDt‚| ¡ dksTt‚d S )Nr   r   r   r+   FT)r   r   r.   Zis_zero_matrixr   )rH   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ksÄt‚| ¡ dksÔ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ƒ} 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ksžt‚| ¡ dks°t‚d S ©Nr   r   r   r   r   r   rE   r   r^   r   r-   TF)r   r   é
   )r   r   Zis_upperr   rq   r   r   r   Útest_DDM_is_upperð  sL    ý üý üü ûü û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ksÌt‚| ¡ dksÜ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ƒ ¡ } 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ks®t‚| ¡ dksÀt‚d S r¢   )r   r   rC   Zis_lowerr   rq   r   r   r   Útest_DDM_is_lower  sL    ý üý üü ûü û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,   r1   r2   r<   r?   rD   rS   rY   r[   r]   ri   rl   rn   rr   rt   ru   rv   r{   r   r†   rŽ   r’   r—   r™   r›   rŸ   r    r¡   r¤   r¥   r   r   r   r   Ú<module>   sL   

	+'
 