U
    ZÊ¹jto  ã                   @   sp  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFmGZH d dlImJZJ d dlKmLZL d dlMmNZN d dlOmPZP dd	„ ZQd
d„ ZRdd„ ZSdd„ ZTdd„ ZUdd„ ZVdd„ ZWdd„ ZXdd„ ZYdd„ ZZdd„ Z[dd„ Z\d d!„ Z]d"d#„ Z^d$d%„ Z_d&d'„ Z`d(d)„ Zad*d+„ Zbd,d-„ Zcd.d/„ Zdd0d1„ Zed2d3„ Zfd4d5„ Zgd6d7„ Zhd8d9„ Zid:d;„ Zjd<d=„ Zkd>d?„ Zld@dA„ ZmdBdC„ ZndDdE„ ZodFdG„ ZpdHdI„ ZqdJdK„ ZrdLS )Mé    )CÚgf_crtÚgf_crt1Úgf_crt2Úgf_intÚ	gf_degreeÚgf_stripÚgf_truncÚ	gf_normalÚgf_from_dictÚ
gf_to_dictÚgf_from_int_polyÚgf_to_int_polyÚgf_negÚgf_add_groundÚgf_sub_groundÚgf_mul_groundÚgf_addÚgf_subÚ
gf_add_mulÚ
gf_sub_mulÚgf_mulÚgf_sqrÚgf_divÚgf_remÚgf_quoÚgf_exquoÚ	gf_lshiftÚ	gf_rshiftÚ	gf_expandÚgf_powÚ
gf_pow_modÚgf_gcdexÚgf_gcdÚgf_lcmÚgf_cofactorsÚgf_LCÚgf_TCÚgf_monicÚgf_evalÚgf_multi_evalÚ
gf_composeÚgf_compose_modÚgf_trace_mapÚgf_diffÚgf_irreducibleÚgf_irreducible_pÚgf_irred_p_ben_orÚgf_irred_p_rabinÚgf_sqf_listÚgf_sqf_partÚgf_sqf_pÚ
gf_QmatrixÚ	gf_QbasisÚgf_ddf_zassenhausÚgf_ddf_shoupÚgf_edf_zassenhausÚgf_edf_shoupÚgf_berlekampÚgf_factor_sqfÚ	gf_factorÚgf_valueÚlinear_congruenceÚ_csolve_prime_las_vegasÚcsolve_primeÚ	gf_csolveÚgf_frobenius_mapÚgf_frobenius_monomial_base)ÚExactQuotientFailed)Ú
polyconfig)ÚZZ)Úpi)Ú	nextprime)Úraisesc                  C   sz   dddg} dddg}d}d}t | |tƒ|ks0t‚d	d
dg}dddg}t|tƒ|||fks\t‚t| ||||tƒ|ksvt‚d S )Né1   éL   éA   éc   éa   é_   i�ë iñÃ	 iÿ#  i½$  iƒ%  é>   é   é   )r   rG   ÚAssertionErrorr   r   )ÚUÚMÚpÚuÚEÚS© r[   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_galoistools.pyÚtest_gf_crt)   s    



