
    gGa                        d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZm Z   e            \  Z!Z"Z#Z$Z%Z&Z' e            \  Z(Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5e d             Z6d Z7d Z8d Z9d Z:d Z;d Z<d  Z=d! Z>d" Z?d# Z@d$ ZAd% ZBd&S )'zDTools for polynomial factorization routines in characteristic zero.     )ringxring)FFZZQQZZ_IQQ_IRREX)
polyconfig)DomainError)ANP)f_polysw_polys)I)sqrt)sin)	nextprime)raisesXFAILc                      t          dt                    \  } }|                     |dz  d|dz  z  z   d|dz  z  z   d|dz  z  z   d	|z  z   dz   |d
z   |dz   f          |d
z   df|dz   dfgk    sJ d S )Nx               &            )r   r   dup_trial_divisionRr   s     ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_factortools.pytest_dup_trial_divisionr&      s    R==DAq1qAv1a4 7"QT' ABqD H1 LqSTuVWZ[V[n]]cdghchjkblopstotvwnxayyyyyyy    c                      t          dt                    \  } }}|                     |dz  d|dz  z  z   d|dz  z  z   d|dz  z  z   d	|z  z   dz   |d
z   |dz   f          |d
z   df|dz   dfgk    sJ d S )Nx,yr   r   r   r   r   r   r   r    r!   )r   r   dmp_trial_divisionr$   r   ys      r%   test_dmp_trial_divisionr-      s    5"ooGAq!1qAv1a4 7"QT' ABqD H1 LqSTuVWZ[V[n]]cdghchjkblopstotvwnxayyyyyyyr'   c                      t          dt                    \  } }|                     d|dz  z  d|z  z   dz             dk    sJ |                     |dz  d|dz  z  z   d|z  z   dz             d	k    sJ d S )
Nr   r   r   r         8   @      )r   r   dup_zz_mignotte_boundr#   s     r%   test_dup_zz_mignotte_boundr5      s    R==DAq""1QT6AaC<!#3449999""1a4"QT'>BqD#82#=>>#EEEEEEr'   c                      t          dt                    \  } }}|                     d|dz  z  d|z  z   dz             dk    sJ d S )Nr)   r   r   r       )r   r   dmp_zz_mignotte_boundr+   s      r%   test_dmp_zz_mignotte_boundr9   %   sO    5"ooGAq!""1QT6AaC<!#344::::::r'   c                  d   t          dt                    \  } }|dz  dz
  }|dz  d|dz  z  z   |z
  dz
  }|dz
  }d}d|dz  z  d|z  z
  dz
  }|                     d|||||          \  }}}	}
||dz  d|dz  z  z   |z
  dz
  k    sJ ||dz
  k    sJ |	d	k    sJ |
d
|dz  z  d|z  z
  dz
  k    sJ d S )Nr   r   r!   r   r   r      r   i   )r   r   dup_zz_hensel_step)r$   r   fghstGHSTs              r%   test_dup_zz_hensel_steprH   *   s   R==DAq	1qA	1qAvAA	AA
A	!Q$1qA%%aAq!Q77JAq!Q1qAv!A%%%%%A::::66661a4"Q$"""""""r'   c                      t          dt                    \  } }|dz  dz
  }|dz
  |dz
  |dz   |dz   g}|                     t          d          ||d          |dz
  |dz
  |dz   |dz   gk    sJ d S )Nr   r   r!   r   r      )r   r   dup_zz_hensel_lift)r$   r   r?   Fs       r%   test_dup_zz_hensel_liftrM   ;   s    R==DAq	1qA	
QAq1ua!e$A1q!Q//	
QCS!a%() ) ) ) ) )r'   c                     t          dt                    \  } }|                     d|dz  z  d|dz  z  z   d|dz  z  z   d|z  z   dz             J |                     d|dz  z  d|dz  z  z   d|dz  z  z   d|z  z   dz             J |                     d|dz  z  d|dz  z  z   d|dz  z  z   d|z  z   dz             d	u sJ |                     d|dz  z  d|dz  z  z   d|dz  z  z   d|z  z   d
z             d	u sJ d S )Nr   r   r   r   r/   r   r<   
   Tr0   )r   r   dup_zz_irreducible_pr#   s     r%   test_dup_zz_irreducible_prQ   E   sG   R==DAq!!!AqD&1QT6/AadF":QqS"@1"DEEMMM!!!AqD&1QT6/AadF":QqS"@1"DEEMMM!!!AqD&1QT6/AadF":QqS"@2"EFF$NNNN!!!AqD&1QT6/AadF":QqS"@2"EFF$NNNNNNr'   c                  d   t          dt                    \  } }|                     |dz
            du sJ |                     |dz             du sJ |                     |dz  |z   dz             du sJ |                     |dz  dz             du sJ |                     |dz  |dz  z   |dz  z   |z   dz             du sJ |                     |dz  |z
  dz             du sJ |                     |dz  |dz  z   |dz  z   |dz  z   |dz  z   |z   dz             du sJ |                     |dz  dz             du sJ |                     |dz  |dz  z   dz             du sJ |                     d	          d
u sJ |                     d          d
u sJ |                     |          d
u sJ |                     |dz             d
u sJ |                     d|z  dz             d
u sJ |                     |dz  dz
            d
u sJ |dz  |dz  z   |dz  z
  |dz  z   |dz  z
  |dz  z   dz   }|                     |          d
u sJ |dz  |dz  z   |dz  z
  |dz  z
  |dz  z
  |dz  z   dz   }|                     |          du sJ t          dt                    \  } }|                     |dz  |z   dz             du sJ |                     t          dd          |dz  z  |z   dz             d
