
    g+                        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d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	            T/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/specialpolys.pyswinnerton_dyer_polyr8      sz    	AvvDqHJ J 	J 	}



#JJ1uuAAAAAA444444T!WWIq!a% 	 	A!AHHTT!WW!!#q'1E::::AvvTAX	
aTBq!tG^a	
a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)r2   r    r'   polys       r7   cyclotomic_polyr?   A   s     	Avv?!CE E 	E %c!ffb11266D}xa  |D%**--,44dllnn,r9   r&   c          	         t          |          }| dk     s| t          |          k    s|st          d| d|          | st          j        }n.t          d t          |t          |                     D              }|rt          |g|R  n|S )z
    Generates symmetric polynomial of order `n`.

    Parameters
    ==========

    polys: bool, optional (default: False)
        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     r7   
<listcomp>z"symmetric_poly.<locals>.<listcomp>o   s    <<<S!W<<<r9   )	r   lenr-   r
   Oner   r   r;   r   )r2   r'   gensr>   s       r7   symmetric_polyrI   \   s     D1uuCIITjVWVWVWY]Y]^___ >u<<gdCFF&;&;<<<= %/4t4/r9   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    r2   infsuprK   r'   r>   s          r7   random_polyrN   t   s=    , 
1c3//6BBBD,44dllnn,r9   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 rB   rB   )rC   r5   Xr    s     r7   rE   z&interpolating_poly.<locals>.<listcomp>   s!    ...1qt8...r9   c                 >    g | ]}|k             |         z
  S rB   rB   )rC   jrT   r5   s     r7   rE   z&interpolating_poly.<locals>.<listcomp>   s*    @@@aqtad{r9   c                     g | ]
\  }}||z  S rB   rB   )rC   coeffrO   s      r7   rE   z&interpolating_poly.<locals>.<listcomp>   s     888XUAq888r9   )getattr
isinstancestrr   r	   rQ   r-   r   r   r0   r1   r   zip)
r2   r    rT   Yokcoeffsnumertnumerdenomr5   s
    ``      @r7   interpolating_polyrc      s    
ND	)	)B!S qqq!!$%%	 UAY++ !S qqq!!$%%	 UAY++  @ %> ? ? @ @ 	@ F.....U1XX.../F1XX # #AaD!@@@@@U1XX@@@AeEk""""88VQ88899r9   c                 R   d t          | dz             D             }|d         |d         }}|t          |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[   rC   r5   s     r7   rE   z$fateman_poly_F_1.<locals>.<listcomp>   *    5551s1vv		555r9   r#   r   Nr%   c                     g | ]}|d z  S )r%   rB   )rC   rO   s     r7   rE   z$fateman_poly_F_1.<locals>.<listcomp>   s    +++q!t+++r9   )r0   r   as_polyr   )	r2   r]   y_0y_1uvFGHs	            r7   fateman_poly_F_1rv      s    55a!e555AtQqTCc1QRR5kAQ++QqrrU+++,,A!!a%!a%!1%A6!a%"S&a-#q&(1,	-6:AQAa7Nr9   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 )re   r#   r   r%   r!   )r0   r   r   r   r   r   r   )r2   Krq   r5   rr   mUVfWr]   rs   rt   ru   s                 r7   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7Nr9   c                    d t          | dz             D             }|d         }t          |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 rg   ri   rj   s     r7   rE   z$fateman_poly_F_2.<locals>.<listcomp>   rk   r9   r#   r   Nr%   r0   r   r   r2   r]   ro   rq   ru   rs   rt   s          r7   fateman_poly_F_2r      s    55a!e555A
A$CQqrrUAcAgkA""""AcAgkA""""AcAgkA""""AQ3!Q;r9   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%   )r0   r   r   r   r   r   r   )	r2   rx   rq   r5   ry   rr   r|   ghs	            r7   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6r9   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 rg   ri   rj   s     r7   rE   z$fateman_poly_F_3.<locals>.<listcomp>  rk   r9   r#   r   c                      g | ]
}|d z   z  S )r#   rB   )rC   rO   r2   s     r7   rE   z$fateman_poly_F_3.<locals>.<listcomp>  s!    (((Qa!a%j(((r9   Nr%   r   r   s   `      r7   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;r9   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   oner0   r   r   r   r   r   r   )r2   rx   rq   r5   rr   r|   r   r   s           r7   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6r9   )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    rO   zs       r7   _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xr9   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       r7   _f_1r   0  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r9   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       r7   _f_2r   4  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  {~  ~  ~r9   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       r7   _f_3r   8  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    r9   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       r7   _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	r9   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       r7   _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jr9   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    rO   r   ts        r7   _f_6r   D  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r9   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       r7   _w_1r   H  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
r9   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    rO   s      r7   _w_2r   L  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r9   c                      t                      t                      t                      t                      t	                      t                      t                      fS N)r   r   r   r   r   r   r   rB   r9   r7   f_polysr   P  s3    66466466466466466466AAr9   c                  :    t                      t                      fS r   )r   r   rB   r9   r7   w_polysr   S  s    66466>r9   )NF)r    rO   )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   r8   r?   rI   rN   rc   rv   r~   r   r   r   r   sympy.polys.ringsr   r   r   r   r   r   r   r   r   r   r   r   rB   r9   r7   <module>r      sj   O O A @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ' ' ' ' ' ' " " " " " " # # # # # #                           # " " " " " : : : : : : ' ' ' ' ' ' 0 0 0 0 0 0 0 0 / / / / / / 7 7 7 7 7 7 7 7 7 7 &, &, &, &,R - - - -4 #( 0 0 0 0 0. ') - - - -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    r9   