
    g>X                        d Z ddlmZ ddlmZmZ ddl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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#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. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddlm6Z6 ddlm7Z7 ddl8m9Z9m:Z:m;Z; e	Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd  ZEd! ZFe$d"             ZGd# ZHd$ ZId% ZJd& ZKd' ZLd( ZMd) ZNd* ZOd+ ZPd, ZQd- ZRd.S )/zTests for minimal polynomials.     )expand)GoldenRatioTribonacciConstant)AlgebraicNumberIRationaloopi)Pow)S)exp)cbrtsqrt)cossintan)Poly)CRootOf)nonlinsolve)Circleintersection)raisesslow)	FiniteSet)Point2D)minimal_polynomial_choose_factor_minpoly_op_algebraic_element_separate_sq_minpoly_groebner)apart)NotAlgebraicGeneratorsError)QQ)rootof)degree)xyzc                  (   t          dt                    t          dz   k    sJ t          dt                    t          dz   k    sJ t          dt                    t          k    sJ t          dt                    t          dz
  k    sJ t          dt                    t          dz
  k    sJ t          t          d          t                    t          dz  dz
  k    sJ t          t          d          t                    t          dz  dz
  k    sJ t          t          d          t                    t          dz  dz
  k    sJ t          dt          d          z  t                    t          dz  d	z
  k    sJ t          d
t          d          z  t                    t          dz  dz
  k    sJ t          dt          d          z  t                    t          dz  dz
  k    sJ t          dt          d          z  d
z   t                    t          dz  dt          z  z
  dz   k    sJ t          d
t          d          z  dz   t                    t          dz  dt          z  z
  dz
  k    sJ t          dt          d          z  dz   t                    t          dz  dt          z  z
  dz
  k    sJ t          dt          d          z  d
z
  t                    t          dz  dt          z  z   dz   k    sJ t          d
t          d          z  dz
  t                    t          dz  dt          z  z   dz
  k    sJ t          dt          d          z  dz
  t                    t          dz  dt          z  z   dz
  k    sJ t          t          dt          d          z             t                    t          dz  dt          dz  z  z
  dz
  k    sJ t          t          t          t          d          z             t                    t          d	z  dt          dz  z  z
  dz   k    sJ t          dt          z  t          dt          z             z   t                    t          dz  dt          dz  z  z   d	t          z  z   dz   k    sJ t          t          d          t          d
          z   t                    t          dz  dt          dz  z  z
  dz   k    sJ t          t          d          t          d
          z   t          d          z   t                    t          dz  dt          dz  z  z
  dt          z  z
  dz
  k    sJ ddt          d          z  z
  dt          d
          z  z   } t          d| z  t                    dt          dz  z  dt          d
z  z  z
  dt          dz  z  z   dt          z  z   dz
  k    sJ t          dt          |           z  t                    dt          d	z  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	          t
          d            t	          t
          d            t	          t
          d            t          t          d                                        t          dz  dz
            sJ t          t          d          t                    t          dz  dz
  k    sJ t          t          d          d          t          t          dz  dz
            k    sJ t          t          d          t          d          t          t          dz  dz
  d !          k    sJ t          t          d          t          dd"#          t          t          dz  dz
  d !          k    sJ t          t          d                    } t          t          d
                    }t          | t                    t          dz  dz
  k    sJ t          |t                    t          dz  d
z
  k    sJ t          | t          d          t          t          dz  dz
  d !          k    sJ t          |t          d          t          t          dz  d
z
  d !          k    sJ t          t          | dz  d$z             t                    dt          dz  z  d%t          dz  z  z
  d&z   k    sJ t          t          |dz  d$z             t                    dt          dz  z  d't          dz  z  z
  d(z   k    sJ t          d          d
z  dz   t          t          d          d
z  dz             }} d)t          d	z  z  d*t          dz  z  z
  d+t          dz  z  z
  d,t          dz  z  z   d-t          d
z  z  z   d.t          dz  z  z
  d/t          z  z
  d0z   }t          t          |           t          t          |                     z   t                    |k    sJ t          t          |          t          t          |                    z   t                    |k    sJ t          | t          d
d          z  t                    d1t          dz  z  d2t          dz  z  z
  d3z   k    sJ t          d4          }t          |t                    d5t          dz  z  dz
  k    sJ t          d          t          t                    z  dt          dd6t          z  z             z  z  d7t          d          z  t          t          dd          z  dd6t          z  z   t          d
d          z  z  z  z   d8t          d          z  t          t          d9d          z  dd6t          z  z   t          d
d          z  z  z  z   dt          z  t          dt          d6z  z
            z  z   }t          |t                    }|d7t          dz  z  d:t          dz  z  z   d;z   k    sJ dt          d          z   t          d
          z   }t          |t                    }|t          dz  dt          d
z  z  z
  dt          dz  z  z
  d<t          z  z   d	z
  k    sJ ddt          d          z   t          d
          z   z  }t          |t                    }|d	t          dz  z  d<t          d
z  z  z
  dt          dz  z  z   dt          z  z   dz
  k    sJ t          dt          d          z   dt          d
          z  z
  t          d          z   d
z            t          dd
          z  }t          |t                    }|t          d	z  d	t          dz  z  z
  d=t          dz  z  z
  d>t          dz  z  z   d?t          dz  z  z   d@t          d
z  z  z
  dAt          dz  z  z   dBt          z  z   dCz
  k    sJ t          dt          d          z   dt          d
          z  z
  t          d          z   d
