U
    	-em                     @   sl  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@mAZAmBZB d dlCmDZD d dlEmFZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZO dd	 ZPd
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/ Zcd0d1 Zdd2d3 Zed4d5 Zfd6d7 Zgd8d9 Zhd:d; Zid<d= Zjd>d? Zkd@dA ZldBdC ZmdDdE ZndFdG ZodHdI ZpdJdK ZqdLS )M    )B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	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 )N1   L   A   c   a   _   i i	 i#  i$  i%  >         )r   rF   AssertionErrorr   r   )UMpuES rZ   c/var/www/html/Darija-Ai-Train/env/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   rS   rZ   rZ   rZ   r[   test_gf_int9   s    rd   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 )Nrc   r^   r   rb   )r   rS   rZ   rZ   rZ   r[   test_gf_degreeB   s    re   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stt ddddgdddgkstt ddddddgdddgkstd S Nr   r^   r_   )r   rS   rZ   rZ   rZ   r[   test_gf_stripI   s    rg   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std S )	N   r^      rR      r         )r   rS   rZ   rZ   rZ   r[   test_gf_truncW   s    "rm   c                   C   s(   t dddddgdtdddgks$td S )Nrh   ri   rj   r^   r   rk   )r	   rF   rS   rZ   rZ   rZ   r[   test_gf_normala   s    rn   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stt|d|ksttdgdddddiksttdgdddddikstd S )NrR   r_      )rh   rk   r   r^   r`   r   rh   )rh   rb   r`   r   )rh   r`   r   rk   
   TZ	symmetricrc   F)r
   rF   rS   r   )fFgrZ   rZ   r[   test_gf_from_to_dicte   s    rv   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std S )Nr^   r      r_      r]   rb   r`   rc   ra   rq   rh   Trr   F)r   rS   r   rZ   rZ   rZ   r[   test_gf_from_to_int_polyx   s    &&ry   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 rf   )r%   rF   rS   rZ   rZ   rZ   r[   
test_gf_LC   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 rf   )r&   rF   rS   rZ   rZ   rZ   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stt tddddgdtddddd	gfkstd S )
Nrh   r   r^   r_   r`   rb   r]   rw      )r'   rF   maprS   rZ   rZ   rZ   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sttg ddtdgksttdgddtd	gksttdgddtdgksttdgddtg kst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sttdgddtg ksttdgddtdgksttdddgddtg ksttdddgddtdddgkst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sttdgdgdtdgksttddgdgdtddgksttdgddgdtddgkst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sttdgdgdtdgksttddgdgdtddgksttdgddgdtddgkst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stt
g g dtg kstt
g dgdtg kstt
dgg dtg kstt
dgdgdtdgkst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st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sttg dtg ksttdgdtd	gkst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 )Nrh   r^   rq   r_   r`   	   r|   r   rb   rk   rw   r]   )r   rF   rS   r   r   r   r   r   r   r   r   r   rZ   rZ   rZ   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st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st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stt d	t|kstt d	t| kst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_   r`   rh   )r   rF   rZ   rZ   rZ   r[   <lambda>       z"test_gf_division.<locals>.<lambda>c                   S   s   t dddgg dtS r   )r   rF   rZ   rZ   rZ   r[   r      r   c                   S   s   t dddgg dtS r   r   rF   rZ   rZ   rZ   r[   r      r   c                   S   s   t dddgg dtS r   r   rZ   rZ   rZ   r[   r      r   r^   r_   r`   rw   r]   rb   r   rk   c                      s   t  dtS Nrw   r   rF   rZ   rs   ru   rZ   r[   r      r   c                      s   t  dtS r   r   rZ   r   rZ   r[   r     r   rh   )	rI   ZeroDivisionErrorr   rF   rS   r   r   r}   rD   )qrrZ   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stt| dtddddgdgfkstt| dtddgdddgfkstt| dtg | fkstd S )Nr^   r_   r`   rb   r]   r   )r   rF   rS   r   rs   rZ   rZ   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_   r`   rh   r|   r]   rk   rb   rq   r   )r   rF   rS   )rt   rZ   rZ   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st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	gkstttdddddgdtdddgdtdgkst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stttdddddgdtdddgdtddgkst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|   rh   r_   r]   r   rw   rq   rk   -   rb   r`   )r   rF   rS   r    r}   rZ   rZ   rZ   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stt tdgtdgdtg dgdgfkstt tg tddgdtg dgddgfkst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std S )Nrh   r^   r_   rk   r`   r   rb   r|   rw   r]   )r!   rF   r}   rS   rZ   rZ   rZ   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stt tg tddgdtddgkstt tddgtg dtddgkst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 Nrh   r_   r^   r   r`   r|   rw   )r"   rF   r}   rS   rZ   rZ   rZ   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stt tg tddgdtg kstt tddgtg dtg kst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#   rF   r}   rS   rZ   rZ   rZ   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stt tdgtdgdtdgdgdgfkstt tg tddgdtddgg dgfkst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std S r   )r$   rF   r}   rS   rZ   rZ   rZ   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std S )Nrh   rw   r`   r^   r   )r-   rF   rS   rZ   rZ   rZ   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stt dddddddddg	ddtd	kstt dddddddddg	ddtd
kstt ddddddddd
g	ddtd
kst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 )Nrb   rh   r      rw   r^   r`   r_   r   r]   rk   )r(   rF   rS   r)   rZ   rZ   rZ   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st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stt||| dtd	dd
dgkstd S )Nr^   r   rh   rb   r   r_   r]   rw   r`   rk   rq   )r*   rF   rS   r+   r}   rs   ru   hrZ   rZ   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stt|||d| dt dddd	gdddd
gfkstt|||d	| dt ddddgd
gfkst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^   rb   r   r   rh   r]   r_   rq   r`   rw   rk   r|   )rF   r}   r    r,   rS   )rs   acbrZ   rZ   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stt tddtdtdkstt td	dtdtdkstd S )
Nr^   rh   Tr_   r`   rb   r]   rk   rw   )r/   r.   rF   rS   rZ   rZ   rZ   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stttdddgdtdksttdd ttdgdtdkstttddgdtdkst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st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 )Nrw   rh   Tr`   r^   FZGF_IRRED_METHODzben-orZrabinotherc                   S   s   t dgdtS )Nrw   rh   )r/   rF   rZ   rZ   rZ   r[   r     r   z'test_gf_irreducible_p.<locals>.<lambda>r            rk   rq   rj   )r0   rF   r}   rS   r1   configsetupr/   rI   KeyErrorr   r   rZ   rZ   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sttddgdtdksttddddt} t| dtdkstt | dtdddgdfgfkst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std S )Nrh   r   r^   T)rh   r   Fr]   r|   rb   r_   r`   rk   )r2   rF   rS   r4   r
   r3   r   rZ   rZ   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^   r`   )rF   r}   rC   rB   r    rS   )rs   ru   rV   r   r   Zh1rZ   rZ   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stt|dt|kstt| dtddgdddgddddggkst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st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^   rc   rh   r   r`   r]   r|   rk   rq   r   rb   rw   r_   rR   r   )r   r5   rF   rS   r6   r;   r}   )rs   QVrZ   rZ   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stt| d	t|kst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stt| |t|kstd S )2Nr^   rc   )r   r   rh   r   rq   r_   ?   r   r`   rk   )rk   r]   rb   r`   r^   r]      i  i  i  iE  i  rQ   iA  i  n   i/  i  i     F   i  z   r   i)     r   r^   r   X  0
 il  i	H i#*  i1  i  i  iW iI rb   ;  .s YJ ,q h )
