a
    kº”hGa  ã                   @   sš  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d„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2dd „ Z3d!d"„ Z4d#d$„ Z5e d%d&„ ƒZ6d'd(„ Z7d)d*„ Z8d+d,„ Z9d-d.„ Z:d/d0„ Z;d1d2„ Z<d3d4„ Z=d5d6„ Z>d7d8„ Z?d9d:„ Z@d;d<„ ZAd=d>„ 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                  C   sz   t dtƒ\} }|  |d d|d   d|d   d|d   d	|  d |d
 |d f¡|d
 df|d dfgksvJ ‚d S )NÚxé   é   é   é   é   é&   é   é   é   )r   r   Zdup_trial_division©ÚRr   © r"   úP/var/www/auris/lib/python3.9/site-packages/sympy/polys/tests/test_factortools.pyÚtest_dup_trial_division   s    r$   c                  C   s|   t dtƒ\} }}|  |d d|d   d|d   d|d   d	|  d |d
 |d f¡|d
 df|d dfgksxJ ‚d S )Núx,yr   r   r   r   r   r   r   r   r   )r   r   Zdmp_trial_division©r!   r   Úyr"   r"   r#   Útest_dmp_trial_division   s    r(   c                  C   sf   t dtƒ\} }|  d|d  d|  d ¡dks4J ‚|  |d d|d   d|  d ¡d	ksbJ ‚d S )
Nr   r   r   r   é   é   é8   é@   é˜   )r   r   Zdup_zz_mignotte_boundr    r"   r"   r#   Útest_dup_zz_mignotte_bound   s    &r.   c                  C   s:   t dtƒ\} }}|  d|d  d|  d ¡dks6J ‚d S )Nr%   r   r   r   é    )r   r   Údmp_zz_mignotte_boundr&   r"   r"   r#   Útest_dmp_zz_mignotte_bound%   s    r1   c                  C   sÚ   t dtƒ\} }|d d }|d d|d   | d }|d }d}d|d  d|  d }|  d|||||¡\}}}	}
||d d|d   | d ksšJ ‚||d ksªJ ‚|	d	ks¶J ‚|
d
|d  d|  d ksÖJ ‚d S )Nr   r   r   r   r   éþÿÿÿr   é   r   iøÿÿÿé   )r   r   Zdup_zz_hensel_step)r!   r   ÚfÚgÚhÚsÚtÚGÚHÚSÚTr"   r"   r#   Útest_dup_zz_hensel_step*   s    $r>   c                  C   sn   t dtƒ\} }|d d }|d |d |d |d g}|  tdƒ||d¡|d |d |d |d gksjJ ‚d S )Nr   r   r   r   r   é¶   )r   r   Zdup_zz_hensel_lift)r!   r   r5   ÚFr"   r"   r#   Útest_dup_zz_hensel_lift;   s    ÿrA   c                  C   s  t dtƒ\} }|  d|d  d|d   d|d   d|  d ¡d u sLJ ‚|  d|d  d|d   d|d   d|  d ¡d u sŠJ ‚|  d|d  d|d   d|d   d|  d ¡d	u sÈJ ‚|  d|d  d|d   d|d   d|  d
 ¡d	u sJ ‚d S )Nr   r   r   r   r)   r   r3   é
   Tr*   )r   r   Zdup_zz_irreducible_pr    r"   r"   r#   Útest_dup_zz_irreducible_pE   s
    >>>rC   c                  C   sæ  t dtƒ\} }|  |d ¡du s$J ‚|  |d ¡du s:J ‚|  |d | d ¡du sXJ ‚|  |d d ¡du srJ ‚|  |d |d  |d  | d ¡du s J ‚|  |d | d ¡du s¾J ‚|  |d |d  |d  |d  |d  | d ¡du süJ ‚|  |d d ¡du sJ ‚|  |d |d  d ¡du s<J ‚|  d	¡d