z            }t          |t                    }|t          d	z  dDt          dz  z  z
  dEt          dz  z  z
  dFt          dz  z  z   dGt          dz  z  z   dHt          d
z  z  z
  dIt          dz  z  z   dJt          z  z   dKz
  k    sJ t          t          dL          t                    t          dz
  k    sJ dt          d          z   } t          | t          d          z  | z   d
z  t                    t          dz  dMt          z  z
  dz   k    sJ ddt          d          z   t          d
          z   z  }t          |t          d"N          d	t          dz  z  d<t          d
z  z  z
  dt          dz  z  z   dt          z  z   dz
  k    sJ ddt          d          z   t          d
          z   z  }t          |t          d"N          t          dz  dt          d
z  z  z
  dt          dz  z  z   dt          z  z   dz
  k    sJ t          dt          d          t          z  z   t          d"N          t          dz  dt          z  z
  d
z   k    sJ t          ddt          d          z   z  dz   t          d"N          t          dz  dz
  k    sJ t          t          d          t          z  t          dt          d          z   z  z   t          d"N          t          dz  dOt          dz  z  z   dz   k    sJ t          t          t          t          j        t                    !          t          t          z
  k    sJ t          j        t          t          d          dz   z            }t          t          t          |!          t          t          z
  k    sJ t          t          t          t          !          t          dz  dz   k    sJ t          t          t          dP!          t          dz  dz   k    sJ t          t          t                    t          dz  t          z
  dz
  k    sJ t          t           d
z   t                    t          d
z  dt          dz  z  z
  dQt          z  z   dRz
  k    sJ t          t          t          t          j        t          d                    !          dt          z  t          d          z
  dz
  k    sJ t          t           t          t          j        t#          dSd
t          dT          z  z
                      !          dt          z  dSdSd
t          dT          z  z
  t          dd
          z  z  z
  d
t          dT          z  dSd
t          dT          z  z
  t          dd
          z  z  z
  d<dSd
t          dT          z  z
  t          dd
          z  z  z
  d<z
  k    sJ t          t          j                            dU          dVW          }t          |t                    t          dz  t          z
  dz
  k    sJ d S )XNi      r                  -      `      	      /   
   1   %      0      i    id  c                  6    t          t          t                    S N)r   r	   r'        g/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/numberfields/tests/test_minpoly.py<lambda>z)test_minimal_polynomial.<locals>.<lambda>O   s    !3B!:!: rD   c                  <    t          dt          z  t                    S Nr.   )r   r(   r'   rC   rD   rE   rF   z)test_minimal_polynomial.<locals>.<lambda>P   s    !3AqD!!<!< rD   c                  F    t          t          d          t                    S )Nr-   )r   r   r'   rC   rD   rE   rF   z)test_minimal_polynomial.<locals>.<lambda>Q   s    !3CFFA!>!> rD   Tpolysr$   domainF)rK   compose   D   iA     i  Q   i  i  itX  i  ix{  i i.( i  i ig

        -1/(800*sqrt(-1/240 + 1/(18000*(-1/17280000 +
        sqrt(15)*I/28800000)**(1/3)) + 2*(-1/17280000 +
        sqrt(15)*I/28800000)**(1/3)))@  }      i5     i  i    8                i   i i i &l    @4 l     zl l     xyl     x, z(-sqrt(5)/2 - 1/2 + (-sqrt(5)/2 - 1/2)**2   rN      zQQ(y)    "      !   )funcphi)alias)r   r'   r   r   r   r"   dummy_eqr   r   Qr   r   r   r$   algebraic_fieldr   r   r   )	abfeqexmppKrh   s	            rE   test_minimal_polynomialru   (   s   b!$$A----b!$$A----q!$$))))q!$$A----q!$$A----d1ggq))QTAX5555d1ggq))QTAX5555d1ggq))QTAX5555aQi++q!tax7777aQi++q!tby8888aQi++q!tby8888aQi!mQ//1a4!A#:>AAAAaQi!mQ//1a4"Q$;?BBBBaQi!mQ//1a4"Q$;3CCCCCaQi!mQ//1a4!A#:>AAAAaQi!mQ//1a4"Q$;?BBBBaQi!mQ//1a4"Q$;3CCCCCd1tAww;//33q!ta1f}q7HHHHHd1tAww;//33q!tbAg~7JJJJJacDQKK/33q!ta1f}qs7JR7OOOOOd1ggQ/33q!tbAg~7IIIIIQ$q''DGG#Q( (+,a4"QT'>BqD+@2+EF F F F 	
Ad1ggI$q''	!A	!Q q!t8d1a4i'#ad(2QqS81<= = = =	$q''	1 QTDAI-AqD81QT6AAEF F F F <::;;;
<<<===
<>>???d1gg&&//1q99999d1ggq))QTAX5555d1ggT222d1a4!8nnDDDDd1ggq555adQht9T9T9TTTTTd1ggqeDDDQPQTTUX^bHcHcHcccccQ  AQ  Aa##q!tax////a##q!tax////a$///41q3N3N3NNNNNa$///41q3N3N3NNNNNd1Q38nna00AadFR1W4Ds4JJJJJd1Q38nna00AadFSAX4E4LLLLL7719q=/$q''!)a-88qA
1a4$q!t)d1a4i'%1*4uQTzAad
	AX	 &	'A d1ggT!WW5q99Q>>>>d1ggT!WW5q99Q>>>>	1Q77
A ad(VAqD[08;< < < < 
 ) 
* 
*B b!$$QT	A5555
q''$q''/1T!c!e)__,
-aj!QqVV)QQY1Q$7789477lAqAwwJCE	AaFF'::;< c$q1S5y//!"B 
B	"	"BAqD419$v-----	
T!WWtAww	B	B	"	"BA!Q$1a4'"Q$.22222	
AQK$q''!	"B	B	"	"B1a4"QT'!AadF*QqS0144444	T!WWqay(4772Q6	7	7(1a..HA	Aq	!	!BA!Q$AqD(3q!t83c!Q$h>adJTRSUVRVYVY]^_Y__bffffffDGGaQi'$q''1A566A	Aq	!	!BAAqD6!Q$;.!Q$>1a4OR]^_ab^bRbbeqrsuvrvevv  zF  GH  zH  H  KV  V  V  V  V  Va JKKQOOSTWXSXXXXX	DGGAqay1}q0!441s1uq8HHHHH	1tAww;a !AaE222a1fr!Q$w6F1a46ORSTURU6UXY6YYYYY	1tAww;a !AaE222adQq!tVma1f6LqQRs6RUV6VVVVVa$q''!)mQ>>>!Q$1*q.PPPPaT!WWo11eDDD1qPPPPd1ggai!Qa[/91   !tbAg~23 3 3 3 a2+=a+@+@AAAQUJJJJ
1d1ggk?++Aa1---Q6666a2...!Q$(::::a7333q!tax???? k1--AA====014a88AqD2ad7NRPQT<QTV<VVVVVk1R5GQ5P5PQQQaC$q''MA   0!B<NtTVYZ[_`b[c[cYcTcOdOd<e<efffqD2rAd2hhJ!Q///!DHH*b1T"XX:oPXYZ\]P^P^=^2^^"qbz/HQNN	**+-/00 0 0 0 !-..D.99
G
G
GCc1%%AA555555rD   c                     ddt          d          z  t          t          d          dz  dt          d          z  dz  z
            z  dt          t          d          dz  dt          d          z  dz  z
            z  z   z  dd	t          d          z  t          t          d          dz  dt          d          z  dz  z
            z  d
t          t          d          dz  dt          d          z  dz  z
            z  z   z  z
  } dt          dz  z  dt          dz  z  z
  dz   }t          | t                    |k    sJ d S )NloyDCG,-e``eC2#<N>}L{/,rNELACQ,l}Y l   HA;NjCxQ] dv>Ai}|944)$R{QqUe_}l   A> l   (r[+iYi|tl      @_CIc6',fk,S?	`@54=?y.W6+u*eXpgM$YP`5@ l   S>BBnc&Kv~U;N	w#A 