r]   c                   C   sp   t ddƒdkst‚t ddƒdks$t‚t ddƒdks6t‚t ddƒdksHt‚t ddƒdksZt‚t ddƒdkslt‚d S )	Nr   é   é   é   é   éþÿÿÿé   éÿÿÿÿ)r   rT   r[   r[   r[   r\   Útest_gf_int9   s    re   c                   C   sT   t g ƒdkst‚t dgƒdks"t‚t ddgƒdks6t‚t dddddgƒdksPt‚d S )Nrd   r_   r   rc   )r   rT   r[   r[   r[   r\   Útest_gf_degreeB   s    rf   c                   C   sÜ   t g ƒg kst‚t dgƒg ks"t‚t dddgƒg ks8t‚t dgƒdgksLt‚t ddgƒdgksbt‚t ddddgƒdgks|t‚t dddgƒdddgks˜t‚t ddddgƒdddgks¶t‚t ddddddgƒdddgksØt‚d S ©Nr   r_   r`   )r   rT   r[   r[   r[   r\   Útest_gf_stripI   s    rh   c                   C   sž   t g dƒg kst‚t dgdƒdgks(t‚t dgdƒg ks<t‚t dgdƒdgksRt‚t dddddgdƒdddgkstt‚t dddddgdƒdddddgksšt‚d S )	Né   r_   é   rS   é   r   é   é   )r   rT   r[   r[   r[   r\   Útest_gf_truncW   s    "rn   c                   C   s(   t dddddgdtƒdddgks$t‚d S )Nri   rj   rk   r_   r   rl   )r	   rG   rT   r[   r[   r[   r\   Útest_gf_normala   s    ro   c                  C   sò   ddddœ} ddddœ}ddddddddddddg}t | dtƒ|ksHt‚t|dƒ|ksZt‚d	dddd
œ} d	dddœ}ddddddddddddg}t | dtƒ|ks¤t‚t|dƒ|ks¶t‚tdgddd�ddiksÒt‚tdgddd�ddiksît‚d S )NrS   r`   é   )ri   rl   r   r_   ra   r   ri   éûÿÿÿ)ri   rc   ra   r   )ri   ra   r   rl   é
   T©Z	symmetricrd   F)r
   rG   rT   r   )ÚfÚFÚgr[   r[   r\   Útest_gf_from_to_dicte   s    rw   c                   C   s„   t dddddgdƒdddddgks&t‚tdddddgdƒddd	dd
gksLt‚tdgddd�d	gksft‚tdgddd�dgks€t‚d S )Nr_   r   é   r`   é   r^   rc   ra   rd   rb   rr   ri   Trs   F)r   rT   r   r[   r[   r[   r\   Útest_gf_from_to_int_polyx   s    &&rz   c                   C   s@   t g tƒdkst‚t dgtƒdks&t‚t ddgtƒdks<t‚d S rg   )r%   rG   rT   r[   r[   r[   r\   Ú
test_gf_LC€   s    r{   c                   C   s@   t g tƒdkst‚t dgtƒdks&t‚t ddgtƒdks<t‚d S rg   )r&   rG   rT   r[   r[   r[   r\   Ú
test_gf_TC†   s    r|   c                   C   sÂ   t t g ¡dtƒdg fkst‚t t dg¡dtƒddgfks@t‚t t dg¡dtƒddgfksbt‚t t ddddg¡dtƒdddddgfks�t‚t t ddddg¡dtƒddddd	gfks¾t‚d S )
Nri   r   r_   r`   ra   rc   r^   rx   é   )r'   rG   ÚmaprT   r[   r[   r[   r\   Útest_gf_monicŒ   s
    "".r   c                
   C   sH  t g dtƒg kst‚t dgdtƒdgks,t‚t dddgdtƒdddgksLt‚tg ddtƒg ksbt‚tg ddtƒg ksxt‚tg ddtƒdgks�t‚tg ddtƒdgks¨t‚tdgddtƒd	gksÂt‚tdgddtƒdgksÜt‚tdgddtƒg ksôt‚tdgddtƒg k�st‚tdddgddtƒddd
