
    \h3&                        S SK Jr  S SKJrJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJr  S SKJr  S S	KJr  S S
KJrJr  S SKJrJrJr  S SKJr  S rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.g)    )prod)QQZZ)xtheta)	factorint)n_order)Polycyclotomic_poly)DomainMatrix)	round_two)StructureError)
PowerBasisto_col)prime_decomp_two_elt_rep*_check_formal_conditions_for_maximal_order)raisesc                    ^^^ [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      mTR	                  S[
        R                  " S[        5      -  5      mUR	                  [
        R                  " S[        5      S S 2S S24   5      m[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        g )	N            c                     > [        T 5      $ Nr   )Bs   b/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/numberfields/tests/test_primes.py<lambda>@test_check_formal_conditions_for_maximal_order.<locals>.<lambda>       #Ma#P    c                     > [        T 5      $ r   r   )Cs   r   r    r!      r"   r#   c                     > [        T 5      $ r   r   )Ds   r   r    r!      r"   r#   )
r
   r   r   r   submodule_from_matrixr   eyer   r   r   )TAr   r%   r'   s     @@@r   .test_check_formal_conditions_for_maximal_orderr,      s    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	 0 0B 73B3 ?@A
>PQ
>PQ
>PQr#   c                  &   Sn [        [        U 5      5      n[        U5      u  p#S Hh  n[        XA5      nU HT  nXB-  UR                  U-  -   nUR                  5       n[        XU5      n	XR                  :w  d  MD  XB-  X-  -   n
X:X  a  MT   e   Mj     g )N            r   )r
   r   r   r   alphabasis_element_pullbacksr   )ellr*   ZKdKpPPiHgensbH2s              r   test_two_elt_repr?   !   s    
