o
    *Î®c	4  ã                   @   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 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)Úraisesc                 C   s   g | ]}|  ¡ ‘qS © )Úto_dense)Ú.0Úfr   r   úI/tmp/pip-target-vg8gfxp4/lib/python/sympy/polys/tests/test_polyclasses.pyÚ
<listcomp>   ó    r   c                  C   sâ   t dgg g d¢dggtƒ} | jddgdggksJ ‚| jtks J ‚| jdks'J ‚t ddgdggtdƒ} | jddgdggks>J ‚| jtksEJ ‚| jdksLJ ‚t dddœtdƒ} | jddgdggksaJ ‚| jtkshJ ‚| jdksoJ ‚d S )Nr   ©r   é   é   é   r   r   ©)r   r   ©r   r   )r   r   ÚrepÚdomÚlev©r   r   r   r   Útest_DMP___init__   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s"J ‚t tdƒtdƒgtdƒggtƒt tdƒtdƒgtdƒggtƒksDJ ‚t tdƒtdƒgtdƒggtƒt tdƒtdƒgtdƒggtƒksfJ ‚t tdƒgggtƒt tdƒggtƒks{J ‚t tdƒggtƒt tdƒgggtƒksJ ‚d S )Nr   r   r   )r   r   r   r   r   r   r   Útest_DMP___eq__!   s   ÿÿÿ*.r   c                   C   ó6   t tg gtƒƒdu sJ ‚t tdggtƒƒdu sJ ‚d S ©NFr   T)Úboolr   r   r   r   r   r   Útest_DMP___bool__.   ó   r#   c                  C   s`   t dgg dgg dggtƒ} |  ¡ ddddœksJ ‚|  ¡ t d¡t d¡t d¡dœks.J ‚d S )Nr   r   é   ))é   r   ©r   r   r   )r   r   Úto_dictÚto_sympy_dictÚto_sympyr   r   r   r   Útest_DMP_to_dict3   s   
ÿÿÿr+   c                   C   sZ  t g gtƒjdu sJ ‚t dggtƒjdu sJ ‚t dggtƒjdu s#J ‚t dggtƒjdu s/J ‚t dggtƒjdu s;J ‚t dgdgdggtƒjdu sKJ ‚t dgddgddggtƒjdu s]J ‚t dgddgg d¢gtƒjdu soJ ‚t ddgdggtƒjdu s~J ‚t ddgdggtƒjdu sJ ‚t ddgdggtƒjdu sœJ ‚t ddgd	ggtƒjdu s«J ‚d S )
NTr   Fr   r   ©r   r   r   r   r&   é   )r   r   Úis_zeroÚis_oneÚ	is_groundÚis_sqfÚis_monicÚis_primitiver   r   r   r   Útest_DMP_properties=   s    $$"r4   c                     sÂ  t dgddggtƒ‰ ˆ  d¡t dgddggtƒksJ ‚ˆ  d¡t dgddggtƒks,J ‚tt‡ fdd„ƒ t dggtƒ‰ t dggtƒ‰ˆ  ¡ ˆksKJ ‚tˆ ƒˆksSJ ‚ˆ ¡ ˆ ks[J ‚ˆ ˆ ksbJ ‚t g gtƒ} ˆ  ˆ¡| ksqJ ‚ˆ ˆ | ksyJ ‚ˆˆ  | ksJ ‚ˆ d | ks‰J ‚dˆ  | ks‘J ‚t d	ggtƒ} ˆ  	ˆ¡| ks¡J ‚ˆ ˆ | ks©J ‚ˆˆ  |  ks²J ‚ˆ d | ksºJ ‚dˆ  |  ksÃJ ‚t d
ggtƒ} ˆ  
ˆ¡| ksÓJ ‚ˆ ˆ | ksÛJ ‚ˆˆ  | ksãJ ‚ˆ d | ksëJ ‚dˆ  | ksóJ ‚t dggtƒ} ˆ  ¡ | ksJ ‚ˆ  d¡| ksJ ‚ˆ d | ksJ ‚tt‡ fdd„ƒ t dgg g d¢gtƒ‰ t dgddggtƒ‰t dgddggtƒ}t g d¢gtƒ}ˆ  ˆ¡||fksRJ ‚ˆ  ˆ¡|ks\J ‚ˆ  ˆ¡|ksfJ ‚tt‡ ‡fdd„ƒ t dgg g d¢gtƒ‰ t dgddggtƒ‰t dgddggtƒ}t g d¢gtƒ}ˆ  ˆ¡||fks£J ‚ˆ  ˆ¡|ks­J ‚ˆ  ˆ¡|ks·J ‚tˆ ˆƒ||fksÃJ ‚ˆ ˆ |ksÌJ ‚ˆ ˆ |ksÕJ ‚tt‡ ‡fdd„ƒ d S )Nr   r   r&   r   c                      ó
   ˆ   d¡S )Nr   )Úexquo_groundr   r   r   r   Ú<lambda>W   ó   
 z&test_DMP_arithmetics.<locals>.<lambda>éûÿÿÿé   éöÿÿÿiçÿÿÿé   c                      r5   )NÚx)Úpowr   r   r   r   r7   €   r8   r,   éþÿÿÿ)r%   r   r   c                      ó
   ˆ   ˆ¡S ©N)Úpexquor   ©r   Úgr   r   r7   Œ   r8   éÿÿÿÿ)r   r   r   c                      r@   rA   )Úexquor   rC   r   r   r7   œ   r8   )r   r   Ú