u sPJ ‚|  d¡d
u sdJ ‚|  |¡d
u sxJ ‚|  |d ¡d
u sJ ‚|  d| d ¡d
u s¬J ‚|  |d d ¡d
u sÈJ ‚|d |d  |d  |d  |d  |d  d }|  |¡d
u sJ ‚|d |d  |d  |d  |d  |d  d }|  |¡du sXJ ‚t dtƒ\} }|  |d | d ¡du s†J ‚|  tddƒ|d  | d ¡d
u s°J ‚t dtd ƒ\} }|  |d | d ¡d
u sâJ ‚d S )Nr   r   Tr   r   r   r)   r   r   Fé   r*   rB   r   r'   )r   r   Zdup_cyclotomic_pr   )r!   r   r5   r6   r"   r"   r#   Útest_dup_cyclotomic_pO   s2    .>$44 *rE   c                  C   s@  t dtƒ\} }|  d¡|d ks$J ‚|  d¡|d ks:J ‚|  d¡|d | d ksXJ ‚|  d¡|d d ksrJ ‚|  d¡|d |d  |d  | d ks J ‚|  d¡|d | d ks¾J ‚|  d¡|d |d  |d  |d  |d  | d ksüJ ‚|  d	¡|d d ksJ ‚|  d
¡|d |d  d ks<J ‚d S )Nr   r   r   r   r   r   r)   r3   r   é	   )r   r   Zdup_zz_cyclotomic_polyr    r"   r"   r#   Útest_dup_zz_cyclotomic_polyq   s    .>rG   c                  C   s¼  t dtƒ\} }|  d¡d u s J ‚|  d¡d u s2J ‚|  d|d  d ¡d u sPJ ‚|  |d d ¡d u sjJ ‚|  |d |d  d ¡d u sŒJ ‚|  |d ¡|d gks¨J ‚|  |d ¡|d gksÄJ ‚|  |d d ¡|d d gksèJ ‚|  |d d ¡|d |d gksJ ‚|  |d d ¡|d |d | d |d	 |d  d |d
 |d  d gksdJ ‚|  |d d ¡|d |d | d |d	 |d  d |d
 |d  d gks¸J ‚d S )Nr   r   r   r   rB   r   r   é   r)   é   rF   )r   r   Zdup_zz_cyclotomic_factorr    r"   r"   r#   Útest_dup_zz_cyclotomic_factor   s     "$(:ÿ
:ÿrJ   c            
   	   C   s2  t dtƒ\} }|  d¡dg fks$J ‚|  d¡dg fks:J ‚|  d¡dg fksPJ ‚|  d¡dg fksfJ ‚|  d¡dg fks|J ‚|  d¡dg fks’J ‚|  d| d ¡d|d dfgfksºJ ‚|  d| d ¡d|d gfksÞJ ‚|d | d }tddƒD ] }|  |¡d|dfgfksøJ ‚qø|  |d d|  d ¡d|d d|  d dfgfksXJ ‚|  d	|d  d
