U
    ˜9%eð_  ã                   @   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svt‚d S )NÚxé   é   é   é   é   é&   é   é   é   )r   r   Zdup_trial_divisionÚAssertionError©ÚRr   © r#   úa/var/www/html/Darija-Ai-API/env/lib/python3.8/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sxt‚d S )Núx,yr   r   r   r   r   r   r   r   r   )r   r   Zdmp_trial_divisionr    ©r"   r   Úyr#   r#   r$   Útest_dmp_trial_division   s    r)   c                  C   sf   t dtƒ\} }|  d|d  d|  d ¡dks4t‚|  |d d|d   d|  d ¡d	ksbt‚d S )
Nr   r   r   r   é   é   é8   é@   é˜   )r   r   Zdup_zz_mignotte_boundr    r!   r#   r#   r$   Útest_dup_zz_mignotte_bound   s    &r/   c                  C   s:   t dtƒ\} }}|  d|d  d|  d ¡dks6t‚d S )Nr&   r   r   r   é    )r   r   Údmp_zz_mignotte_boundr    r'   r#   r#   r$   Útest_dmp_zz_mignotte_bound%   s    r2   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št‚||d ksªt‚|	d	ks¶t‚|
d
|d  d|  d ksÖt‚d S )Nr   r   r   r   r   éþÿÿÿr   é   r   iøÿÿÿé   )r   r   Zdup_zz_hensel_stepr    )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sjt‚d S )Nr   r   r   r   r   é¶   )r   r   Zdup_zz_hensel_liftr    )r"   r   r6   ÚFr#   r#   r$   Útest_dup_zz_hensel_lift;   s    ÿrB   c                  C   s  t dtƒ\} }|  d|d  d|d   d|d   d|  d ¡d ksLt‚|  d|d  d|d   d|d   d|  d ¡d ksŠt‚|  d|d  d|d   d|d   d|  d ¡d	ksÈt‚|  d|d  d|d   d|d   d|  d
 ¡d	kst‚d S )Nr   r   r   r   r*   r   r4   é
   Tr+   )r   r   Zdup_zz_irreducible_pr    r!   r#   r#   r$   Útest_dup_zz_irreducible_pE   s
    >>>rD   c                  C   sæ  t dtƒ\} }|  |d ¡dks$t‚|  |d ¡dks:t‚|  |d | d ¡dksXt‚|  |d d ¡dksrt‚|  |d |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kst‚|  |d |d  d ¡dks<t‚|  d	¡d
ksPt‚|  d¡d
ksdt‚|  |¡d
ksxt‚|  |d ¡d
kst‚|  d| d ¡d
ks¬t‚|  |d d ¡d
ksÈt‚|d |d  |d  |d  |d  |d  d }|  |¡d
kst‚|d |d  |d  |d  |d  |d  d }|  |¡dksXt‚t dtƒ\} }|  |d | d ¡dks†t‚|  tddƒ|d  | d ¡d
ks°t‚t dtd ƒ\} }|  |d | d ¡d
ksât‚d S )Nr   r   Tr   r   r   r*   r   r   Fé   r+   rC   r   r(   )r   r   Zdup_cyclotomic_pr    r   )r"   r   r6   r7   r#   r#   r$   Útest_dup_cyclotomic_pO   s2    .>$44 *rF   c                  C   s@  t dtƒ\} }|  d¡|d ks$t‚|  d¡|d ks:t‚|  d¡|d | d ksXt‚|  d¡|d d ksrt‚|  d¡|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 kst‚|  d
¡|d |d  d ks<t‚d S )Nr   r   r   r   r   r   r*   r4   r   é	   )r   r   Zdup_zz_cyclotomic_polyr    r!   r#   r#   r$   Útest_dup_zz_cyclotomic_polyq   s    .>rH   c                  C   s¼  t dtƒ\} }|  d¡d ks t‚|  d¡d ks2t‚|  d|d  d ¡d ksPt‚|  |d d ¡d ksjt‚|  |d |d  d ¡d ksŒt‚|  |d ¡|d gks¨t‚|  |d ¡|d gksÄt‚|  |d d ¡|d d gksèt‚|  |d d ¡|d |d gkst‚|  |d d ¡|d |d | d |d	 |d  d |d
 |d  d gksdt‚|  |d d ¡|d |d | d |d	 |d  d |d
 |d  d gks¸t‚d S )Nr   r   r   r   rC   r   r   é   r*   é   rG   )r   r   Zdup_zz_cyclotomic_factorr    r!   r#   r#   r$   Útest_dup_zz_cyclotomic_factor   s     "$(:ÿ