mul_groundÚ
quo_groundr   r	   ÚabsÚnegÚaddÚsubÚmulÚsqrr>   Ú	TypeErrorÚpdivÚpquoÚpremÚdivÚquoÚremÚdivmod)ÚhÚqÚrr   rC   r   Útest_DMP_arithmeticsQ   sh   ""rZ   c                     s  t dgddgg d¢gtƒ‰ t dgddggtƒ} t dggtƒ}ˆ  ¡ dks&J ‚ˆ  ¡ dks.J ‚ˆ  ¡ dks6J ‚ˆ  ¡ tdƒks@J ‚ˆ  ¡ tdƒksJJ ‚ˆ  dd¡tdƒksVJ ‚tt	‡ fdd„ƒ ˆ  
¡ dksgJ ‚ˆ  ¡ dksoJ ‚t dgddggtƒ}ˆ jddd	|ks„J ‚ˆ jddd	|ksJ ‚tt	‡ fd
d„ƒ t g d¢tƒ}t g d¢tƒ}ˆ jddd|ks±J ‚ˆ jddd|ks¼J ‚ˆ  d¡ d¡tdƒksÊJ ‚ˆ  | ¡| | |fksÖJ ‚ˆ  | ¡| ksßJ ‚ˆ  | ¡ˆ ksèJ ‚t tdƒtdƒtdƒggtƒ}t tdƒtddƒtddƒggtƒ}| ¡ |ksJ ‚dˆ   ¡ tdƒksJ ‚dˆ   ¡ tdƒˆ fks-J ‚t dgdgdgdgdgdggtƒ‰ ˆ  d¡t dgdgg dgdgg gtƒksUJ ‚t ttƒ‰ ˆ  ¡ ˆ  ksdJ ‚ˆ  ¡ tdƒˆ  dfgfksuJ ‚t dgg g dggtƒ‰ t ddgg g gtƒ} t g d¢gtƒ}t g d¢tƒ}ˆ  | ¡ˆ | |gks¦J ‚ˆ  | ¡|ks°J ‚t g d¢tƒ‰ ˆ  ¡ dksÀJ ‚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J ‚ˆ  | ¡|||fksJ ‚ˆ  | ¡|ksJ ‚t dgdgdggtƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t g d¢tƒ‰ t g d¢tƒ} t g d ¢tƒ}|   |¡ˆ ks^J ‚ˆ  !¡ | |gksiJ ‚t dgdgdggtƒ‰ tt‡ fd!d„ƒ tt‡ fd"d„ƒ d S )#Nr   r   r   r,   )r   r   c                      s   ˆ   dd¡S )Nr   r=   )Únthr   r   r   r   r7   ¬   s    z(test_DMP_functionality.<locals>.<lambda>r&   ©ÚmÚjc                      s   ˆ j dddS )Nr=   r   r\   )Údiffr   r   r   r   r7   ¶   s    )r   r   r   )Úar^   é-   é   r:   r   é	   r-   rE   )ra   rb   r:   )é£  rd   éá   r<   )r   r   rc   ióÿÿÿipÒÿÿiðÿÿÿé    é   c                      ó
   ˆ   ˆ ¡S rA   )Ú