9GpS4y<MG l   pAP.Zs;>N'CGHEK=3BS 4dpU=<l     @Fx6VTxV9_6-I"[!<mEexxP[30lQ              Me3cxiL>T#B!,(^;3&Z	VjcSp![. %4@']YNE%$%88qbr|im+8;>W$;$f.33$[Sv!7wx*)*L5Y7FpIX
jLjZwlhx| r4   lb        6
 B]Fq16+I;6W!g[	O"Ov])zsnre);.sH ?OPX:LSO3I^&'PkDDn"H+
QSiVn?v>A"T#.\GgKL}Wcu~frQ[!.K<8`=J+?kxy,yhZ9r-*r.   ld   >C=cJ#m5#P<!VE7|o>jkoQ&M ; 1 [aew' rB_nJ\xIwz7)5MZ1=A=03&aCW>i&XHK2oa#yA59&J5	];u_oj#F[Fy;C	VJ>.:'E3dyZod[t>wo H$@F y#gX3V:3 )r   r   r'   r   )exprpolys     rE   #test_minimal_polynomial_issue_19732ry      ss    a  ck  lp  q}  l~  l~  c~  C  DE  FT  DU  DU  V^  D^tL!!!(*D+ , , c, R  SW  XY  Zh  Xi  Xi  jr  Xr
4%%
%h
.X/ S0 S0 0c0 1 }  k  lp  q}  l~  l~  ~  C  DE  FT  DU  DU  V^  D^
4%%
%h
.D/ 0 0 0yz~  @A  BP  @Q  @Q  RZ  @ZtL)))(2@3 {4 {4 	44 5	5D y  z{  }~  z~  ~ I  JK  MN  JN  NN QQD dA&&$......rD   c                     dt          ddt          d          z  z
  dt          d          z  z   t          dd          dz  z             z  } t          | t                    }|                    t          dz            d	k    sJ d S )
Nr-   r7   r.   r+   r2   r:      r0   l    \!b1")XQ+z>pH.g>tJ4"*v ~b]fit )r   r   r   r'   coeff)rs   rr   s     rE   test_minimal_polynomial_hi_precr}      s    	$q1T!WW9}qay(8Ar??B+>>
?
??A	Aq	!	!B88AqD>>  [  [  [  [  [  [  [rD   c                     ddl m}  ddlm}  |ddt	          d          z  z   dt	          d          z  z   dz            }t          |t          dd          z  t                    }|t          dz  dt          dz  z  z
  d	t          dz  z  z
  d
t          z  z   dz   k    sJ  |dt	          d          z   dt	          d          z  z
  t	          d          z   dz            }t          |t          dd          z  t                    }|t          dz  dt          dz  z  z
  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          z  z   dz
  k    sJ  | d t          dd          D              }t          |t                    }|	                    t          di          dk    sJ d S )Nr   )Add)expand_multinomialr-   r/   r.   r2   r4   v      i)  r+   r1   rY   r0   rZ   r[   r\   r]   r^   r_   c                 ,    g | ]}t          |          S rC   )r   ).0is     rE   