:ÿrK   c               
   C   sÆ  t dtƒ\} }|  d¡dg fks$t‚|  d¡dg fks:t‚|  d¡dg fksPt‚|  d¡dg fksft‚|  d¡dg fks|t‚|  d¡dg fks’t‚|  d| d ¡d|d dfgfksºt‚|  d| d ¡d|d gfksÞt‚|d | d }tddƒD ] }|  |¡d|dfgfksøt‚qø|  |d d|  d ¡d|d d|  d dfgfksXt‚|  d	|d  d
|  d ¡dd| d dfgfks’t‚|  d|d  d ¡dd| d dfd| d dfgfksÒt‚|  d|d  d ¡dd| d d| d gfks
t‚|  |d d|d   d|  d ¡d|d df|d df|d dfgfks\t‚|  |d d|d   d|  d ¡d|d |d |d gfks¢t‚|  d|d  d|d   d|  d ¡d|d dfd|d  d|  d dfgfksþt‚|  d|d  d|d   d|  d ¡d|d d|d  d|  d gfksRt‚|  |d  |d  ¡d|d df|d df|df|d d dfgfks t‚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sXt‚d!|d"  d#|d   d$|d%   d&|d   d'|d   d( }|  |¡d)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gfksnt‚|d d }t d2d3¡ |  |¡}t d2d4¡ |  |¡}||  krd|d df|d df|d |d  |d  | d df|d |d  |d  | d dfgfks n t‚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 t‚t d2¡ d S )5Nr   r   r4   éùÿÿÿr   r   r   é   rJ   r5   r   é÷ÿÿÿéÿÿÿÿr*   é   rC   é   r   é8  r   i@  i3  iè  i°
  iˆ  é   éD  é   rG   éØ   é   rI   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_factorr    Údup_zz_factor_sqfÚrangeÚconfigÚsetup)r"   r   r6   ÚiZF_0ZF_1r#   r#   r$   Útest_dup_zz_factor•   sÔ    ($ÿ
ÿ
ÿÿ

ÿÿ
$

