
    sg>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- ZRy.)/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            j                  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                  j                  dU      dVW      }t        |t              t        dz  t        z
  dz
  k(  sJ y )XNi      r                  -      `      	      /   
   1   %      0      i    id  c                  *    t        t        t              S N)r   r	   r'        ^/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/numberfields/tests/test_minpoly.py<lambda>z)test_minimal_polynomial.<locals>.<lambda>O   s    !3B!: rD   c                  0    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                  4    t        t        d      t              S )Nr-   )r   r   r'   rC   rD   rE   rF   z)test_minimal_polynomial.<locals>.<lambda>Q   s    !3CFA!> 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---d1gq)QTAX555d1gq)QTAX555d1gq)QTAX555aQi+q!tax777aQi+q!tby888aQi+q!tby888aQi!mQ/1a4!A#:>AAAaQi!mQ/1a4"Q$;?BBBaQi!mQ/1a4"Q$;3CCCCaQi!mQ/1a4!A#:>AAAaQi!mQ/1a4"Q$;?BBBaQi!mQ/1a4"Q$;3CCCCd1tAw;/3q!ta1f}q7HHHHd1tAw;/3q!tbAg~7JJJJacDQK/3q!ta1f}qs7JR7OOOOd1gQ/3q!tbAg~7IIIIQ$q'DG#Q(+,a4"QT'>BqD+@2+EF F F 	
Ad1gI$q'	!A	!Qq!t8d1a4i'#ad(2QqS81<= = =	$q'	1QTDAI-AqD81QT6AAEF F F <:;
<<=
<>?d1g&//1q999d1gq)QTAX555d1gT2d1a4!8nDDDd1gq5adQht9TTTTd1gqeDQPQTTUX^bHccccQ AQ Aa#q!tax///a#q!tax///a$/41q3NNNNa$/41q3NNNNd1Q38na0AadFR1W4Ds4JJJJd1Q38na0AadFSAX4E4LLLL719q=/$q'!)a-8qA
1a4$q!t)d1a4i'%1*4uQTzAad
	AX	 &	'A d1gT!W5q9Q>>>d1gT!W5q9Q>>>	1Q7
Aad(VAqD[08;< < < 
 ) 
*B b!$QT	A555
q'$q'/1T!c!e)_,
-aj!QqV)QQY1Q$778947lAqAwJCE	AaF'::;< c$q1S5y/!"B 
B	"BAqD419$v----	
T!WtAw	B	B	"BA!Q$1a4'"Q$.2222	
AQK$q'!	"B	B	"B1a4"QT'!AadF*QqS014444	T!Wqay(472Q6	7(1a.HA	Aq	!BA!Q$AqD(3q!t83c!Q$h>adJTRSUVRVYVY]^_Y__bfffffDGaQi'$q'1A5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a JKQOSTWXSXXXX	DGAqay1}q0!41s1uq8HHHH	1tAw;a !AaE2a1fr!Q$w6F1a46ORSTURU6UXY6YYYY	1tAw;a !AaE2adQq!tVma1f6LqQRs6RUV6VVVVa$q'!)mQ>!Q$1*q.PPPaT!Wo11eD1qPPPd1gai!Qa[/91 !tbAg~23 3 3 a2+=+=a+@AQUJJJ
1d1gk?+Aa1-Q666a2.!Q$(:::a73q!tax??? k1-AA===014a8AqD2ad7NRPQT<QTV<VVVVk1R5G5GQ5PQaC$q'MA  0!B<N<NtTVYZ[_`b[cYcTcOd<efqD2rAd2hJ!Q///!DH*b1T"X:oPXYZ\]P^=^2^^"qbz/HQN	**+-/00 0 0 !--..D.9
GCc1%AA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 y )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      s    a  ck  lp  q}  l~  c~  C  DE  FT  DU  V^  D^tL!!(*D+ , c, R  SW  XY  Zh  Xi  jr  Xr
4%
%h
.X/ S0 0c0 1 }  k  lp  q}  l~  ~  C  DE  FT  DU  V^  D^
4%
%h
.D/ 0 0yz~  @A  BP  @Q  RZ  @ZtL))(2@3 {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              }|j	                  t        dz        d	k(  sJ y )
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}      sm    	$q1T!W9}qay(8Ar?B+>>
??A	Aq	!B88AqD>  [  [  [  [rD   c                  0   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  | t        dd      D cg c]  }t	        |       c} }t        |t              }|j                  t        di      dk(  sJ y c c}w )Nr   )Add)expand_multinomialr-   r/   r.   r2   r4   v      i)  r+   r1   rY   r0   rZ   r[   r\   r]   r^   r_   r6   l   >/&5> )
sympy.core.addr   sympy.core.functionr   r   r   r   r'   rangesubs)r   r   rs   rr   is        rE   test_minimal_polynomial_sqr      s   "6A$q'	MAd1gI59:A	Ax1~-q	1BA!Q$QT)CE1D8888AQK!DG)3d1g=ABA	Ax1~-q	1BA!Q$AqD(3q!t83c!Q$h>adJTRSUVRVYVY]^_Y__bfffffuQ|,!d1g,-A	Aq	!B77Aq6?3333 -s   F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|j                  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 |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 |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 |j                  t        t!        t
        dz              j"                  sJ t        t        dF        y )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                  T    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7