<listcomp>z.test_minimal_polynomial_sq.<locals>.<listcomp>   s    ,,,!d1gg,,,rD   r6   l   >/&5> )
sympy.core.addr   sympy.core.functionr   r   r   r   r'   rangesubs)r   r   rs   rr   s       rE   test_minimal_polynomial_sqr      s   """"""666666A$q''	MAd1ggI59::A	Ax1~~-q	1	1BA!Q$QT)CE1D88888AQK!DGG)3d1gg=ABBA	Ax1~~-q	1	1BA!Q$AqD(3q!t83c!Q$h>adJTRSUVRVYVY]^_Y__bffffff,,uQ||,,,-A	Aq	!	!B77Aq6??3333333rD   c            
          t          d          } t          | dz   t                    }|dt          dz  z  dt          z  z
  dz   k    sJ t          t          t          t
          z  dz            t                    t          dz  dz   k    sJ t          t          t
          d	z            t          d          z   t                    }|d
t          dz  z  dt          dz  z  z
  dt          dz  z  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          t          t
          d	z            t          d          z   t                    }|dt          dz  z  dt          dz  z  z
  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z   dt          z  z
  dz
  k    sJ t          t          t          t
          z  d	z            t          d          z   t                    }|t          dz  dt          dz  z  z
  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z   d t          d	z  z  z
  d!t          dz  z  z
  d"t          dz  z  z   d#t          dz  z  z   d$t          dz  z  z
  d%t          dz  z  z
  d&t          z  z   d'z   k    sJ t          t          t
          d	z            t          d          z   t                    }|d
t          dz  z  dt          dz  z  z
  dt          dz  z  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          t          t
          d	z            t          d          z   t                    }|dt          dz  z  dt          dz  z  z
  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z   dt          z  z
  dz
  k    sJ t          t          t          t
          z  d	z            t          d          z   t                    }|t          dz  dt          dz  z  z
  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z   d t          d	z  z  z
  d!t          dz  z  z
  d"t          dz  z  z   d#t          dz  z  z   d$t          dz  z  z
  d%t          dz  z  z
  d&t          z  z   d'z   k    sJ t          t          t          t
          z  t          dd	          z            t                    }|t          dz  t          dz  z   t          dz  z   t          dz  z   t          dz  z   t          z   dz   k    sJ t          t          t          t
          z  t          dd(          z            t                    }|t          dz  t          d	z  z
  t          dz  z   t          dz  z
  t          dz  z   t          z
  dz   k    sJ t          t          t
          t          dd	          z            t                    }|dt          dz  z  dt          dz  z  z   dt          z  z
  dz
  k    sJ t          t          t
          t          dd	          z            t                    }dt          t
          t          dd	          z            z  d	z
  dt          t
          d	z            z  dt          t
          t          dd	          z            z  z
  z  t          t                    }|t          dz  dt          dz  z  z   t          z
  dz
  k    sJ t          d)dt          t
          d	z            z  z  t                    t          dz  dt          dz  z  z   t          z
  dz
  k    sJ t          t          t
          t          dd(          z            t                    d*t          dz  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          t          t
          t          dd.          z            t                    dt          dz  z  dt          dz  z  z
  dt          z  z
  dz   k    sJ t          t          t
          d(z            t                    dt          dz  z  dt          dz  z  z   dt          dz  z  z
  dt          z  z
  dz   k    sJ t          t          dz  t          dz  z   dz   d/          t          t                    }|t          dz  dt          z  z   dz   k    sJ t          dz   t                    }|t          dz  dt          dz  z  z
  d	t          z  z   dz
  k    sJ t          t          t          t
          z  dz            t                    t          dz  t          z
  dz   k    sJ t          t          t          t
          z  dz            t                    t          dz  dz   k    sJ t          t          t          t
          z  dz            t                    t          dz  t          dz  z
  dz   k    sJ t          t          t          t
          z  dz            t                    t          dz  t          dz  z
  dz   k    sJ t          t          t          t
          z  dz            t                    t          dz  t          dz  z
  t          dz  z   t          dz  z
  dz   k    sJ t          t          t
          dz            t                    dt          dz  z  d0t          dz  z  z
  d1t          dz  z  z   dz
  k    sJ t          t          t
          dz            t                    d2t          dz  z  d3t          dz  z  z
  d3t          dz  z  z   d4t          dz  z  z
  d5t          dz  z  z   dz
  k    sJ t          t          t
          d6z            t                    d