half_gcdexr   r   r   r   r7   ð   r8   c                      rh   rA   )Úgcdexr   r   r   r   r7   ñ   r8   c                      rh   rA   )Úinvertr   r   r   r   r7   ó   r8   )r   r   é   r   é–   r   iô  r   iq  r?   r   r;   rc   )r   r   r   r?   rc   )r   r   r:   r   c                      ó   ˆ   ¡ S rA   )Ú	decomposer   r   r   r   r7   þ   ó    c                      rn   rA   )Ústurmr   r   r   r   r7   ÿ   rp   )"r   r   ÚdegreeÚdegree_listÚtotal_degreeÚLCÚTCr[   r   rO   Úmax_normÚl1_normr_   ÚevalÚ	cofactorsÚgcdÚlcmr   ÚmonicÚcontentÚ	primitiveÚtruncÚf_4Úsqf_partÚsqf_listÚsubresultantsÚ	resultantÚdiscriminantri   rj   rk   Ú
ValueErrorÚcomposero   )rD   rW   ÚuÚvrY   ÚsÚtr   r   r   Útest_DMP_functionalityŸ   s|   "".
"r   c                  C   s    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} g d¢}t | tƒ ¡ |t ddgtƒfks4J ‚t dgddggtƒ ¡ g t dgddggtƒfksNJ ‚d S )Nr   )r   r   r   r   r&   r:   r-   é   r%   rc   é
   é   é   é   é   é   rg   é   é   é   rl   é   é   é   r<   r   )r   r   Úexclude)r   ÚJr   r   r   Útest_DMP_exclude  s   <$8r   c                  C   s4  t dgg g d¢dggg d¢gftƒ} | jddgdggksJ ‚| jg d¢gks(J ‚| jdks/J ‚| jtks6J ‚t ddgdggg d¢gftdƒ} | jddgdggksRJ ‚| jg d¢gks\J ‚| jdkscJ ‚| jtksjJ ‚t dgdggdgd	ggftƒ} | jdgdggks„J ‚| jdgd	ggksJ ‚| jdks–J ‚| jtksJ ‚t dgdggd