C_S!"Aq\FBB rxx{"A,,.DTq)AHH}TAD[ww  r#   c                     Sn [        [        U 5      5      n[        U5      u  p#[        XX2S9n[	        U5      S:X  d   eUS   nUR                  X-  5      nXeR                  :X  d   eUR                  SU-  5      S:X  d   eg )Nr.   r7   r6      r   r   )r
   r   r   r   len	valuatione)r8   r*   r6   r7   r9   P0vs          r   test_valuation_at_prime_idealrH   7   s    	A_Q Aq\FBQb(Aq6Q;;	
1B
QTA99<<""""r#   c                  J   [        [        S5      5      n [        [        S 5        [	        SU 5      n[        U5      S:X  d   eUS   nUR                  S:X  d   eUR                  S:X  d   eUS-  UR                  :X  d   eUS-  U:X  d   eUS-  SUR                  -  :X  d   eg )Nr.   c                      [        S5      $ )Nr.   )r    r#   r   r    test_decomp_1.<locals>.<lambda>I   s    |Ar#   rB   r      )	r
   r   r   
ValueErrorr   rC   rE   fr6   )r*   r9   rF   s      r   test_decomp_1rP   D   s     	_Q A
:./QAq6Q;;	
1B4419944199q5BEE>>q5B;;q5AIr#   c                      Sn [        [        U 5      5      nS H_  n[        X 5      nU S-
  U-  n[        X!5      n[	        U5      U:X  d   eU H'  nUR
                  S:X  d   eUR                  U:X  a  M'   e   Ma     g )Nr.   r/   rB   )r
   r   r	   r   rC   rE   rO   )r5   r*   r8   f_expg_expr9   r:   s          r   test_decomp_2rT   U   s{    
C_S!"AqU"1vB44199445= =  r#   c            
          [        [        S-  S-
  5      n 0 n[        XS9u  p#S HS  n[        X@X2UR	                  U5      S9n[        U5      S:X  d   eUS   R                  S:X  d   eUS   S-  XB-  :X  a  MS   e   g )Nr   #   radicals)r   r   r.   r7   r6   radicalrB   r   r
   r   r   r   getrC   rE   r*   radr6   r7   r8   r9   s         r   test_decomp_3r_   c   s    Q!Vb[A
Cq'FB "SWWQZ@1v{{tvv{{tQw!$	 r#   c            
          [        [        S-  S-
  5      n 0 n[        XS9u  p#S HS  n[        X@X2UR	                  U5      S9n[        U5      S:X  d   eUS   R                  S:X  d   eUS   S-  XB-  :X  a  MS   e   g )Nr      rW   )r   r.   rY   rB   r   r[   r]   s         r   test_decomp_4rb   p   s    Q!Vb[A
Cq'FB "SWWQZ@1v{{tvv{{tQw!$	 r#   c            
        ^ S H  n [        [        S-  U -
  5      n0 n[        XS9u  p4Sn[        XQXCUR	                  U5      S9mU S-  S:X  aR  [        T5      S:X  d   e[        U4S j[        S5       5       5      (       d   e[        S T 5       5      XS-  :X  d   eM  U S-  S	:X  d   e[        T5      S:X  d   eTS
   R                  S:X  d   eTS
   R                  S:X  d   eTS
   R                  5       XS-  :X  a  M   e   g )N)ir   rW   rY      rB   c              3   z   >#    U  H0  nTU   R                   S :H  =(       a    TU   R                  S :H  v   M2     g7frB   NrE   rO   ).0ir9   s     r   	<genexpr> test_decomp_5.<locals>.<genexpr>   s1     EHqqtvv{2qtvv{2Hs   8;c              3   >   #    U  H  oUR                   -  v   M     g 7fr   rE   ri   r:   s     r   rk   rl      s     -1RBDD1   r   r   )r
   r   r   r   r\   rC   allranger   rE   rO   as_submodule)dr*   r^   r6   r7   r8   r9   s         @r   test_decomp_5ru   }   s    a!1+"SWWQZ@q5A:q6Q;;EE!HEEEEE-1--777q5A::q6Q;;Q466Q;;Q466Q;;Q4$$&!&000 r#   c            	      0   [        [        S-  [        S-  -   S[        -  -
  S-   5      n 0 n[        XS9u  p#Sn[        X@X2UR	                  U5      S9n[        U5      S:X  d   e[        S U 5       5      (       d   e[        S U 5       5      XB-  :X  d   eg )Nr   r   re   rW   rY   c              3   r   #    U  H-  oR                   UR                  s=:H  =(       a    S :H  Os  v   M/     g7frg   rh   ro   s     r   rk    test_decomp_6.<locals>.<genexpr>   &     -1Rttrtt  q  1   57c              3   >   #    U  H  oUR                   -  v   M     g 7fr   rn   ro   s     r   rk   rx           %1RBDD1rp   )r
   r   r   r   r\   rC   rq   r   r]   s         r   test_decomp_6r}      s     	Q!Va1f_q1u$q()A
Cq'FB	AQb<Aq6Q;;-1-----%1%%---r#   c                  P   [        [        S-  [        S-  -   S[        -  -
  S-   5      n [        R                  " U 5      nSnUR	                  U5      nUR                  5       n[        U5      S:X  d   e[        S U 5       5      (       d   e[        S U 5       5      X$-  :X  d   eg )Nr   r   re   c              3   r   #    U  H-  oR                   UR                  s=:H  =(       a    S :H  Os  v   M/     g7frg   rh   ro   s     r   rk    test_decomp_7.<locals>.<genexpr>   ry   rz   c              3   >   #    U  H  oUR                   -  v   M     g 7fr   rn   ro   s     r   rk   r      r|   rp   )	r
   r   r   alg_field_from_polyprimes_abovemaximal_orderrC   rq   r   )r*   Kr8   r9   r6   s        r   test_decomp_7r      s    Q!Va1f_q1u$q()A
q!A	A	qA	
	Bq6Q;;-1-----%1%%---r#   c                  D   [         S-  S[         S-  -  -   S[         -  -
  S-   [         S-  S[         S-  -  -   S[         -  -   S-
  [         S-  S[         S-  -  -   [         -
  S-   [         S-  S[         S-  -  -   S[         -  -
  S-
  [         S-  S[         S-  -  -   S-   [         S-  S[         S-  -  -   S[         -  -   S-
  [         S-  S[         S-  -  -   S-   [         S-  S[         S-  -  -   S[         -  -   S-
  [         S-  S[         S-  -  -   [         -
  S-   [         S-  S[         S-  -  -   S[         -  -
  S-   [         S-  S[         S-  -  -   S[         -  -
  S-   [         S-  S[         S-  -  -   S[         -  -   S-
  [         S-  S[         S-  -  -   S[         -  -
  S-   [         S-  S[         S-  -  -   S[         -  -
  S-   [         S-  S	[         S-  -  -   S[         -  -   S-
  [         S-  S
[         S-  -  -   S	[         -  -
  S-   4n S nSnU  H  n[        U5      n0 n[        XES9u  pgUR                  5       nX-  n	[	        U	5      n
U
 HM  nUR                  U5      n[        XXvUS9n[        S U 5       5      nX-  nU(       a
  U" XKXX5        X:X  a  MM   e   M     g )Nr   r   r   r   rM   rB   r.   re   	      r1   c                     [        S5        [        XU5        U H  n[        SU< S35        M     [        SU5        [        SU5        [        SXE:H   35        g)z2Useful for inspection, when running test manually.z====================z  ()zI: zJ: zEqual: N)print)r*   r8   rZ   r9   IJr:   s          r   displaytest_decomp_8.<locals>.display   sP    haGBCvQ-  eQeQx !r#   FrW   rY   c              3   >   #    U  H  oUR                   -  v   M     g 7fr   rn   ro   s     r   rk    test_decomp_8.<locals>.<genexpr>   s     *"Xrp   )r   r
   r   discriminantr   r\   r   r   )casesr   inspectgr*   r^   r6   r7   dT	f_squaredFr8   rZ   r9   r   r   s                   r   test_decomp_8r      s    	
QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!#	QQ!Va!e#a'	QQ!Va	QQ!Va!e#a'	QQ!Va	QQ!Va!e#a'	QQ!Va!#	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	QQ!Va!e#a'	Qa1fq1u$r)!E$" GG1+^^H	i AggajGQbAA***AAg!/6M6  r#   c                      [        [        S5      5      n [        SU 5      S   nUR                  S:X  d   eUR	                  5       SUR
                  -  :X  d   eUS:w  d   eg )Nr.   r   r   rM   )r
   r   r   rO   rs   r6   r*   rF   s     r   test_PrimeIdeal_eqr      s\     	_Q A	a	A	B44199??BEE	)))7N7r#   c                      [        [        S5      5      n [        SU 5      S   nUSUR                  -  -   UR	                  5       :X  d   eg )Nr.   r   )r
   r   r   r6   rs   r   s     r   test_PrimeIdeal_addr      sE    _Q A	a	A	B BEE	>R__....r#   c                     [         R                  " [        [        S-  S-   5      5      n U R	                  S5      S   n[        U5      S:X  d   eU R	                  S5      S   n[        U5      S:X  d   e[         R                  " [        [        S-  S-   5      SS9n U R	                  S5      S   n[        U5      S	:X  d   eU R	                  S5      S   n[        U5      S:X  d   eg )
Nr   r.   r   z(2, 3*_x/2 + 1/2)r   z(3)r3   )aliasz(2, 3*alpha/2 + 1/2))r   r   r
   r   r   str)kfrps     r   test_strr      s    
tAqD1H~.A
..
A
Cs8****
..
A
Cs8u 	tAFQJ/w?A
..
A
Cs8----
..
A
Cs8ur#   c                      [        [        S-  S-   5      n [        U 5      u  p[        SXUS9n[	        US   5      S:X  d   eUS   R	                  [
        S9S:X  d   eUS   R	                  [
        SS	9S
:X  d   eg )Nr   r.   rA   r   z[ (2, (3*x + 1)/2) e=1, f=1 ])	field_genz![ (2, (3*theta + 1)/2) e=1, f=1 ]T)r   	just_gensz(2, (3*theta + 1)/2))r
   r   r   r   reprr   )r*   r6   r7   r9   s       r   	test_reprr     s    QTAXAq\FBQR(A!:8888Q499u9%)LLLLQ499u959OOOOr#   c                     [         R                  " [        [        S-  [        S-  -   S[        -  -
  S-   5      5      n U R	                  5       nU R                  S5      nUS   nUR                  [        / SQ5      SS9nUR                  [        / SQ5      SS9nUR                  U5      nXe:X  d   eU " [        SS5      [        S	S5      [        S
S5      /5      nU " [        SS5      [        SS5      [        SS5      /5      nUR                  U5      nXe:X  d   eU R                  U5      nU R                  U5      nUR                  U5      nXe:X  d   eg )Nr   r   re   )      r2   rM   )denom)r2   r   r   r2   r   r   r   )r   r   r
   r   r   r   parentr   reduce_element
reduce_ANP
to_alg_numreduce_alg_num)r   Zkr9   r   aa_bar_expecteda_bars          r   test_PrimeIdeal_reducer     s;   
tAFQ!VOa!e$;a$?@AA	
	B	qA
A$C 			&&a	0AYYvj1Y;Nq!E""" 	
2b!9bQiB
+,A1a"Q(Br1I67NNN1E""" 	
QA\\.1Nq!E"""r#   c                      [         R                  " [        [        S-  [        S-  -   S[        -  -
  S-   5      5      n U R	                  S5      nUS   R
                  R                  S5      (       d   eg )Nr   r   re   r   )r   r   r
   r   r   r3   equiv)r   r9   s     r   test_issue_23402r   %  s^    
tAFQ!VOa!e$;a$?@AA	qAQ4::Ar#   N)/mathr   sympyr   r   	sympy.abcr   r   sympy.ntheoryr   sympy.ntheory.residue_ntheoryr	   sympy.polysr
   r   sympy.polys.matricesr   sympy.polys.numberfields.basisr   #sympy.polys.numberfields.exceptionsr    sympy.polys.numberfields.modulesr   r   sympy.polys.numberfields.primesr   r   r   sympy.testing.pytestr   r,   r?   rH   rP   rT   r_   rb   ru   r}   r   r   r   r   r   r   r   r   rK   r#   r   <module>r      s       # 1 - - 4 > ?  (R,
#"!

12
.	.-`/$P#2r#   