
    Ed=+                        d Z ddl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mZmZ ddl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&m'Z'm(Z( e'd)d            Z)e'd)d            Z*e'd             Z+e'edfd            Z,e'd*d            Z-d Z.d Z/d Z0d Z1d Z2d Z3ddl4m5Z5 d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=d& Z>d' Z?d( Z@dS )+zIFunctions for generating interesting polynomials, e.g. for benchmarking.     )AddMulSymbolsympifyDummysymbols)Tuple)S)	nextprime)dmp_add_termdmp_negdmp_muldmp_sqr)dmp_zerodmp_one
dmp_grounddup_from_raw_dict	dmp_raise
dup_random)ZZ)dup_zz_cyclotomic_poly)DMP)PolyPurePoly)_analyze_gens)subsetspublic
filldedentNFc                 ,   | dk    rt          d| z            |t          |           nt          d          }| dk    rrddlm} ddlm} d	} |d	          g}t          d	| dz             D ]/}t          |          }|	                     ||                     0 |t          | ||
          S | dk    r	|d	z  d	z
  }nA| d	k    r|dz  d|d	z  z  z
  dz   }n)| dk    r#|dz  d|dz  z  z
  d|dz  z  z   d|d	z  z  z
  dz   }|rt          ||          n|S )a  Generates n-th Swinnerton-Dyer polynomial in `x`.

    Parameters
    ----------
    n : int
        `n` decides the order of polynomial
    x : optional
    polys : bool, optional
        ``polys=True`` returns an expression, otherwise
        (default) returns an expression.
    r   z6Cannot generate Swinnerton-Dyer polynomial of order %sNx   )sqrt   )minimal_polynomial   )polys   
      (      i`  i  i@  )
ValueErrorr   r   (sympy.functions.elementary.miscellaneousr"   numberfieldsr$   ranger   appendr   r   )	nr    r&   r"   r$   paiexs	            8lib/python3.11/site-packages/sympy/polys/specialpolys.pyswinnerton_dyer_polyr7      s    	Av JDqHJ J 	J 	 



#JJ1u ;AAAAAA444444T!WWIq!a% 	 	A!AHHTT!WW!!#q'1E::::Av 8TAX	
a 8TBq!tG^a	
a 8TBq!tG^c!Q$h&QT1C7#+8B???+    c                 @   | dk    rt          d| z            t          t          t          |           t                    t                    }|t          j        ||          }n"t          j        |t          d                    }|r|n|	                                S )a  Generates cyclotomic polynomial of order `n` in `x`.

    Parameters
    ----------
    n : int
        `n` decides the order of polynomial
    x : optional
    polys : bool, optional
        ``polys=True`` returns an expression, otherwise
        (default) returns an expression.
    r   z1Cannot generate cyclotomic polynomial of order %sNr    )
r,   r   r   intr   r   newr   r   as_expr)r1   r    r&   polys       r6   cyclotomic_polyr>   A   s     	Av E?!CE E 	E %c!ffb11266D .xa  |D%**--,44dllnn,r8   c           	      D   t          |          }| dk     s| t          |          k    s|st          d| d|          | st          j        }n.t          d t          |t          |                     D              }|                    dd          s|S t          |g|R  S )zGenerates symmetric polynomial of order `n`.

    Returns a Poly object when ``polys=True``, otherwise
    (default) returns an expression.
    r   z.Cannot generate symmetric polynomial of order z for c                      g | ]}t          | S  )r   ).0ss     r6   
<listcomp>z"symmetric_poly.<locals>.<listcomp>k   s    <<<S!W<<<r8   r&   F)
r   lenr,   r
   Oner   r   r:   getr   )r1   gensargsr=   s       r6   symmetric_polyrJ   \   s     D1u >CII >T >jVWVWVWY]Y]^___ >u<<gdCFF&;&;<<<=88GU## !D 4    r8   c                 v    t          t          ||||          | |          }|r|n|                                S )a\  Generates a polynomial of degree ``n`` with coefficients in
    ``[inf, sup]``.

    Parameters
    ----------
    x
        `x` is the independent term of polynomial
    n : int
        `n` decides the order of polynomial
    inf
        Lower limit of range in which coefficients lie
    sup
        Upper limit of range in which coefficients lie
    domain : optional
         Decides what ring the coefficients are supposed
         to belong. Default is set to Integers.
    polys : bool, optional
        ``polys=True`` returns an expression, otherwise
        (default) returns an expression.
    )domain)r   r   r<   )r    r1   infsuprL   r&   r=   s          r6   random_polyrO   s   s=    , 
1c3//6BBBD,44dllnn,r8   r    yc                   	 t          dd          }t          t                    rt          d|           n|r|t	           j        z  rd}t          |t                    rt          |d|           }n|r|t	          | j        z  rd}|st          t          d                    g }t          fdt          |           D              }t          |           D ]K	|	         z
  z  }t          	fdt          |           D              }|
                    ||z             Lt          d t          ||          D              S )	zConstruct Lagrange interpolating polynomial for ``n``
    data points. If a sequence of values are given for ``X`` and ``Y``
    then the first ``n`` values will be used.
    free_symbolsN:Fz~
            Expecting symbol for x that does not appear in X or Y.
            Use `interpolate(list(zip(X, Y)), x)` instead.c                 &    g | ]}|         z
  S rA   rA   )rB   r4   Xr    s     r6   rD   z&interpolating_poly.<locals>.<listcomp>   s!    ...1qt8...r8   c                 >    g | ]}|k             |         z
  S rA   rA   )rB   jrU   r4   s     r6   rD   z&interpolating_poly.<locals>.<listcomp>   s.    @@@a@qtad{@@@r8   c                     g | ]
\  }}||z  S rA   rA   )rB   coeffrP   s      r6   rD   z&interpolating_poly.<locals>.<listcomp>   s     888XUAq888r8   )getattr
isinstancestrr   r	   rR   r,   r   r   r/   r0   r   zip)
r1   r    rU   Yokcoeffsnumertnumerdenomr4   s
    ``      @r6   interpolating_polyrd      s    
ND	)	)B!S qqq!!$%%	 UAY++ !S qqq!!$%%	 UAY++  @ %> ? ? @ @ 	@ F.....U1XX.../F1XX # #AaD!@@@@@U1XX@@@AeEk""""88VQ88899r8   c                 f   d t          | dz             D             }|d         |d         }}|t          d |dd         D              z   }|dz  t          d |dd         D              z   } |dz   |dz   z  j        | } |dz   d|z  |dz  z  |dz  z   dz
  z  j        | }t          dg|R  }|||fS )	%Fateman's GCD benchmark: trivial GCD c                 L    g | ]!}t          d t          |          z             "S y_r   r\   rB   r4   s     r6   rD   z$fateman_poly_F_1.<locals>.<listcomp>   *    5551s1vv		555r8   r#   r   c                     g | ]}|S rA   rA   rB   rP   s     r6   rD   z$fateman_poly_F_1.<locals>.<listcomp>   s    %%%!A%%%r8   Nr%   c                     g | ]}|d z  S )r%   rA   rn   s     r6   rD   z$fateman_poly_F_1.<locals>.<listcomp>   s    +++q!t+++r8   )r/   r   as_polyr   )	r1   r^   y_0y_1uvFGHs	            r6   fateman_poly_F_1ry      s    55a!e555AtQqTCc%%qu%%%&&AQ++QqrrU+++,,A!!a%!a%!1%A6!a%"S&a-#q&(1,	-6:AQAa7Nr8   c                 *    |d           |d          g}t          |           D ]}t          ||          |g} |d           |d           |d          g}t          d|           D ]"}t          ||          t          |          |g}#| dz
  }t          |t	           |d          |          d| |          }t          |t	           |d          |          d| |          } |d            |d          gg  |d           |d           |d           gg}t          |t	           |d          |          d| |          }	t          ||d|          }
t          ||| |          }t          |	|
| |          }t          | |          }|||fS )rf   r#   r   r%   r!   )r/   r   r   r   r   r   r   )r1   Krt   r4   ru   mUVfWr^   rv   rw   rx   s                 r6   dmp_fateman_poly_F_1r      s   	
1qqttA1XX  Q]]A	
1qqttQQqTTA1a[[ , ,Q]]HQKK+	AAQ
11Q44++Q155AQ
11Q44++Q155A1Q44%1QQqTT11Q44!!A$$/0AQ
11Q44++Q155A!Q1A1aA1aA1Aa7Nr8   c                    d t          | dz             D             }|d         }t          d |dd         D              }t          ||z   dz   dz  g|R  }t          ||z
  dz
  dz  g|R  }t          ||z   dz   dz  g|R  }||z  ||z  |fS )7Fateman's GCD benchmark: linearly dense quartic inputs c                 L    g | ]!}t          d t          |          z             "S rh   rj   rk   s     r6   rD   z$fateman_poly_F_2.<locals>.<listcomp>   rl   r8   r#   r   c                     g | ]}|S rA   rA   rn   s     r6   rD   z$fateman_poly_F_2.<locals>.<listcomp>   s    Aar8   Nr%   r/   r   r   r1   r^   rr   rt   rx   rv   rw   s          r6   fateman_poly_F_2r      s    55a!e555A
A$C122 AcAgkA""""AcAgkA""""AcAgkA""""AQ3!Q;r8   c                 V    |d           |d          g}t          | dz
            D ]}t          ||          |g}| dz
  }t          |t           |d          |dz
            d| |          }t	          t          ||          t          |||          g| |          }t	          t          ||          |g| |          }t          |t          |dz
  |          d| |          }t	          t          ||          |g| |          }t          ||| |          t          ||| |          |fS )r   r#   r   r%   )r/   r   r   r   r   r   r   )	r1   r{   rt   r4   r|   ru   r   ghs	            r6   dmp_fateman_poly_F_2r      s.   	
1qqttA1q5\\  Q]]A	AAQ
11Q44Q//Aq99AA1a 0 011a88AA"Aq))AQAq))1a33AA"Aq))A1aA1a 3 3Q66r8   c                 D    d t           dz             D             }|d         }t           fd|dd         D              }t          | dz   z  |z   dz   dz  g|R  }t          | dz   z  |z
  dz
  dz  g|R  }t          | dz   z  |z   dz   dz  g|R  }||z  ||z  |fS )8Fateman's GCD benchmark: sparse inputs (deg f ~ vars f) c                 L    g | ]!}t          d t          |          z             "S rh   rj   rk   s     r6   rD   z$fateman_poly_F_3.<locals>.<listcomp>  rl   r8   r#   r   c                      g | ]
}|d z   z  S )r#   rA   )rB   rP   r1   s     r6   rD   z$fateman_poly_F_3.<locals>.<listcomp>
  s!    (((Qa!a%j(((r8   Nr%   r   r   s   `      r6   fateman_poly_F_3r     s    55a!e555A
A$C((((!ABB%((()AcAElQ"Q&++++AcAElQ"Q&++++AcAElQ"Q&++++AQ3!Q;r8   c           	         t          | dz   |j        i|          }t          d| dz
            D ]*}t          |gt	          ||          | dz   |dz   |          }+t          |t           |d          | dz
            d| |          }t          t          t          || dz
  |          gt	          | dz
  |          | dz   | |          | |          }t          t          |gt	          | dz
  |          | dz   | |          | |          }t          |t	          | dz
  |          d| dz
  |          }t          t          |gt	          | dz
  |          | dz   | |          | |          }t          ||| |          t          ||| |          |fS )r   r#   r   r%   )	r   oner/   r   r   r   r   r   r   )r1   r{   rt   r4   ru   r   r   r   s           r6   dmp_fateman_poly_F_3r     s   1q5!%.!,,A1a!e__ > >!gammQUAE1==Q