|  d ¡dd| d dfgfks’J ‚|  d|d  d ¡dd| d dfd| d dfgfksÒJ ‚|  d|d  d ¡dd| d d| d gfks
J ‚|  |d d|d   d|  d ¡\}}|dksBJ ‚t|ƒ|d df|d df|d dfhksrJ ‚|  |d d|d   d|  d ¡d|d |d |d gfks¸J ‚|  d|d  d|d   d|  d ¡d|d dfd|d  d|  d dfgfksJ ‚|  d|d  d|d   d|  d ¡d|d d|d  d|  d gfkshJ ‚|  |d  |d  ¡\}}|dks’J ‚t|ƒ|df|d df|d df|d d dfhksÌJ ‚d|d  d|d   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   d  dfgfks„J ‚d!|d"  d#|d   d$|d%   d&|d   d'|d   d( }|  |¡\}}|d)ksàJ ‚t|ƒd| d dfd*|d  d|  d dfd+|d  d,|d   d"|d   d|  d dfd-|d  d.|d   d/|d   d|  d dfd-|d  d0|d   d/|d   d1|  d dfhks°J ‚|d d }t d2d3¡ |  |¡\}}t d2d4¡ |  |¡\}}	||  krdksn J ‚t|ƒt|	ƒ  kr†|d df|d df|d |d  |d  | d df|d |d  |d  | d dfhksŒn J ‚t d2¡ |d d }t d2d3¡ |  |¡}t d2d4¡ |  |¡}	||	  krd|d d df|d |d  |d  |d  d dfgfks$n J ‚t d2¡ d S )5Nr   r   r3   éùÿÿÿr   r   r   é   rI   r4   r   é÷ÿÿÿéÿÿÿÿr)   é   rB   é   r   é8  r   i@  i3  iè  i°
  iˆ  é   éD  é   rF   éØ   é   rH   l÷ÿÿÿ   "@¢]g“k|Û5 r   l     Ê‡jò=ó7ô;I l    ÙGñjy@Kz
+€é   l   ÀLn_2|OH++Íl   å	ˆš#~¶ l   1VÅkñZ lüÿÿÿ1VÅkñZ éd   iq  é}   i'  i¸  i  iÐ  é   ZUSE_CYCLOTOMIC_FACTORTF)r   r   Zdup_zz_factorÚdup_zz_factor_sqfÚrangeÚsetÚconfigÚsetup)
r!   r   r5   ÚiÚcÚfactorsZc0ZF_0Zc1ZF_1r"   r"   r#   Útest_dup_zz_factor•   sÈ    ($ÿ
ÿ
ÿÿ

ÿÿ
*0$þÿ
(ÿÿ
(ÿÿ
:X,ÿÿ


ÿ
þ
ý
üû222û

""ü


&ÿÿrc   c                      s˜  t dtƒ\} ‰ }}t dtƒ\}}tt|  t¡ƒƒ}|dks>J ‚|dtdƒ  }}}|dtdƒ  }	}
}|| dtdƒ  }}}|| dtd	ƒ  }}}||	||g}||
||g}||||g}t‡ fd
d„|D ƒ|ƒ}tdƒtdƒg}|  t|¡}| |¡\}}|dkrd||  krbd|d  d|d   d|d   d|d   d|d   d|  d kshn J ‚|  ||tdƒ¡g d¢ksˆJ ‚| 	|¡rª| 
|¡|  t¡ks®J ‚| |¡\}}d|d  d|  d }d|d  d|  d }d|d  d }||||gksJ ‚‡ fdd„d| d|  | |d  |d |d  fD ƒ}|  t|||||¡t||fksnJ ‚|  t||||¡}|  |¡tks”J ‚d S ) Núx,y,zr   é ` r   éòÿÿÿr   r   iõÿÿÿiïÿÿÿc                    s   g | ]}|  ˆ ¡‘qS r"   ©Zdrop)Ú.0r9   ©r   r"   r#   Ú
<listcomp>  ó    z$test_dmp_zz_wang.<locals>.<listcomp>i¸Ñ r)   i`ø r   iÄÙ  r   i•œ i˜C  iÙh  i„  )r3   r   rO   é   é,   é*   é~   rF   r   é»   é   c                    s   g | ]}|  ˆ ¡‘qS r"   rg   )rh   Úlcri   r"   r#   rj   )  rk   éüÿÿÿ)r   r   r   r0   Úw_1ÚzipZdmp_eval_tailZdup_primitiveZdmp_zz_wang_non_divisorsZ	dup_sqf_pZ
dup_degreeZ
dmp_degreer[   Zdmp_zz_wang_lead_coeffsZdmp_zz_wang_hensel_liftingZ
dmp_expand) r!   r'   ÚzÚUVÚ_xÚpZt_1Zk_1Ze_1Zt_2Zk_2Ze_2Zt_3Zk_3Ze_3Zt_4Zk_4Ze_4r=   ÚKÚEÚAr<   Úcsr8   Ú_r;   Zh_1Zh_2Zh_3ZLCrb   r"   ri   r#   Útest_dmp_zz_wang  s:    Fÿ &:$r   c                  C   sö  t dtƒ\} }}}t dtƒ\}}tt|  t¡ƒƒ}|dks>J ‚d|d  d|  d d|d  d	|  d
 d|d  d g}d|d  | d|d   d| |  d d|d  | d	|  d|  |d |d  d	|d   | d	 g}d|d  | d|d   d| |  d d|d  | d	|  d|  |d |d  d	|d   | d	 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  |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| |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   d	|  d|  }|  ||