gdggftƒ} | jdgdggks·J ‚| jdgd	ggksÂJ ‚| jdksÉJ ‚| jtksÐJ ‚t dgdggd
gdggftƒ} | jdgdggksêJ ‚| jdgd	ggksõJ ‚| jdksüJ ‚| jtksJ ‚t g gd
gdggftƒ} | jg gksJ ‚| jdggks#J ‚| jdks+J ‚| jtks3J ‚t dtdƒ} | jdggksCJ ‚| jdggksMJ ‚| jdksUJ ‚| jtks]J ‚t dgdggtƒ} | jdgdggksrJ ‚| jdggks|J ‚| jdks„J ‚| jtksŒJ ‚t dgg g d¢dggtƒ} | jddgdggks¦J ‚| jdggks°J ‚| jdks¸J ‚| jtksÀJ ‚t dddœtdƒ} | jddgdggksÖJ ‚| jdggksàJ ‚| jdksèJ ‚| jtksðJ ‚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sJ ‚| jtdƒgtdƒ ggks+J ‚| jdks3J ‚| jtks;J ‚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siJ ‚| jtdƒgtdƒ ggkszJ ‚| jdks‚J ‚| jtksŠJ ‚ttdd„ ƒ tt	dd„ ƒ d S )Nr   r   r   )r   r   r   r   r   rE   r?   éüÿÿÿéýÿÿÿr&   r•   r   r:   rŽ   r“   r”   rl   c                   S   s   t dgdggftƒS ©Nr   ©r   r   r   r   r   r   r7   `  r   z"test_DMF__init__.<locals>.<lambda>c                   S   s   t dgg ftƒS r    r¡   r   r   r   r   r7   a  s    )
r   r   ÚnumÚdenr   r   r   r   r‡   ÚZeroDivisionErrorr   r   r   r   Útest_DMF__init__  s|   $ 0$"8$"r¥   c                   C   r    r!   )r"   r   r   r   r   r   r   Útest_DMF__bool__d  r$   r¦   c                   C   s€   t g gtƒjdu sJ ‚t g gtƒjdu sJ ‚t dggtƒjdu s"J ‚t dggtƒjdu s.J ‚t dggdggftƒjdu s>J ‚d S )NTFr   r   )r   r   r.   r/   r   r   r   r   Útest_DMF_propertiesi  s
   $r§   c                  C   sœ  t dgdggtƒ} t dgdggtƒ}|  ¡ |    kr |ks#J ‚ J ‚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^J ‚ J ‚| | ¡||    krn|ksqJ ‚ J ‚t dgddggddgg gftƒ}|  |¡| |   kr‘|ks”J ‚ J ‚t dggddgg gftƒ}|  |¡| |   kr±|ks´J ‚ J ‚| | ¡||    krÄ|ksÇJ ‚ J ‚t ddggdgg gftƒ}|  |¡| |   krä|ksçJ ‚ J ‚t dggdgg g g gftƒ}|  d¡| d   kr|ks
