U
    ZÊ¹jŠ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   úa/var/www/html/bwave/python/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�s�t‚ˆˆ  |  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�s�t‚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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ƒ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