u sJ t          dt          d                   \  } }|                     |dz  |z   dz             d
u sJ d S )Nr   r!   Tr   r   r   r/   r   r   F   r0   rO   r   r,   )r   r   dup_cyclotomic_pr   )r$   r   r?   r@   s       r%   test_dup_cyclotomic_prU   O   s   R==DAqa!e$$,,,,a!e$$,,,,adQhl++t3333adQh''4////adQTkAqD014q899TAAAAadQhl++t3333adQTkAqD01a47!Q$>BQFGG4OOOOadQh''4////adQTkAo..$6666a  E))))a  E))))a  E))))a!e$$----acAg&&%////adQh''50000	2221$q!t+ad2Q6Aa  E))))	2221$q!t+ad2Q6Aa  D((((R==DAqadQhl++t3333b1ggadlQ.233u<<<<RWDAqadQhl++u444444r'   c                     t          dt                    \  } }|                     d          |dz
  k    sJ |                     d          |dz   k    sJ |                     d          |dz  |z   dz   k    sJ |                     d          |dz  dz   k    sJ |                     d          |dz  |dz  z   |dz  z   |z   dz   k    sJ |                     d          |dz  |z
  dz   k    sJ |                     d          |dz  |dz  z   |dz  z   |dz  z   |dz  z   |z   dz   k    sJ |                     d	          |dz  dz   k    sJ |                     d
          |dz  |dz  z   dz   k    sJ d S )Nr   r!   r   r   r   r   r/   r<   r   	   )r   r   dup_zz_cyclotomic_polyr#   s     r%   test_dup_zz_cyclotomic_polyrY   q   s   R==DAq##A&&!a%////##A&&!a%////##A&&!Q$(Q,6666##A&&!Q$(2222##A&&!Q$A+1*<q*@1*DDDDD##A&&!Q$(Q,6666##A&&!Q$A+1*<q!t*Cad*JQ*NQR*RRRRR##A&&!Q$(2222##A&&!Q$A+/999999r'   c                     t          dt                    \  } }|                     d          J |                     d          J |                     d|dz  z  dz
            J |                     |dz  dz
            J |                     |dz  |dz  z   dz
            J |                     |dz             |dz   gk    sJ |                     |dz
            |dz
  gk    sJ |                     |dz  dz             |dz  dz   gk    sJ |                     |dz  dz
            |dz
  |dz   gk    sJ |                     |dz  dz             |dz   |dz  |z
  dz   |d	z  |dz  z
  dz   |d
z  |dz  z
  dz   gk    sJ |                     |dz  dz
            |dz
  |dz  |z   dz   |d	z  |dz  z   dz   |d
z  |dz  z   dz   gk    sJ d S )Nr   r   r!   r   rO   r   r      r/      rW   )r   r   dup_zz_cyclotomic_factorr#   s     r%   test_dup_zz_cyclotomic_factorr^      sX   R==DAq%%a((000%%a((000%%a2gk22:::%%aeai00888%%aeadlQ&677???%%a!e,,Q7777%%a!e,,Q7777%%adQh//AqD1H:====%%adQh//AE1q5>AAAA%%aeai00	
Q1q1adQTkAoq"uq!t|a/?@A A A A%%aeai00	
Q1q1adQTkAoq"uq!t|a/?@A A A A A Ar'   c            	         t          dt                    \  } }|                     d          dg fk    sJ |                     d          dg fk    sJ |                     d          dg fk    sJ |                     d          dg fk    sJ |                     d          dg fk    sJ |                     d          dg fk    sJ |                     d|z  dz             d|dz   dfgfk    sJ |                     d|z  dz             d|dz   gfk    sJ |dz  |z   dz   }t	          dd          D ]"}|                     |          d|dfgfk    sJ #|                     |dz  d|z  z   dz             d|dz  d|z  z   dz   dfgfk    sJ |                     d	|dz  z  d
|z  z   dz             dd|z  dz   dfgfk    sJ |                     d|dz  z  dz             dd|z  dz
  dfd|z  dz   dfgfk    sJ |                     d|dz  z  dz             dd|z  dz
  d|z  dz   gfk    sJ |                     |dz  d|dz  z  z
  d|z  z   dz
            \  }}|dk    sJ t          |          |dz
  df|dz
  df|dz
  dfhk    sJ |                     |dz  d|dz  z  z
  d|z  z   dz
            d|dz
  |dz
  |dz
  gfk    sJ |                     d|dz  z  d|dz  z  z   d|z  z   dz             d|dz   dfd|dz  z  d|z  z   dz   dfgfk    sJ |                     d|dz  z  d|dz  z  z   d|z  z   dz             d|dz   d|dz  z  d|z  z   dz   gfk    sJ |                     |dz   |dz  z             \  }}|dk    sJ t          |          |df|dz
  df|dz   df|dz  dz   dfhk    sJ d|dz  z  d|dz  z  z   d|dz  z  z   d|dz  z  z   d|dz  z  z   d|dz  z  z
  d|dz  z  z   dz
  }|                     |          dd|dz  z  d|dz  z  z   d|dz  z  z   d