gk�s2t‚tdddgddtƒdddgk�sVt‚tg ddtƒg k�snt‚tg ddtƒg k�s†t‚tdgddtƒg k�s t‚tdgddtƒdgk�s¼t‚tdddgddtƒg k�sÚt‚tdddgddtƒdddgk�sþt‚tdddgddtƒdddgk�s"t‚tg g dtƒg k�s:t‚tdgg dtƒdgk�sVt‚tg dgdtƒdgk�srt‚tdgdgdtƒdgk�s�t‚tdgdgdtƒdgk�s®t‚tddgdgdtƒddgk�sÐt‚tdgddgdtƒddgk�sòt‚tdddgdddgdtƒdddgk�st‚tg g dtƒg k�s4t‚tdgg dtƒdgk�sPt‚tg dgdtƒdgk�slt‚tdgdgdtƒg k�sˆt‚tdgdgdtƒdgk�s¦t‚tddgdgdtƒddgk�sÈt‚tdgddgdtƒddgk�sêt‚tdddgdddgdtƒd
d	dgk�st‚tddd
gddgddd
dgdtƒdddddgk�sJt‚t	ddd
gddgddd
dgdtƒdddddgk�s€t‚t
g g dtƒg k�s˜t‚t
g dgdtƒg k�s²t‚t
dgg dtƒg k�sÌt‚t
dgdgdtƒdgk�sêt‚t
dgdgdtƒdgk�st‚t
dddd
ddgd	dddgdtƒddddd	ddddg	k�sFt‚t
d	dddgdddd
ddgdtƒddddd	ddddg	k�s„t‚t
dddddgdddddgdtƒd	ddd	d
ddddg	k�sÂt‚tg dtƒg k�sØt‚tdgdtƒd	gk�sòt‚tddgdtƒdd	d	gk�st‚tdddddgdtƒd	ddd	d
ddddg	k�sDt‚d S )Nri   r_   rr   r`   ra   é	   r}   r   rc   rl   rx   r^   )r   rG   rT   r   r   r   r   r   r   r   r   r   r[   r[   r[   r\   Útest_gf_arith–   s´     $$$$""*""*  
  ÿÿ
  
  ÿÿ
$      ÿ$      ÿ$      ÿ r�   c                     s  t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ tdgdddgd	tƒg dgfks\t‚tdgdddgd	tƒdgks|t‚tdgdddgd	tƒg ksšt‚t d
dddddg¡‰ t dddg¡‰d
dddg} ddg}tˆ ˆd	tƒ| |fksît‚tˆ ˆd	tƒ|k�st‚tˆ ˆd	tƒ| k�st‚t t‡ ‡fdd„ƒ t d
dddddg¡‰ t ddddg¡‰d
ddg} dddg}tˆ ˆd	tƒ| |fk�sŠt‚tˆ ˆd	tƒ|k�s¢t‚tˆ ˆd	tƒ| k�sºt‚t t‡ ‡fdd„ƒ tt dddg¡t ddg¡dtƒddgk�s t‚d S )Nc                   S   s   t dddgg dtƒS ©Nr_   r`   ra   ri   )r   rG   r[   r[   r[   r\   Ú<lambda>å   ó    z"test_gf_division.<locals>.<lambda>c                   S   s   t dddgg dtƒS r‚   )r   rG   r[   r[   r[   r\   rƒ   æ   r„   c                   S   s   t dddgg dtƒS r‚   ©r   rG   r[   r[   r[   r\   rƒ   ç   r„   c                   S   s   t dddgg dtƒS r‚   r…   r[   r[   r[   r\   rƒ   è   r„   r_   r`   ra   rx   r^   rc   r   rl   c                      s   t ˆ ˆdtƒS ©Nrx   ©r   rG   r[   ©rt   rv   r[   r\   rƒ   ÷   r„   c                      s   t ˆ ˆdtƒS r†   r‡   r[   rˆ   r[   r\   rƒ     r„   ri   )	rJ   ÚZeroDivisionErrorr   rG   rT   r   r   r~   rE   )ÚqÚrr[   rˆ   r\   Útest_gf_divisionä   s0    $ 

rŒ   c                  C   sô   dddddg} t g dtƒg ks"t‚tg dtƒg g fks:t‚t | dtƒddddddgksZt‚t | dtƒdddddddgks|t‚t| dtƒ| g fks”t‚t| dtƒddddgdgfks¶t‚t| dtƒddgdddgfksØt‚t| dtƒg | fksðt‚d S )Nr_   r`   ra   rc   r^   r   )r   rG   rT   r   ©rt   r[   r[   r\   Útest_gf_shift  s     """rŽ   c                  C   s`   ddgdfddgdfg} t | dtƒddddddgks8t‚t d| fdtƒdd	dd
dd	gks\t‚d S )Nr_   r`   ra   ri   r}   r^   rl   rc   rr   r€   )r   rG   rT   )ru   r[   r[   r\   Útest_gf_expand  s     r�   c                ¶   C   s  t dddddgddtƒdgks"t‚t dddddgddtƒdddddgksLt‚t dddddgddtƒdddddddddg	ks~t‚t dddddgddtƒddddddd	d
dd	dd
d	d
d
dddddd	gksÈt‚t dddddgdd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ddddd	d	dddg!k�s,t‚t dddddgdd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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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ddd	gµk�s¸t‚tt dddddg¡dt dddg¡dtƒdgk�sðt‚tt dddddg¡dt dddg¡dtƒddgk�s*t‚tt dddddg¡dt dddg¡dtƒddgk�sdt‚tt dddddg¡dt dddg¡dtƒddgk�sžt‚tt dddddg¡dt dddg¡dtƒddgk�sØt‚tt dddddg¡dt dddg¡dtƒddgk�st‚d S )Nr_   r   r}   ri   r`   r^   r€   rx   rr   rl   é-   rc   ra   )r   rG   rT   r    r~   r[   r[   r[   r\   Útest_gf_powering  s|   "*2,ÿ,          ÿÿ
,                                                                                                                                                       øÿ
8::::r‘   c                   C   sš  t t g ¡t g ¡dtƒdgg g fks*t‚t t dg¡t g ¡dtƒdgg dgfksXt‚t t g ¡t dg¡dtƒg dgdgfks†t‚t t dg¡t dg¡dtƒg dgdgfks¶t‚t t g ¡t ddg¡dtƒg dgddgfksèt‚t t ddg¡t g ¡dtƒdgg ddgfk�st‚t t ddg¡t ddg¡dtƒg dgddgfk�sTt‚t t ddd	g¡t dd	dd	g¡dtƒd
dgdgdd	gfk�s–t‚d S )Nri   r_   r`   rl   ra   r   rc   r}   rx   r^   )r!   rG   r~   rT   r[   r[   r[   r\   Útest_gf_gcdex<  s    *..0248r’   c                   C   sT  t t g ¡t g ¡dtƒg ks"t‚t t dg¡t g ¡dtƒdgksHt‚t t g ¡t dg¡dtƒdgksnt‚t t dg¡t dg¡dtƒdgks–t‚t t g ¡t ddg¡dtƒddgksÀt‚t t ddg¡t g ¡dtƒddgksêt‚t t ddg¡t ddg¡dtƒddgk�st‚t t dddg¡t ddddg¡dtƒddgk�sPt‚d S ©Nri   r`   r_   r   ra   r}   rx   )r"   rG   r~   rT   r[   r[   r[   r\   Útest_gf_gcdJ  s    "&&(**0r”   c                   C   sN  t t g ¡t g ¡dtƒg ks"t‚t t dg¡t g ¡dtƒg ksFt‚t t g ¡t dg¡dtƒg ksjt‚t t dg¡t dg¡dtƒdgks’t‚t t g ¡t ddg¡dtƒg ks¸t‚t t ddg¡t g ¡dtƒg ksÞt‚t t ddg¡t ddg¡dtƒddgk�st‚t t dddg¡t ddddg¡dtƒdddddgk�sJt‚d S r“   )r#   rG   r~   rT   r[   r[   r[   r\   Útest_gf_lcmW  s    "$$(&&0r•   c                   C   s   t t g ¡t g ¡dtƒg g g fks(t‚t t dg¡t g ¡dtƒdgdgg fksVt‚t t g ¡t dg¡dtƒdgg dgfks„t‚t t dg¡t dg¡dtƒdgdgdgfks¶t‚t t g ¡t ddg¡dtƒddgg dgfksèt‚t t ddg¡t g ¡dtƒddgdgg fk�st‚t t ddg¡t ddg¡dtƒddgdgdgfk�sVt‚t t dddg¡t ddddg¡dtƒddgddgdddgfk�sœt‚d S r“   )r$   rG   r~   rT   r[   r[   r[   r\   Útest_gf_cofactorsd  s    (..224   ÿ&ÿr–   c                   C   s’   t g dtƒg kst‚t dgdtƒg ks*t‚t ddgdtƒdgksDt‚t dddgdtƒddgksbt‚t ddddddddddddgdtƒg ksŽt‚d S )Nri   rx   ra   r_   r   )r-   rG   rT   r[   r[   r[   r\   Útest_gf_diffs  s
    r—   c                
   C   s‚  t g ddtƒdkst‚t g ddtƒdks,t‚t dgddtƒdksDt‚t dgddtƒdks\t‚t dddddddddg	ddtƒdks„t‚t dddddddddg	ddtƒd	ks¬t‚t dddddddddg	ddtƒd
ksÔt‚t ddddddddd
g	ddtƒd
ksüt‚t ddddddddd
g	ddtƒdk�s&t‚t ddddddddd
g	ddtƒd	k�sPt‚tdddgddddgdtƒddddgk�s~t‚d S )Nrc   ri   r   é   rx   r_   ra   r`   r€   r^   rl   )r(   rG   rT   r)   r[   r[   r[   r\   Útest_gf_eval}  s    ((((**r™   c                  C   s  t g ddgdtƒg kst‚tg ddgddgdtƒg ks:t‚t dgg dtƒdgksTt‚t ddgg dtƒg ksnt‚t ddgddgdtƒddgks�t‚t dddddg¡} t dddg¡}t ddddg¡}t ||dtƒdddddddgksêt‚t||| dtƒd	dd
dgk�st‚d S )Nr_   r   ri   rc   r€   r`   r^   rx   ra   rl   rr   )r*   rG   rT   r+   r~   ©rt   rv   Úhr[   r[   r\   Útest_gf_composeŽ  s     "$rœ   c                  C   s‚  t  dddddg¡} dddg}t  ddg¡}t|d| dt ƒ}t|||d| dt ƒdddgdddgfksht‚t|||d| dt ƒdddd	gdd	ddgfks˜t‚t|||d| dt ƒdddd	gdddd
gfksÈt‚t|||d	| dt ƒddddgd
gfksòt‚t|||d| dt ƒdddgdddgfk�s t‚t|||d| dt ƒdddd	gdd	ddgfk�sRt‚t|||d| dt ƒddddgdgfk�s~t‚d S )Nr_   rc   r€   r   ri   r^   r`   rr   ra   rx   rl   r}   )rG   r~   r    r,   rT   )rt   ÚaÚcÚbr[   r[   r\   Útest_gf_trace_mapž  s2    
ÿÿÿÿÿ
ÿ
ÿr    c                   C   sÈ   t tddtƒdtƒdkst‚t tddtƒdtƒdks8t‚t tddtƒdtƒdksTt‚t tddtƒdtƒdkspt‚t tddtƒdtƒdksŒt‚t tddtƒdtƒdks¨t‚t td	dtƒdtƒdksÄt‚d S )
Nr_   ri   Tr`   ra   rc   r^   rl   rx   )r/   r.   rG   rT   r[   r[   r[   r\   Útest_gf_irreducible´  s    r¡   c                  C   s‚  t t dg¡dtƒdkst‚t t ddg¡dtƒdks:t‚t t dddg¡dtƒdksZt‚tt dg¡dtƒdksvt‚tt ddg¡dtƒdks”t‚tt dddg¡dtƒdks´t‚t dd¡ tt dg¡dtƒdksÜt‚tt ddg¡dtƒdksút‚tt dddg¡dtƒdk�st‚t dd	¡ tt dg¡dtƒdk�sFt‚tt ddg¡dtƒdk�sft‚tt dddg¡dtƒdk�sˆt‚t dd
¡ tt	dd„ ƒ t d¡ t dddddddddddg¡} t dddddddddddg¡}t
| |dtƒ}t | dtƒdk�st‚t |dtƒdk�s&t‚t |dtƒdk�s<t‚t| dtƒdk�sRt‚t|dtƒdk�sht‚t|dtƒdk�s~t‚d S )Nrx   ri   Tra   r_   FZGF_IRRED_METHODzben-orZrabinÚotherc                   S   s   t dgdtƒS )Nrx   ri   )r/   rG   r[   r[   r[   r\   rƒ   Ô  r„   z'test_gf_irreducible_p.<locals>.<lambda>r€   é   é   é   rl   rr   rk   )r0   rG   r~   rT   r1   ÚconfigÚsetupr/   rJ   ÚKeyErrorr   rš   r[   r[   r\   Útest_gf_irreducible_p¾  s4      " "
  r©   c                  C   s¤  t g dtƒdg fkst‚t dgdtƒdg fks2t‚t ddgdtƒdddgdfgfksXt‚tg dtƒdkslt‚tdgdtƒdks‚t‚tddgdtƒdksšt‚tdddœdtƒ} t| dtƒdksÀt‚t | dtƒdddgdfgfksât‚dddd	g} t| dtƒdk�st‚t | dtƒdddgdfdd
gd
fgfk�s2t‚t| dtƒddd
gk�sNt‚dddd
ddd
ddddg} t | dtƒdddgdfddgdfdd
gdfgfk�s t‚d S )Nri   r   r_   T)ri   r   Fr^   r}   rc   r`   ra   rl   )r2   rG   rT   r4   r
   r3   r�   r[   r[   r\   Útest_gf_squarefreeç  s4    &
ÿ

ÿÿ



þÿrª   c                  C   s|   t  ddddddddddg
¡} t  ddddddddddg
¡}d}t||t ƒ}t| |||t ƒ}t| |||t ƒ}||ksxt‚d S )Nr`   r   r_   ra   )rG   r~   rD   rC   r    rT   )rt   rv   rW   rŸ   r›   Zh1r[   r[   r\   Útest_gf_frobenius_map  s    r«   c                  C   sD  t dddddddgdƒ} ddddddgddddd	dgdd	d	dd
dgddd
dddgddd
dddgdd
ddd
dgg}ddddddgddddddgddddddgg}t| dtƒ|ks²t‚t|dtƒ|ksÆt‚t| dtƒddgdddgddddggksòt‚t ddddd
d
dddg	¡} t ddddddddgddddd
dddgdd	ddddddgddd	ddd	ddgddddddddgd	ddd	ddd
dgdddd
ddddgddddddddgg¡}ddddddddgddddddddgddddd
dddgg}t| dtƒ|k�søt‚t|dtƒ|k�st‚t| dtƒddgddddgddddd	ggk�s@t‚d S )Nr_   éýÿÿÿrd   ri   r   ra   r^   r}   rl   rr   r€   rc   rx   r`   rS   r£   )r   r5   rG   rT   r6   r;   r~   )rt   ÚQÚVr[   r[   r\   Útest_gf_berlekamp  sH    ûþ
ÿù	þ
ÿr¯   c               :   C   sÞ  t tdƒtdƒdœdtƒ} ddddddgdfdddddddddddgdfg}t| dtƒ|ks`t‚t| dtƒ|kstt‚t tdƒtdƒdœdtƒ} ddgdfdddgdfdddddddgd	f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g7d
fg}t| dtƒ|k�sFt‚t| dtƒ|k�s\t‚t tdƒtdƒtdƒtdƒtdƒdœd	tƒ} dddgdfdddddgdfg}t| d	tƒ|k�s¾t‚t| d	tƒ|k�sÔt‚t dddddddddddg¡} ddgdfddddddddddg
dfg}t| dtƒ|k�s2t‚t| dtƒ|k�sHt‚tttd t  	¡ ƒƒƒ}t dddd!œ|tƒ} dd"d#gdfdd$d%d&d'd(d)d*d+g	d,fdd-d.d/d0d1gdfg}t| |tƒ|k�sÄt‚t| |tƒ|k�sÚt‚d S )2Nr_   rd   )r¥   r   ri   r   rr   r`   ©é?   r   ra   rl   )rl   r^   rc   ra   r_   r^   é   i¥  i´  i  iE  iÈ  rR   iA  i½  én   i/  i  i¶  é—   éF   iß  éz   r€   i)  é €  ©r¥   r_   r   éÊX  é0
 ilý  i	H i#*  i1  i  iªÍ  iÁW i„I rc   éó;  é.s éYJ é,q é¯h )