t          dz  z  d7t          dz  z  z
  d7t          dz  z  z   d8t          dz  z  z
  d9t          dz  z  z   dt          dz  z  z
  dz   k    sJ t          t          t
          dz            t                    dt          dz  z  dt          z  z
  dz
  k    sJ dt          dd          z  t          dt          z  t
          z  dz            z  t          t                    t          dz  dz
  k    sJ t          t          d:            t          t          d;            t          t          d<            t          t          d=            dd>d?t          d          z  z
  dt          d          z  t          t          d          dz             z  d@t          d          z  t          t          d           dz             z  z   dz  z   z  dz   t          t          fdA           t          ddt          dd          z  z             t          ddt          dd          z  z             z   t          d          z   t          t                    }t          |          dBk    r |                    t          d/i          dCk    sJ t!          t
          dz  dDE          t          t                    }|t          dz  dt          dz  z  z
  dz   k    sJ |                    t          t!          t
          dz                      j        sJ t!          t
          dz  dDE          t          t                    }|dt          dz  z  dz
  k    sJ |                    t          t!          t
          dz                      j        sJ t!          t
          dz  dDE          t          t                    }|dt          dz  z  dt          dz  z  z
  dz   k    sJ |                    t          t!          t
          dz                      j        sJ t          t          dF            d S )GNrS   r2   rT   r.   i  i? r1   r-   r+   i   r6   i   r:   i ] i r0   i` r4   i io  @   r/   i  i0  i        rW   r7   rX   +   F   a   ~         r<            r,      rZ      rc   r8   r   r5   $   i   i   r@         i ,  i  i  c                  p    t          t          t          t          d          z            t                    S rH   )r   r   r
   r   r'   rC   rD   rE   rF   z&test_minpoly_compose.<locals>.<lambda>  !    !3C477
OOQ!G!G rD   c                  p    t          t          t          t          d          z            t                    S rH   )r   r   r
   r   r'   rC   rD   rE   rF   z&test_minpoly_compose.<locals>.<lambda>  r   rD   c                  f    t          t          dt          z  t          z            t                    S )NgS?)r   r   r   r
   r'   rC   rD   rE   rF   z&test_minpoly_compose.<locals>.<lambda>  s    !3Ca
OOQ!G!G rD   c                      t          t          t          t          z  t	          d          z            t
                    S rH   )r   r   r   r
   r   r'   rC   rD   rE   rF   z&test_minpoly_compose.<locals>.<lambda>  s'    !3C"T!WW4E4Eq!I!I rD   i`si      c                  .    t           t                    S rB   )r   r'   rq   s   rE   rF   z&test_minpoly_compose.<locals>.<lambda>"  s    &8Q&?&? rD   r>   l{> F)evaluatec                  p    t          t          t          t          d          z            t                    S rH   )r   r   r
   r   r'   rC   rD   rE   rF   z&test_minpoly_compose.<locals>.<lambda>7  r   rD   )r   r   r'   r   r   r
   r   r   r   r   r%   r   r"   ZeroDivisionErrorr&   r   r   is_zero)rp   rr   rq   s     @rE   test_minpoly_composer      s}   	
 ) 
* 
*B 
BFA	&	&BadU1W$u,,,,, c!B$q&kk1--A9999	C1IIQ/	3	3BaeeArEk)F1a4K7&A+Eq!tQTk"$)* * * * *	C1IIQ/	3	3BAqD2ad7"SAX-AqD83q!t8CE    	C"QKK$q''11	5	5BB1b51QU7*R1W4r!Q$w>AqDH2aQRd7RUXYZ\]Y]U]]`cdeghdh`hhknoprsoskssvxyz|}y}v}}  AD  EF  AF  F  IL  L  L  L  L  L	C1IIQ/	3	3BaeeArEk)F1a4K7&A+Eq!tQTk"$)* * * * *	C1IIQ/	3	3BAqD2ad7"SAX-AqD83q!t8CE    	C"QKK$q''11	5	5BB1b51QU7*R1W4r!Q$w>AqDH2aQRd7RUXYZ\]Y]U]]`cdeghdh`hhknoprsoskssvxyz|}y}v}}  AD  EF  AF  F  IL  L  L  L  L  L	C"Xa^^ 344a	8	8BA1q!t#ad*QT1A599999	C"Xa__ 455q	9	9BA1q!t#ad*QT1A599999	C8Aq>> 122A	6	6B1a4!AqD&1Q3&*****	C8Aq>> 122A	6	6B
C8Aq>>!""
"Q
&3r!t99qRA=N9O9O7O)O	PB	B	"	"BA!Q$"Q&&&&&b!C1II+.22adQq!tVma6G!6KKKKKc"Xa__"455q991Hs1a4x#ad(*R1W4q89 9 9 9c"Xa__"455q99Qq!tVa1f_qQRs=RUV=VVVVVc"R%jj!,,1a4!AqD&0@2ad70JQqS0PST0TTTTT	1ac	Aq	!	!B	B	"	"BA!a	BFA	&	&BA!Q$1$q(((((c!B$q&kk1--AA====c!B$q&kk1--A9999c!B$q&kk1--A1q@@@@c!B$q&kk1--A1q@@@@c!B$r'llA..!Q$A+12Dq!t2Ka2OOOOOc"Q$ii++r!Q$wAqD/@2ad7/JQ/NNNNNc"R%jj!,,QU
T!Q$Y0FAI1QT	1"$'1H1-/112 2 2 2 2c"R%jj!,,QU
U1b5[0HA:1QT	1"$'1H1-/1!Q$w179:1; ; ; ; ;c"Q$ii++qAv!|a/?????	
HQNN	3qs2vax==	(Bb!$$1q0000
<GGHHH
<GGHHH
<GGHHH
<IIJJJ 
FT$q''\!RR[d1ggk1B1B%B
488D$q''A&&&&')*%+ + 
,./
0B
????@@@	a!Xa]]""	#	#d1q(1Q--/?+?&@&@	@477	JB	B	"	"B"::1, > > > >	RTE	"	"	"B	B	"	"BA1a4!#####771c"Q$ii  ((((	RTE	"	"	"B	B	"	"B1a4!771c"Q$ii  ((((	RUU	#	#	#B	B	"	"B1a4"QT'!A%%%%%771c"R%jj!!))))
<GGHHHHHrD   c                      ddl m}   | t          d          }t          |t                    }|dt          dz  z  dz
  k    sJ d S )Nr   )	nsimplifyg&.>)	tolerancel   oD!|S0o60" m   l                    869V_jp)A+DGZ  )sympy.simplify.simplifyr   r
   r   r'   )r   rrr   s      rE   test_minpoly_issue_7113r   :  ss    111111	",,,A	Aq	!	!B?3Fhi i i i i i irD   c                     t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  d          } t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  d          }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  |z  z
  d| 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
  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| z  z
  d|d
