U
    L?hR3  ã                   @   sl  d dl mZ d dlmZmZ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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„ 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„ Z0dd „ Z1d!d"„ Z2d#d$„ Z3d%d&„ Z4d'd(„ Z5d)d*„ Z6d+d,„ Z7d-d.„ Z8d/d0„ Z9d1d2„ Z:d3d4„ Z;d5d6„ Z<d7S )8é    )Úvar)ÚpquoÚpremÚsturmÚsubresultants)ÚMatrix)Ú	sylvesterÚresÚres_qÚres_zÚbezoutÚsubresultants_sylvÚmodified_subresultants_sylvÚsubresultants_bezoutÚmodified_subresultants_bezoutÚbackward_eyeÚsturm_pgÚsturm_qÚ	sturm_amvÚ	euclid_pgÚeuclid_qÚ
euclid_amvÚmodified_subresultants_pgÚsubresultants_pgÚsubresultants_amv_qÚquo_zÚrem_zÚsubresultants_amvÚmodified_subresultants_amvÚsubresultants_remÚsubresultants_vvÚsubresultants_vv_2c                  C   sþ  t dƒ} t| d d d| ƒt| d d d| dƒ  krFtdggƒksLn t‚td| d d | ƒtd| d d | dƒ  krŠtdggƒksn t‚t| d d d| dƒtdggƒks¶t‚td| d d | dƒtdggƒksÜt‚t| d d d| ƒ ¡ t| d d d| dƒ ¡   krdks$n t‚td| d d | ƒ ¡ td| d d | dƒ ¡   krfdksln t‚t| d d d| dƒ ¡ dkst‚td| d d | dƒ ¡ dks´t‚tdd| ƒ ¡ tdd| dƒ ¡   kr tdd| dƒ ¡   kr dksn t‚tdd| ƒ ¡ tdd| dƒ ¡   krRtdd| dƒ ¡   krRdksXn t‚t| d | d	 | ƒt| d | d	 | dƒ  krÀt| d | d	 | dƒ  krÀtdd
gddggƒksÆn t‚t| d d|   d d| d  d | ƒt| d d|   d d| d  d | dƒ  krhtdddddgdddddgdddddgdddddgdddddggƒksnn t‚t| d d|   d d| d  d | dƒtddddddgddddddgddddddgddddddgddddddgddddddggƒksút‚d S )NÚxé   é   r   é   é   iW  i©þÿÿé   éýÿÿÿiøÿÿÿiùÿÿÿ)r   r   r   ÚAssertionErrorÚdet©r"   © r,   ú\/var/www/html/venv/lib/python3.8/site-packages/sympy/polys/tests/test_subresultants_qq_zz.pyÚtest_sylvester   s*    DD&&HH$$RRn¨*     ÿr.   c                  C   sT  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒks´t‚t||| ƒt||| ƒksÐt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksPt‚d S )Nr"   r'   é   r#   é   r&   é   é	   é   éÿÿÿÿr%   c                 S   s   g | ]\}}|| ‘qS r,   r,   ©Ú.0ÚiÚjr,   r,   r-   Ú
<listcomp>0   s     z+test_subresultants_sylv.<locals>.<listcomp>r$   )r   r   r   r)   r	   r   Úzipr   ©r"   ÚpÚqZamv_factorsr,   r,   r-   Útest_subresultants_sylv'   s    @0 .r>   c                  C   s`  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }d
d
dd
dd
g}t||| ƒdd„ t|t||| ƒƒD ƒks´t‚t||| ƒd t|| d  || ƒksÜt‚t||| ƒt||| ƒksøt‚| d d|   d }d| d  d }t||| ƒt||| ƒks:t‚t| || ƒt| || ƒks\t‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r%   r4   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   <   s     z4test_modified_subresultants_sylv.<locals>.<listcomp>r$   )r   r   r:   r   r)   r
   r   r;   r,   r,   r-   Ú test_modified_subresultants_sylv6   s    @0,(r?   c                  C   s    t dƒ} tdd| ƒdkst‚d S ©Nr"   r#   r1   r%   )r   r	   r)   r+   r,   r,   r-   Útest_resE   s    rA   c                  C   s    t dƒ} tdd| ƒdkst‚d S r@   )r   r
   r)   r+   r,   r,   r-   Ú
test_res_qJ   s    rB   c                  C   sR   t dƒ} tdd| ƒdkst‚tdd| ƒtdd| ƒ  krHtdd| ƒksNn t‚d S r@   )r   r   r)   r	   r
   r+   r,   r,   r-   Ú