OQ!G rD   c                  T    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                  P    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
OQ!G rD   c                  b    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!W4Eq!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                  T    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&k1-A999	C1IQ/	3BaeeArEk)F1a4K7&A+Eq!tQTk"$)* * * *	C1IQ/	3BAqD2ad7"SAX-AqD83q!t8CE   	C"QK$q'11	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	C1IQ/	3BaeeArEk)F1a4K7&A+Eq!tQTk"$)* * * *	C1IQ/	3BAqD2ad7"SAX-AqD83q!t8CE   	C"QK$q'11	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	C"Xa^ 34a	8BA1q!t#ad*QT1A59999	C"Xa_ 45q	9BA1q!t#ad*QT1A59999	C8Aq> 12A	6B1a4!AqD&1Q3&****	C8Aq> 12A	6B
C8Aq>!"
"Q
&3r!t9qRA=N9O7O)O	PB	B	"BA!Q$"Q&&&&b!C1I+.2adQq!tVma6G!6KKKKc"Xa_"45q91Hs1a4x#ad(*R1W4q89 9 9c"Xa_"45q9Qq!tVa1f_qQRs=RUV=VVVVc"R%j!,1a4!AqD&0@2ad70JQqS0PST0TTTT	1ac	Aq	!B	B	"BA!a	BFA	&BA!Q$1$q((((c!B$q&k1-AA===c!B$q&k1-A999c!B$q&k1-A1q@@@c!B$q&k1-A1q@@@c!B$r'lA.!Q$A+12Dq!t2Ka2OOOOc"Q$i+r!Q$wAqD/@2ad7/JQ/NNNNc"R%j!,QU
T!Q$Y0FAI1QT	1"$'1H1-/112 2 2 2c"R%j!,QU
U1b5[0HA:1QT	1"$'1H1-/1!Q$w179:1; ; ; ;c"Q$i+qAv!|a/????	
HQN	3qs2vax=	(Bb!$1q000
<GH
<GH
<GH
<IJ 
FT$q'\!RR[d1gk1B%B
48D$q'A&&&')*%+ + 
,./
0B
?@	a!Xa]""	#d1q(1Q-/?+?&@	@47	JB	B	"B":1, >>>	RTE	"B	B	"BA1a4!####771c"Q$i ((((	RTE	"B	B	"B1a4!771c"Q$i ((((	RUU	#B	B	"B1a4"QT'!A%%%%771c"R%j!))))
<GHrD   c                  t    ddl m}   | t        d      }t        |t              }|dt        dz  z  dz
  k(  sJ y )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   :  sG    1",A	Aq	!B?3Fh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 y )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  sv   	A	!Q$.A=KQ	OB	A	!Q$.A=KQ	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 y )Nr,   r-   r2   r.   )r   r   r'   r   s    rE   test_minpoly_issue_7574r   V  s>    A
	"x!}!4	4Bb!$A---rD   c                       t        t        dz
  t              t        t        dz   t              g t        t         fd       y )Nr.   c                  8    t         t        t        d            S )Nr2   )r   r'   r   bad_factorss   rE   rF   z$test_choose_factor.<locals>.<lambda>^  s    {AtAw(O rD   )r   r'   r   NotImplementedErrorr   s   @rE   test_choose_factorr   [  s-    !Q<ac1.K
 O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        y )Nr-   r.   r4   r2   r0   TrJ   zZZ(x)rL   zZZ(x, z)r/   rW   c                  <    t        t        t              t              S rB   )r   r   r'   r(   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    !3CFA!> rD   c                  <    t        t        t              t              S rB   )r   r   r'   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    $6tAw$B rD   c                  J    t        t        t              t        z
  t              S rB   r   r   r'   r(   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    $6tAw{A$F rD   c                  @    t        t        t              t        d      S )NFra   r   rC   rD   rE   rF   z-test_minpoly_fraction_field.<locals>.<lambda>  s    (:47Au(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a1q5k1-!a%Q>>>d1gq)QTAX555d1q5k1-AA===d1gk1-1a4!;;;d1gQ/3q!ta!e|CCCd1gQ/3	11q!Q$A%!+a/0 0 0 a!A.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 d1gk1-AadQ>>>d1gQ/31qs