g d|¡d+| d,dgksšJ ‚|  ||td-ƒgd|¡| | d+| d.gksÌJ ‚|  |	|td-ƒgd|¡g d/¢ksòJ ‚d S )0Nrd   r   re   rm   r   rn   r   ro   rF   r   rp   rq   rs   r4   r   rM   iâëþÿr   iç  r   i¢E  iÙ  i§  éJ   é-   él   rS   rI   rU   i*  éü   i   i±  rZ   iž  é6   éQ   iÜÿÿÿrH   é$   r   r)   éýÿÿÿr2   rf   iúÿÿÿ)r   r   rN   )r   r   r   r0   rt   Zdmp_zz_diophantine)r!   r   r'   rv   rw   rx   ry   ZH_1ZH_2ZH_3Zc_1Zc_2Zc_3r"   r"   r#   Útest_dmp_zz_wang_fail1  s    >nn<ÿ I˜&2rˆ   c                  C   sZ   g d¢} t dtƒ\}}}}d|d  ||  | |d  | }|j|| d|gksVJ ‚d S )N)rN   rN   r   r   r   r   rN   rN   r   rN   r   rN   r   r   r   r   rN   r   rd   r   )Úseed)r   r   Zdmp_zz_wang)Zrandom_sequencer!   r   r'   rv   r5   r"   r"   r#   Útest_issue_6355F  s    $rŠ   c                  C   sZ  t dtƒ\} }|  d¡dg fks$J ‚|  d¡dg fks:J ‚|  d¡dg fksPJ ‚|  |d d ¡d|d df|d 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
| ¡d
|dfgfksJ ‚|  d
| d ¡dd| d dfgfks@J ‚|  || d ¡d|| d dfgfksnJ ‚|  |d d ¡d|d d dfgfksœJ ‚|  |d d ¡d|d df|d dfgfksÐJ ‚|  |d |d  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f|| d dfgfks„J ‚t dtƒ\} }}}|  |d |d  |d  d ¡d|| | d df|| | d dfgfksêJ ‚t dtƒ\} }}}}|  |d |d  |d  |d  d ¡d|| | | d df|| | | d dfgfksbJ ‚t dtƒ\} }}}|  t¡d|||  d df|| | d df|| | d dfgfksÂJ ‚|  t¡d|d |d  |d |d   | d df|d | |d |  | d dfgfks&J ‚|  t¡d|d |d  ||d
   | | df|d || |  |d  ||d   dfgfksŽJ ‚|  t¡d||d  |d  df|d | |d
 |d   d df|d | |d  d df|d |d
  |d  dfgfksJ ‚|  t¡d|| | dfgfks8J ‚t dtƒ\} }}}}|  t¡dd| | |d |d   |d  dfd|d  d|d   |d  d|d   d| |  dfgfksÄJ ‚t dtƒ\} }}}|  t	¡d|d |d  |d |d   | |d  df|d | |d  d| |  d|  dfd