þÿ
$þÿ
(ÿÿ
(ÿÿ

ýÿ
X,ÿÿ


ÿ
þ
ý
üû222üÿ



""ýÿ


&ÿÿra   c                      sœ  t dtƒ\} ‰ }}t dtƒ\}}tt|  t¡ƒƒ}|dks>t‚|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 t‚|  	||tdƒ¡ddddgksŒt‚| 
|¡r®| |¡|  t¡ks²t‚| |¡\}}d|d  d|  d }d|d  d|  d }d|d  d }||||gkst‚‡ fd d„d!| d|  | |d  |d |d  fD ƒ}|  t|||||¡t||fksrt‚|  t||||¡}|  |¡tks˜t‚d S )"Núx,y,zr   é ` r   éòÿÿÿr   r   iõÿÿÿiïÿÿÿc                    s   g | ]}|  ˆ ¡‘qS r#   ©Zdrop)Ú.0r:   ©r   r#   r$   Ú
<listcomp>  s     z$test_dmp_zz_wang.<locals>.<listcomp>i¸Ñ r*   i`ø r   iÄÙ  r   i•œ i˜C  iÙh  i„  r4   rP   é   é,   é*   é~   rG   r   é»   é   c                    s   g | ]}|  ˆ ¡‘qS r#   re   )rf   Úlcrg   r#   r$   rh   %  s     éüÿÿÿ)r   r   r   r1   Úw_1r    Ú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=   Úcsr9   Ú_r<   Zh_1Zh_2Zh_3ZLCÚfactorsr#   rg   r$   Útest_dmp_zz_wang   s:    Fÿ$&:$r}   c                  C   sø  t dtƒ\} }}}t dtƒ\}}tt|  t¡ƒƒ}|dks>t‚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št‚|  ||td-ƒgd|¡| | d+| d.gksÌt‚|  |	|td-ƒgd|¡d/d/d0gksôt‚d S )1Nrb   r   rc   rj   r   rk   r   rl   rG   r   rm   rn   rp   r5   r   rN   iâëþÿr   iç  r   i¢E  iÙ  i§  éJ   é-   él   rT   rJ   rV   i*  éü   i   i±  r[   iž  é6   éQ   iÜÿÿÿrI   é$   r   r*   éýÿÿÿr3   rd   iúÿÿÿr   rO   )r   r   r   r1   rq   r    Zdmp_zz_diophantine)r"   r   r(   rs   rt   ru   rv   ZH_1ZH_2ZH_3Zc_1Zc_2Zc_3r#   r#   r$   Útest_dmp_zz_wang_fail-  s    >nn<ÿ I˜&2r†   c                  C   sz   ddddddddddddddddddg} t dtƒ\}}}}d|d  ||  | |d  | }|j|| d|gksvt‚d S )NrO   r   r   rb   r   )Úseed)r   r   Zdmp_zz_wangr    )Zrandom_sequencer"   r   r(   rs   r6   r#   r#   r$   Útest_issue_6355B  s    ($rˆ   c                  C   sZ  t dtƒ\} }|  d¡dg fks$t‚|  d¡dg fks:t‚|  d¡dg fksPt‚|  |d d ¡d|d df|d dfgfks‚t‚t d	tƒ\} }}|  d¡dg fks¨t‚|  d¡dg fks¾t‚|  d¡dg fksÔt‚|  |¡d|dfgfksðt‚|  d
| ¡d
|dfgfkst‚|  d
| d ¡dd| d dfgfks@t‚|  || d ¡d|| d dfgfksnt‚|  |d d ¡d|d d dfgfksœt‚|  |d d ¡d|d df|d dfgfksÐt‚|  |d |d  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f|| d dfgfks„t‚t dtƒ\} }}}|  |d |d  |d  d ¡d|| | d df|| | d dfgfksêt‚t dtƒ\} }}}}|  |d |d  |d  |d  d ¡d|| | | d df|| | | d dfgfksbt‚t dtƒ\} }}}|  t¡d|||  d df|| | d df|| | d dfgfksÂt‚|  t¡d|d |d  |d |d   | d df|d | |d |  | d dfgfks&t‚|  t¡d|d |d  ||d
   | | df|d || |  |d  ||d   dfgfksŽt‚|  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t‚|  t¡d|| | dfgfks8t‚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Ät‚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sxt‚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sVt‚d S )Nr   r   r4   rL   r   rG   r   r   r&   r   r*   rb   zx,y,z,urM   rC   r[   éZ   rP   rO   r   zx,y,z,té/   r   iôÿÿÿrE   éð   r5   i   rR   r   )r   r   Zdmp_zz_factorr    Úf_1Úf_2Úf_3Úf_4Úf_5Úf_6rq   )r"   r   r(   rs   Úur:   r6   r#   r#   r$   Útest_dmp_zz_factorM  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sJt‚|  |d d ¡tddƒ|d df|d dfgfks‚t‚|  |d d ¡tddƒ|| df|| dfgfksºt‚|  |d d d ¡ttddƒdƒ|d|  df|d|  dfgfkst‚|  |d d ¡tddƒ|d|  df|d|  dfgfksHt‚|  |d d|  d ¡tddƒ|d dfgfks€t‚|  |d d| |  d ¡tddƒ|| dfgfks¼t‚d|d  |dd|    d	 d
|  }|  |¡tddƒ|ttddƒtddƒƒ dfgfkst‚d S )Nr   r   r   r   r   é    é€X  é€¬ éH é‰² é±   é€   iY  )r   r   Zdup_qq_i_factorr    r   ©r"   r   r`   r6   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\t‚|  |d |d  ¡tddƒ|||  df|||  dfgfks t‚|  |d |d d  ¡tddƒ||| d  df||| d  dfgfksðt‚|  d|d  |d  ¡tddƒ||| d  df||| d  dfgfksBt‚d S ©Nzx, yr   r   r   r   )r   r   Zdmp_qq_i_factorr    ©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sJt‚|  |d d ¡tddƒ|d df|d dfgfks‚t‚|  |d d ¡tddƒ|| df|| dfgfksºt‚|  |d d ¡tddƒ|d|  df|d|  dfgfksút‚|  |d d|  d ¡tddƒ|d dfgfks2t‚|  |d d| |  d ¡tddƒ|| dfgfksnt‚d|d  |dd|    d	 d
|  }|  |¡tddƒdd|  | dd|   dfgfksÒt‚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#   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\t‚|  |d |d  ¡tddƒ|||  df|||  dfgfks t‚|  d|d  |d  ¡tddƒd| ||  dfd| ||  dfgfksðt‚d S r   )r   r   Zdmp_zz_i_factorr    rž   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s6t‚|tdƒgƒ| |tdƒgƒ }|  |¡|tdƒgƒ|dfgfks|t‚|tdƒgƒ| |tdƒgƒ }|  |¡|tdƒgƒ|dfgfksÂt‚|tdƒgƒ|d  |tddƒgƒ }|tdƒgƒ|d  |tddƒgƒ }|  |¡|tdƒgƒ|dfgfks6t‚|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Öt‚|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€t‚|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Ìt‚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°t‚|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s0t‚|  |d ¡|tddƒgƒ|dgƒ| |ddgƒ dfgfkstt‚||tddƒgƒ9 }|  |¡|tddƒgƒ|dgƒ| |ddgƒ dfgfksÈt‚|  |d ¡|tddƒgƒ|dgƒ| |ddgƒ dfgfkst‚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   r4   r   rO   rG   r   r   éM   rJ   é™   c                 S   s   t | tdƒtdƒtdƒgtƒS ©Nr   r   r3   r£   r¤   r#   r#   r$   r¦     s    r*   )r   r   Úalgebraic_fieldr   Zdup_ext_factorr    r   )r"   r   r¦   r6   r7   r#   r#   r$   Útest_dup_ext_factorí  sh     & &&&($:,ÿÿ
(>.ÿÿ
l>0..ýÿ
&J>ÿÿ
@.ÿ
.ÿ
.ÿ
.ÿr«   c                  C   s  t dt tdƒ¡ƒ\} }}dd„ }|  d¡|g ƒg fks<t‚|tdƒgƒ| |tdƒgƒ }|  |¡|tdƒgƒ|dfgfks‚t‚|tdƒgƒ| |tdƒgƒ }|  |¡|tdƒgƒ|dfgfksÈt‚|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snt‚|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t‚d S )
Nr&   r   c                 S   s   t | tdƒtdƒtdƒgtƒS r©   r£   rg   r#   r#   r$   r¦   2  s    z test_dmp_ext_factor.<locals>.anpr   r   r3   rO   rp   )r   r   rª   r   Zdmp_ext_factorr    )r"   r   r(   r¦   r6   r7   r#   r#   r$   Útest_dmp_ext_factor0  s&     & &,8,ÿÿ
,8,ÿÿr¬   c                     s<  t dtƒ\‰ } ˆ  d¡dg fks$t‚ˆ  d¡dg fks:t‚t dtƒ\‰ } ˆ  d¡dg fks^t‚ˆ  tddƒ¡tddƒg fks€t‚t dtd ƒ\‰ } ˆ  d¡dg fks¨t‚ˆ  d¡dg fks¾t‚t dtd ƒ\‰ } ˆ  d¡dg fksæt‚ˆ  tddƒ¡tddƒg fks
t‚t dtƒ\‰ } ˆ  d¡dgks.t‚ˆ  d¡dgksDt‚ˆ  | d d|   d ¡d| d dfgfksvt‚ˆ  | d d|   d ¡| d dfgks¤t‚ˆ  d	| d  d
|   d	 ¡dd|  d dfd|  d dfgfksìt‚t dtƒ\‰ } ˆ  tddƒ| d  |  tddƒ ¡tddƒ| d dfgfks>t‚t dtdƒƒ\‰ } ˆ  | d d ¡d| d dfgfkszt‚t dtƒ\‰ } ˆ  d| d  d|   d ¡dd|  d dfgfksÂt‚ˆ  d| d  d|   d ¡dd|  d dfgfksüt‚d| d  d|   d }ˆ  |¡\}}|tdƒks4t‚t|ƒdksFt‚|d d  	¡ tdƒksdt‚|d d dkszt‚t dtƒ\}}t d|ƒ\‰ } d| | d  d|d  |   }ˆ  |¡d| | df| | dfgfksât‚t dtƒ\}}t d|ƒ\‰ } tddƒ| | d  tddƒ|d  |   }ˆ  |¡tddƒ| | df| | dfgfks\t‚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t‚t dtƒ\‰ } tt‡ fdd„ƒ d S )Nr   r   r4   r   r:   ©r   r   ©r4   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>”  ó    z&test_dup_factor_list.<locals>.<lambda>)r   r   rµ   r    r   Zdup_factor_list_includer   r	   ÚlenÚmax_normrª   r   r
   r   r   )r   r6   Úcoeffr|   ÚRtr:   r¦   r#   r¶   r$   Útest_dup_factor_listL  sr    "$2.HD*:: 