11Q44Q//Aq99AgaQ**+WQUA->->Aq!LLaQR	T 	TAaS'!a%"3"3QUAqAA1aHHAQAq))1a!eQ77AaS'!a%"3"3QUAqAA1aHHA1aA1a 3 3Q66r8   )ringc                     t          dt                    \  } }}}|dz  |z  |dz  z  d|dz  z  |z  |z  z   d|dz  z  |z  z   d|dz  z  z   d|z  z   d|dz  z  |dz  z  z   d|dz  z  |z  z   d|dz  z  z   ||dz  z  z   d|z  |z  z   |z   dz   S )Nx,y,zr%   r!   r'      r+   r#   r   r   Rr    rP   zs       r6   _f_0r   +  s    gr""JAq!Qa46!Q$;1a4!#a1fQh.1a47!A#=!Q$q!tKaPQSTPTfUVhVYZ[\^_[_Y__bcdeghdhbhhklmnknopkppsttwxxxr8   c                  D   t          dt                    \  } }}}|dz  |z  |z  |dz  |dz  z  |dz  z  z   |dz  |dz  z  z   d|dz  z  |z  |z  z   d|dz  z  |z  z   |dz  |dz  z  z   d|dz  z  |z  z   ||dz  z  |z  z   d|z  |dz  z  |z  z   d|z  |dz  z  z   ||z  |dz  z  z   d|z  |z  |dz  z  z   ||z  |z  z   d|z  |z  z   d|z  |dz  z  z   d|z  |z  z   d	|z  z   |dz  |dz  z  z   d|dz  z  |z  z   d|z  |dz  z  z   d
|z  |z  z   d|z  z   d|z  z   dz   S )Nr   r!   r%         r(   ib     i,  i@     iX  ip  r   r   s       r6   _f_1r   /  sr   gr""JAq!Qa46!8ad1a4i1n$q!tAqDy02ad719Q;>AqDJQPQTRSUVRVYVY[\]_`\`Y`abYbbefghjkgkeklmemmprstptuvxyuypyz{p{{  A  BC  C  DE  GH  DH  H  H  KL  MN  KN  OP  RS  OS  KS  S  VX  YZ  VZ  [\  V\  ]^  `a  ]a  Va  a  de  fg  dg  hi  di  i  lo  pq  lq  rs  ls  s  vx  yz  vz  {|  ~  {  v    BE  FG  BG  HI  BI  I  LO  PQ  LQ  Q  TU  WX  TX  YZ  \]  Y]  T]  ]  `b  cd  fg  cg  `g  hi  `i  i  ln  op  lp  qr  tu  qu  lu  u  x{  |}  x}  ~  x    BE  FG  BG  G  JM  NO  JO  O  RV  V  Vr8   c                     t          dt                    \  } }}}|dz  |dz  z  |dz  |dz  z  |z  z   |dz  |z  |dz  z  z   |dz  |dz  z  z   |dz  |dz  z  z   |dz  |z  |z  z   d|dz  z  |z  z   d|dz  z  |z  z   |dz  |dz  z  |z  z   d|dz  z  |dz  z  z
  |dz  |dz  z  z   d|dz  z  |dz  z  z
  ||z  z   d|z  z
  d|z  z   dz
  S )Nr   r   r!   r%   Z      i  r   r   s       r6   _f_2r   3  s   gr""JAq!Qa419q!tAqDy{"QT!VAqD[01a419<q!tAqDyH1a4PQ6RS8SVXYZ\]Y]V]^_V__bdefhieibijkbkknoqrnrstvwswnwxynyy|~  @A  CD  @D  }D  EF  HI  EI  }I  I  LM  OP  LP  QR  TU  QU  LU  U  XZ  [\  ^_  [_  X_  `a  cd  `d  Xd  d  gh  ij  gj  j  mo  pq  mq  q  tv  wx  tx  x  {~  ~  ~r8   c                     t          dt                    \  } }}}|dz  |dz  z  |dz  |dz  z  z   |dz  z   |dz  |dz  z  |z  z   |dz  |z  z   |dz  |dz  z  z   |dz  |dz  z  |dz  z  z   |dz  |z  |dz  z  z   |dz  |z  |z  z   ||dz  z  |dz  z  z   ||dz  z  z   ||z  |dz  z  z   ||z  |dz  z  z   ||z  |dz  z  z   |dz  |z  z   ||dz  z  z   S )Nr   r   r%   r'   r!      r   r   s       r6   _f_3r   7  s   gr""JAq!Qa419q!tAqDy 1a4'!Q$q!t)A+51Q>AadJQPQTRSUVRVYWXZ[W[^[^_ab^bcd^defhiei^iilmoplpqrlrstlttwxyz|}y}w}~  BC  C  xC  C  FG  HI  KL  HL  FL  L  OP  QR  OR  ST  VW  SW  OW  W  Z[  \]  Z]  ^_  ab  ^b  Zb  b  ef  gh  eh  ij  lm  im  em  m  pq  st  pt  uv  pv  v  yz  {|  ~  {  y    r8   c                     t          dt                    \  } }}}|dz   |dz  z  |z  |dz  |dz  z  |dz  z  z
  |dz  |dz  z  |dz  z  z
  d|dz  z  |dz  z  z
  |d	z  |dz  z  |d
z  z  z
  |d	z  |dz  z  |dz  z  z   d|d	z  z  |dz  z  |z  z   d|d	z  z  |dz  z  |dz  z  z
  |d	z  |d
z  z  |dz  z  z
  |dz  |d
z  z  |dz  z  z   d|dz  z  |d
z  z  |dz  z  z   |dz  |z  |dz  z  z
  |d
z  |dz  z  |d
z  z  z   d|d
z  z  |dz  z  |dz  z  z   |d
z  |dz  z  |d
z  z  z
  d|d
z  z  |dz  z  |dz  z  z   d|d
z  z  |dz  z  z   d|d
z  z  |d
z  z  |dz  z  z
  |dz  |dz  z  |d	z  z  z   d|dz  z  |dz  z  |d
z  z  z   |dz  |dz  z  |d	z  z  z
  d|dz  z  |d
z  z  |d
z  z  z   d|dz  z  |d
z  z  |dz  z  z   |dz  |dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  z   d|dz  z  |z  |d
z  z  z
  |dz  |dz  z  z   d|dz  z  |dz  z  z   ||dz  z  |d	z  z  z   d|z  |dz  z  |d
z  z  z   d|z  |dz  z  |d
z  z  z   d|z  |dz  z  |dz  z  z   |d
z  |dz  z  z   d|d
z  z  |d	z  z  z   d|d	z  z  z   d|d
z  z  z   S )Nr   	   r)   r   r!   r      r%   r+   r'   r      r   r   s       r6   _f_4r   ;  s	   gr""JAq!QqD5A:a<!Q$q!t)AqD.(1a42:ad?:Qq!tVAqD[H1a4PQSTPT9UVXYUY>Y\]_`\`abdeae\efgijfj\jjmnoprsosmstuwxtxmxyzmzz}~  @A  CD  @D  ~D  EF  HI  EI  ~I  JK  MN  JN  ~N  N  QR  TU  QU  VW  YZ  VZ  QZ  [\  ^_  [_  Q_  _  bc  ef  bf  gh  jk  gk  bk  lm  op  lp  bp  p  st  uv  xy  uy  sy  z{  }~  z~  s~  @  BC  C  sC  C  FG  IJ  FJ  KL  FL  MN  PQ  MQ  FQ  Q  TU  WX  TX  YZ  \^  Y^  T^  _`  bc  _c  Tc  c  fg  hi  kl  hl  fl  mn  pr  mr  fr  st  vw  sw  fw  w  z{  }~  z~  @  BC  C  zC  DE  GH  DH  zH  H  KL  MN  PQ  MQ  KQ  RS  UV  RV  KV  WX  Z[  W[  K[  [  ^`  ab  de  ae  ^e  fg  ij  fj  ^j  j  mn  op  rs  os  ms  tu  wx  tx  mx  yz  |}  y}  m}  }  @A  CD  @D  EF  HI  EI  @I  JK  MN  JN  @N  N  QR  ST  VW  SW  QW  XY  [\  X\  Q\  ]^  `a  ]a  Qa  a  de  gh  dh  ij  lm  im  dm  no  qr  nr  dr  r  uv  wx  z{  w{  u{  |}  @  |@  u@  AB  DE  AE  uE  E  HJ  KL  NO  KO  HO  PQ  ST  PT  HT  UV  XY  UY  HY  Y  \]  _`  \`  ab  de  ae  \e  fg  ij  fj  \j  j  mn  op  rs  os  ms  tu  wx  tx  mx  yz  |}  y}  m}  }  @A  BC  EF  BF  @F  GH  @H  IJ  LM  IM  @M  M  PQ  ST  PT  UV  XY  UY  PY  Y  \]  ^_  ab  ^b  \b  cd  fg  cg  \g  g  jk  lm  op  lp  jp  qr  tu  qu  ju  u  xy  z{  x{  |}  @  |@  x@  AB  DE  AE  xE  E  HI  JK  HK  LM  OP  LP  HP  QR  TU  QU  HU  U  XZ  [\  X\  ]^  `a  ]a  Xa  bc  ef  bf  Xf  f  ij  lm  im  no  qr  nr  ir  r  uv  wx  z{  w{  u{  |}  @	  |@	  u@	  @	  C	D	  E	F	  H	I	  E	I	  C	I	  I	  L	N	  O	P	  R	S	  O	S	  L	S	  S	  S	r8   c                     t          dt                    \  } }}}|dz   d|dz  z  |z  z
  d|dz  z  |z  z   d|z  |dz  z  z
  d|z  |z  |z  z   d|z  |dz  z  z
  |dz  z
  d|dz  z  |z  z   d|z  |dz  z  z
  |dz  z   S )Nr   r!   r%   r+   r   r   s       r6   _f_5r   ?  s    gr""JAq!QqD51QT6!8a1fQh&1QT1AaCE!G;ac!Q$hFAMPQRSUVRVPVWXPXX[\]^[^_`bc_c[ccfgijfjjjr8   c                     t          dt                    \  } }}}}d|dz  z  |z  d|dz  z  |dz  z  |dz  z  z   d|dz  z  |dz  z  z
  d|z  |dz  z  z
  d|z  |dz  z  z
  d	|z  |z  |dz  z  z   d
|z  |z  |z  |z  z   d|dz  z  |dz  z  |dz  z  z
  d|dz  z  |dz  z  z   |dz  |dz  z  |dz  z  z
  |dz  |dz  z  z   d|dz  z  |dz  z  z   d|dz  z  |dz  z  z   d|dz  z  |dz  z  z
  d|z  |dz  z  z
  S )Nzx,y,z,tiC  r'   -   r!   r%   i  /      ^   r   r+   r   )r   r    rP   r   ts        r6   _f_6r   C  s   B''MAq!Q19Q;AqDAad**R1WQT\9CE!Q$JFAaQRdRUXYZUZ[\U\]^`a]aUaadfghdhijdjkldlmndnnqrstvwswqwxy{|x|q|}~  AB  ~B  rB  B  EF  GH  JK  GK  EK  LM  OP  LP  EP  P  ST  VW  SW  XY  [\  X\  S\  ]^  `a  ]a  Sa  a  de  gh  dh  ij  lm  im  dm  m  pq  rs  uv  rv  pv  wx  z{  w{  p{  {  ~  @A  CD  @D  ~D  EF  HI  EI  ~I  I  LM  NO  QR  NR  LR  ST  VW  SW  LW  W  Z[  \]  Z]  ^_  ab  ^b  Zb  b  br8   c                     t          dt                    \  } }}}d|dz  z  |dz  z  |dz  z  d|dz  z  |dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  z
  d|dz  z  |z  |dz  z  z
  |dz  |dz  z  |dz  z  z   d|dz  z  |dz  z  |z  z   |dz  |dz  z  |dz  z  z
  d|dz  z  |dz  z  |dz  z  z   d|dz  z  |z  |dz  z  z
  d|dz  z  |dz  z  z
  d|dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  z   d|dz  z  |dz  z  |z  z   d|dz  z  |dz  z  |dz  z  z
  d|dz  z  |dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  z
  d|dz  z  |z  |dz  z  z
  d|dz  z  |z  |dz  z  z
  d|dz  z  |z  |dz  z  z
  d|dz  z  |dz  z  |z  z   |dz  |dz  z  |dz  z  z   |dz  |dz  z  |dz  z  z
  d|dz  z  |dz  z  |dz  z  z
  d	|dz  z  |dz  z  |z  z   d|dz  z  |z  |dz  z  z
  d|dz  z  |z  |dz  z  z   d|dz  z  |dz  z  z
  d|dz  z  |dz  z  z   d|dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  z
  d|dz  z  |dz  z  |z  z   d|dz  z  |z  |dz  z  z
  d|dz  z  |z  |dz  z  z
  d|dz  z  |z  |dz  z  z   d|z  |dz  z  |z  z   d|z  |dz  z  |dz  z  z
  d|z  |z  |z  z
  d|z  |dz  z  z   d|dz  z  z
  d|z  |dz  z  z   S )
Nr   r'   r+   r%   r!   r   r   r)   r   r   r   s       r6   _w_1r   G  sS   gr""JAq!QQT6!Q$;q!ta1fQTk!Q$..1a41QT1AAAadF1HQPQTMQTUWXTXYZ\]Y]T]^_ab^bTbbeghiklhlelmnpqmqeqrsessvwyzvz{|~{v  AB  DE  AE  wE  E  HJ  KL  NO  KO  HO  PQ  ST  PT  HT  UV  XY  UY  HY  Y  \^  _`  bc  _c  \c  de  \e  fg  ij  fj  \j  j  mo  pq  st  pt  mt  uv  xy  uy  my  y  |}  ~  AB  ~B  |B  CD  FG  CG  |G  G  JK  LM  OP  LP  JP  QR  TU  QU  JU  VW  YZ  VZ  JZ  Z  ]^  _`  bc  _c  ]c  de  gh  dh  ]h  ij  ]j  j  mn  op  rs  os  ms  tu  wx  tx  mx  yz  |}  y}  m}  }  @A  BC  EF  BF  @F  GH  JK  GK  @K  LM  OP  LP  @P  P  ST  UV  XY  UY  SY  Z[  ]^  Z^  S^  _`  bc  _c  Sc  c  fg  hi  kl  hl  fl  mn  fn  op  rs  os  fs  s  vw  xy  {|  x|  v|  }~  v~  @  BC  C  vC  C  FG  HI  KL  HL  FL  MN  FN  OP  RS  OS  FS  S  VW  XY  [\  X\  V\  ]^  `a  ]a  Va  bc  Vc  c  fg  ij  fj  kl  no  ko  fo  pq  st  pt  ft  t  wx  z{  w{  |}  @  |@  w@  AB  DE  AE  wE  E  HI  JK  MN  JN  HN  OP  RS  OS  HS  TU  WX  TX  HX  X  [\  ]^  `a  ]a  [a  bc  ef  bf  [f  gh  [h  h  km  no  qr  nr  kr  st  kt  uv  xy  uy  ky  y  |~  @  BC  C  |C  DE  |E  FG  IJ  FJ  |J  J  MO  PQ  ST  PT  MT  UV  XY  UY  MY  Y  \]  ^_  ab  ^b  \b  cd  fg  cg  \g  g  jk  lm  op  lp  jp  qr  tu  qu  ju  u  xy  z{  }~  z~  x~  @  BC  C  xC  DE  GH  DH  xH  H  KL  MN  PQ  MQ  KQ  RS  UV  RV  KV  WX  KX  X  [\  ]^  `a  ]a  [a  bc  [c  de  gh  dh  [h  h  kl  mn  pq  mq  kq  rs  ks  tu  wx  tx  kx  x  {|  }~  @	A	  }A	  {A	  B	C	  {C	  D	E	  G	H	  D	H	  {H	  H	  K	L	  M	N	  K	N	  O	P	  R	S	  O	S	  K	S	  T	U	  K	U	  U	  X	Y	  Z	[	  X	[	  \	]	  _	`	  \	`	  X	`	  a	b	  d	e	  a	e	  X	e	  e	  h	i	  j	k	  h	k	  l	m	  h	m	  n	o	  h	o	  o	  r	s	  t	u	  r	u	  v	w	  y	z	  v	z	  r	z	  z	  }	~	  	@
  B
C
  	C
  }	C
  C
  F