|d  | d
|d  |  || |  d dfgfksxJ ‚t d	tƒ\} }}d|d  | d|d  |d   d|d  |d
   d|d  |d   d|d  |d   d|d
  |d   d|d   }|  |¡d|df|d | df|d
 d|d  |  |d  dfgfksVJ ‚d S )Nr   r   r3   rK   r   rF   r   r   r%   r   r)   rd   zx,y,z,urL   rB   rZ   éZ   rO   rN   r   zx,y,z,té/   r   iôÿÿÿrD   éð   r4   i   rQ   r   )
r   r   Zdmp_zz_factorÚf_1Úf_2Úf_3Úf_4Úf_5Úf_6rt   )r!   r   r'   rv   Úur9   r5   r"   r"   r#   Útest_dmp_zz_factorQ  sš    2"...4pD ÿÿ
(ÿÿ
þÿ
,"ÿÿ
(*ÿÿ
"ýÿ
ÿ
(:ÿÿ
0*2þÿ
€"þÿr•   c                  C   s"  t dtƒ\} }tddƒ}|  |d d ¡tddƒ|d d dfgfksJJ ‚|  |d d ¡tddƒ|d df|d dfgfks‚J ‚|  |d d ¡tddƒ|| df|| dfgfksºJ ‚|  |d d d ¡ttddƒdƒ|d|  df|d|  dfgfksJ ‚|  |d d ¡tddƒ|d|  df|d|  dfgfksHJ ‚|  |d d|  d ¡tddƒ|d dfgfks€J ‚|  |d d| |  d ¡tddƒ|| dfgfks¼J ‚d|d  |dd|    d	 d
|  }|  |¡tddƒ|ttddƒtddƒƒ dfgfksJ ‚d S )Nr   r   r   r   r   é    é€X  é€¬ éH é‰² é±   é€   iY  )r   r   Zdup_qq_i_factorr   ©r!   r   r`   r5   r"   r"   r#   Útest_dup_qq_i_factor  s*    
288.ÿ
(ÿ
ÿ
ÿ
((ÿrž   c                  C   sF  t dtƒ\} }}tddƒ}|  |d d|d   ¡tddƒ|d d|d   dfgfks\J ‚|  |d |d  ¡tddƒ|||  df|||  dfgfks J ‚|  |d |d d  ¡tddƒ||| d  df||| d  dfgfksðJ ‚|  d|d  |d  ¡tddƒ||| d  df||| d  dfgfksBJ ‚d S ©Nzx, yr   r   r   r   )r   r   Zdmp_qq_i_factor©r!   r   r'   r`   r"   r"   r#   Útest_dmp_qq_i_factor¹  s    
"ÿ(ÿ0ÿ0ÿr¡   c                  C   sÖ  t dtƒ\} }tddƒ}|  |d d ¡tddƒ|d d dfgfksJJ ‚|  |d d ¡tddƒ|d df|d dfgfks‚J ‚|  |d d ¡tddƒ|| df|| dfgfksºJ ‚|  |d d ¡tddƒ|d|  df|d|  dfgfksúJ ‚|  |d d|  d ¡tddƒ|d dfgfks2J ‚|  |d d| |  d ¡tddƒ|| dfgfksnJ ‚d|d  |dd|    d	 d
|  }|  |¡tddƒdd|  | dd|   dfgfksÒJ ‚d S )Nr   r   r   r   r   r–   r—   r˜   r™   rš   r,   i  iT  )r   r   Zdup_zz_i_factorr   r"   r"   r#   Útest_dup_zz_i_factorÊ  s$    
288(ÿÿ
ÿ
(*ÿr¢   c                  C   sô   t dtƒ\} }}tddƒ}|  |d d|d   ¡tddƒ|d d|d   dfgfks\J ‚|  |d |d  ¡tddƒ|||  df|||  dfgfks J ‚|  d|d  |d  ¡tddƒd| ||  dfd| ||  dfgfksðJ ‚d S rŸ   )r   r   Zdmp_zz_i_factorr    r"   r"   r#   Útest_dmp_zz_i_factorã  s    
"ÿ(ÿ0ÿr£   c                  C   s  t dt t¡ƒ\} }dd„ }|  d¡|g ƒg fks6J ‚|tdƒgƒ| |tdƒgƒ }|  |¡|tdƒgƒ|dfgfks|J ‚|tdƒgƒ| |tdƒgƒ }|  |¡|tdƒgƒ|dfgfksÂJ ‚|tdƒgƒ|d  |tddƒgƒ }|tdƒgƒ|d  |tddƒgƒ }|  |¡|tdƒgƒ|dfgfks6J ‚|tdƒgƒ|d  |tdƒgƒ }|  |¡|tddƒgƒ|tdƒgƒ|d  |td	ƒtdƒgƒ df|tdƒgƒ|d  |tdƒtdƒgƒ dfgfksÖJ ‚|tddƒgƒ|d  |td
dƒgƒ }|  |¡|tddƒgƒ|tddƒgƒ| |tddƒ tddƒgƒ df|tddƒgƒ| |tddƒtddƒgƒ dfgfks€J ‚|tddƒgƒ|d  |tddƒgƒ|d   |tddƒgƒ|d   |tddƒgƒ|  |tddƒgƒ }|  |¡|tddƒgƒ|tddƒgƒ| |tddƒ tddƒgƒ df|tddƒgƒ| |tddƒ tddƒgƒ df|tddƒgƒ| |tddƒtddƒgƒ df|tddƒgƒ| |tddƒtddƒgƒ dfgfksÌJ ‚t dt tdƒ¡ƒ\} }dd„ }|tdƒgƒ|d  |tddƒgƒ }|  |¡|tdƒgƒ|tdƒgƒ|d  |td	ƒtdƒgƒ|  |tdƒgƒ df|tdƒgƒ|d  |tdƒtdƒgƒ|  |tdƒgƒ dfgfks°J ‚|tddƒgƒ|d  |tdƒtdƒgƒ|  |tddƒgƒ }|  |¡|tddƒgƒ|dgƒ| |ddgƒ dfgfks0J ‚|  |d ¡|tddƒgƒ|dgƒ| |ddgƒ dfgfkstJ ‚||tddƒgƒ9 }|  |¡|tddƒgƒ|dgƒ| |ddgƒ dfgfksÈJ ‚|  |d ¡|tddƒgƒ|dgƒ| |ddgƒ dfgfksJ ‚d S )Nr   c                 S   s   t | tdƒtdƒtdƒgtƒS ©Nr   r   ©r   r   ©Úelementr"   r"   r#   Úanpó  s    z test_dup_ext_factor.<locals>.anpr   r   r   r3   r   rN   rF   r   r   éM   rI   é™   c                 S   s   t | tdƒtdƒtdƒgtƒS ©Nr   r   r2   r¥   r¦   r"   r"   r#   r¨     s    r)   )r   r   Úalgebraic_fieldr   Zdup_ext_factorr   )r!   r   r¨   r5   r6   r"   r"   r#   Útest_dup_ext_factorñ  sh     & &&&($:,ÿÿ
(>.ÿÿ
l>0..ýÿ
&J>ÿÿ
@.ÿ
.ÿ
.ÿ
.ÿr­   c                  C   sŽ  t  tdƒ¡} td| ƒ\}}}| j}dd„ }| d¡|g ƒg fksFJ ‚|t dƒgƒ| |t dƒgƒ }| |¡|t dƒgƒ|dfgfksŒJ ‚|t dƒgƒ| |t dƒgƒ }| |¡|t dƒgƒ|dfgfksÒJ ‚|t dƒgƒ|d  |t dƒgƒ|d   }| |¡|t dƒgƒ|t dƒgƒ| |t dƒt dƒgƒ|  df|t dƒgƒ| |t dƒt dƒgƒ|  dfgfksxJ ‚|t dƒgƒ|d  |t d	ƒgƒ|d   }| |¡|t dƒgƒ|t dƒgƒ| |t dƒt dƒgƒ|  df|t dƒgƒ| |t dƒt dƒgƒ|  dfgfksJ ‚|d }|| }	|d | d d
|  }
|d |	d  |
d  }| |¡| j|df|	df|
dfgfksŠJ ‚d S )Nr   r%   c                 S   s   t | tdƒtdƒtdƒgtƒS r«   r¥   ri   r"   r"   r#   r¨   9  s    z test_dmp_ext_factor.<locals>.anpr   r   r2   rN   rs   r   )r   r¬   r   r   ÚunitZdmp_ext_factorZone)rz   r!   r   r'   Zsqrt2r¨   r5   r6   Úf1Úf2Zf3r"   r"   r#   Útest_dmp_ext_factor4  s4     & &,8,ÿÿ
,8,ÿÿ
r±   c                     s<  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sDJ ‚ˆ  | d d|   d ¡d| d dfgfksvJ ‚ˆ  | d d|   d ¡| d dfgks¤J ‚ˆ  d	| d  d
|   d	 ¡dd|  d dfd|  d dfgfksìJ ‚t dtƒ\‰ } ˆ  tddƒ| d  |  tddƒ ¡tddƒ| d dfgfks>J ‚t dtdƒƒ\‰ } ˆ  | d d ¡d| d dfgfkszJ ‚t dtƒ\‰ } ˆ  d| d  d|   d ¡dd|  d dfgfksÂJ ‚ˆ  d| d  d|   d ¡dd|  d dfgfksüJ ‚d| d  d|   d }ˆ  |¡\}}|tdƒks4J ‚t|ƒdksFJ ‚|d d  ¡ tdƒksdJ ‚|d d dkszJ ‚t dtƒ\}}t d|ƒ\‰ } d| | d  d|d  |   }ˆ  |¡d| | df| | dfgfksâJ ‚t dtƒ\}}t d|ƒ\‰ } tddƒ| | d  tddƒ|d  |   }ˆ  |¡tddƒ| | df| | dfgfks\J ‚t dt 	t
¡ƒ\‰ } dd„ }|tddƒgƒ| d  |tddƒgƒ| d   }ˆ  |¡|tddƒgƒ|tddƒgƒ|  df|tddƒgƒ| d  |g ƒ|   |tddƒgƒ dfgfksJ ‚t dtƒ\‰ } tt‡ fdd„ƒ d S )Nr   r   r3   r   r9   ©r   r   ©r3   r   r   r)   r   r   ç      ð?ç       @g      @çå§wÙßã@ç Ål•ôJ%@çÁ„¸•¥kÕ?r   c                 S   s   t | tdƒtdƒtdƒgtƒS r¤   r¥   r¦   r"   r"   r#   r¨   —  s    z!test_dup_factor_list.<locals>.anpc                      s   ˆ   ttdƒƒ¡S ©Nr   )Údup_factor_listr
   r   r"   ©r!   r"   r#   Ú<lambda>¡  rk   z&test_dup_factor_list.<locals>.<lambda>)r   r   rº   r   Zdup_factor_list_includer   r	   ÚlenÚmax_normr¬   r   r
   r   r   )r   r5   Úcoeffrb   ÚRtr9   r¨   r"   r»   r#   Útest_dup_factor_listY  sr    "$2.HD*:: 