ÿÿ
,
ÿÿ
0$6ÿÿ
r½   c                     sR  t dtƒ\‰ ‰‰ˆ  d¡tdƒg fks*t‚ˆ  d¡dg fks@t‚t dtƒ\‰ ‰‰ˆ  d¡tdƒg fksjt‚ˆ  tddƒ¡tddƒg fksŒt‚t dtƒ\} }t d| ƒ\‰ ‰‰ˆ  d¡dg fksÀt‚ˆ  d¡tdƒg fksÚt‚t dtƒ\} }t d| ƒ\‰ ‰‰ˆ  d¡dg fkst‚ˆ  tddƒ¡tddƒg fks4t‚t dtƒ\‰ ‰‰ˆ  d¡dgksZt‚ˆ  d¡dgkspt‚tdtƒ\‰ }|d d	 d	|d   d |d d  }}ˆ  |¡d|d	fgfksÆt‚|d
 d	 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sNt‚t dtƒ\‰ ‰ˆ  tdd	ƒˆd	  ˆ tdd	ƒ ¡t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ƒ\‰ ‰‰ˆ  tdd	ƒˆd	  ˆ tdd	ƒ ¡tdd	ƒˆd d	fgfks6t‚t dtƒ\‰ ‰‰dˆd	  ˆ dˆ ˆd	   }ˆ  |¡dˆdfˆdfˆˆ dfgfks”t‚ˆ  |¡dˆ dfˆdfˆˆ dfgksÂt‚t dtƒ\‰ ‰‰tdd	ƒˆd	  ˆ tdd	ƒˆ ˆd	   }ˆ  |¡tdd	ƒˆdfˆdfˆˆ dfgfks2t‚t dtƒ\‰ ‰‰dˆd	  dˆd	   }ˆ  |¡tdƒdˆ ˆ dfdˆ ˆ dfgfks’t‚dˆd	  ˆd	  dˆ ˆ  d }ˆ  |¡\}}|tdƒksÖt‚t|ƒdksèt‚|d d  	¡ tdƒkst‚|d d dkst‚t dtƒ\} }t d| ƒ\‰ ‰‰d| ˆd	  d|d	  ˆ  }ˆ  |¡d| ˆdfˆ| dfgfks†t‚t dtƒ\} }t d| ƒ\‰ ‰‰tdd	ƒ| ˆd	  tdd	ƒ|d	  ˆ  }ˆ  |¡tdd	ƒ| ˆdfˆ| dfgfkst‚t dt
