o
    *ήc#                     @   sl   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
 e \ZZZZZZ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)raisesc               
   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 sJ | d|d  d|d   d|d  d|  ksJ | d|d  d|d   du sJ | d	|d  d|d   d|d  d|  ksJ | d	|d  d|d   du sJ | ddg fksJ | 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sJ | d|d  d|  d d|d dfgfksJ t dt\} }| d|d  d|  d d|d dfgfksJ t dtd\} }| |d d d|d dfgfksJ 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sJ t dt\}}t d|\} }| |d |d  |d df|dfgksJ d S )Nxr   T            F               
   yx,yi  t)r   r   dup_sqf_part	dup_sqf_pdup_sqf_listr   r   dmp_subdmp_muldmp_diffdmp_resultantdropdup_sqf_list_include)Rr   R1R2r   fgADreshRtr    r+   I/tmp/pip-target-vg8gfxp4/lib/python/sympy/polys/tests/test_sqfreetools.pytest_dup_sqf   sp   *, 6&6&&&*
0
66*(


$"$4r-   c                     st  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 sJ  t	du sJ  t	d	 d
u sJ  t
d
u sJ  t
d	 d
u sJ  tdu sJ  tt ksJ  t
|  | ksJ t dt\ } }} tdu sJ  ttksJ 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sJ | d	  d	|   d } |d| d d	fgksJ 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   dmp_sqf_part	dmp_sqf_pr.   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_sqfY   sH   <:<: 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sJ 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,   r0      s   
 z#test_dup_gff_list.<locals>.<lambda>)r   r   rA   r   
ValueError)r   r$   r%   r+   rB   r,   test_dup_gff_list   s   ("dDrD   N)__doc__sympy.polys.ringsr   sympy.polys.domainsr   r   r   sympy.polys.specialpolysr   sympy.testing.pytestr   r4   r5   r6   r7   r9   r8   r:   r-   r=   rD   r+   r+   r+   r,   <module>   s    N3