ÿÿ
,
ÿÿ
0$6ÿÿ
rÁ   c                     sR  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sjJ ‚ˆ  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s4J ‚t dtƒ\‰ ‰‰ˆ  d¡dgksZJ ‚ˆ  d¡dgkspJ ‚tdtƒ\‰ }|d d	 d	|d   d |d d  }}ˆ  |¡d|d	fgfksÆJ ‚|d
 d	 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sNJ ‚t dtƒ\‰ ‰ˆ  tdd	ƒˆd	  ˆ tdd	ƒ ¡t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ƒ\‰ ‰‰ˆ  tdd	ƒˆd	  ˆ tdd	ƒ ¡tdd	ƒˆd d	fgfks6J ‚t dtƒ\‰ ‰‰dˆd	  ˆ dˆ ˆd	   }ˆ  |¡dˆdfˆdfˆˆ dfgfks”J ‚ˆ  |¡dˆ dfˆdfˆˆ dfgksÂJ ‚t dtƒ\‰ ‰‰tdd	ƒˆd	  ˆ tdd	ƒˆ ˆd	   }ˆ  |¡tdd	ƒˆdfˆdfˆˆ dfgfks2J ‚t dtƒ\‰ ‰‰dˆd	  dˆd	   }ˆ  |¡tdƒdˆ ˆ dfdˆ ˆ dfgfks’J ‚dˆd	  ˆd	  dˆ ˆ  d }ˆ  |¡\}}|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| ˆd	  d|d	  ˆ  }ˆ  |¡d| ˆdfˆ| dfgfks†J ‚t dtƒ\} }t d| ƒ\‰ ‰‰tdd	ƒ| ˆd	  tdd	ƒ|d	  ˆ  }ˆ  |¡tdd	ƒ| ˆdfˆ| dfgfksJ ‚t dt	d	ƒƒ\‰ ‰‰t