z   dfd|dz  z  d|dz  z  z   d z
  dfgfk    sJ d!|d"z  z  d#|dz  z  z   d$|d%z  z  z   d&|dz  z  z   d'|dz  z  z
  d(z   }|                     |          \  }}|d)k    sJ t          |          d|z  dz
  dfd*|dz  z  d|z  z   dz
  dfd+|dz  z  d,|dz  z  z   d"|dz  z  z   d|z  z   dz   dfd-|dz  z  d.|dz  z  z
  d/|dz  z  z   d|z  z
  dz   dfd-|dz  z  d0|dz  z  z   d/|dz  z  z   d1|z  z   dz   dfhk    sJ |dz  dz
  }t          j        d2d3           |                     |          \  }}t          j        d2d4           |                     |          \  }}	||cxk    rdk    sn J t          |          t          |	          cxk    rB|dz
  df|dz   df|dz  |dz  z
  |dz  z   |z
  dz   df|dz  |dz  z   |dz  z   |z   dz   dfhk    sn J t          j        d2           |dz  dz   }t          j        d2d3           |                     |          }t          j        d2d4           |                     |          }	||	cxk    r,d|dz  dz   df|dz  |dz  z
  |dz  z   |dz  z
  dz   dfgfk    sn J t          j        d2           d S )5Nr   r   r<   r   r   r!      r\   r=   r   r/      rO      r   8  r   i@  i3  i  i
  i     D     rW         r[   l  "@]gk|5 r   l     j=7;I l    Gjy@Kz
+   l   Ln_2|OH++l   	#~ l   1VkZ l1VkZ d   iq  }   i'  i  i  i     USE_CYCLOTOMIC_FACTORTF)r   r   dup_zz_factordup_zz_factor_sqfrangesetconfigsetup)
r$   r   r?   icfactorsc0F_0c1F_1s
             r%   test_dup_zz_factorr~      s	   R==DAq??1!R((((??1!R((((??22r(****q!!aW,,,,q!!aW,,,,r""r2h....??1Q37##QUAJ<'88888qsQw''AAw<7777	1q1A1b\\ 3 3q!!a1a&]22222??1a4!A#:>**	
adQqSj1na !"# # # # ??2ad7RT>A-..	
acAgq\N    ??2ad7Q;''	qsQwlsQwl 	    r!Q$w{++	acAgcAg 	    A!Q$A!5!9::JAw6666w<<QUAJQ
QUAJ?????q!ta1f}r!t3a788	
QUUU 	   
 ??1QT6Bq!tG+bd2R788	
a!eQZ1fqslQ"$ 	%% % % % qAv1a4/"Q$6;<<	
QUq!tVac\A 	         !Q$A..JAw7777w<<QFQUAJQ
QTAXqMJJJJJQT	DAIQT	)C1H4tAqDy@3q!t8KcRSUVRVhVY\\A??1	
a1fr!Q$w1a4'",a0!Q$hAqD 2%q)+ 	,, , , , 	025*1b50	1'2-	. 	$ArE)	* 	ad"		#
 		A ##JAww<<	
1q!	QTBqD1	a 	QTC1H	r!Q$w	&1	,q	0!4	q!td1a4i	#ad(	*RT	1A	5q9	q!td1a4i	#ad(	*RT	1A	5q9     	
2	A
L($///ooa  GB
L(%000ooa  GB====q======s88s3xx    	
Q
	
Q
	
A1q!t	a	!	#Q'	
A1q!t	a	!	#Q'	$       L()))	2	A
L($///
//!

C
L(%000
//!

C# 2 2 2 2	
adQh]dQTkAqD 1a4'!+Q/1 	22 2 2 2 2 2 L()))))r'   c                      t          dt                    \  }  }}t          dt                    \  }}t          t          |                     t                                        }|dk    sJ |dt          d          }}}|dt          d          }}
}	||z   dt          d          }}}||z
  dt          d	          }}}||	||g}||
||g}||||g}t           fd
|D             |          }t          d          t          d          g}|                     t          |          }|                    |          \  }}|dk    rB||cxk    r9d|dz  z  d|dz  z  z   d|dz  z  z   d|dz  z  z   d|dz  z  z
  d|z  z
  dz
  k    sn J |                     ||t          d                    g dk    sJ |	                    |          r1|
                    |          |                     t                    k    sJ |                    |          \  }}d|dz  z  d|z  z   dz   }d|dz  z  d|z  z
  dz   }d|dz  z  dz
  }||||gk    sJ  fdd|z  d|z  z
  | |dz  z  |dz  |dz  z
  fD             }|                     t          |||||          t          ||fk    sJ |                     t          ||||          }|                     |          t          k    sJ d S )Nx,y,zr    ` r!   r   r   iic                 :    g | ]}|                               S  drop).0rC   r   s     r%   
<listcomp>z$test_dmp_zz_wang.<locals>.<listcomp>  s#    $$$AaffQii$$$r'   i r/   i` r   i  r   i iC  ih  i  )r<   r   rd      ,   *   ~   rW   r          c                 :    g | ]}|                               S r   r   )r   lcr   s     r%   r   z$test_dmp_zz_wang.<locals>.<listcomp>)  s#    	D	D	D"2771::	D	D	Dr'   )r   r   r   r8   w_1zipdmp_eval_taildup_primitivedmp_zz_wang_non_divisors	dup_sqf_p
dup_degree
dmp_degreerr   dmp_zz_wang_lead_coeffsdmp_zz_wang_hensel_lifting
dmp_expand)!r$   r,   zUV_xpt_1k_1e_1t_2k_2e_2t_3k_3e_3t_4k_4e_4rG   KEArF   csrB   _rE   h_1h_2h_3LCry   r   s!                                   @r%   test_dmp_zz_wangr     sb   GR  HAq1#r]]FB
9Q,,S112233A<<<<q"S''cCq"Q%%cCE1bggcCE1bggcC	c3A	c3A	c3A$$$$$$$a((A	C"Q%%A	QAQEB77qA a a a aAr1u$uRU{2VBE\AE"a%KORWXZRZZ]``a a a a a a %%aRUU33~~~EEEE<<??Dr}}Q//1<<3D3DDDDD""DAq
RU(RU
Q
C
b!e)ad
R
C
b!e)b.Cc3	D	D	D	DA!aR1WadQTk B	D	D	DB$$S!RAq99c1b\IIII**32q!<<G<<  C''''''r'   c                     t          dt                    \  } }}}t          dt                    \  }}t          t          |                     t                                        }|dk    sJ d|dz  z  d|z  z   dz   d|dz  z  d	|z  z
  d
z   d|dz  z  dz
  g}d|dz  z  |z  d|dz  z  z
  d|z  |z  z
  dz   d|dz  z  |z  d	|z  z
  d|z  z
  |dz  |dz  z  d	|dz  z  z
  |z   d	z
  g}d|dz  z  |z  d|dz  z  z
  d|z  |z  z
  dz   d|dz  z  |z  d	|z  z
  d|z  z
  |dz  |dz  z  d	|dz  z  z
  |z   d	z
  g}	d|dz  z  d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   dz   }
d	|dz  z  |dz  z  d|dz  z  |dz  z  z   d|dz  z  |dz  z  z
  d|dz  z  |z  z
  d|dz  z  z
  d|dz  z  |dz  z  z   d|dz  z  |dz  z  z
  d|dz  z  |z  z
  d|dz  z  |dz  z  z   d	|dz  z  |dz  z  z   d|dz  z  |dz  z  z
  d |dz  z  |z  z
  d!|dz  z  z
  d"|dz  z  |dz  z  z
  d#|dz  z  |z  z
  d|z  |dz  z  z   d$|z  |dz  z  z
  d|z  |z  z
  d%|z  z   d|z  z   }d&|dz  z  |dz  z  d|dz  z  |z  z
  d'|dz  z  |dz  z  z
  d(|dz  z  |z  z
  d|dz  z  z
  d)|dz  z  |dz  z  z
  d|dz  z  |z  z
  d*|z  |dz  z  z
  d	|z  z   d|z  z   }|                     ||