z  z  z   d|dz  z  z
  d|dz  z  z   d|z  z
  dz   }t          dz  dt          dz  z  z   dt          z  z   dz   }t          |t                    |k    sJ d S )Ni 	= r2   iMr.   l   !: l   1D> r   r-   l      =]T r4   l     N>kl     Tf"(n>l     c6 \D l    `xg;Dj  l     ~a`0_t
' l    ('ZYL=B
l    x5,%[vxZ=l   <LiZZqpLgC4 l   @QQGSr]  l   b Y'l l   /2!#.hR'.; l   cuFN6c+]sVxYZl   x~gVN]|i<XON(pb-RS s;plQ)r   r'   r   )r1r2numrr   s       rE   test_minpoly_issue_23677r   C  s   	A	!Q$.A=KQ	O	OB	A	!Q$.A=KQ	O	OBr1u$RU*-B2q5-HQ-NN%b!e+BE124LRQRU4RSU4UV'A-.0Eb!e0KBPQE0QR (A-b!e34 7QQSUVQV6VW &b!e+BE1	2 5NbRSe4STVXYTY4Y	Z
 *"a%/23
 6RRTVWRW5WX 'r)"a%/0 3Nb2PQSUVQV2VW ,B./ 2K2q51PQ )Q./ 2NbRSe1ST *",	- 0N	NC Q$1!Q$6
6HJKfgB c1%%++++++rD   c                      dt          dd          z   dt          dd          z  z   } t          | t                    t          dz   k    sJ d S )Nr,   r-   r2   r.   )r   r   r'   r   s    rE   test_minpoly_issue_7574r   V  sN    A
	"x!}}!4	4Bb!$$A------rD   c                       t          t          dz
  t                    t          t          dz   t                    g t          t           fd           d S )Nr.   c                  J    t           t          t          d                    S )Nr2   )r   r'   r   bad_factorss   rE   rF   z$test_choose_factor.<locals>.<lambda>^  s    {AtAww(O(O rD   )r   r'   r   NotImplementedErrorr   s   @rE   test_choose_factorr   [  sF    !Q<<ac1.K
 O O O OPPPPPrD   c                     t          dt          z  t                    t           t          z  dz   k    sJ t          dt          dz   z  t                    t          dz   t          z  dz
  k    sJ t          t          t                    t                    t          dz  t          z
  k    sJ t          t          t          dz             t                    t          dz  t          z
  dz
  k    sJ t          t          t                    t          z  t                    t          t          dz  z  dz
  k    sJ t          t          d          t          t                    z  t                    t          dz  dt          z  z
  k    sJ t          t          d          t          t                    z   t                    t          dz  dt          z  dz
  t          dz  z  z   t          dz  z   dt          z  z
  dz   k    sJ t          t          t	          dd          z  t                    t          dz  t          z
  k    sJ t          t          t	          dd          z  t          t                    z   t                    t          dz  dt          z  t          dz  z  z
  dt          z  t          dz  z  z
  dt          dz  z  t          dz  z  z   dt          dz  z  t          z  z
  t          dz  z
  t          dz  z   k    sJ t          t          t                    t
          z  t                    t
          dz  t          dz  z  t          z
  k    sJ t          t          t                    t
          dz   z  t                    t
          dz  dt
          z  z   dz   t          dz  z  t          z
  k    sJ t          dt          z  t          d          t          t           t          z  dz   t          d	
          k    sJ t          dt          dz   z  t          d          t          t          dz   t          z  dz
  t          d	
          k    sJ t          t          t                    t          d          t          t          dz  t          z
  t          d	
          k    sJ t          t          t                    t
          z  t          d          t          t
          dz  t          dz  z  t          z
  t          d
          k    sJ t          t                    t          dt          dz  z             z  t          t          dz  dz             t          z  z
  dt          t	          dd          z  dt          dz  z   t	          dd          z  z  z  z   dt          t	          dd          z  dt          dz  z   t	          dd          z  z  z  z   } t          | t                    t          k    sJ t          t          d            t          t          d            t          t          d            t          t          d            d S )Nr-   r.   r4   r2   r0   TrJ   zZZ(x)rL   zZZ(x, z)r/   rW   c                  P    t          t          t                    t                    S rB   )r   r   r'   r(   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    !3CFFA!>!> rD   c                  P    t          t          t                    t                    S rB   )r   r   r'   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    $6tAww$B$B rD   c                  `    t          t          t                    t          z
  t                    S rB   r   r   r'   r(   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    $6tAww{A$F$F rD   c                  T    t          t          t                    t          d          S )NFra   r   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    (:477Au(U(U(U rD   )r   r'   r(   r   r   r)   r   r   r"   r#   r   rm   s    rE   test_minpoly_fraction_fieldr   a  s   ac1%%!A1111a1q5k1--!a%Q>>>>d1ggq))QTAX5555d1q5kk1--AA====d1ggk1--1a4!;;;;d1ggQ/33q!ta!e|CCCCd1ggQ/33	11q!Q$A%!+a/0 0 0 0 a!A.22adQh>>>>a!A.a8!<<	1qs1a4x!A#ad("Qq!tVAqD[01QT6!8;adBQTIJ J J J d1ggk1--AadQ>>>>d1ggQ/331qs
Q17Lq7PPPPPac1D111T1"Q$(Ag5V5V5VVVVVa1q5k1D999a!eQY]Ag.../ / / /d1ggq555adQhRY9Z9Z9ZZZZZd1ggk1D999QT!Q$Y]Aj1112 2 2 2 	QQR[!!!DANN1$44q!Xa^^:K	
QWx1~~%;& 8' 	')*AxA,>AGhWXZ[nn?\,\)]	^A a##q((((
<>>???
?BBCCC
?FFGGG
 U UVVVVVrD   c                  6   t          t          t          t          t          dd          z  dz
            t                                        t          t          t          t          dd          z  dz
                      t                    t          k    sJ d S )Nr-   r/   )r   r   r'   r   r(   r   r)   rC   rD   rE    test_minpoly_fraction_field_slowr     s    0a!A6F6J1K1K	 448Aa==(1,--..3 3678 8 8 8 8 8rD   c            	      z   t          t          d          t          t          j        t          d                              t          t          d          z
  k    sJ t          t          d          t          t          j        t          d                              t          dt          d          z  z
  k    sJ t          t          t          dd                    t          t          j        t          d                              dt          dz  z  dz
  k    sJ t          t          d            d S )Nr.   rL   r1   r2   c                  D    t          t          t          t                    S )NrL   )r   r(   r'   r$   rC   rD   rE   rF   z%test_minpoly_domain.<locals>.<lambda>  s    !3Aq!D!D!D rD   )r   r   r'   r$   rl   r   r   r"   rC   rD   rE   test_minpoly_domainr     s   d1ggq1CDGG1L1LMMM	DGG   d1ggq1CDGG1L1LMMM	Ad1ggI   d8Aa==111!$q''**, , ,/0Avz: : : : <DDEEEEErD   c                     dt          d          z  t          dt          d          z  dz             z  } t          | t                    t          dz  dt          z  z   dz
  k    sJ dt          dt          d          z  dz             z  dt          d          z  z   dz   dt          d          z  t          dt          d          z  dz             z  z
  }t          |t                    t          k    sJ d S )Nr   r.   r6   rO   rX   r1   r   )r   r   r'   )rm   es     rE   test_issue_14831r     s    
477
4477
R(((Aa##q!tbd{Q6666	DDGGb!!	!BtAwwJ	.	
QiRQZ"_---
.Aa##q((((((rD   c            
      8   t          t          t          dz  z  t          d          dz  z
  t          t          dz  z  ddt          d          z  z  z
  gt          t                    t	          t          d          dz  t          d          dz  ft          d          dz  t          d           dz  t          d          t
          z  dz  z
  ft          d          dz  t          d           dz  t          d          t
          z  dz  z   f          k    sJ d S )Nr2   r.   r0   r4   r7   )r   r'   r(   r   r   r   rC   rD   rE   test_issue_18248r     s    !Q$tAwwqy(!AqD&AtAwwK*@A!AFFtAwwqy$q''!),tAwwqy477(1*tAwwqyQR{:R.S!WWQYa
T!WWQYq[013 33 3 3 3 3 3rD   c                  &   t          t          dt          d                    d          } t          t          dt          d                    d          }t          | |          t          dt          d           t          d          z   dt          d          z  dz  d	t          d          z  dz  z   t          d
t          d          z  dz             dz  z   z  z   dt          d          z  dz  d	t          d          z  dz  z   t          d
t          d          z  dz             dz  z             t          dt          d           t          d          z   t          d
t          d          z  dz              dz  dt          d          z  dz  z
  d	t          d          z  dz  z   z  z   t          d
t          d          z  dz              dz  dt          d          z  dz  z
  d	t          d          z  dz  z             gk    sJ d S )Nr2   r/   r4   r+   r0   r,   r      r7      #   i  r.   )r   r   r   r   )c1c2s     rE   test_issue_13230r     s"   	477##Q	'	'B	477##Q	'	'BBGB477(T!WW2Dr$q''zRT}QilH#d2hh,-..r1H2 23 -346tAwwJrMAd1ggIbL4P
3tBxx<$"5#%$ %$%,RDGG8d1gg3EcRVWYRZRZl
O J J II4772I !$q''	"I- 3. ..04Sb\D5H0I0I/I"/LqQUVWQXQXyY[|/[^_`def`g`g^ghj^j/j&l &l$m m m m m m mrD   c            	         dt          dt          d          z             t          d          t          dt          d          z             z  z
  z  dz   } t          dz  dt          dz  z  z
  dt          dz  z  z   dz
  }dD ]V}t          t          | |                    } |t                    |k    s"J d|d |t                    d	|d
            Wd S )Nr-   r.   r4   r2   )TFra   zminimal_polynomial(e, compose=z) = z; z	 expected)r   r'   r   r   )r   mp_expectedcomprr   s       rE   test_issue_19760r     s    	4DGGtAwwtAQK'8'8889A=AQ$1a4-!AqD&(1,K x x$Q55566r!uu####^b^b^bdfdfghdidididikvkvkv%w####x xrD   c                     t          dt          dz  dz   z  t          d          t          g          t          d          t          z   dt          z  t          d          z   t          z   z  dz  t          d          t          z
  dt          z  t          d          z   t          z
  z  dz  z   t          d          t          z
  dt          z  t          d          z
  t          z   z  dz  z
  t          d          t          z   dt          z  t          d          z
  t          z
  z  dz  z
  t          t          t          z   z  dz  z   t          t          t          z
  z  dz  z
  k    sJ d S )Nr-   r0   r2   )	extensionr.   )r!   r'   r   r   rC   rD   rE   test_issue_20163r     s+   AqDFQ|444	a1qsT!WW}q()!+	a1qsT!WW}q()!+	,	a1qsT!WW}q()!+	, 