r
   rF   r7   rS   r8   r}   rH   intrG   evalf)rs   ru   rV   rZ   rZ   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_   r`   )rF   r}   r9   rS   r:   r   rZ   rZ   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_   )rF   r}   r9   rS   r   rZ   rZ   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sttddgdtdddggfksttdd tg dtdg fksttdgdtdg fkst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stttdgdtdg fkstttddgdtdddggfkst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stdddgddgdddggf}tdd t| |t|ksttdd t| |t|kst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sttdd t | |t|ksttdd t | |t|kst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sttdd t | |t|kst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sttdd t | |t|ksttdd t | |t|kst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sttdd t | |t|ksttdd t | |t|kst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st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	sttdd t| |t|k	sttt	t
d't  }tdddd(d)d*d+g} t| |tdk	st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
sttdd t| |t|k
sttdd0 ttd1d2  td d S )3Nrh   r   r^   ZGF_FACTOR_METHODZ	berlekampZ
zassenhausZshoupr_   r   rc   r]   r`   rb   r|   rq   r   )    r   rw   rk   r   r   r   Tr   r   i> i. iS it  iQ i  i:  iW{  r   r   r   r   r   r   r   )   '   &   ,   ro         r   c                   S   s   t ddgdtS )Nr^   rh   )r=   rF   rZ   rZ   rZ   r[   r   J  r   z test_gf_factor.<locals>.<lambda>)r=   rF   rS   r<   r   r   r}   r   r
   rH   r   rG   r   r4   rI   r   )rs   rV   ru   rZ   rZ   r[   test_gf_factorv  s6   &"$$ "*
0*( 

 

r   c                
   C   s  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sttd
d	dd	dd
dddgksttddddgddgksttddddgdd	dgkst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sttdddgd!dddd"d#d$gksttddddd%gd&d'd%gksttdddgdg kstd S )(Nr^   rw   r_   rb   rh   i  r`   r]   r   rk   rR   r   r      r   rj      r   ri      (   rJ   :   C   rK   ro   r   2   rM               p         r   <   rq   )r>   rS   r?   r@   rA   rZ   rZ   rZ   r[   test_gf_csolveN  s,     "  
$$&"r   N)rZ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   Zsympy.polys.polyerrorsrD   Zsympy.polysrE   r   Zsympy.polys.domainsrF   Zsympy.core.numbersrG   Zsympy.ntheory.generaterH   Zsympy.testing.pytestrI   r\   rd   re   rg   rm   rn   rv   ry   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   rZ   rZ   rZ   r[   <module>   sT    	

N#

)!
*+ Y