r
   rG   r7   rT   r8   r~   rI   ÚintrH   Úevalf)rt   rv   rW   r[   r[   r\   Útest_gf_ddf<  s’    ÿ
&                                  þþý,ÿ 
ÿþrÂ   c                  C   s^   t  dddddg¡} t  dddgdddgg¡}t| ddt ƒ|ksDt‚t| ddt ƒ|ksZt‚d S )Nr_   r   r`   ra   )rG   r~   r9   rT   r:   rˆ   r[   r[   r\   Útest_gf_edfg  s    rÃ   c                  C   sx   t  dddddddddddddddddg¡} t  dddddddddg	dddddddddg	g¡}t| ddt ƒ|kstt‚d S )Nr_   r   r}   r`   )rG   r~   r9   rT   rˆ   r[   r[   r\   Útest_issue_23174o  s    ,2rÄ   c                  C   sê
  t g dtƒdg fkst‚t dgdtƒdg fks2t‚t ddgdtƒdddgdfgfksXt‚tg dtƒdg fkspt‚tdgdtƒdg fksŠt‚tddgdtƒdddggfks¬t‚t dd¡ tg dtƒdg fksÐt‚tdgdtƒdg fksêt‚tddgdtƒdddggfk�st‚t dd¡ tg dtƒdg fk�s4t‚tdgdtƒdg fk�sPt‚tddgdtƒdddggfk�stt‚t dd¡ tt g ¡dtƒdg fk�s t‚tt dg¡dtƒdg fk�sÂt‚tt ddg¡dtƒdddggfk�sìt‚t dddddg¡d } }dddgdfddgdfdddgdfgf}t dd¡ t | |tƒ|k�sPt‚t dd¡ t | |tƒ|k�srt‚t dd¡ t | |tƒ|k�s”t‚dddgddgdddggf}t dd¡ t| |tƒ|k�sÒt‚t dd¡ t| |tƒ|k�sôt‚t dd¡ t| |tƒ|k�st‚tdd	dd	d
