o
    GZŽh­9  ã                   @   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,d0d1„ Z-d2S )3z: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   úQ/var/www/auris/lib/python3.10/site-packages/sympy/polys/tests/test_polyclasses.pyÚ
<listcomp>   ó    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s$J ‚| jtks+J ‚| jdks2J ‚t tdƒtdƒgtdƒggtdƒ} | jddgdggksOJ ‚| jtksVJ ‚| jdks]J ‚t  tdƒtdƒdœdt¡} | jddgdggkswJ ‚| jtks~J ‚| jdks…J ‚d S )Nr   é   é   é   ©)r   r   ©r   r   )r   r   Z_repÚdomÚlevÚ	from_dict©r   r   r   r   Útest_DMP___init__   s   0"r   c                  C   sL   t g d¢tƒ} tƒ  | jg d¢ksJ ‚W d   ƒ d S 1 sw   Y  d S )N©r   r   r   )r   r   r   Úrepr   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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   s:   t tg gtƒƒdu sJ ‚t ttdƒggtƒƒdu sJ ‚d S ©NFr   T)Úboolr   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J ‚|  ¡ t d¡t d¡t d¡dœks4J ‚d S )Nr   r   é   ))é   r   ©r   r   r   )r   r   Úto_dictZto_sympy_dictZto_sympyr   r   r   r   Útest_DMP_to_dict:   s   &
ÿÿÿr)   c                   C   sÔ  t g gtƒjdu sJ ‚t tdƒggtƒjdu sJ ‚t tdƒggtƒjdu s'J ‚t tdƒggtƒjdu s5J ‚t tdƒggtƒjdu sCJ ‚t tdƒgtdƒgtdƒggtƒjdu sYJ ‚t tdƒgtdƒtdƒgtdƒtdƒggtƒjdu suJ ‚t tdƒgtdƒtdƒgtdƒtdƒtdƒggtƒjdu s”J ‚t tdƒtdƒgtdƒggtƒjdu s©J ‚t tdƒtdƒgtdƒggtƒjdu s¾J ‚t tdƒtdƒgtdƒggtƒjdu sÓJ ‚t tdƒtdƒgtdƒggtƒjdu sèJ ‚d S )	NTr   Fr   r   r   r&   é   )r   r   Úis_zeroÚis_oneZ	is_groundZis_sqfZis_monicÚ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s'J ‚ˆ  d¡t tdƒgtdƒtdƒggtƒks>J ‚tt‡ fdd„ƒ t tdƒggtƒ‰ t tdƒggtƒ‰ˆ  ¡ ˆksaJ ‚tˆ ƒˆksiJ ‚ˆ ¡ ˆ ksqJ ‚ˆ ˆ ksxJ ‚t g gtƒ} ˆ  ˆ¡| ks‡J ‚ˆ ˆ | ksJ ‚ˆˆ  | ks—J ‚ˆ d | ksŸJ ‚dˆ  | ks§J ‚t td	ƒggtƒ} ˆ  	ˆ¡| ks¹J ‚ˆ ˆ | ksÁJ ‚ˆˆ  |  ksÊJ ‚ˆ d | ksÒJ ‚dˆ  |  ksÛJ ‚t td
ƒggtƒ} ˆ  
ˆ¡| ksíJ ‚ˆ ˆ | ksõJ ‚ˆˆ  | ksýJ ‚ˆ d | ksJ ‚dˆ  | ksJ ‚t tdƒggtƒ} ˆ  ¡ | ks!J ‚ˆ  d¡| ks+J ‚ˆ d | ks4J ‚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ŒJ ‚ˆ  ˆ¡|ks–J ‚ˆ  ˆ¡|ks J ‚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ùJ ‚ˆ  ˆ¡|ksJ ‚ˆ  ˆ¡|ksJ ‚tˆ ˆƒ||fksJ ‚ˆ ˆ |ks"J ‚ˆ ˆ |ks+J ‚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sqJ ‚ˆ  ˆ¡|ks{J ‚ˆ  ˆ¡|ks…J ‚tˆ ˆƒ||fks‘J ‚ˆ ˆ |ksšJ ‚ˆ ˆ |ks£J ‚tt‡ ‡fdd„ƒ ˆ  ˆ¡||fks¹J ‚ˆ  ˆ¡|ksÃJ ‚ˆ  ˆ¡|ksÍJ ‚ˆ  ˆ¡|ks×J ‚d S )Nr   r   r&   r   c                      ó
   ˆ   d¡S )Nr   )Zexquo_groundr   r   r   r   Ú<lambda>^   ó   
 z&test_DMP_arithmetics.<locals>.<lambda>éûÿÿÿé   éöÿÿÿiçÿÿÿé   c                      r/   )NÚx)Úpowr   r   r   r   r0   ‡   r1   éþÿÿÿr%   c                      ó
   ˆ   ˆ¡S ©N)Úpexquor   ©r   Úgr   r   r0   “   r1   éÿÿÿÿc                      r9   r:   ©Zexquor   r<   r   r   r0   £   r1   c                      r9   r:   r?   r   r<   r   r   r0   ¶   r1   )r   r   Z