J ‚ J ‚t dggg d	¢gftƒ}| d¡|d   kr(|ks+J ‚ J ‚t ddggdggftƒ}| d¡|d   krI|ksLJ ‚ J ‚d S )
NrŽ   i÷ÿÿÿiùÿÿÿrc   r   r   rE   r   )r   r   r   r   )r   r   rJ   rK   rL   rM   rT   r>   )r   rD   rW   r   r   r   Útest_DMF_arithmeticss  s*   " && &&&&**.r¨   c                     s~  t dƒt dƒg} t dƒt dƒt dƒg‰ t| ˆ t ƒ}|jt dƒt dƒgks&J ‚|jt dƒt dƒt dƒgks6J ‚|jt ks=J ‚t dƒt dƒdœ} t dƒt dƒdœ‰ t| ˆ t ƒ}|jt dƒt dƒgksbJ ‚|jt dƒt dƒt dƒgksrJ ‚|jt ksyJ ‚tdˆ t ƒ}|jt dƒgks‰J ‚|jt dƒt dƒt dƒgks™J ‚|jt ks J ‚tddgˆ t ƒ}tdd„ |jD ƒƒs´J ‚tt‡ fdd	„ƒ d S )
Nr   r   )r   r   r'   g      à?c                 s   s    | ]}t  |¡V  qd S rA   )r   Úof_type)r   r`   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   r7   ¸  s    z#test_ANP___init__.<locals>.<lambda>)r   r   r   r¬   r   Ú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u s2J ‚| | kdu s:J ‚| |kdu sBJ ‚| |kdu sJJ ‚t tdƒtdƒgtdƒtdƒtdƒgtƒ}| |kdu sgJ ‚| |kdu soJ ‚d S )Nr   r   r   TF)r   r   )r`   Úbr   r   r   Útest_ANP___eq__»  s   ***r°   c                   C   s^   t tg tdƒtdƒtdƒgtƒƒdu sJ ‚t ttdƒgtdƒtdƒtdƒgtƒƒdu s-J ‚d S )Nr   r   FT)r"   r   r   r   r   r   r   Útest_ANP___bool__Ë  s   *4r±   c                  C   sŠ   t dƒt dƒt dƒg} tt dƒg| t ƒjdu sJ ‚tt dƒg| t ƒjdu s'J ‚tt dƒg| t ƒjdu s5J ‚tt dƒg| t ƒjdu sCJ ‚d S )Nr   r   TFr   )r   r   r.   r/   r«   r   r   r   Útest_ANP_propertiesÐ  s
    r²   c                     s|  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rFˆksIJ ‚ J ‚tt dƒt dƒt dƒg| t ƒ‰ˆ  |¡ˆ |   krhˆkskJ ‚ J ‚| ˆ ¡|ˆ    kr{ˆks~J ‚ J ‚tt dƒt dƒt dƒg| t ƒ‰ˆ  |¡ˆ |   krˆks J ‚ J ‚tt dƒt dƒt dƒg| t ƒ‰| ˆ ¡|ˆ    kr¿ˆksÂJ ‚ J ‚tt dƒt dƒt dƒg| t ƒ‰ˆ  |¡ˆ |   kráˆksäJ ‚ J ‚| ˆ ¡|ˆ    krôˆks÷J ‚ J ‚tt ddƒt d	dƒt d
dƒg| t ƒ‰ˆ  d¡ˆ d   krtd| t ƒks"J ‚ J ‚ˆ  d¡ˆ d   kr4ˆ ks7J ‚ J ‚ˆ  d¡ˆ d   krIˆksLJ ‚ J ‚ˆ  ˆ ¡ˆ  ˆ  d¡¡  krpˆ ˆ d    krptd| t ƒkssJ ‚ J ‚tg g d¢t ƒ‰ˆ  |¡}ˆ  	|¡\}}||  krœˆ  krœˆ | ksŸJ ‚ J ‚t
t‡ ‡fdd„ƒ t
t‡ ‡fdd„ƒ |ˆ | ks¼J ‚d S )Nr   r   r?   r   rE   r   r-   é+   rc   r:   )r   r   r   r?   c                      r@   rA   )rS   r   ©r`   Úcr   r   r7     r8   z&test_ANP_arithmetics.<locals>.<lambda>c                      r@   rA   )rU   r   r´   r   r   r7     r8   )r   r   rJ   rK   rL   rM   r>   rT   rU   rS   r   r
   )r¬   r¯   Úr1rX   Úr2r   r´   r   Útest_ANP_arithmeticsÚ  s6   "&&&&&&$2**N
0r¸   c                  C   s–   t dƒt dƒt dƒg} tt dƒg| t ƒ}ttdƒg| tƒ}| |¡d t ks(J ‚| |¡d t ks3J ‚| |¡d t ks>J ‚| |¡d tksIJ ‚d S )Nr   r   r?   )r   r   r   Úunify)r¬   r`   r¯   r   r   r   Útest_ANP_unify  s   rº   c                   C   s¨  t ddgdggtƒt tdƒtdƒgtdƒggtƒksJ ‚tt ddgdggtƒƒtt tdƒtdƒgtdƒggtƒƒks<J ‚tddgdggdggftƒttdƒtdƒgtdƒggtdƒggftƒksbJ ‚ttddgdggdggftƒƒtttdƒtdƒgtdƒggtdƒggftƒƒksŒJ ‚tddgg d¢tƒttdƒtdƒgtdƒtdƒtdƒgtƒks­J ‚ttddgg d¢tƒƒtttdƒtdƒgtdƒtdƒtdƒgtƒƒksÒJ ‚d S )Nr   r   r   )r   r   r   r   )r   r   ÚintÚhashr   r   r   r   r   r   Útest___hash__  s,   8@ÿ*ÿ(ÿÿ
ÿÿBÿ,ÿr½   N),Ú__doc__Ú(sympy.functions.elementary.miscellaneousr   Úsympy.polys.domainsr   r   Úsympy.polys.polyclassesr   r   r   Úsympy.polys.polyerrorsr   r	   r
   Úsympy.polys.specialpolysr   Úsympy.testing.pytestr   Úf_0Úf_1Úf_2Úf_3r   Úf_5Úf_6r   r   r#   r+   r4   rZ   r   r   r¥   r¦   r§   r¨   r®   r°   r±   r²   r¸   rº   r½   r   r   r   r   Ú<module>   s6    
Nc	Y
( 
5