d	dgdƒd } }dddgdfdddgdfddddgdfgf}t dd¡ t | |tƒ|k�s‚t‚t dd¡ t | |tƒ|k�s¤t‚t dd¡ t | |tƒ|k�sÆt‚ddddgd } }dddgdfddgdfgf}t dd¡ t | |tƒ|k�st‚t dd¡ t | |tƒ|k�s8t‚t dd¡ t | |tƒ|k�sZt‚ddddddddddg
d } }dddgdfdddgdfddddddgdfgf}t dd¡ t | |tƒ|k�sÊt‚t dd¡ t | |tƒ|k�sìt‚t dd¡ t | |tƒ|k�st‚tdddœdtƒd } }ddddddddddddddddddgdfdddddddddddddddddgdfgf}t dd¡ t | |tƒ|k�s t‚t dd¡ t | |tƒ|k�sÂt‚t dd¡ t | |tƒ|k�sät‚ttdƒtdƒdœdtƒd } }dddgdfddgdfdddgdfdddgdfdddgdfdddddgdfdddddgdfdddddddddg	dfdddddddddg	dfg	f}t dd¡ t | |tƒ|k�s¶t‚t dd¡ t | |tƒ|k�sØt‚t dd¡ t | |tƒ|k�sút‚ttdƒtdƒdœdtƒd } }dddgdfdddgdfddddgdfddddgdfdddddddgdfdddddddgdfdddddddgdfdddddddgdfdddddddgdfdddddddgdfdddddddgdfdddddddgdfdddddddgdfgf}t dd¡ t | |tƒ|k�s*t‚t dd¡ t | |tƒ|k�sLt‚t dd¡ t | |tƒ|k�snt‚tt	t
dt  ¡ ƒƒƒ}tddddœ|tƒ} t| |tƒdk�s°t‚ddddgdfdddddgdfdddd d!gdfdd"d#d$d%d&gdfgf}t dd¡ t | |tƒ|k�	st‚t dd¡ t | |tƒ|k�	s:t‚ddddgdddddgdddd d!gdd"d#d$d%d&ggf}t dd¡ t| |tƒ|k�	s’t‚t dd¡ t| |tƒ|k�	s´t‚tt	t
d't  ¡ ƒƒƒ}t dddd(d)d*d+g¡} t| |tƒdk�	sút‚ddd,d(gdfddd-d.d/gdfgf}t dd¡ t | |tƒ|k�
s@t‚t dd¡ t | |tƒ|k�
sbt‚ddd,d(gddd-d.d/ggf}t dd¡ t| |tƒ|k�
s t‚t dd¡ t| |tƒ|k�
sÂt‚t dd0¡ ttd1d2„ ƒ t d¡ d S )3Nri   r   r_   ZGF_FACTOR_METHODZ	berlekampZ
zassenhausZshoupr`   r¬   rd   r^   ra   rc   r}   rr   r€   )é    r   rx   rl   r°   r·   r¸   Tr¹   rº   i‘> i‰. iS it  iQ iËÝ  i:  iW{  r»   r¼   r½   r¾   r¿   r¤   r²   é)   é'   é&   é,   rp   é   é   r¢   c                   S   s   t ddgdtƒS )Nr_   ri   )r=   rG   r[   r[   r[   r\   rƒ   J  r„   z test_gf_factor.<locals>.<lambda>)r=   rG   rT   r<   r¦   r§   r~   r   r
   rI   rÀ   rH   rÁ   r4   rJ   r¨   )rt   rW   rv   r[   r[   r\   Útest_gf_factorv  s6   &"$$ "*
þþþ0*(ÿ 
ø
 ôý
ýÿ
ÿrÌ   c               
   C   sx  t ddddgdƒdkst‚tdddƒdgks0t‚td	ddƒg ksDt‚td
ddƒg ksXt‚td	ddƒd	ddddgksvt‚tdddƒdddgks�t‚td
d	dƒd	dd
dddgks°t‚tdddgdƒddgksÌt‚tdd	dgdƒg ksät‚d	dlm}  | ddƒD ]@}ttdd	g|d |tƒd|tƒ}t||ƒt	t
d|ƒƒksút‚qútddddgdƒdgk�sZt‚tddddgdƒd	dgk�szt‚tdd
ddgdƒd	ddgk�sœt‚tdddgddƒdddddddddg	k�sÊt‚tddddgddƒdddgk�sît‚tddddgddƒd d!d"gk�st‚tdddgd#ƒdddd$d%d&gk�s8t‚tddddd'gd(ƒd)d'gk�sZt‚tdddgdƒg k�stt‚d S )*Nr_   rx   r`   rc   ri   iœ  ra   r^   r   rl   rS   r¥   r€   é   rÊ   )Ú
primerangeéd   rk   éß   r£   rj   é   é(   rK   é:   éC   rL   rp   r¤   é2   rN   é“   é¾   éê   é½   ép   é‹   é¯   rË   é<   rr   )r>   rT   r?   r@   Zsympy.ntheoryrÎ   r   r   rG   ÚlistÚrangerA   rB   )rÎ   rW   rt   r[   r[   r\   Útest_gf_csolveN  s8       "  ÿÿ
$$&"rà   N)sZsympy.polys.galoistoolsr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   Zsympy.polys.polyerrorsrE   Zsympy.polysrF   r¦   Zsympy.polys.domainsrG   Zsympy.core.numbersrH   Zsympy.ntheory.generaterI   Zsympy.testing.pytestrJ   r]   re   rf   rh   rn   ro   rw   rz   r{   r|   r   r�   rŒ   rŽ   r�   r‘   r’   r”   r•   r–   r—   r™   rœ   r    r¡   r©   rª   r«   r¯   rÂ   rÃ   rÄ   rÌ   rà   r[   r[   r[   r\   Ú<module>   sT   ÿ 	

N#

)!
*+ Y