d	ƒƒ\‰ ‰‰tt‡ ‡‡fdd„ƒ t dtƒ\‰ ‰‰tt‡ fdd„ƒ d S )Nr&   r   r4   r   r:   r­   r®   zx:200r   rO   r   r   r°   g       @g      à?r±   r²   r³   r¯   c                      s   ˆ   ˆd ˆd  ¡S )Nr   )Údmp_factor_listr#   r'   r#   r$   r·   ô  r¸   z&test_dmp_factor_list.<locals>.<lambda>c                      s   ˆ   ttdƒƒ¡S r´   )r¾   r
   r   r#   r¶   r#   r$   r·   ÷  r¸   )r   r   r¾   r    r   Zdmp_factor_list_includer   r	   r¹   rº   r   r   ÚNotImplementedErrorr
   r   )r¼   r:   ÚXr6   r7   r»   r|   r#   r'   r$   Útest_dmp_factor_list—  sª    "$**2D2D 
þÿ


þÿ
,
þÿ
ÿÿ
$ 
ÿÿ
,
ÿÿ
rÁ   c                  C   sR   t dtƒ\} }|  |d | d ¡dks,t‚|  |d d|  d ¡dksNt‚d S )Nr   r   r   TF)r   r   Zdup_irreducible_pr    r!   r#   r#   r$   Útest_dup_irreducible_pú  s    rÂ   c                  C   sT   t dtƒ\} }}|  |d | d ¡dks.t‚|  |d d|  d ¡dksPt‚d S )Nr&   r   r   TF)r   r   Zdmp_irreducible_pr    r'   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‘   rq   Zw_2r%   r)   r/   r2   r?   rB   rD   rF   rH   rK   ra   r}   r†   rˆ   r“   rœ   rŸ   r    r¡   r«   r¬   r½   rÁ   rÂ   rÃ   r#   r#   r#   r$   Ú<module>   sN   $


"k-
LCKc