test_res_zO   s    rC   c                  C   sà   t dƒ} d| d  d| d   d| d   d|   d }d	| d
  d| d   d|   d }t||| dƒ ¡ t||| dƒ ¡ ks„t‚t||| dƒ ¡ t||| dƒ ¡ ks¬t‚t||| dƒtdƒt||| dƒ tdƒ ksÜt‚d S )Nr"   éþÿÿÿr1   r$   r#   r2   r&   r%   iöÿÿÿr0   r3   é   ZbzZprs)r   r   r*   r   r)   r   ©r"   r<   r=   r,   r,   r-   Útest_bezoutU   s    0$((rG   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   g   s     z-test_subresultants_bezout.<locals>.<listcomp>r$   )	r   r   r   r)   r   r*   r   r:   r   r;   r,   r,   r-   Útest_subresultants_bezout^   s    @0$.rH   c                  C   sd  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }d
d
dd
dd
g}t||| ƒdd„ t|t||| ƒƒD ƒks´t‚t||| ƒd t|| d  || ƒ ¡ ksàt‚t||| ƒt||| ƒksüt‚| d d|   d }d| d  d }t||| ƒt||| ƒks>t‚t| || ƒt| || ƒks`t‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r%   r4   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   s   s     z6test_modified_subresultants_bezout.<locals>.<listcomp>r$   )r   r   r:   r   r)   r   r*   r   r;   r,   r,   r-   Ú"test_modified_subresultants_bezoutm   s    @0,,rI   c                  C   s²  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒd
 t||| dƒ ¡ ksžt‚ddd
d
ddg}t||| ƒdd„ t|t||| ƒƒD ƒksÚt‚d| d  d| d   d }d| d  d| d   }t||| dƒd
 t||| dƒ ¡ ks8t‚t||| ƒd
 t||| dƒ ¡ ks`t‚t| || ƒd
 t| || dƒ ¡ ksŒt‚t| || ƒt| || ƒks®t‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   ƒ   s     z!test_sturm_pg.<locals>.<listcomp>é÷ÿÿÿéÓÿÿÿé   )r   r   r   r*   r)   r:   r   r   ©r"   r<   r=   Zsam_factorsr,   r,   r-   Útest_sturm_pg|   s    @0&,*(,rN   c                  C   sf   t dƒ} | d d|   d }d| d  d }t||| ƒt|ƒksDt‚t| | | ƒt| ƒksbt‚d S )Nr"   r#   r$   r&   )r   r   r   r)   rF   r,   r,   r-   Útest_sturm_qŒ   s
    rO   c                  C   s²  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒd
 t||| dƒ ¡ ksžt‚ddd
