
    sg                         d 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
 ddlmZ ddlmZ dd	lmZ 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 ddlmZmZm Z  d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(y)z<Tests for functions for generating interesting polynomials.     )Add)symbols)sqrt)prime)ZZ)Poly)permute_signs)raises)swinnerton_dyer_polycyclotomic_polysymmetric_polyrandom_polyinterpolating_polyfateman_poly_F_1dmp_fateman_poly_F_1fateman_poly_F_2dmp_fateman_poly_F_2fateman_poly_F_3dmp_fateman_poly_F_3)xyzc                     t        t        d        t        dt        d      t	        t        dz  dz
        k(  sJ t        dt              t        dz  dz
  k(  sJ t        dt              t        dz  dt        dz  z  z
  dz   k(  sJ t        dt              t        d	z  d
t        dz  z  z
  dt        dz  z  z   dt        dz  z  z
  dz   k(  sJ t        dd      D  cg c]  } t        t        |              }} t        t        dd      j                         D  cg c]  } | j                  d       c}       t        t        t        |      D  cg c]  } t        |  j                  d       c}             k(  sJ y c c} w c c} w c c} w )Nc                  "    t        dt              S Nr   )r   r        V/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_specialpolys.py<lambda>z+test_swinnerton_dyer_poly.<locals>.<lambda>   s    3Aq9 r      Tpolys      
         (      i`  i  i@     )r
   
ValueErrorr   r   r   ranger   r   str	all_rootsnsortedr	   r   )ips     r   test_swinnerton_dyer_polyr3      sb   
:9:1D1T!Q$(^CCC1%A1111%A1a4!);;;;	1A1a4#ad(*SAX5;< < < "'q!-AeAh-A-Qd+55791A 9 
}Q/?@!a1@ABC C C 	.9@s   E=FFc                  .   t        t        d        t        dt        d      t	        t        dz
        k(  sJ t        dt              t        dz
  k(  sJ t        dt              t        dz   k(  sJ t        dt              t        dz  t        z   dz   k(  sJ t        dt              t        dz  dz   k(  sJ t        dt              t        dz  t        dz  z   t        dz  z   t        z   dz   k(  sJ t        d	t              t        dz  t        z
  dz   k(  sJ y )
Nc                  "    t        dt              S r   )r   r   r   r   r   r   z&test_cyclotomic_poly.<locals>.<lambda>/   s    q!4 r   r    Tr!   r#   r&   r$   r*   r)   )r
   r+   r   r   r   r   r   r   test_cyclotomic_polyr6   .   s    
:451at,QU;;;1a AE)))1a AE)))1a AqD1HqL0001a AqD1H,,,1a AqD1a4K!Q$$6$:Q$>>>>1a AqD1HqL000r   c                     t        t        d        t        t        d        t        dt        t        t
        d      t        t        t        z   t
        z         k(  sJ t        dt        t        t
        fd      t        t        t        z   t
        z         k(  sJ t        dt        t        t
              dk(  sJ t        dt        t        t
              t        t        z   t
        z   k(  sJ t        dt        t        t
              t        t        z  t        t
        z  z   t        t
        z  z   k(  sJ t        dt        t        t
              t        t        z  t
        z  k(  sJ y )	Nc                  6    t        dt        t        t              S )Nr   r   r   r   r   r   r   r   z%test_symmetric_poly.<locals>.<lambda><   s    ~b!Q: r   c                  6    t        dt        t        t              S )Nr*   r:   r   r   r   r   z%test_symmetric_poly.<locals>.<lambda>=   s    ~aAq9 r   r    Tr!   r   r#   r&   )r
   r+   r   r   r   r   r   r   r   r   test_symmetric_polyr<   ;   s    
::;
:9:!Q1D1T!a%!)_DDD!aAYd3tAEAIFFF!Q1%***!Q1%Q222!Q1%1qsQqS888!Q1%1Q...r   c                  \   t        t        dddd      } t        |       j                         dk(  sJ t	        d t        |       j                         D              du sJ t        t        dddd      } | j                         dk(  sJ t	        d | j                         D              du sJ y )	Nr%   d   Fr!   c              3   <   K   | ]  }d |cxk  xr dk  nc   ywr>   r?   Nr   .0coeffs     r   	<genexpr>z#test_random_poly.<locals>.<genexpr>L   s     Etu###E   Tc              3   <   K   | ]  }d |cxk  xr dk  nc   ywrA   r   rB   s     r   rE   z#test_random_poly.<locals>.<genexpr>Q   s     ?tu###?rF   )r   r   r   degreeallcoeffs)polys    r   test_random_polyrL   H   s    q"dCu5D:"$$$Ed1B1B1DEEMMMq"dCt4D;;=B???4GGGr   c                     t        d      \  } }}}}}}}t        dt              dk(  sJ t        dt              |k(  sJ t        dt              |t        |z
  z  | |z
  z  |t        | z
  z  || z
  z  z   k(  sJ t        dt              |t        |z
  z  t        |z
  z  | |z
  | |z
  z  z  |t        | z
  z  t        |z
  z  || z
  ||z
  z  z  z   |t        | z
  z  t        |z
  z  || z
  ||z
  z  z  z   k(  sJ t        dt              |t        |z
  z  t        |z
  z  t        |z
  z  | |z
  | |z
  z  | |z
  z  z  |t        | z
  z  t        |z
  z  t        |z
  z  || z
  ||z
  z  ||z
  z  z  z   |t        | z
  z  t        |z
  z  t        |z
  z  || z
  ||z
  z  ||z
  z  z  z   |t        | z
  z  t        |z
  z  t        |z
  z  || z
  ||z
  z  ||z
  z  z  z   k(  sJ t        t        d        t        t        d        t        t        d	        t        t        d
        t        t        d        t        dt        dd      dk(  sJ t        dt        dd      dk(  sJ t        dt        dd      t        dz   k(  sJ y )Nzx:4, y:4r   r    r#   r&   r$   c                  2    t        dt        t        dfd      S Nr#   )r    r&   )r   r   r   r   r   r   z)test_interpolating_poly.<locals>.<lambda>h   s    1a!Q0 r   c                  @    t        dt        t        t        z   dfd      S rO   r   r   r   r   r   r   r   z)test_interpolating_poly.<locals>.<lambda>j   s    1a!a%V4 r   c                  @    t        dt        t        z   t        dfd      S rO   rQ   r   r   r   r   z)test_interpolating_poly.<locals>.<lambda>l   s    1a!eaVV4 r   c                      t        dddd      S )Nr#   r&   r$   r*   )r)      r   r   r   r   r   z)test_interpolating_poly.<locals>.<lambda>n   s    1a0 r   c                      t        dddd      S )Nr#   r&   rT   )r)   rU   r'   rV   r   r   r   r   z)test_interpolating_poly.<locals>.<lambda>p   s    1a3 r   )r    r#   )r&   r$   )r   r   r   r
   r+   )x0x1x2x3y0y1y2y3s           r   test_interpolating_polyr`   T   s   %,Z%8"BBBBa#q(((a#r)))a#
AFR"WAFR"W 556 6 6 a#
AFQVrBwb12
AFQVrBwb12	3
AFQVrBwb12	33 3 3
 a#
AFQVa"f%R"r'':BG'DE
AFQVa"f%R"r'':BG'DE	F
AFQVa"f%R"r'':BG'DE	F 	AFQVa"f%R"r'':BG'DE	FF F F : 1 2
: 5 6
: 5 6
: 1 2
: 4 5aFF3q888aFF3q888aFF3q1u<<<r   c                  p   t        d      \  } }}t        dt              \  }}}| ||fD cg c]  }|j                  j	                          c}|||gk(  sJ t        d      \  } }}t        dt              \  }}}| ||fD cg c]  }|j                  j	                          c}|||gk(  sJ y c c}w c c}w Nr    r&   )r   r   r   repto_listfghFGHts          r   test_fateman_poly_F_1rm   w       q!GAq!"1b)GAq!'(!Qi1QUU]]_1aAY>>>q!GAq!"1b)GAq!'(!Qi1QUU]]_1aAY>>> 2
 2   !B.!B3c                  p   t        d      \  } }}t        dt              \  }}}| ||fD cg c]  }|j                  j	                          c}|||gk(  sJ t        d      \  } }}t        dt              \  }}}| ||fD cg c]  }|j                  j	                          c}|||gk(  sJ y c c}w c c}w rb   )r   r   r   rc   rd   re   s          r   test_fateman_poly_F_2rq      rn   ro   c                  p   t        d      \  } }}t        dt              \  }}}| ||fD cg c]  }|j                  j	                          c}|||gk(  sJ t        d      \  } }}t        dt              \  }}}| ||fD cg c]  }|j                  j	                          c}|||gk(  sJ y c c}w c c}w rb   )r   r   r   rc   rd   re   s          r   test_fateman_poly_F_3rs      rn   ro   N))__doc__sympy.core.addr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   sympy.ntheory.generater   sympy.polys.domains.integerringr   sympy.polys.polytoolsr   sympy.utilities.iterablesr	   sympy.testing.pytestr
   sympy.polys.specialpolysr   r   r   r   r   r   r   r   r   r   r   	sympy.abcr   r   r   r3   r6   r<   rL   r`   rm   rq   rs   r   r   r   <module>r      sg    B  % 9 ( . & 3 '     C"
1
/	H =F	?	?	?r   