o
    GZŽ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J ‚|  d¡du sJ ‚|  d¡dks"J ‚|  d¡du s+J ‚|  d| d ¡|d ks:J ‚|  d| d ¡du sGJ ‚|  |d | d ¡|d | d ks\J ‚|  |d | d ¡du skJ ‚|  |d  | d ¡|d | d ksJ ‚|  |d  | d ¡du s‘J ‚|  d|d  d|d   ¡d|d  d|  ks¬J ‚|  d|d  d|d   ¡du s¿J ‚|  d	|d  d|d   ¡d|d  d|  ksÚJ ‚|  d	|d  d|d   ¡du síJ ‚|  d¡dg fksøJ ‚|  d¡dg fksJ ‚|  |¡d|dfgfksJ ‚|  d|d  ¡d|dfgfks&J ‚|  d|d  ¡d|dfgfks9J ‚|  |d
  |d  | d ¡d|d |d  | d df|d dfgfksbJ ‚|  |d d|d   d|d   d|d   ¡d|df|d d dfgfksŒJ ‚|  d|d  d|  d ¡d|d dfgfks§J ‚t dtƒ\} }|  d|d  d|  d ¡d|d dfgfksÉJ ‚t dtdƒƒ\} }|  |d d ¡d|d dfgfksçJ ‚t dtdƒƒ\} }|  |d d|d   d|d   | ¡d|df|d df|d dfgfksJ ‚t dtƒ\}}t dtdƒƒ\}}|d d }|d d }| |¡|ks?J ‚| |¡|d ksKJ ‚| |¡du sUJ ‚| |¡du s_J ‚t dtƒ\} }}|d d|d   d }|d d
|d   d
|d   d }||  ||  |  	|d¡|¡¡}}|  
||¡}	d|d  d  |¡}
|  |¡ |	¡d|
dfgfks¹J ‚t dtƒ\}}t d|ƒ\} }|  |d |d  ¡|d df|dfgksßJ ‚d S )NÚxr   Té   é   é   é   Féþÿÿÿé   é   éÿÿÿÿé   é   é   é
   Úyúx,yiä²  Út)r   r   Zdup_sqf_partZ	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    úQ/var/www/auris/lib/python3.10/site-packages/sympy/polys/tests/test_sqfreetools.pyÚtest_dup_sqf   sp   *, 6&6&&&*
ÿ0
ÿ66*(

þ
ÿ$"$4r"   c                     sè  t dtƒ\‰ } ‰ˆ  d¡dksJ ‚ˆ  d¡du sJ ‚ˆ  d¡dks#J ‚ˆ  d¡du s,J ‚ˆ  d¡dg fks7J ‚ˆ  d¡dgksAJ ‚t dtƒ\‰ } ‰}ˆ  t¡du sSJ ‚ˆ  td	 ¡d
u s^J ‚ˆ  t¡du sgJ ‚ˆ  td	 ¡d
u srJ ‚ˆ  t¡du s{J ‚ˆ  td	 ¡d
u s†J ‚ˆ  t	¡du sJ ‚ˆ  t	d	 ¡d
u sšJ ‚ˆ  t
¡d
u s£J ‚ˆ  t
d	 ¡d
u s®J ‚ˆ  t¡du s·J ‚ˆ  t¡t ksÁJ ‚ˆ  t
¡| ˆ | ksÎJ ‚t dtƒ\‰ } ‰}}ˆ  t¡du sáJ ‚ˆ  t¡tksêJ ‚t dtƒ\‰ } | d  | d  |  d }ˆ  |¡d| d | d	  |  d df| d d	fgfksJ ‚ˆ  |¡| d  | d	  |  d df| d d	fgks9J ‚t dtƒ\‰ } ‰| d  | d  |  d }ˆ  |¡d| d | d	  |  d df| d d	fgfkslJ ‚ˆ  |¡| d  | d	  |  d df| d d	fgks‰J ‚| d	  d	|   d }ˆ  |¡d| d d	fgks¤J ‚ˆd	 d d	 | d	 d	|   d	  }ˆ  |¡d
u sÀJ ‚ˆ  |¡d| d	 d	|   d	 dfˆd	 d d	fgfksÞJ ‚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>Ž   s    ztest_dmp_sqf.<locals>.<lambda>)r   r   Zdmp_sqf_partZ	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   <:<: $<r/   c                     s  t dtƒ\‰ } | d d| d   | d  d| d   }ˆ  |¡| df| d dfgks,J ‚| 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€J ‚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%   š   s   
 z#test_dup_gff_list.<locals>.<lambda>)r   r   r3   r   Ú
ValueError)r	   r   r   r    r4   r!   Útest_dup_gff_list‘   s   ("dDr6   c                  C   sò   t g d¢tƒ\} }}}|d d|d   d  ¡ tddƒ|d d|d   d dfgfks/J ‚|d d|d   d  ¡ tddƒ|d d|d   d dfgfksSJ ‚|d d|d   d  ¡ tddƒ|d d|d   d dfgfkswJ ‚d S )N)r	   r   r.   r   r   )r   r   Zsqf_listr   )r   r	   r   r.   r    r    r!   Útest_issue_26178œ   s   HHLr7   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"   r/   r6   r7   r    r    r    r!   Ú<module>   s    N7