a1qsT!WW}q()!+	, 	
1q5	!		 Qik		"" " " " " "rD   c                      t          t          d                    } t          | dz  t                    t          dz  dz
  k    sJ d S )Nr.   r2   r1   )r   r   r   r'   )alphas    rE   test_issue_22559r     sB    DGG$$EeQh**adQh666666rD   c                     t          t          d          t          d          z   t          d          dz  dt          d          dz  dgt                    } |                                 t          d          k    sJ t          | t                    t          dz  dz
  k    sJ t          | dz  t                    t          dz  dz
  k    sJ d S )Nr.   r2   r-   r   i)genr1   )r   r   r   r'   as_exprr   r   s    rE   test_issue_22561r     s    Q$q'')AaDD1Ha2A+FANNNA99;;$q''!!!!a##q!tax////adA&&!Q$(222222rD   c                  2    t          t          d            d S )Nc                  `    t          t          t          d          dz  z  t          z             S )Nr-   r2   )r   r'   r   rC   rD   rE   rF   z+test_separate_sq_not_impl.<locals>.<lambda>  s     Q1a[1_(E(E rD   r   r   rC   rD   rE   test_separate_sq_not_implr     s    
 E EFFFFFrD   c                  2    t          t          d            d S )Nc                  z    t          t          t          d          t          d          t          t                    S )Nr.   r2   )r   r   r   r'   r$   rC   rD   rE   rF   z<test_minpoly_op_algebraic_element_not_impl.<locals>.<lambda>  s#    0d1ggtAww2NN rD   r   rC   rD   rE   *test_minpoly_op_algebraic_element_not_implr     s,    