t‡ ‡‡fdd„ƒ t dtƒ\‰ ‰‰t
t‡ fdd„ƒ d S )Nr%   r   r3   r   r9   r²   r³   zx:200r   rN   r   r   rµ   g       @g      à?r¶   r·   r¸   r´   c                      s   ˆ   ˆd ˆd  ¡S )Nr   )Údmp_factor_listr"   r&   r"   r#   r¼     rk   z&test_dmp_factor_list.<locals>.<lambda>c                      s   ˆ   ttdƒƒ¡S r¹   )rÂ   r
   r   r"   r»   r"   r#   r¼     rk   )r   r   rÂ   r   Zdmp_factor_list_includer   r	   r½   r¾   r   r   ÚNotImplementedErrorr
   r   )rÀ   r9   ÚXr5   r6   r¿   rb   r"   r&   r#   Útest_dmp_factor_list¤  sª    "$**2D2D 
þÿ


þÿ
,
þÿ
ÿÿ
$ 
ÿÿ
,
ÿÿ
rÅ   c                  C   sR   t dtƒ\} }|  |d | d ¡du s,J ‚|  |d d|  d ¡du sNJ ‚d S )Nr   r   r   TF)r   r   Zdup_irreducible_pr    r"   r"   r#   Útest_dup_irreducible_p  s    rÆ   c                  C   sT   t dtƒ\} }}|  |d | d ¡du s.J ‚|  |d d|  d ¡du sPJ ‚d S )Nr%   r   r   TF)r   r   Zdmp_irreducible_pr&   r"   r"   r#   Útest_dmp_irreducible_p  s    rÇ   N)CÚ__doc__Zsympy.polys.ringsr   r   Zsympy.polys.domainsr   r   r   r   r   r	   r
   Zsympy.polysr   r^   Zsympy.polys.polyerrorsr   Zsympy.polys.polyclassesr   Zsympy.polys.specialpolysr   r   Zsympy.core.numbersr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.ntheory.generater   Zsympy.testing.pytestr   r   Zf_0rŽ   r   r   r‘   r’   r“   rt   Zw_2r$   r(   r.   r1   r>   rA   rC   rE   rG   rJ   rc   r   rˆ   rŠ   r•   rž   r¡   r¢   r£   r­   r±   rÁ   rÅ   rÆ   rÇ   r"   r"   r"   r#   Ú<module>   sN   $


"o-
LC%Kc