mul_groundZ
quo_groundr   r	   ÚabsÚnegÚaddÚsubÚmulZsqrr7   Ú	TypeErrorZpdivZpquoZpremÚdivÚquoÚremÚdivmodr;   )ÚhÚqÚrZpqÚprr   r<   r   Útest_DMP_arithmeticsX   sŠ    ..(  (  

rN   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s;J ‚ˆ  ¡ dksCJ ‚ˆ  ¡ dksKJ ‚ˆ  ¡ tdƒksUJ ‚ˆ  ¡ tdƒks_J ‚ˆ  dd¡tdƒkskJ ‚tt	‡ fdd„ƒ ˆ  
¡ dks|J ‚ˆ  ¡ dks„J ‚t tdƒgtdƒtdƒggtƒ}ˆ jddd|ksŸJ ‚ˆ jddd|ksªJ ‚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Ú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sIJ ‚dˆ   ¡ tdƒˆ fksXJ ‚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sœJ ‚ J ‚ˆ j| ddtdƒtdƒt tdƒtdƒgtƒt tdƒtdƒgtƒfksÂJ ‚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þJ ‚t ttƒ‰ ˆ  ¡ ˆ  ksJ ‚ˆ  ¡ tdƒˆ  dfgfksJ ‚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shJ ‚ˆ  | ¡|ksrJ ‚t tdƒtdƒtdƒtdƒg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 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 !g d"¢¡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sJJ ‚ˆ  #¡ | |gksUJ ‚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   r6   )Únthr   r   r   r   r0   Ë   s    z(test_DMP_functionality.<locals>.<lambda>r&   ©ÚmÚjc                      s   ˆ j dddS )Nr6   r   rP   )Údiffr   r   r   r   r0   Õ   s    )ÚarR   é-   é   r3   r   é	   é   T)Úincludeé   Fr*   r>   i£  éá   r5   ióÿÿÿipÒÿÿiðÿÿÿé    é   c                      ó
   ˆ   ˆ ¡S r:   )Ú
