o
    à8Va3  ã                   @   s
  d Z ddlmZmZ ddlmZmZmZ ddl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(d/S )0z:Tests for OO layer of several polynomial representations. é    )ÚZZÚQQ)ÚDMPÚDMFÚANP)ÚExactQuotientFailedÚNotInvertible)Úf_polys)Úraisesc                 C   s   g | ]}|  ¡ ‘qS © )Zto_dense)Ú.0Úfr   r   úD/usr/lib/python3/dist-packages/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   Zto_dictZto_sympy_dictZto_sympyr   r   r   r   Útest_DMP_to_dict1   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_oneZ	is_groundZis_sqfZis_monicZis_primitiver   r   r   r   Útest_DMP_properties;   s    $$"r*   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   )Zexquo_groundr   r   r   r   Ú<lambda>U   ó   
 z&test_DMP_arithmetics.<locals>.<lambda>éûÿÿÿé   éöÿÿÿiçÿÿÿé   c                      r+   )NÚx)Úpowr   r   r   r   r,   ~   r-   r&   éþÿÿÿ)r"   r   r   c                      ó
   ˆ   ˆ¡S ©N)Zpexquor   ©r   Úgr   r   r,   Š   r-   éÿÿÿÿ)r   r   r   c                      r5   r6   )Zexquor   r7   r   r   r,   š   r-   )r   r   Z
mul_groundZ
quo_groundr
   r   ÚabsÚnegÚaddÚsubÚmulZsqrr3   Ú	TypeErrorZpdivZpquoZpremÚdivÚquoÚremÚdivmod)ÚhÚqÚrr   r7   r   Útest_DMP_arithmeticsO   sh   ""rG   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   r2   )Únthr   r   r   r   r,   ª   s    z(test_DMP_functionality.<locals>.<lambda>r#   ©ÚmÚjc                      s   ˆ j dddS )Nr2   r   rI   )Údiffr   r   r   r   r,   ´   s    )r   r   r   )ÚarK   é-   é   r/   r   é	   r'   r9   )rN   rO   r/   )é£  rQ   éá   r1   )r   r   rP   ióÿÿÿipÒÿÿiðÿÿÿé    é   c                      ó
   ˆ   ˆ ¡S r6   )Ú
half_gcdexr   r   r   r   r,   î   r-   c                      rU   r6   )Úgcdexr   r   r   r   r,   ï   r-   c                      rU   r6   )Úinvertr   r   r   r   r,   ñ   r-   )r   r   é   r   é–   r   iô  r   iq  r4   r   r0   rP   )r   r   r   r4   rP   )r   r   r/   r   c                      ó   ˆ   ¡ S r6   )Ú	decomposer   r   r   r   r,   ü   ó    c                      r[   r6   )Zsturmr   r   r   r   r,   ý   r]   )"r   r   ZdegreeZdegree_listZtotal_degreeZLCZTCrH   r
   r?   Zmax_normZl1_normrL   ÚevalZ	cofactorsZgcdZlcmr   ZmonicZcontentZ	primitiveZtruncÚf_4Zsqf_partZsqf_listZsubresultantsZ	resultantZdiscriminantrV   rW   rX   Ú
ValueErrorZcomposer\   )r8   rD   ÚuÚvrF   ÚsÚtr   r   r   Útest_DMP_functionality   s|   "".
"re   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"   rP   é
   é   é   é   é   é   rT   é   é   é   rY   é   é   é   r1   r   )r   r   Zexclude)r   ÚJr   r   r   Útest_DMP_exclude   s   <$8rt   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   r9   r4   éüÿÿÿéýÿÿÿr#   rm   r   r/   rf   rk   rl   rY   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 rw   rx   r   r   r   r   r,   _  s    )
r   r   ZnumZdenr   r   r   r
   r`   ÚZeroDivisionErrorr   r   r   r   Útest_DMF__init__	  s|   $ 0$"8$"rz   c                   C   r   r   )r   r   r   r   r   r   r   Útest_DMF__bool__b  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_propertiesg  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 )
Nrf   i÷ÿÿÿiùÿÿÿrP   r   r   r9   r   )r   r   r   r   )r   r   r;   r<   r=   r>   rA   r3   )r   r8   rD   r   r   r   Útest_DMF_arithmeticsq  s*   " && &&&&**.r}   c                  C   sD  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 ‚d S )Nr   r   )r   r   r$   )r   r   r   Úmodr   )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   )rM   Ú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   r4   r   r9   r   r'   é+   rP   r/   )r   r   r   r4   c                      r5   r6   )r@   r   ©rM   Úcr   r   r,   þ  r-   z&test_ANP_arithmetics.<locals>.<lambda>c                      r5   r6   )rB   r   r…   r   r   r,   ÿ  r-   )r   r   r;   r<   r=   r>   r3   rA   rB   r@   r
   r   )r~   r€   Zr1rE   Z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   r4   )r   r   r   Zunify)r~   rM   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__Zsympy.polys.domainsr   r   Zsympy.polys.polyclassesr   r   r   Zsympy.polys.polyerrorsr   r   Zsympy.polys.specialpolysr	   Zsympy.testing.pytestr
   Zf_0Zf_1Zf_2Zf_3r_   Zf_5Zf_6r   r   r    r%   r*   rG   re   rt   rz   r{   r|   r}   r   r   r‚   rƒ   r‡   rˆ   r‹   r   r   r   r   Ú<module>   s4    
Nc	Y
(
5