NNP P P P PrD   c                  r   t          t          d          dz  t          t                    dt          z  dz
  k    sJ t          t	          d          dz   t	          d          dz   z  t          t                    t          dz  dt          z  z
  dz
  k    sJ t          t	          d          dz   t          d          dz  z  t	          d          dz   t          d          dz  z  z  t          t                    t          dz  dt          dz  z  z
  dz
  k    sJ t          t	          d          dz   t          d           dz  z  t	          d          dz   t          d          dz  z  z  t          t                    dt          dz  z  dt          dz  z  z
  dz
  k    sJ t          t          d            d S )Nr.   r2   r-   r:   r+   r0   c                  H    t          t          dz  t          t                    S rH   )r    r
   r'   r   rC   rD   rE   rF   z'test_minpoly_groebner.<locals>.<lambda>  s    !22q5!T!B!B rD   )r    r   r'   r   r   r   r"   rC   rD   rE   test_minpoly_groebnerr     s   QqTT!VQ--1q8888	a1tAww{#Q. .12A1qA A A Ad1ggkQqTT!V4d1ggkQqTT!V5LL& &)*A1a4!);< < < <d1ggkaddU1W5tAww{add1f6MM& &)*1a4!AqD&1)<= = = =
<BBCCCCCrD   N)S__doc__r   r   
sympy.corer   r   sympy.core.numbersr   r   r   r	   r
   sympy.core.powerr   sympy.core.singletonr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   r   (sympy.functions.elementary.trigonometricr   r   r   sympy.polys.polytoolsr   sympy.polys.rootoftoolsr   sympy.solvers.solvesetr   sympy.geometryr   r   sympy.testing.pytestr   r   sympy.sets.setsr   sympy.geometry.pointr    sympy.polys.numberfields.minpolyr   r   r   r   r    sympy.polys.partfracr!   sympy.polys.polyerrorsr"   r#   sympy.polys.domainsr$   r%   r&   	sympy.abcr'   r(   r)   rk   ru   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rD   rE   <module>r     s   % % & & & & & & 8 8 8 8 8 8 8 8 E E E E E E E E E E E E E E             " " " " " " 6 6 6 6 6 6 A A A A A A A A D D D D D D D D D D & & & & & & + + + + + + . . . . . . / / / / / / / / - - - - - - - - % % % % % % ( ( ( ( ( (              ' & & & & &       
 # " " " " " * * * * * * ( ( ( ( ( (          H6 H6 H6V/ / / [ [ [4 4 4_I _I _IDi i i, , ,&. . .
Q Q Q"W "W "WH 8 8 8F F F) ) )3 3 3m m mx x x" " "7 7 7
3 3 3G G GP P P
D D D D DrD   