g d|          d+|z  d,dgk    sJ |                     ||t          d-          gd|          | |z  d+|z  d.gk    sJ |                     |	|t          d-          gd|          g d/k    sJ d S )0Nr   r   r   r   r   r   r!   r   rW   r    r   r   r   r=   r   rb   ir   i  r   iE  i  i  J   -   l   rh   r\   rj   i*     i   i  ro   i  6   Q   ir[   $   r   r/   r;   r   i)r   r   rc   )r   r   r   r8   r   dmp_zz_diophantine)r$   r   r,   r   r   r   r   H_1H_2H_3c_1c_2c_3s                r%   test_dmp_zz_wang_failr   1  sX   GR  HAq1#r]]FB
9Q,,S112233A<<<<ad7RT>As1a4x!A#~2C1HrM
BCad719r!Q$w1Q&*Bq!tGAI!Oac,A1a419qQRTUQUvCUXYCY\]C]
^Cad719r!Q$w1Q&*Bq!tGAI!Oac,A1a419qQRTUQUvCUXYCY\]C]
^C
A+QT	
!E!Q$J
.ad
:T!V
Cb
HC
AqD&A+1a41
$r!Q$wq!t|
3c!Q$hqj
@3q!t8
KbQRTUQUgVWYZVZl
Z]`abdeae]efgijfj]j
jmpqrtuqumuvwmw
wz{|}  @A  }A  {A  BC  EF  BF  {F  F  IJ  KL  NO  KO  IO  PQ  ST  PT  IT  T  WZ  [\  ^_  [_  W_  `a  cd  `d  Wd  d  gj  kl  no  ko  go  pq  gq  q  tw  xy  {|  x|  t|  |  A  BC  EF  BF  F  GH  JK  GK  K  K  NQ  RS  UV  RV  NV  WX  NX  X  [\  ]^  [^  _`  bc  _c  [c  c  fh  ij  fj  kl  no  ko  fo  o  rs  tu  ru  vw  rw  w  z|  }~  z~  ~  AC  DE  AE  EC
ad(1a4-#ad(1*
$r!Q$wq!t|
3bAgai
?#ad(
JQqRStVTUWXTX[
X[]^_ab^b[bcd[d
dghijgjklnokogo
orsturu
uxyz{x{
{CS"a331b!}DDDDS2c77)Q::r!tRT2>NNNNNS2c77)Q::jjjHHHHHHr'   c                      g d} t          dt                    \  }}}}d|dz  z  ||z  z   |z
  |dz  z
  |z   }|                    ||           |gk    sJ d S )N)rc   rc   r   r   r   r   rc   rc   r   rc   r   rc   r   r   r   r   rc   r   r   r   )seed)r   r   dmp_zz_wang)random_sequencer$   r   r,   r   r?   s         r%   test_issue_6355r   F  sx     TSSOgr""JAq!Q	!Q$1q1a4!#A===11aS888888r'   c                     t          dt                    \  } }|                     d          dg fk    sJ |                     d          dg fk    sJ |                     d          dg fk    sJ |                     |dz  dz
            d|dz
  df|dz   dfgfk    sJ t          d	t                    \  } }}|                     d          dg fk    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
|z            d
|dfgfk    sJ |                     d
|z  dz             dd|z  dz   dfgfk    sJ |                     ||z  dz             d||z  dz   dfgfk    sJ |                     |dz  dz             d|dz  dz   dfgfk    sJ |                     |dz  dz
            d|dz
  df|dz   dfgfk    sJ |                     |dz  |dz  z  d|dz  z  |z  z   d|dz  z  z   dz
            d||z  d|z  z   dz
  df||z  d|z  z   dz   dfgfk    sJ |                     |dz  |dz  z  dz
            d||z  dz
  df||z  dz   dfgfk    sJ t          dt                    \  } }}}|                     |dz  |dz  z  |dz  z  dz
            d||z  |z  dz
  df||z  |z  dz   dfgfk    sJ t          dt                    \  } }}}}|                     |dz  |dz  z  |dz  z  |dz  z  dz
            d||z  |z  |z  dz
  df||z  |z  |z  dz   dfgfk    sJ t          dt                    \  } }}}|                     t                    d|||z  z   dz   df||z  |z   dz   df||z  |z   dz   dfgfk    sJ |                     t                    d|dz  |dz  z  |dz  |dz  z  z   |z   dz   df|dz  |z  |dz  |z  z   |z   dz
  dfgfk    sJ |                     t
                    d|dz  |dz  z  ||d
z  z  z   |z   |z   df|dz  ||z  |z  z   |dz  z   ||dz  z  z   dfgfk    sJ |                     t                    d||dz  z  |dz  z   df|dz  |z  |d
z  |dz  z  z   dz   df|dz  |z  |dz  z
  dz
  df|dz  |d
z  z  |dz  z   dfgfk    sJ |                     t                    d||z   |z
  dfgfk    sJ t          dt                    \  } }}}}|                     t                    dd|z  |z  |dz  |dz  z  z   |dz  z
  dfd|dz  z  d|dz  z  z
  |dz  z
  d|dz  z  z   d|z  |z  z   dfgfk    sJ t          dt                    \  } }}}|                     t                    d|dz  |dz  z  |dz  |dz  z  z
  |z   |dz  z
  df|dz  |z  |dz  z  d|z  |z  z   d|z  z   dfd
|dz  z  |z  d
|dz  z  |z  z   ||z  |z  z   dz
  dfgfk    sJ t          d	t                    \  } }}d|dz  z  |z  d|dz  z  |dz  z  z   d|dz  z  |d
z  z  z
  d|dz  z  |dz  z  z   d|dz  z  |dz  z  z
  d|d
z  z  |dz  z  z   d|dz  z  z
  }|                     |          d|df|dz  |z
  df|d