G
  H
I
  F
I
  J
K
  M
N
  J
N
  F
N
  N
  N
r8   c                  N   t          dt                    \  } }}d|dz  z  |dz  z  d|dz  z  |dz  z  z   d|dz  z  |dz  z  z   d	|dz  z  |dz  z  z
  d
|dz  z  |dz  z  z   d|dz  z  |dz  z  z   d|dz  z  |z  z   d|dz  z  z   |dz  |dz  z  z   |dz  |dz  z  z   d|dz  z  z
  |dz  |dz  z  z   |dz  |dz  z  z
  d|dz  z  |dz  z  z
  d|dz  z  |dz  z  z   |dz  |dz  z  z
  d|dz  z  |dz  z  z   |dz  |dz  z  z
  d|dz  z  |dz  z  z   d|dz  z  z   d|dz  z  z
  S )Nzx,y   r)   r!   0   r%   r   r   H      r+   r'   r   i$  r   )r   r    rP   s      r6   _w_2r   K  s   5"ooGAq!ad71a4<"QT'!Q$,&AqDA51a41Dr!Q$wqRSt|SVWXY[\X\V\]^`a]aVaadefgijfjdjkldllopqrtuquouuxy{|x|}~  AB  ~B  yB  B  EF  HI  EI  JK  MN  JN  EN  N  QS  TU  WX  TX  QX  X  [\  ^_  [_  `a  cd  `d  [d  d  gh  jk  gk  lm  op  lp  gp  p  st  uv  xy  uy  sy  z{  }~  z~  s~  ~  AD  EF  HI  EI  AI  JK  MN  JN  AN  N  QR  TU  QU  VW  YZ  VZ  QZ  Z  ]^  _`  bc  _c  ]c  de  gh  dh  ]h  h  kl  no  ko  pq  st  pt  kt  t  wy  z{  }~  z~  w~  @  BC  C  wC  C  FH  IJ  LM  IM  FM  M  PR  ST  VW  SW  PW  W  Wr8   c                      t                      t                      t                      t                      t	                      t                      t                      fS N)r   r   r   r   r   r   r   rA   r8   r6   f_polysr   O  s3    66466466466466466466AAr8   c                  :    t                      t                      fS r   )r   r   rA   r8   r6   w_polysr   R  s    66466>r8   )NF)r    rP   )A__doc__
sympy.corer   r   r   r   r   r   sympy.core.containersr	   sympy.core.singletonr
   sympy.ntheoryr   sympy.polys.densearithr   r   r   r   sympy.polys.densebasicr   r   r   r   r   r   sympy.polys.domainsr   sympy.polys.factortoolsr   sympy.polys.polyclassesr   sympy.polys.polytoolsr   r   sympy.polys.polyutilsr   sympy.utilitiesr   r   r   r7   r>   rJ   rO   rd   ry   r   r   r   r   r   sympy.polys.ringsr   r   r   r   r   r   r   r   r   r   r   r   rA   r8   r6   <module>r      s]   O O A @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ' ' ' ' ' ' " " " " " " # # # # # #                           # " " " " " : : : : : : ' ' ' ' ' ' 0 0 0 0 0 0 0 0 / / / / / / 7 7 7 7 7 7 7 7 7 7 &, &, &, &,R - - - -4 ! ! !, ') - - - -4 : : : :B  "  <   7 7 7*   7 7 7* # " " " " "y y yV V V~ ~ ~  S	 S	 S	k k kb b bN
 N
 N
W W WB B B    r8   