half_gcdexr   r   r   r   r0     r1   c                      r^   r:   )Úgcdexr   r   r   r   r0     r1   c                      r^   r:   )Úinvertr   r   r   r   r0      r1   )r   r   é   r   é–   r   iô  r   iq  r8   r   r4   rW   r8   c                      ó   ˆ   ¡ S r:   )Ú	decomposer   r   r   r   r0   +  ó    c                      rd   r:   )Zsturmr   r   r   r   r0   ,  rf   )$r   r   ZdegreeZdegree_listZtotal_degreeZLCZTCrO   r   rE   Zmax_normZl1_normrS   ÚevalZ	cofactorsÚgcdÚlcmr   ZmonicÚcontentÚ	primitiveÚcancelÚtruncÚf_4Zsqf_partZsqf_listZsubresultantsZ	resultantZdiscriminantr_   r`   ra   Ú
ValueErrorÚmapZcomposere   )r=   rJ   ÚuÚvrL   ÚsÚtr   r   r   Útest_DMP_functionality¾   s”   4  "þü:>
""""(""ru   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} g d¢}t| t ƒ ¡ |tt dƒt dƒgt ƒfks:J ‚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`J ‚d S )Nr   )r   r   r   r   r&   r3   r*   rX   r%   rW   é
   é   é   é   é   é   r]   é   é   é   rb   rZ   é   é   r5   r   )r   r   Úexclude)r   ÚJr   r   r   Útest_DMP_exclude/  s   @,""ÿ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   r>   r8   éüÿÿÿéýÿÿÿr&   r|   r   r3   rX   rz   r{   rb   c                   S   s   t dgdggftƒS ©Nr   ©r   r   r   r   r   r   r0   Ž  r   z"test_DMF__init__.<locals>.<lambda>c                   S   s   t dgg ftƒS r†   r‡   r   r   r   r   r0     s    )
r   r   ÚnumZdenr   r   r   r   ro   ÚZeroDivisionErrorr   r   r   r   Útest_DMF__init__9  s|   $ 0$"8$"rŠ   c                   C   s6   t tg gtƒƒdu sJ ‚t tdggtƒƒdu sJ ‚d S r"   )r#   r   r   r   r   r   r   Útest_DMF__bool__’  s   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_properties—  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 )
NrX   i÷ÿÿÿiùÿÿÿrW   r   r   r>   r   )r   r   r   r   )r   r   rA   rB   rC   rD   rG   r7   )r   r=   rJ   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s'J ‚| ¡ t dƒt dƒt dƒgks8J ‚|jt ks?J ‚t dƒt dƒdœ} t dƒt dƒdœ‰ t| ˆ t ƒ}| ¡ t dƒt dƒgkseJ ‚| ¡ t dƒt dƒt dƒgksvJ ‚|jt ks}J ‚tdˆ t ƒ}| ¡ t dƒgksŽJ ‚| ¡ t dƒt dƒt dƒgksŸJ ‚|jt ks¦J ‚tddgˆ t ƒ}tdd„ | ¡ D ƒƒs»J ‚tt‡ fdd	„ƒ d S )
Nr   r   )r   r   r'   g      à?c                 s   s    | ]}t  |¡V  qd S r:   )r   Zof_type)r   rT   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   r0   æ  s    z#test_ANP___init__.<locals>.<lambda>)r   r   Zto_listZ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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   )rT   Ú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   r8   r   r>   r   r*   é+   rW   r3   )r   r   r   r8   c                      r9   r:   )rF   r   ©rT   Úcr   r   r0   4  r1   z&test_ANP_arithmetics.<locals>.<lambda>c                      r9   r:   )rH   r   r˜   r   r   r0   5  r1   )r   r   rA   rB   rC   rD   r7   rG   rH   rF   r   r
   )r   r“   Úr1rK   Úr2r   r˜   r   Útest_ANP_arithmetics  s6   "&&&&&&$2**N
0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s3J ‚| |¡d tks>J ‚| |¡d tksIJ ‚| |¡d t ksTJ ‚| |¡d tks_J ‚| |¡d tksjJ ‚| |¡d tksuJ ‚| |¡d t ks€J ‚d S )Nr   r   r8   r>   )r   r   r   ZunifyZ	unify_ANP)Zmod_zZmod_qrT   r“   r   r   r   Útest_ANP_unify=  s   r   c                  C   s\   ddl m}  | dƒ}t |¡}|dƒ}| ¡ \}}|dksJ ‚||ks%J ‚|jdu s,J ‚d S )Nr   )ÚSymbolr6   F)Zsympyrž   r   Zold_poly_ringrk   r-   )rž   r6   ZR_oldZzero_poly_oldZcont_oldZprim_oldr   r   r   Útest_zero_polyO  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_3rn   Zf_5Zf_6r   r    r!   r$   r)   r.   rN   ru   rƒ   rŠ   r‹   rŒ   r   r’   r”   r•   r–   rœ   r   rŸ   r   r   r   r   Ú<module>   s8    
fq
Y
( 
5