d
ddg}t||| ƒdd„ t|t||| ƒƒD ƒksÚt‚d| d  d| d   d }d| d  d| d   }t||| dƒd
 t||| dƒ ¡ ks8t‚t||| ƒd
 t||| dƒ ¡ ks`t‚t| || ƒd
 t| || dƒ ¡ ksŒt‚t| || ƒt| || ƒks®t‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   œ   s     z"test_sturm_amv.<locals>.<listcomp>rJ   rK   rL   )	r   r   r   r*   r)   r:   r   r   r   rM   r,   r,   r-   Útest_sturm_amv•   s    @0&,*(,rP   c                  C   sŽ  t dƒ} | d | d  | d  | d  | d  |  d }d| d  d| d   d| d   d| d   d|   d }t||| ƒd t||| ƒ ¡ ks˜t‚t||| ƒt||| ƒks´t‚| d	 | d  d| d   d| d   d	| d   d|   d }d| d  d| d   d| d   d
|   d }t||| ƒd t||| dƒ ¡ ksLt‚ddddddg}t||| ƒdd„ t|t||| ƒƒD ƒksŠt‚d S )Nr"   r/   r1   r0   r#   r&   r%   r4   r'   r2   r3   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   ²   s     z"test_euclid_pg.<locals>.<listcomp>)r   r   r   r*   r)   r   r:   r   rM   r,   r,   r-   Útest_euclid_pg¦   s    0<$@0(rQ   c                  C   sR   t dƒ} | d d|   d }d| d  d }t||| ƒd t|ƒd  ksNt‚d S )Nr"   r#   r$   r&   r4   )r   r   r   r)   rF   r,   r,   r-   Útest_euclid_qµ   s    rR   c                  C   sF  t dƒ} | d d|   d }d| d  d }t||| ƒd t||| ƒ ¡ ksPt‚t||| ƒt||| ƒkslt‚| d | d  d| d   d| d   d| d   d|   d	 }d| d  d	| d   d| d   d
|   d }t||| ƒd t||| dƒ ¡ kst‚ddddddg}t||| ƒdd„ t|t||| ƒƒD ƒksBt‚d S )Nr"   r#   r$   r&   r4   r'   r/   r0   r1   r2   r3   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   É   s     z#test_euclid_amv.<locals>.<listcomp>)r   r   r   r*   r)   r   r:   r   rM   r,   r,   r-   Útest_euclid_amv½   s    $@0(rS   c                  C   sd  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }d
d
dd
dd
g}t||| ƒdd„ t|t||| ƒƒD ƒks´t‚t||| ƒd t|| d  || ƒ ¡ ksàt‚t||| ƒt||| ƒksüt‚| d d|   d }d| d  d }t||| ƒt||| ƒks>t‚t| || ƒt| || ƒks`t‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r%   r4   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   Ò   s     z2test_modified_subresultants_pg.<locals>.<listcomp>r$   )r   r   r:   r   r)   r   r*   r   r;   r,   r,   r-   Útest_modified_subresultants_pgÌ   s    @0,,rT   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   å   s     z)test_subresultants_pg.<locals>.<listcomp>r$   )	r   r   r   r)   r   r*   r   r:   r   r;   r,   r,   r-   Útest_subresultants_pgÜ   s    @0$.rU   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t	||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   õ   s     z,test_subresultants_amv_q.<locals>.<listcomp>r$   )
r   r   r   r)   r   r*   r   r:   r   r   r;   r,   r,   r-   Útest_subresultants_amv_qì   s    @0$.rV   c                  C   sœ   t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t|| | ƒt|| | ƒks˜t‚d S )
Nr"   r'   r/   r#   r0   r&   r1   r2   r3   )r   r   r   r)   rF   r,   r,   r-   Ú
test_rem_zü   s    @0rW   c                  C   sô   t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t|| | ƒt|| | ƒks˜t‚t d
ƒ}d| d  d|d   d| d   d|   d	 }t|| | ƒt|| | ƒksðt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   Úy)r   r   r   r)   )r"   r<   r=   rX   r,   r,   r-   Ú
test_quo_z  s    @0 0rY   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9     s     z*test_subresultants_amv.<locals>.<listcomp>r$   )	r   r   r   r)   r   r*   r   r:   r   r;   r,   r,   r-   Útest_subresultants_amv  s    @0$.rZ   c                  C   sd  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }d
d
dd
dd
g}t||| ƒdd„ t|t||| ƒƒD ƒks´t‚t||| ƒd t|| d  || ƒ ¡ ksàt‚t||| ƒt||| ƒksüt‚| d d|   d }d| d  d }t||| ƒt||| ƒks>t‚t| || ƒt| || ƒks`t‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r%   r4   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   $  s     z3test_modified_subresultants_amv.<locals>.<listcomp>r$   )r   r   r:   r   r)   r   r*   r   r;   r,   r,   r-   Útest_modified_subresultants_amv  s    @0,,r[   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   7  s     z*test_subresultants_rem.<locals>.<listcomp>r$   )	r   r   r   r)   r   r*   r   r:   r   r;   r,   r,   r-   Útest_subresultants_rem.  s    @0$.r\   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   G  s     z)test_subresultants_vv.<locals>.<listcomp>r$   )	r   r    r   r)   r   r*   r   r:   r   r;   r,   r,   r-   Útest_subresultants_vv>  s    @0$.r]   c                  C   sX  t dƒ} | d | d  d| d   d| d   d| d   d|   d }d| d  d| d   d| d   d|   d	 }t||| ƒt||| ƒks”t‚t||| ƒd
 t||| ƒ ¡ ks¸t‚t||| ƒt||| ƒksÔt‚ddd
dd
dg}t||| ƒdd„ t|t||| ƒƒD ƒkst‚| d d|   d }d| d  d }t||| ƒt||| ƒksTt‚d S )Nr"   r'   r/   r#   r0   r&   r1   r2   r3   r4   r%   c                 S   s   g | ]\}}|| ‘qS r,   r,   r5   r,   r,   r-   r9   W  s     z+test_subresultants_vv_2.<locals>.<listcomp>r$   )	r   r!   r   r)   r   r*   r   r:   r   r;   r,   r,   r-   Útest_subresultants_vv_2N  s    @0$.r^   N)=Zsympy.core.symbolr   Zsympy.polys.polytoolsr   r   r   r   Zsympy.matricesr   Zsympy.polys.subresultants_qq_zzr   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?   rA   rB   rC   rG   rH   rI   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rY   rZ   r[   r\   r]   r^   r,   r,   r,   r-   Ú<module>   s8   p		