Q17Lq7PPPPac1D1T1"Q$(Ag5VVVVa1q5k1D9a!eQY]Ag./ / /d1gq5adQhRY9ZZZZd1gk1D9QT!Q$Y]Aj12 2 2 	QQR[!!DAN1$44q!Xa^:K	
QWx1~%;& 8' 	')*AxA,>AGhWXZ[n?\,\)]	^A a#q(((
<>?
?BC
?FG
 UVrD   c                      t        t        t        t        t        dd      z  dz
        t              j                  t        t        t        t        dd      z  dz
              t              t        k(  sJ y )Nr-   r/   )r   r   r'   r   r(   r   r)   rC   rD   rE    test_minpoly_fraction_field_slowr     sa    0a!A6F6J1K	448Aa=(1,-.3678 8 8rD   c            	         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        y )Nr.   rL   r1   r2   c                  6    t        t        t        t              S )NrL   )r   r(   r'   r$   rC   rD   rE   rF   z%test_minpoly_domain.<locals>.<lambda>  s    !3Aq!D rD   )r   r   r'   r$   rl   r   r   r"   rC   rD   rE   test_minpoly_domainr     s    d1gq1C1CDG1LM	DG  d1gq1C1CDG1LM	Ad1gI  d8Aa=11!!$q'*,/0Avz: : : <D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 y )Nr   r.   r6   rO   rX   r1   r   )r   r   r'   )rm   es     rE   test_issue_14831r     s    
47
447
R((Aa#q!tbd{Q666	DDGb!	!BtAwJ	.	
QiRQZ"_--
.Aa#q(((rD   c            
         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 y )Nr2   r.   r0   r4   r7   )r   r'   r(   r   r   r   rC   rD   rE   test_issue_18248r     s    !Q$tAwqy(!AqD&AtAwK*@A!AFtAwqy$q'!),tAwqy47(1*tAwqyQR{:R.S!WQYa
T!WQYq[01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 y )Nr2   r/   r4   r+   r0   r,   r      r7      #   i  r.   )r   r   r   r   )c1c2s     rE   test_issue_13230r     s   	47#Q	'B	47#Q	'BBGB47(T!W2Dr$q'zRT}QilH#d2h,-.r1H2 23 -346tAwJrMAd1gIbL4P
3tBx<$"5#%$%,RDG8d1g3EcRVWYRZl
O J II472I !$q'	"I- 3. ..04Sb\D5H0I/I"/LqQUVWQXyY[|/[^_`def`g^ghj^j/j&l$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 ]B  }t        t        | |            } |t              |k(  r)J d|d |t              d	|d
        y )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GtAwtAQK'8889A=AQ$1a4-!AqD&(1,K x$Q56!u#w^bdfghdikv%ww#xrD   c                  R   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 y )Nr-   r0   r2   )	extensionr.   )r!   r'   r   r   rC   rD   rE   test_issue_20163r     s   AqDFQ|4	a1qsT!W}q()!+	a1qsT!W}q()!+	,	a1qsT!W}q()!+	, 
a1qsT!W}q()!+	, 	
1q5	!		 Qik		"" " "rD   c                  p    t        t        d            } t        | dz  t              t        dz  dz
  k(  sJ y )Nr.   r2   r1   )r   r   r   r'   )alphas    rE   test_issue_22559r     s1    DG$EeQh*adQh666rD   c                  H   t        t        d      t        d      z   t        d      dz  dt        d      dz  dgt              } | j	                         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 y )Nr.   r2   r-   r   i)genr1   )r   r   r   r'   as_exprr   r   s    rE   test_issue_22561r     s    Q$q')AaD1Ha2A+FANA99;$q'!!!a#q!tax///adA&!Q$(222rD   c                  &    t        t        d        y )Nc                  L    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 rD   r   r   rC   rD   rE   test_separate_sq_not_implr     s    
 EFrD   c                  &    t        t        d        y )Nc                  \    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d1gtAw2N rD   r   rC   rD   rE   *test_minpoly_op_algebraic_element_not_implr     s    
NPrD   c                     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        y )Nr.   r2   r-   r:   r+   r0   c                  :    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 rD   )r    r   r'   r   r   r   r"   rC   rD   rE   test_minpoly_groebnerr     sM   QqT!VQ-1q888	a1tAw{#Q.12A1qA A Ad1gkQqT!V4d1gkQqT!V5LL&)*A1a4!);< < <d1gkadU1W5tAw{ad1f6MM&)*1a4!AqD&1)<= = =
<B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 E E   " 6 A D D & + . / - % (  '
 # * (  H6V/ [4_IDi,&.
Q"WH 8 8F)3mx"7
3GP
DrD   