z  d|dz  z  |z  z   |dz  z   dfgfk    sJ d S )Nr   r   r<   r`   r   rW   r!   r   r)   r   r/   r   zx,y,z,ura   rO   ro   Z   rd   rc   r   zx,y,z,t/   r   irS      r=   i   rf   r   )
r   r   dmp_zz_factorf_1f_2f_3f_4f_5f_6r   )r$   r   r,   r   urC   r?   s          r%   test_dmp_zz_factorr   Q  s	   R==DAq??1!R((((??1!R((((??22r(****??1a4!8$$a!eQZ!a%,D(EEEEE5"ooGAq!??1!R((((??1!R((((??22r(****??1!q!fX....??1Q3AAx=0000??1Q37##QqS1WaL>':::::??1Q37##QqS1WaL>':::::??1a4!8$$adQh]O(<<<<<??1a4!8$$a!eQZ!a%,D(EEEEE??1a419qAvax/!AqD&81<==!qsQqSyST}VWFX[\]^[^abcdad[dgh[hjkZlEmAnnnnn??1a419q=))a1Q37A,1q!1M-NNNNNgr""JAq!Q??1a419QT>A-..	
ac!eai^c!eai^ 	    B''MAq!Q??1a419QT>!Q$.233	
ac!eAgk1c!eAgk1 	         gr""JAq!Q??3	
a!A#glAcAglAcAglA  	!! ! ! !
 ??3	
ad1a4i!Q$q!t)#a'",a0d1fq!tAvo!B&*, 	-- - - - ??3	
ad1a4i!AqD& 1$q(!,dQqSUlQT!AadF*A.0 	11 1 1 1 ??3	qAv1}a !tAv1QT	!A%q)!tAv1}q !$!tAqDy1a4#% 	&& & & & ??3	q1uqy!n    B''MAq!Q??3	
bd1fq!tAqDy 1a4'+Ag!Q$A%!Q$.1Q6:< 	== = = = gr""JAq!Q??3	
ad1a4i!Q$q!t)#a'!Q$.2d1fQTkAaCE!AaC'+1fQh1a4!AaCE)A-q13 	44 4 4 4
 5"ooGAq!ArE	!c!R%i1n$s1b5yA~5QT	!Q$FQPQTRSUVRVVY\]^`a]aYabcefbfYffiklmoplpippA??1	1v1q!}1qAvax!Q$&*, 	-- - - - - -r'   c            
         t          dt                    \  } }t          dd          }|                     |dz  dz
            t          dd          |dz  dz
  dfgfk    sJ |                     |dz  dz
            t          dd          |dz
  df|dz   dfgfk    sJ |                     |dz  dz             t          dd          ||z
  df||z   dfgfk    sJ |                     |dz  dz  dz             t          t          dd          d          |d|z  z
  df|d|z  z   dfgfk    sJ |                     |dz  dz             t          dd          |d|z  z
  df|d|z  z   dfgfk    sJ |                     |dz  d|z  z   dz             t          dd          |dz   dfgfk    sJ |                     |dz  d|z  |z  z   dz
            t          dd          ||z   dfgfk    sJ d|dz  z  |dd|z  z   z  z   d	z
  d
|z  z   }|                     |          t          dd          |t          t          dd          t          dd                    z   dfgfk    sJ d S )Nr   r   r!   r   r       X  逬 H 鉲       iY  )r   r	   dup_qq_i_factorr   r$   r   rw   r?   s       r%   test_dup_qq_i_factorr     s   T??DAqQ

AQTAX&&41::A1*GGGGGQTAX&&41::Q
QUAJ7O*PPPPPQTAX&&41::Q
QUAJ7O*PPPPPQT!VaZ(("Q((A!ac'1AaC| <=> > > > QTAX&&!QZZ1qs7A,QqS!567 7 7 7 QTAaCZ!^,,!QZZ1q5!*&' ' ' ' QTAaCE\A-..!QZZ1q5!*&' ' ' ' 	QT	Auvax'((61F1H<AQ$]]a$r#s||Rc]]"C"CCQGHIJ J J J J Jr'   c                     t          dt                    \  } }}t          dd          }|                     |dz  d|dz  z  z             t          dd          |dz  d|dz  z  z   dfgfk    sJ |                     |dz  |dz  z             t          dd          |||z  z
  df|||z  z   dfgfk    sJ |                     |dz  |dz  dz  z             t          dd          |||z  dz  z
  df|||z  dz  z   dfgfk    sJ |                     d|dz  z  |dz  z             t          dd          |||z  dz  z
  df|||z  dz  z   dfgfk    sJ d S Nzx, yr   r!   r   r   )r   r	   dmp_qq_i_factorr$   r   r,   rw   s       r%   test_dmp_qq_i_factorr     s   64  GAq!Q

AQTAadF]++!QZZ1a4!AqD&=!,-./ / / / QTAqD[))!QZZ1qs7A,QqS!567 7 7 7 QTAqDF]++!QZZ1qs1u9a.1qs1u9a.9:; ; ; ; Qq!tVad]++!QZZ1qs1u9a.1qs1u9a.9:; ; ; ; ; ;r'   c                     t          dt                    \  } }t          dd          }|                     |dz  dz
            t          dd          |dz  dz
  dfgfk    sJ |                     |dz  dz
            t          dd          |dz
  df|dz   dfgfk    sJ |                     |dz  dz             t          dd          ||z
  df||z   dfgfk    sJ |                     |dz  dz             t          dd          |d|z  z
  df|d|z  z   dfgfk    sJ |                     |dz  d|z  z   dz             t          dd          |dz   dfgfk    sJ |                     |dz  d|z  |z  z   dz
            t          dd          ||z   dfgfk    sJ d|dz  z  |dd|z  z   z  z   d	z
  d
|z  z   }|                     |          t          dd          dd|z  z
  |z  dd|z  z   z   dfgfk    sJ d S )Nr   r   r!   r   r   r   r   r   r   r   r2   i  iT  )r   r   dup_zz_i_factorr   s       r%   test_dup_zz_i_factorr     s   T??DAqQ

