U
    L?h  ã                   @   s€   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ eƒ \ZZZZZZZdd„ Zd	d
„ Zdd„ Zdd„ ZdS )zBTests for square-free decomposition algorithms and related tools. é    )Úring)ÚFFÚZZÚQQ)Úf_polys)Úraises)ÚMPQc               
   C   sÐ  t dtƒ\} }|  d¡dks t‚|  d¡dks2t‚|  d¡dksDt‚|  d¡dksVt‚|  d| d ¡|d kstt‚|  d| d ¡dksŽt‚|  |d | d ¡|d | d ks¸t‚|  |d | d ¡dksÖt‚|  |d  | d ¡|d | d kst‚|  |d  | d ¡dks&t‚|  d|d  d|d   ¡d|d  d|  ks^t‚|  d|d  d|d   ¡dks†t‚|  d	|d  d|d   ¡d|d  d|  ks¾t‚|  d	|d  d|d   ¡dksæt‚|  d¡dg fksþt‚|  d¡dg fkst‚|  |¡d|dfgfks4t‚|  d|d  ¡d|dfgfksZt‚|  d|d  ¡d|dfgfks€t‚|  |d
  |d  | d ¡d|d |d  | d df|d dfgfksÒt‚|  |d d|d   d|d   d|d   ¡d|df|d d dfgfks&t‚|  d|d  d|  d ¡d|d dfgfks\t‚t dtƒ\} }|  d|d  d|  d ¡d|d dfgfks t‚t dtdƒƒ\} }|  |d d ¡d|d dfgfksÜt‚t dtdƒƒ\} }|  |d d|d   d|d   | ¡d|df|d df|d dfgfks@t‚t dtƒ\}}t dtdƒƒ\}}|d d }|d d }| |¡|ksŒt‚| |¡|d ks¤t‚| |¡dks¸t‚| |¡dksÌt‚t dtƒ\} }}|d d|d   d }|d d
|d   d
|d   d }||  ||  	|  
|d¡|¡¡ }}|  ||¡}	d|d  d  |¡}
|  |¡ |	¡d|
dfgfks€t‚t dtƒ\}}t d|ƒ\} }|  |d |d  ¡|d df|dfgksÌt‚d S )NÚxr   Té   é   é   é   Féþÿÿÿé   é   éÿÿÿÿé   é   é   é
   Úyúx,yiä²  Út)r   r   Zdup_sqf_partÚAssertionErrorZ	dup_sqf_pZdup_sqf_listr   r   Zdmp_subZdmp_mulZdmp_diffZdmp_resultantZdropZdup_sqf_list_include)ÚRr	   ZR1ZR2r   ÚfÚgÚAÚDÚresÚhZRtr   © r!   úT/var/www/html/venv/lib/python3.8/site-packages/sympy/polys/tests/test_sqfreetools.pyÚtest_dup_sqf   sp    *."8(8(&&*ÿ
0ÿ
66*(

þÿ
$"$r#   c                     sü  t dtƒ\‰ } ‰ˆ  d¡dks"t‚ˆ  d¡dks4t‚ˆ  d¡dksFt‚ˆ  d¡dksXt‚ˆ  d¡dg fksnt‚ˆ  d¡dgks‚t‚t dtƒ\‰ } ‰}ˆ  t¡dks¦t‚ˆ  td	 ¡d
ks¼t‚ˆ  t¡dksÎt‚ˆ  td	 ¡d
ksät‚ˆ  t	¡dksöt‚ˆ  t	d	 ¡d
kst‚ˆ  t
¡dks"t‚ˆ  t
d	 ¡d
ks:t‚ˆ  t¡d
ksNt‚ˆ  td	 ¡d
ksft‚ˆ  t¡dkszt‚ˆ  t¡t kst‚ˆ  t¡| ˆ | ks¬t‚t dtƒ\‰ } ‰}}ˆ  t¡dksÔt‚ˆ  t¡tksèt‚t dtƒ\‰ } | d  | d  |  d }ˆ  |¡d| d | d	  |  d df| d d	fgfksLt‚ˆ  |¡| d  | d	  |  d df| d d	fgks†t‚t dtƒ\‰ } ‰| d  | d  |  d }ˆ  |¡d| d | d	  |  d df| d d	fgfksìt‚ˆ  |¡| d  | d	  |  d df| d d	fgks&t‚| d	  d	|   d }ˆ  |¡d| d d	fgks\t‚ˆd	 d d	 | d	 d	|   d	  }ˆ  |¡d
ks”t‚ˆ  |¡d| d	 d	|   d	 dfˆd	 d d	fgfksÐt‚t dtd	ƒƒ\‰ } ‰tt‡ ‡fdd„ƒ d S )Nr   r   Tr
   r   r   )r   r   zx,y,zr   Fzx,y,z,tr	   r   r   r   )r   r   c                      s   ˆ   ˆd d ¡S )Nr   r   )Údmp_sqf_listr!   ©r   r   r!   r"   Ú<lambda>Ž   ó    ztest_dmp_sqf.<locals>.<lambda>)r   r   Zdmp_sqf_partr   Z	dmp_sqf_pr$   Zdmp_sqf_list_includeÚf_0Úf_1Úf_2Úf_3Úf_5Úf_4Úf_6r   r   ÚNotImplementedError)r	   Úzr   r   r!   r%   r"   Útest_dmp_sqfZ   sN    <:<: $<r1   c                     s  t dtƒ\‰ } | d d| d   | d  d| d   }ˆ  |¡| df| d dfgksXt‚| d d| d	   d
| d   d| d   d| d   d| d   d| d   d| d   d|   }ˆ  |¡| d d|   d df| d d|   d df| dfgkst‚tt‡ fdd„ƒ d S )Nr	   r   r   r   r   r   é	   é   r   é¦   r
   iè  r   i­  i<  i„  ià  i@  c                      s
   ˆ   d¡S )Nr   )Údup_gff_listr!   ©r   r!   r"   r&   š   r'   z#test_dup_gff_list.<locals>.<lambda>)r   r   r5   r   r   Ú
ValueError)r	   r   r   r!   r6   r"   Útest_dup_gff_list‘   s    ("dFr8   c                  C   sô   t dddgtƒ\} }}}|d d|d   d  ¡ tddƒ|d d|d   d dfgfks`t‚|d d|d   d  ¡ tddƒ|d d|d   d dfgfks¨t‚|d d|d   d  ¡ tddƒ|d d|d   d dfgfksðt‚d S )Nr	   r   r0   r   r   )r   r   Zsqf_listr   r   )r   r	   r   r0   r!   r!   r"   Útest_issue_26178œ   s    HHr9   N)Ú__doc__Zsympy.polys.ringsr   Zsympy.polys.domainsr   r   r   Zsympy.polys.specialpolysr   Zsympy.testing.pytestr   Zsympy.external.gmpyr   r(   r)   r*   r+   r-   r,   r.   r#   r1   r8   r9   r!   r!   r!   r"   Ú<module>   s   N7