U
    L?hŠ8  ã                   @   s  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
mZmZmZ ddlmZ ddlmZmZ dd	„ eƒ D ƒ\ZZZZZZ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,d0S )1z:Tests for OO layer of several polynomial representations. é    )Úsqrt)ÚZZÚQQ)ÚDMPÚDMFÚANP)ÚCoercionFailedÚExactQuotientFailedÚNotInvertible)Úf_polys)ÚraisesÚwarns_deprecated_sympyc                 C   s   g | ]}|  ¡ ‘qS © )Zto_dense)Ú.0Úfr   r   úT/var/www/html/venv/lib/python3.8/site-packages/sympy/polys/tests/test_polyclasses.pyÚ
<listcomp>   s     r   c                  C   s  t tdƒgg tdƒtdƒtdƒgtdƒggtƒ} | jddgdggksHt‚| jtksVt‚| jdksdt‚t tdƒtdƒgtdƒggtdƒ} | jddgdggksžt‚| jtks¬t‚| jdksºt‚t  tdƒtdƒdœdt¡} | jddgdggksît‚| jtksüt‚| jdkst‚d S )Nr   é   é   é   ©)r   r   ©r   r   )r   r   Z_repÚAssertionErrorÚdomÚlevÚ	from_dict©r   r   r   r   Útest_DMP___init__   s    0"r   c               	   C   s:   t dddgtƒ} tƒ  | jdddgks,t‚W 5 Q R X d S ©Nr   r   r   )r   r   r   Úrepr   r   r   r   r   Útest_DMP_rep_deprecation!   s    r    c                   C   s&  t tdƒtdƒgtdƒggtƒt tdƒtdƒgtdƒggtƒksDt‚t tdƒtdƒgtdƒggtƒt tdƒtdƒgtdƒggtƒksˆt‚t tdƒtdƒgtdƒggtƒt tdƒtdƒgtdƒggtƒksÌt‚t tdƒgggtƒt tdƒggtƒksöt‚t tdƒggtƒt tdƒgggtƒks"t‚d S r   )r   r   r   r   r   r   r   r   Útest_DMP___eq__(   s    ÿÿÿ*r!   c                   C   s:   t tg gtƒƒdkst‚t ttdƒggtƒƒdks6t‚d S ©NFr   T)Úboolr   r   r   r   r   r   r   Útest_DMP___bool__5   s    r$   c                  C   sl   t tdƒgg tdƒgg tdƒggtƒ} |  ¡ ddddœks>t‚|  ¡ t d¡t d¡t d¡dœksht‚d S )Nr   r   é   ))é   r   ©r   r   r   )r   r   Úto_dictr   Zto_sympy_dictZto_sympyr   r   r   r   Útest_DMP_to_dict:   s    &
ÿÿÿr)   c                   C   sÞ  t g gtƒjdkst‚t tdƒggtƒjdks2t‚t tdƒggtƒjdksNt‚t tdƒggtƒjdksjt‚t tdƒggtƒjdks†t‚t tdƒgtdƒgtdƒggtƒjdks²t‚t tdƒgtdƒtdƒgtdƒtdƒggtƒjdksêt‚t tdƒgtdƒtdƒgtdƒtdƒtdƒggtƒjdks*t‚t tdƒtdƒgtdƒggtƒjdksVt‚t tdƒtdƒgtdƒggtƒjdks‚t‚t tdƒtdƒgtdƒggtƒjdks®t‚t tdƒtdƒgtdƒggtƒjdksÚt‚d S )	NTr   Fr   r   r   r&   é   )	r   r   Úis_zeror   Úis_oneZ	is_groundZis_sqfZis_monicZis_primitiver   r   r   r   Útest_DMP_propertiesD   s    ,8@,,,r-   c                     sÌ  t tdƒgtdƒtdƒggtƒ‰ ˆ  d¡t tdƒgtdƒtdƒggtƒksNt‚ˆ  d¡t tdƒgtdƒtdƒggtƒks|t‚tt‡ fdd„ƒ t tdƒggtƒ‰ t tdƒggtƒ‰ˆ  ¡ ˆksÂt‚tˆ ƒˆksÒt‚ˆ ¡ ˆ ksât‚ˆ ˆ ksðt‚t g gtƒ} ˆ  	ˆ¡| kst‚ˆ ˆ | ks"t‚ˆˆ  | ks4t‚ˆ d | ksFt‚dˆ  | ksXt‚t td	ƒggtƒ} ˆ  
ˆ¡| ks~t‚ˆ ˆ | kst‚ˆˆ  |  ks¤t‚ˆ d | ks¶t‚dˆ  |  ksÊt‚t td
ƒggtƒ} ˆ  ˆ¡| ksðt‚ˆ ˆ | kst‚ˆˆ  | kst‚ˆ d | ks&t‚dˆ  | ks8t‚t tdƒggtƒ} ˆ  ¡ | ks\t‚ˆ  d¡| kspt‚ˆ d | ks‚t‚tt‡ fdd„ƒ t tdƒgg tdƒtdƒtdƒggtƒ‰ t tdƒgtdƒtdƒggtƒ‰t tdƒgtdƒtdƒggtƒ}t tdƒtdƒtdƒggtƒ}ˆ  ˆ¡||fks2t‚ˆ  ˆ¡|ksFt‚ˆ  ˆ¡|ksZt‚tt‡ ‡fdd„ƒ t tdƒgg tdƒtdƒtdƒggtƒ‰ t tdƒgtdƒtdƒggtƒ‰t tdƒgtdƒtdƒggtƒ}t tdƒtdƒtdƒggtƒ}ˆ  ˆ¡||fkst‚ˆ  ˆ¡|ks t‚ˆ  ˆ¡|ks4t‚tˆ ˆƒ||fksLt‚ˆ ˆ |ks^t‚ˆ ˆ |kspt‚tt‡ ‡fdd„ƒ t tdƒtdƒtdƒgtƒ‰ t tdƒtdƒgtƒ‰t g tƒ}ˆ }t tdƒtdƒgtƒ}t g tƒ}ˆ  ˆ¡||fksüt‚ˆ  ˆ¡|kst‚ˆ  ˆ¡|ks$t‚tˆ ˆƒ||fks<t‚ˆ ˆ |ksNt‚ˆ ˆ |ks`t‚tt‡ ‡fdd„ƒ ˆ  ˆ¡||fksŒt‚ˆ  ˆ¡|ks t‚ˆ  ˆ¡|ks´t‚ˆ  ˆ¡|ksÈt‚d S )Nr   r   r&   r   c                      s
   ˆ   d¡S )Nr   )Zexquo_groundr   r   r   r   Ú<lambda>^   ó    z&test_DMP_arithmetics.<locals>.<lambda>éûÿÿÿé   éöÿÿÿiçÿÿÿé   c                      s
   ˆ   d¡S )NÚx)Úpowr   r   r   r   r.   ‡   r/   éþÿÿÿr%   c                      s
   ˆ   ˆ¡S ©N)Úpexquor   ©r   Úgr   r   r.   “   r/   éÿÿÿÿc                      s
   ˆ   ˆ¡S r7   ©Zexquor   r9   r   r   r.   £   r/   c                      s
   ˆ   ˆ¡S r7   r<   r   r9   r   r   r.   ¶   r/   )r   r   Z
mul_groundr   Z
quo_groundr   r	   ÚabsÚnegÚaddÚsubÚmulZsqrr5   Ú	TypeErrorZpdivZpquoZpremÚdivÚquoÚremÚdivmodr8   )ÚhÚqÚrZpqÚprr   r9   r   Útest_DMP_arithmeticsX   sŠ     ..(  (  

rK   c                     s  t tdƒgtdƒtdƒgtdƒtdƒtdƒggtƒ‰ t tdƒgtdƒtdƒggtƒ} t tdƒggtƒ}ˆ  ¡ dksvt‚ˆ  ¡ dks†t‚ˆ  ¡ dks–t‚ˆ  ¡ tdƒksªt‚ˆ  ¡ tdƒks¾t‚ˆ  dd¡tdƒksÖt‚t	t
‡ fdd„ƒ ˆ  ¡ dksøt‚ˆ  ¡ dks
t‚t tdƒgtdƒtdƒggtƒ}ˆ jddd|ksBt‚ˆ jddd|ksZt‚t	t
‡ fd	d„ƒ t tdƒtdƒtdƒgtƒ}t tdƒtdƒtdƒgtƒ}ˆ jddd
|ks¼t‚ˆ jddd
|ksÔt‚ˆ  d¡ d¡tdƒksòt‚ˆ  | ¡| | |fkst‚ˆ  | ¡| ks t‚ˆ  | ¡ˆ ks4t‚t tdƒtdƒtdƒggtƒ}t tdƒtddƒtddƒggtƒ}| ¡ |ks†t‚dˆ   ¡ tdƒks t‚dˆ   ¡ tdƒˆ fks¾t‚t tddƒtdƒgtƒ‰ t tddƒtdƒgtƒ} ˆ  | ¡ˆ j| dd  kr>t tdƒtdƒgtƒt tdƒtdƒgtƒfksDn t‚ˆ j| ddtdƒtdƒt tdƒtdƒgtƒt tdƒtdƒgtƒfkst‚t tdƒgtdƒgtdƒgtdƒgtdƒgtdƒggtƒ‰ ˆ  d¡t tdƒgtdƒgg tdƒgtdƒgg gtƒkst‚t ttƒ‰ ˆ  ¡ ˆ  ks&t‚ˆ  ¡ tdƒˆ  dfgfksHt‚t tdƒgg g tdƒggtƒ‰ t tdƒtdƒgg g gtƒ} t tdƒtdƒtdƒggtƒ}t tdƒtdƒtdƒtdƒgtƒ}ˆ  | ¡ˆ | |gksÜt‚ˆ  | ¡|ksðt‚t tdƒtdƒtdƒtdƒgtƒ‰ ˆ  ¡ dks$t‚t tdƒtdƒgtƒ‰ t tdƒtdƒtdƒgtƒ} t tddƒtdƒgtƒ}t tddƒgtƒ}t tdƒgtƒ}ˆ  | ¡||fks¨t‚ˆ  | ¡|||fksÂt‚ˆ   | ¡|ksÖt‚t tdƒgtdƒgtdƒggtƒ‰ t	t!‡ fdd„ƒ t	t!‡ fd d„ƒ t	t!‡ fd!d„ƒ t t "ddd"dd#dd$dd%d&dd'dg¡tƒ‰ t tdƒtdƒtdƒtd&ƒtdƒgtƒ} t tdƒtdƒtdƒtdƒgtƒ}|  #|¡ˆ ks¶t‚ˆ  $¡ | |gksÌt‚t tdƒgtdƒgtdƒggtƒ‰ t	t!‡ fd(d„ƒ t	t!‡ fd)d„ƒ d S )*Nr   r   r   )r   r   c                      s   ˆ   dd¡S )Nr   r4   )Únthr   r   r   r   r.   Ë   r/   z(test_DMP_functionality.<locals>.<lambda>r&   ©ÚmÚjc                      s   ˆ j dddS )Nr4   r   rM   )Údiffr   r   r   r   r.   Õ   r/   )ÚarO   é-   é   r1   r   é	   é   T)Úincludeé   Fr*   r;   i£  éá   r3   ióÿÿÿipÒÿÿiðÿÿÿé    é   c                      s
   ˆ   ˆ ¡S r7   )Ú
half_gcdexr   r   r   r   r.     r/   c                      s
   ˆ   ˆ ¡S r7   )Úgcdexr   r   r   r   r.     r/   c                      s
   ˆ   ˆ ¡S r7   )Úinvertr   r   r   r   r.      r/   é   é–   iô  iq  r6   r2   c                      s   ˆ   ¡ S r7   )Ú	decomposer   r   r   r   r.   +  r/   c                      s   ˆ   ¡ S r7   )Zsturmr   r   r   r   r.   ,  r/   )%r   r   Zdegreer   Zdegree_listZtotal_degreeZLCZTCrL   r   rB   Zmax_normZl1_normrP   ÚevalZ	cofactorsÚgcdZlcmr   ZmonicÚcontentZ	primitiveÚcancelÚtruncÚf_4Zsqf_partZsqf_listZsubresultantsZ	resultantZdiscriminantr[   r\   r]   Ú
ValueErrorÚmapZcomposer`   )r:   rG   ÚuÚvrI   ÚsÚtr   r   r   Útest_DMP_functionality¾   s”    4  "þü:>
""""*(""rm   c                  C   sò   t dƒggg ggggggggggggggggggggggggg} 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| t ƒ ¡ |tt dƒt dƒgt ƒfks¢t‚tt dƒgt dƒt dƒggt ƒ ¡ g tt dƒgt dƒt dƒggt ƒfksît‚d S )Nr   r   r   r   r&   r1   r*   rU   r%   rT   é
   é   é   é   é   é   rZ   é   é   é   r^   rW   é   é   r3   )r   r   Úexcluder   )r   ÚJr   r   r   Útest_DMP_exclude/  s    @$      ÿ,""ÿr{   c                  C   sV  t dgg dddgdggdddggftƒ} | jddgdggks@t‚| jdddggksVt‚| jdksdt‚| jtksrt‚t ddgdggdddggftdƒ} | jddgdggks¬t‚| jdddggksÂt‚| jdksÐt‚| jtksÞt‚t dgdggdgdggftƒ} | jdgdggkst‚| jdgdggks,t‚| jdks<t‚| jtksLt‚t dgdggdgd	ggftƒ} | jdgdggks‚t‚| jdgdggksšt‚| jdksªt‚| jtksºt‚t dgdggdgd	ggftƒ} | jdgdggksðt‚| jdgdggkst‚| jdkst‚| jtks(t‚t g gdgd	ggftƒ} | jg gksRt‚| jdggksft‚| jdksvt‚| jtks†t‚t d
tdƒ} | jd
ggks¦t‚| jdggksºt‚| jdksÊt‚| jtksÚt‚t dgdggtƒ} | jdgdggkst‚| jdggkst‚| jdks(t‚| jtks8t‚t dgg dddgdggtƒ} | jddgdggksnt‚| jdggks‚t‚| jdks’t‚| jtks¢t‚t dddœtdƒ} | jddgdggksÎt‚| jdggksât‚| jdksòt‚| jtkst‚t tdƒgtdƒggtdƒ gtd	ƒggftƒ} | jtdƒ gtdƒ ggksVt‚| jtdƒgtd	ƒ ggksxt‚| jdksˆt‚| jtks˜t‚t tddƒgtddƒggtddƒ gtd	dƒggftƒ} | jtdƒ gtdƒ ggksôt‚| jtdƒgtdƒ ggkst‚| jdks&t‚| jtks6t‚tt	dd„ ƒ tt
dd„ ƒ d S )Nr   r   r   r   r;   r6   éüÿÿÿéýÿÿÿr&   rt   r   r1   rU   rr   rs   r^   c                   S   s   t dgdggftƒS ©Nr   ©r   r   r   r   r   r   r.   Ž  r/   z"test_DMF__init__.<locals>.<lambda>c                   S   s   t dgg ftƒS r~   r   r   r   r   r   r.     r/   )r   r   Únumr   Zdenr   r   r   r   rg   ÚZeroDivisionErrorr   r   r   r   Útest_DMF__init__9  s|    ("0$"8$"r‚   c                   C   s6   t tg gtƒƒdkst‚t tdggtƒƒdks2t‚d S r"   )r#   r   r   r   r   r   r   r   Útest_DMF__bool__’  s    rƒ   c                   C   s€   t g gtƒjdkst‚t g gtƒjdks,t‚t dggtƒjdksDt‚t dggtƒjdks\t‚t dggdggftƒjdks|t‚d S )NTFr   r   )r   r   r+   r   r,   r   r   r   r   Útest_DMF_properties—  s
    r„   c                  C   sœ  t dgdggtƒ} t dgdggtƒ}|  ¡ |    kr>|ksDn t‚t dggdgg gftƒ} t dggddggftƒ}t dgddggddgg gftƒ}|  |¡| |   kr²|ks¸n t‚| | ¡||    krÖ|ksÜn t‚t dgddggddgg gftƒ}|  |¡| |   kr|ks$n t‚t dggddgg gftƒ}|  |¡| |   kr`|ksfn t‚| | ¡||    krˆ|ksŽn t‚t ddggdgg gftƒ}|  |¡| |   krÊ|ksÐn t‚t dggdgg g g gftƒ}|  d¡| d   kr|ksn t‚t dggddddggftƒ}| d¡|d   krR|ksXn t‚t ddggdggftƒ}| d¡|d   kr’|ks˜n t‚d S )	NrU   i÷ÿÿÿiùÿÿÿrT   r   r   r;   r   )	r   r   r>   r   r?   r@   rA   rD   r5   )r   r:   rG   r   r   r   Útest_DMF_arithmetics¡  s*      $$ ((((((r…   c                     s”  t dƒt dƒg} t dƒt dƒt dƒg‰ t| ˆ t ƒ}| ¡ t dƒt dƒgksNt‚| ¡ t dƒt dƒt dƒgkspt‚|jt ks~t‚t dƒt dƒdœ} t dƒt dƒdœ‰ t| ˆ t ƒ}| ¡ t dƒt dƒgksÊt‚| ¡ t dƒt dƒt dƒgksìt‚|jt ksút‚tdˆ t ƒ}| ¡ t dƒgkst‚| ¡ t dƒt dƒt dƒgksBt‚|jt ksRt‚tddgˆ t ƒ}tdd„ | ¡ D ƒƒs~t‚tt‡ fdd	„ƒ d S )
Nr   r   )r   r   r'   g      à?c                 s   s   | ]}t  |¡V  qd S r7   )r   Zof_type)r   rQ   r   r   r   Ú	<genexpr>ä  s     z$test_ANP___init__.<locals>.<genexpr>c                      s   t tdƒgˆ tƒS )Nr   )r   r   r   r   ©Úmodr   r   r.   æ  r/   z#test_ANP___init__.<locals>.<lambda>)	r   r   Zto_listr   Zmod_to_listr   Úallr   r   )r   r   r   r‡   r   Útest_ANP___init__É  s&    ""$rŠ   c                  C   sâ   t tdƒtdƒgtdƒtdƒtdƒgtƒ} t tdƒtdƒgtdƒtdƒtdƒgtƒ}| | kdksdt‚| | kdkstt‚| |kdks„t‚| |kdks”t‚t tdƒtdƒgtdƒtdƒtdƒgtƒ}| |kdksÎt‚| |kdksÞt‚d S )Nr   r   r   TF)r   r   r   )rQ   Úbr   r   r   Útest_ANP___eq__é  s    ***rŒ   c                   C   s^   t tg tdƒtdƒtdƒgtƒƒdks*t‚t ttdƒgtdƒtdƒtdƒgtƒƒdksZt‚d S )Nr   r   FT)r#   r   r   r   r   r   r   r   Útest_ANP___bool__ù  s    *r   c                  C   sŠ   t dƒt dƒt dƒg} tt dƒg| t ƒjdks2t‚tt dƒg| t ƒjdksNt‚tt dƒg| t ƒjdksjt‚tt dƒg| t ƒjdks†t‚d S )Nr   r   TFr   )r   r   r+   r   r,   r‡   r   r   r   Útest_ANP_propertiesþ  s
    rŽ   c                     sx  t dƒt dƒt dƒt dƒg} tt dƒt dƒt dƒg| t ƒ‰ tt dƒt dƒg| t ƒ}tt dƒt dƒt dƒg| t ƒ‰ˆ  ¡ ˆ    krŠˆksn t‚tt dƒt dƒt dƒg| t ƒ‰ˆ  |¡ˆ |   krÌˆksÒn t‚| ˆ ¡|ˆ    krðˆksön t‚tt dƒt dƒt dƒg| t ƒ‰ˆ  |¡ˆ |   kr6ˆks<n t‚tt dƒt dƒt dƒg| t ƒ‰| ˆ ¡|ˆ    kr|ˆks‚n t‚tt dƒt dƒt dƒg| t ƒ‰ˆ  |¡ˆ |   krÂˆksÈn t‚| ˆ ¡|ˆ    krêˆksðn t‚tt ddƒt d	dƒt d
dƒg| t ƒ‰ˆ  d¡ˆ d   kr>td| t ƒksDn t‚ˆ  d¡ˆ d   krfˆ ksln t‚ˆ  d¡ˆ d   krŽˆks”n t‚ˆ  ˆ ¡ˆ  ˆ  d¡¡  krÚˆ ˆ d    krÚtd| t ƒksàn t‚tg ddddgt ƒ‰ˆ  	|¡}ˆ  
|¡\}}||  kr4ˆ  kr4ˆ | ks:n t‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ |ˆ | kstt‚d S )Nr   r   r6   r   r;   r   r*   é+   rT   r1   c                      s
   ˆ   ˆ¡S r7   )rC   r   ©rQ   Úcr   r   r.   4  r/   z&test_ANP_arithmetics.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r7   )rE   r   r   r   r   r.   5  r/   )r   r   r>   r   r?   r@   rA   r5   rD   rE   rC   r   r
   )rˆ   r‹   Úr1rH   Úr2r   r   r   Útest_ANP_arithmetics  s6     $$(((($0((L
.r”   c                  C   s  t dƒt dƒt dƒg} tdƒtdƒtdƒg}ttdƒg|tƒ}tt dƒg| t ƒ}| |¡d tksft‚| |¡d tks|t‚| |¡d tks’t‚| |¡d t ks¨t‚| |¡d tks¾t‚| |¡d tksÔt‚| |¡d tksêt‚| |¡d t kst‚d S )Nr   r   r6   r;   )r   r   r   Zunifyr   Z	unify_ANP)Zmod_zZmod_qrQ   r‹   r   r   r   Útest_ANP_unify=  s    r•   N)-Ú__doc__Z(sympy.functions.elementary.miscellaneousr   Zsympy.polys.domainsr   r   Zsympy.polys.polyclassesr   r   r   Zsympy.polys.polyerrorsr   r	   r
   Zsympy.polys.specialpolysr   Zsympy.testing.pytestr   r   Zf_0Zf_1Zf_2Zf_3rf   Zf_5Zf_6r   r    r!   r$   r)   r-   rK   rm   r{   r‚   rƒ   r„   r…   rŠ   rŒ   r   rŽ   r”   r•   r   r   r   r   Ú<module>   s4   
fq
Y
( 
5