AQTAX&&41::A1*GGGGGQTAX&&41::Q
QUAJ7O*PPPPPQTAX&&41::Q
QUAJ7O*PPPPPQTAX&&!QZZ1qs7A,QqS!567 7 7 7 QTAaCZ!^,,!QZZ1q5!*&' ' ' ' QTAaCE\A-..!QZZ1q5!*&' ' ' ' 	QT	Auvax'((61F1H<AQ!QZZBAIq=C#a%K8!<=>? ? ? ? ? ?r'   c                     t          dt                    \  } }}t          dd          }|                     |dz  d|dz  z  z             t          dd          |dz  d|dz  z  z   dfgfk    sJ |                     |dz  |dz  z             t          dd          |||z  z
  df|||z  z   dfgfk    sJ |                     d|dz  z  |dz  z             t          dd          d|z  ||z  z
  dfd|z  ||z  z   dfgfk    sJ d S r   )r   r   dmp_zz_i_factorr   s       r%   test_dmp_zz_i_factorr     sW   64  GAq!Q

AQTAadF]++!QZZ1a4!AqD&=!,-./ / / / QTAqD[))!QZZ1qs7A,QqS!567 7 7 7 Qq!tVad]++!QZZ1Q319a.1Q319a.9:; ; ; ; ; ;r'   c                     t          dt          j        t                              \  } }d }|                     d           |g           g fk    sJ  |t          d          g          |z   |t          d          g          z   }|                     |           |t          d          g          |dfgfk    sJ  |t          d          g          |z   |t          d          g          z   }|                     |           |t          d          g          |dfgfk    sJ  |t          d          g          |dz  z   |t          dd          g          z   } |t          d          g          |dz  z   |t          dd          g          z   }|                     |           |t          d          g          |dfgfk    sJ  |t          d          g          |dz  z   |t          d          g          z   }|                     |           |t          dd          g           |t          d          g          |dz  z   |t          d          t          d          g          z   df |t          d          g          |dz  z   |t          d          t          d          g          z   dfgfk    sJ  |t          dd          g          |dz  z   |t          d	d          g          z   }|                     |           |t          dd          g           |t          dd          g          |z   |t          d
d           t          dd          g          z   df |t          dd          g          |z   |t          d
d          t          dd          g          z   dfgfk    sJ  |t          dd          g          |dz  z   |t          dd          g          |d
z  z  z    |t          dd          g          |dz  z  z    |t          dd          g          |z  z    |t          dd          g          z   }|                     |           |t          dd          g           |t          dd          g          |z   |t          dd           t          dd          g          z   df |t          dd          g          |z   |t          d
d           t          dd          g          z   df |t          dd          g          |z   |t          d
d          t          dd          g          z   df |t          dd          g          |z   |t          dd          t          dd          g          z   dfgfk    sJ t          dt          j        t          d                              \  } }d } |t          d          g          |dz  z   |t          dd          g          z   }|                     |           |t          d          g           |t          d          g          |dz  z   |t          d          t          d          g          |z  z    |t          d          g          z   df |t          d          g          |dz  z   |t          d          t          d          g          |z  z    |t          d          g          z   dfgfk    sJ  |t          dd          g          |dz  z   |t          d          t          d          g          |z  z    |t          dd          g          z   }|                     |           |t          dd          g           |dg          |z   |ddg          z   dfgfk    sJ |                     |d
z             |t          dd          g           |dg          |z   |ddg          z   dfgfk    sJ | |t          dd          g          z  }|                     |           |t          dd          g           |dg          |z   |ddg          z   dfgfk    sJ |                     |d
z             |t          dd          g           |dg          |z   |ddg          z   dfgfk    sJ d S )Nr   c                     t          | t          d          t          d          t          d          gt                    S Nr!   r   r   r   elements    r%   anpz test_dup_ext_factor.<locals>.anp  -    7RUUBqEE2a5512666r'   r   r!   r   r<   r   rc   rW   r   r   M   r\      c                     t          | t          d          t          d          t          d          gt                    S Nr!   r   r;   r   r   s    r%   r   z test_dup_ext_factor.<locals>.anp  s-    7RUUBqEE2b662B777r'   r/   )r   r   algebraic_fieldr   dup_ext_factorr   )r$   r   r   r?   r@   s        r%   test_dup_ext_factorr     sk	   R'**++DAq7 7 7 A33r77B-////RUUGQbeeW%AA331w<<1a&":::::RUUGQbeeW%AA331w<<1a&":::::RUUGQTCCAq
OO+ARUUGQTCCAq
OO+AA331w<<1a&":::::RUUGQTCCALL(AA	bAhhZCCALLA-RVVRUUO0D0DDaHCALLA-RVVRUUO0D0DDaHJ 	KK K K K 	R1XXJ1ssBq!HH:.AA	bAhhZCCAq
OOA-bAhhY1a4I0J0JJANCAq
OOA-bAhh1a4I0J0JJANP 	QQ Q Q Q 	R1XXJ1ssBq!HH:q!t33cc2b!99+6F6Fq!t6KKccSUVXZ[S\S\R]N^N^_`N``cfcfhjknpqhrhrgsctcttAA	bAhhZCCAq
OOA-bAhhY1a4I0J0JJANCAq
OOA-bAhhY1a4I0J0JJANCAq
OOA-bAhh1a4I0J0JJANCAq
OOA-bAhh1a4I0J0JJANP 	QQ Q Q Q R'Q0011DAq8 8 8 	RUUGQTCCAq
OO+AA	beeWbeeWad*SS"R&&"Q%%-A-A!-CCcc2a55'llRTUVbeeWad*SS"a&&"Q%%-A-A!-CCcc2a55'llRTUVX 	YY Y Y Y 	R1XXJ1ssBqEE2a55>22144ssBq!HH:FAA	bAhhZCCHHQJaV4a89:; ; ; ; AqD!!	bAhhZCCHHQJaV4a89:; ; ; ; bAhhZAA	bAhhZCCHHQJaV4a89:; ; ; ; AqD!!	bAhhZCCHHQJaV4a89:; ; ; ; ; ;r'   c            
      >   t          j        t          d                    } t          d|           \  }}}| j        }d }|                    d           |g           g fk    sJ  |t          d          g          |z   |t          d          g          z   }|                    |           |t          d          g          |dfgfk    sJ  |t          d          g          |z   |t          d          g          z   }|                    |           |t          d          g          |dfgfk    sJ  |t          d          g          |dz  z   |t          d          g          |dz  z  z   }|                    |           |t          d          g           |t          d          g          |z   |t          d          t          d          g          |z  z   df |t          d          g          |z   |t          d          t          d          g          |z  z   dfgfk    sJ  |t          d          g          |dz  z   |t          d          g          |dz  z  z   }|                    |           |t          d          g           |t          d          g          |z   |t          d          t          d          g          |z  z   df |t          d          g          |z   |t          d          t          d          g          |z  z   dfgfk    sJ |dz   }||z   }	|dz  |z   dz   d	|z  z   }
|dz  |	dz  z  |
dz  z  }|                    |          | j        |df|	df|
dfgfk    sJ d S )
Nr   r)   c                     t          | t          d          t          d          t          d          gt                    S r   r   )r   s    r%   r   z test_dmp_ext_factor.<locals>.anp9  s-    1r!uubeeRVV,b111r'   r   r!   r;   rc   r   r   )r   r   r   r   unitdmp_ext_factorone)r   r$   r   r,   sqrt2r   r?   r@   f1f2f3s              r%   test_dmp_ext_factorr  4  s   
477##A%^^FAqFE2 2 2 A33r77B-////RUUGQbeeW%AA331w<<1a&":::::RUUGQbeeW%AA331w<<1a&":::::RUUGQTCCBMM!Q$..AA	beeWbeeWa##r"vvr!uuo*>*>q*@@!DbeeWa##r1vvr!uuo*>*>q*@@!DF 	GG G G G 	RUUGQTCCBMM!Q$..AA	beeWbeeWa##r"vvr!uuo*>*>q*@@!DbeeWa##r1vvr!uuo*>*>q*@@!DF 	GG G G G 
QB	
UB	
AA%	B
AAAAA15B7RGb!W*E"FFFFFFFr'   c            
         t          dt                    \  }                     d          dg fk    sJ                     d          dg fk    sJ t          dt                    \  }                     d          dg fk    sJ                     t          dd                    t          dd          g fk    sJ t          dt          d                   \  }                     d          dg fk    sJ                     d          dg fk    sJ t          dt          d                   \  }                     d          dg fk    sJ                     t          dd                    t          dd          g fk    sJ t          dt                    \  }                     d          dgk    sJ                     d          dgk    sJ                     | dz  d| z  z   dz             d| dz   dfgfk    sJ                     | dz  d| z  z   dz             | dz   dfgk    sJ                     d	| dz  z  d
| z  z
  d	z
            dd| z  dz
  dfd| z  dz   dfgfk    sJ t          dt                    \  }                     t          dd          | dz  z  | z   t          dd          z             t          dd          | dz   dfgfk    sJ t          dt          d                    \  }                     | dz  dz             d| dz   dfgfk    sJ t          dt                    \  }                     d| dz  z  d| z  z   dz             dd| z  dz   dfgfk    sJ                     d| dz  z  d| z  z   dz             dd| z  dz   dfgfk    sJ d| dz  z  d| z  z
  dz
  }                    |          \  }}|t          d          k    sJ t          |          dk    sJ |d         d                                         t          d          k    sJ |d         d         dk    sJ t          dt                    \  }}t          d|          \  } d|z  | dz  z  d|dz  z  | z  z   }                    |          d|z  | df| |z   dfgfk    sJ t          dt                    \  }}t          d|          \  } t          dd          |z  | dz  z  t          dd          |dz  z  | z  z   }                    |          t          dd          |z  | df| |z   dfgfk    sJ t          dt          j	        t                              \  } d } |t          dd          g          | dz  z   |t          dd          g          | dz  z  z   }                    |           |t          dd          g           |t          dd          g          | z  df |t          dd          g          | dz  z   |g           | z  z    |t          dd          g          z   dfgfk    sJ t          dt                    \  } t          t          fd           d S )Nr   r   r<   r!   rC   r   r!   r<   r!   r   r/   r   r         ?       @g      @w@ lJ%@k?r   c                     t          | t          d          t          d          t          d          gt                    S r   r   r   s    r%   r   z!test_dup_factor_list.<locals>.anp  r   r'   c                  b                          t          t          d                              S Nr!   )dup_factor_listr   r   r$   s   r%   <lambda>z&test_dup_factor_list.<locals>.<lambda>  !     1 1"SVV** = = r'   )r   r   r  r   dup_factor_list_includer   r
   lenmax_normr   r   r   r   r   )r   r?   coeffry   RtrC   r   r$   s          @r%   test_dup_factor_listr  Y  s<   R==DAqQAr7****QAr7****R==DAqQAr7****R1XX&&2a88R.8888RWDAqQAr7****QAr7****RWDAqQAr7****R1XX&&2a88R.8888R==DAq$$Q''F83333$$Q''F83333QTAaCZ!^,,a!eQZL0AAAAA$$QTAaCZ!^44!a%DDDDQq!tVac\A-..1!a|acAgq\6R2SSSSSR==DAqR!WWQT\A-1Q788R1XXQPQ
|<TTTTTRUUDAqQTAX&&1Aqzl*;;;;;R==DAqSAXA-344AQ?O>P8QQQQQSAXA-344AQ?O>P8QQQQQ1/114DDA&&q))NE7B'((((((w<<11:a=!!##r#ww....1:a=AbMMEBR==DAq	!AqD1QT6!8AQ	
11v!eQZ 	    bMMEBR==DAq
1a
1a4"Q((1a4-/)AQ	Aq!q!fUAJ  	!! ! ! ! R'**++DAq7 7 7 	R1XXJ1ssBq!HH:q!t33AQ	bAhhZCCAq
OOA-q1CAq
OOAqD033r7719<ssBq!HH:NPQRT 	UU U U U R==DAq
;====>>>>>r'   c                  r  	 t          dt                    \  	                    d          t          d          g fk    sJ                     d          dg fk    sJ t          dt                    \  	                    d          t          d          g fk    sJ                     t          dd                    t          dd          g fk    sJ t          dt                    \  } }t          d|           \  	                    d          dg fk    sJ                     d          t          d          g fk    sJ t          dt                    \  } }t          d|           \  	                    d          dg fk    sJ                     t          dd                    t          dd          g fk    sJ t          dt                    \  	                    d          dgk    sJ                     d          dgk    sJ t          dt                    \  }|d         d	z  d	|d         z  z   dz   |d         dz   }}                    |          d|d	fgfk    sJ |d
         d	z  d	|d
         z  z   dz   |d
         dz   }}                    |          d|d	fgfk    sJ t          dt                    \                      d	z  d	z  z   dz             ddz   d	fgfk    sJ t          dt                    \                      t          dd	          d	z  z  z   t          dd	          z             t          dd	          dz   d	fgfk    sJ t          dt                    \  	                    d	z  d	z  z   dz             ddz   d	fgfk    sJ t          dt                    \  	                    t          dd	          d	z  z  z   t          dd	          z             t          dd	          dz   d	fgfk    sJ t          dt                    \  	dd	z  z  	z  dz  	d	z  z  z   }                    |          d	dfdf	z   dfgfk    sJ                     |          d	z  dfdf	z   dfgk    sJ t          dt                    \  	t          dd	          d	z  z  	z  t          dd	          z  	d	z  z  z   }                    |          t          dd	          	dfdf	z   dfgfk    sJ t          dt                    \  	dd	z  z  d	d	z  z  z
  }                    |          t          d          dz  	z
  dfdz  	z   dfgfk    sJ dd	z  z  	d	z  z  dz  	z  z
  dz
  }                    |          \  }}|t          d          k    sJ t          |          dk    sJ |d         d                                         t          d          k    sJ |d         d         dk    sJ t          dt                    \  } }t          d|           \  	d|z  d	z  z  d|d	z  z  z  z   }                    |          d|z  df|z   dfgfk    sJ t          dt                    \  } }t          d|           \  	t          dd	          |z  d	z  z  t          dd	          |d	z  z  z  z   }                    |          t          dd	          |z  df|z   dfgfk    sJ t          dt          d	                    \  	t          t          	fd           t          dt                    \  	t          t          fd           d S )Nr)   r   r<   r!   rC   r
  r  zx:200r   rc   r   r   r  g       @g      ?r  r  r  r  c                  @                          dz  dz  z             S )Nr   )dmp_factor_listr+   s   r%   r  z&test_dmp_factor_list.<locals>.<lambda>  s!    (9(9!Q$A+(F(F r'   c                  b                          t          t          d                              S r  )r   r   r   r  s   r%   r  z&test_dmp_factor_list.<locals>.<lambda>  r  r'   )r   r   r   r   dmp_factor_list_includer   r
   r  r  r   r   NotImplementedErrorr   r   )
r  rC   Xr?   r@   r  ry   r$   r   r,   s
          @@@r%   test_dmp_factor_listr%    s   5"ooGAq!QBqEE2;....QAr7****5"ooGAq!QBqEE2;....R1XX&&2a88R.8888bMMEB5"ooGAq!QAr7****QBqEE2;....bMMEB5"ooGAq!QAr7****R1XX&&2a88R.88885"ooGAq!$$Q''F83333$$Q''F83333"DAqQ47QqtVa1qAQAAx=0000R5!8a"g!1R519qAQAAx=0000R==DAqQTAaCZ!^,,a!eQZL0AAAAAR==DAqR!WWQT\A-1Q788R!WWAqzl<SSSSS5"ooGAq!QTAaCZ!^,,a!eQZL0AAAAA5"ooGAq!R!WWQT\A-1Q788R!WWAqzl<SSSSS5"ooGAq!	!Q$q1Q3q!t8AQ	
aVV!eQZ 	   
 $$Q''
A#q
Q
a%	   
 5"ooGAq!
1Q1QAa1a4'AQ	AaAq6q6E1: 	        
 5"ooGAq!AqD3q!t8AQ	CCEAIq>EAIq># 	$$ $ $ $ 	1QT!$4Q$6q$88;KKA&&q))NE7B'((((((w<<11:a=!!##r#ww....1:a=AbMMEB5"ooGAq!	!AqD1QT6!8AQ	
11v!eQZ 	    bMMEB5"ooGAq!
1a
1a4"Q((1a4-/)AQ	Aq!q!fUAJ  	!! ! ! ! 5"Q%%  GAq!
 F F F F F FGGG5"ooGAq!
;====>>>>>r'   c                      t          dt                    \  } }|                     |dz  |z   dz             du sJ |                     |dz  d|z  z   dz             du sJ d S )Nr   r   r!   TF)r   r   dup_irreducible_pr#   s     r%   test_dup_irreducible_pr(    ss    R==DAqq!tax!|,,4444q!taczA~..%777777r'   c                      t          dt                    \  } }}|                     |dz  |z   dz             du sJ |                     |dz  d|z  z   dz             du sJ d S )Nr)   r   r!   TF)r   r   dmp_irreducible_pr+   s      r%   test_dmp_irreducible_pr+    su    5"ooGAq!q!tax!|,,4444q!taczA~..%777777r'   N)C__doc__sympy.polys.ringsr   r   sympy.polys.domainsr   r   r   r   r	   r
   r   sympy.polysr   ru   sympy.polys.polyerrorsr   sympy.polys.polyclassesr   sympy.polys.specialpolysr   r   sympy.core.numbersr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   sympy.ntheory.generater   sympy.testing.pytestr   r   f_0r   r   r   r   r   r   r   w_2r&   r-   r5   r9   rH   rM   rQ   rU   rY   r^   r~   r   r   r   r   r   r   r   r   r   r  r  r%  r(  r+  r   r'   r%   <module>r:     s   J J ) ) ) ) ) ) ) ) > > > > > > > > > > > > > > > > > > , , , , , , . . . . . . ' ' ' ' ' ' 5 5 5 5 5 5 5 5             9 9 9 9 9 9 8 8 8 8 8 8 , , , , , , . . . . . . . . %,GII !S#sCc799Sz z z
z z z
F F F; ; ;
# # #") ) )O O O5 5 5D: : :A A A,m* m* m*^*( *( *(Z I I I(9 9 9I- I- I-XJ J J8; ; ;"? ? ?2; ; ;@; @; @;F"G "G "GJH? H? H?V`? `? `?F8 8 88 8 8 8 8r'   