o
    g>X                     @   s  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d Z=dd Z>dd Z?dd Z@d d! ZAd"d# ZBd$d% ZCd&d' ZDd(d) ZEd*d+ ZFe$d,d- ZGd.d/ ZHd0d1 ZId2d3 ZJd4d5 ZKd6d7 ZLd8d9 ZMd:d; ZNd<d= ZOd>d? ZPd@dA ZQdBdC ZRdDS )Ez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            	   
   C   s  t dttd ksJ t dttd ksJ t dttksJ t dttd ks*J t dttd ks5J t tdttd d ksDJ t tdttd d ksSJ t tdttd d ksbJ t dtd ttd d	 kssJ t d
td ttd d ksJ t dtd ttd d ksJ t dtd d
 ttd dt  d ksJ t d
td d ttd dt  d ksJ t dtd d ttd dt  d ksJ t dtd d
 ttd dt  d ksJ t d
td d ttd dt  d ks	J t dtd d ttd dt  d ks!J t tdtd ttd dtd   d ks;J t tttd ttd	 dtd   d ksUJ t dt tdt  ttd dtd   d	t  d ksuJ t tdtd
 ttd dtd   d ksJ t tdtd
 td ttd dtd   dt  d ksJ ddtd  dtd
  } t d|  tdtd  dtd
   dtd   dt  d ksJ t dt|  tdtd	  dtd   dtd   dtd   d ksJ ttdd  ttdd  ttdd  t tdtd d s,J t tdttd d ks<J t tddd ttd d ksOJ t tdtdd ttd d d!d"kseJ t tdtdd#d$ttd d d!d"ks|J ttd} ttd
}t | ttd d ksJ t |ttd d
 ksJ t | tdd ttd d d!d"ksJ t |tdd ttd d
 d!d"ksJ t t| d d% tdtd  d&td   d' ksJ t t|d d% tdtd  d(td   d) ksJ tdd
 d ttdd
 d } }d*td	  d+td   d,td   d-td   d.td
   d/td   d0t  d1 }t t| tt|  t|ksSJ t t|tt| t|kseJ t | t	d
d td2td  d3td   d4 ksJ t
d5}t |td6td  d ksJ tdtt dtdd7t    d8td tt	dd dd7t  t	d
d    d9td tt	d:d dd7t  t	d
d    dt tdtd7    }t |t}|d8td  d;td   d< ksJ dtd td
 }t |t}|td dtd
   dtd   d=t  d	 ks$J ddtd td
  }t |t}|d	td  d=td
   dtd   dt  d ksRJ tdtd dtd
  td d
 tdd
 }t |t}|td	 d	td   d>td   d?td   d@td   dAtd
   dBtd   dCt  dD ksJ tdtd dtd
  td d
 }t |t}|td	 dEtd   dFtd   dGtd   dHtd   dItd
   dJtd   dKt  dL ksJ t t
dMttd ksJ dtd } t | td |  d
 ttd dNt  d ksJ ddtd td
  }t |td#dOd	td  d=td
   dtd   dt  d ksKJ ddtd td
  }t |td#dOtd dtd
   dtd   dt  d kswJ t dtdt  td#dOtd dt  d
 ksJ t ddtd  d td#dOtd d ksJ t tdt tdtd   td#dOtd dPtd   d ksJ t ttttd"tt ksJ tttdd  }t tt|d"tt ksJ t tttd"td d ksJ t ttdQd"td d ksJ t tttd t d ks%J t td
 ttd
 dtd   dRt  dS ks?J t ttttdd"dt td d ksXJ t ttttdTd
tdU  d"dt dTdTd
tdU  tdd
   d
tdU dTd
tdU  tdd
   d=dTd
tdU  tdd
   d= ksJ tt
jjddVdWdX}t |ttd t d ksJ d S )YNi      r                  -      `      	      /   
   1   %      0      i    id  c                   S   s
   t ttS N)r   r   r&    r@   r@   b/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/numberfields/tests/test_minpoly.py<lambda>O      
 z)test_minimal_polynomial.<locals>.<lambda>c                   S   s   t dt tS Nr,   )r   r'   r&   r@   r@   r@   rA   rB   P       c                   S   s   t tdtS )Nr+   )r   r   r&   r@   r@   r@   rA   rB   Q   rE   Tpolysr#   domainF)rG   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   rJ      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Krd   r@   r@   rA   test_minimal_polynomial(   s   """....0044@4
.
2
  &,.((88&:
$$
 "..
&
6
:2
f(
f4D@40
"   4
"J
$rq   c               	   C   s   ddt d t tdd dt d d   dt tdd dt d d     dd	t d t tdd dt d d   d
t tdd dt d d      } dtd  dtd   d }t| t|kskJ 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| r2   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polyr@   r@   rA   #test_minimal_polynomial_issue_19732   s*   

rt   c                  C   sV   dt ddt d  dt d  tddd   } t| t}|td d	ks)J d S )
Nr+   r5   r,   r)   r0   r8      r.   l    \!b1")XQ+z>pH.g>tJ4"*v ~b]fit )r   r   r   r&   coeff)ro   rn   r@   r@   rA   test_minimal_polynomial_hi_prec   s   2
rw   c                  C   s`  ddl m}  ddlm} |ddtd  dtd  d }t|tdd t}|td dtd   d	td   d
t  d ksBJ |dtd dtd  td d }t|tdd t}|td dtd   dtd   dtd   dtd   dtd   dtd   dt  d ksJ | dd tddD  }t|t}|	tdidksJ d S )Nr   )Add)expand_multinomialr+   r-   r,   r0   r2   v      i)  r)   r/   rU   r.   rV   rW   rX   rY   rZ   r[   c                 S   s   g | ]}t |qS r@   )r   ).0ir@   r@   rA   
<listcomp>   s    z.test_minimal_polynomial_sq.<locals>.<listcomp>r4   l   >/&5> )
sympy.core.addrx   sympy.core.functionry   r   r   r   r&   rangesubs)rx   ry   ro   rn   r@   r@   rA   test_minimal_polynomial_sq   s   $4(d
r   c                     s
  t d} t| d t}|dtd  dt  d ksJ tttt d ttd d ks.J tttd	 td t}|d
td  dtd   dtd   dtd   dtd   dtd   d kseJ tttd	 td t}|dtd  dtd   dtd   dtd   dtd   dt  d ksJ tttt d	 td t}|td dtd   dtd   dtd   dtd   d td	   d!td   d"td   d#td   d$td   d%td   d&t  d' ksJ tttd	 td t}|d
td  dtd   dtd   dtd   dtd   dtd   d ks+J tttd	 td t}|dtd  dtd   dtd   dtd   dtd   dt  d ksaJ tttt d	 td t}|td dtd   dtd   dtd   dtd   d td	   d!td   d"td   d#td   d$td   d%td   d&t  d' ksJ tttt t	dd	 t}|td td  td  td  td  t d ksJ tttt t	dd( t}|td td	  td  td  td  t d ksJ tttt	dd	 t}|dtd  dtd   dt  d ks4J tttt	dd	 t}dttt	dd	  d	 dttd	  dttt	dd	     t t}|td dtd   t d ksxJ td)dttd	   ttd dtd   t d ksJ tttt	dd( td*td  d+td   d,td   d-td   d ksJ tttt	dd. tdtd  dtd   dt  d ksJ tttd( tdtd  dtd   dtd   dt  d ksJ t
td td  d d/ t t}|td dt  d ks%J t d t}|td dtd   d	t  d ksAJ tttt d ttd t d ksWJ tttt d ttd d kskJ tttt d ttd td  d ksJ tttt d ttd td  d ksJ tttt d ttd td  td  td  d ksJ tttd tdtd  d0td   d1td   d ksJ tttd td2td  d3td   d3td   d4td   d5td   d ksJ tttd6 td
td  d7td   d7td   d8td   d9td   dtd   d ks9J tttd tdtd  dt  d ksQJ dt	dd tdt t d   t ttd d kspJ ttd:d;  ttd<d;  ttd=d;  ttd>d;  dd?d@td  dtd ttdd  dAtd ttd d   d   d  tt fdBd; tddt	dd  tddt	dd   td  t t}t|dCkr|td/idDksJ ttd dEdF t t}|td dtd   d ksJ |tttd jsJ ttd dEdF t t}|dtd  d ks8J |tttd jsFJ ttd dEdF t t}|dtd  dtd   d ksfJ |tttd jstJ ttdGd;  d S )HNrO   r0   rP   r,   i  i? r/   r+   r)   i   r4   i   r8   i ] i r.   i` r2   i io  @   r-   i  i0  i        rS   r5   rT   +   F   a   ~         r:            r*      rV      r_   r6   r   r3   $   i   i   r>         i ,  i  i  c                   S      t tttd tS rD   )r   r   r	   r   r&   r@   r@   r@   rA   rB         z&test_minpoly_compose.<locals>.<lambda>c                   S   r   rD   )r   r   r	   r   r&   r@   r@   r@   rA   rB     r   c                   S   s   t tdt t tS )NgS?)r   r   r   r	   r&   r@   r@   r@   rA   rB     r   c                   S   s   t ttt td tS rD   )r   r   r   r	   r   r&   r@   r@   r@   rA   rB     s    i`si      c                      s
   t  tS r?   )r   r&   r@   rm   r@   rA   rB   "  rC   r<   l{> F)evaluatec                   S   r   rD   )r   r   r	   r   r&   r@   r@   r@   rA   rB   7  r   )r   r   r&   r   r   r	   r   r   r   r   r$   r   r!   ZeroDivisionErrorr%   r   r   is_zero)rl   rn   r@   r   rA   test_minpoly_compose   s    &0


<
0

<::.@
&<2
BH
*,(00@@&


&



0"*4
&
"

&r   c                  C   s>   ddl m}  | tdd}t|t}|dtd  d 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   rrn   r@   r@   rA   test_minpoly_issue_7113:  s   
r   c                  C   s  t dtd  dtd   dt  d d} t dtd  dtd   dt  d d}d	| d
  |d
  d| d
  |d   d| d
  |d   d| d
  |  d| d
   d| d  |d
   d| d  |d   d| d   d| d  |d
   d| d  |d   d| d  |  d| d   d|  |d
   d|  |d   d|   d|d
   d|d   d|d   d|  d }td dtd   dt  d }t|t|ksJ d S )Ni 	= r0   iMr,   l   !: l   1D> r   r+   l      =]T r2   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numrn   r@   r@   rA   test_minpoly_issue_23677C  sZ   **&





		
r   c                  C   s8   dt dd  dt dd  } t| ttd ksJ d S )Nr*   r+   r0   r,   )r   r   r&   r   r@   r@   rA   test_minpoly_issue_7574V  s   r   c                      s2   t td tt td tg tt fdd d S )Nr,   c                      s   t  ttdS )Nr0   )r   r&   r   r@   bad_factorsr@   rA   rB   ^      z$test_choose_factor.<locals>.<lambda>)r   r&   r   NotImplementedErrorr@   r@   r   rA   test_choose_factor[  s   r   c                  C   s  t dt tt t d ksJ t dtd  ttd t d ks#J t ttttd t ks2J t ttd ttd t d ksEJ t ttt tttd  d ksXJ t tdtt ttd dt  ksmJ t tdtt ttd dt d td   td  dt  d ksJ t ttdd ttd t ksJ t ttdd tt ttd dt td   dt td   dtd  td   dtd  t  td  td  ksJ t ttt ttd td  t ksJ t tttd  ttd dt  d td  t ksJ t dt tddtt t d td	d
ks-J t dtd  tddttd t d td	d
ksHJ t tttddttd t td	d
ks_J t ttt tddttd td  t tdd
ks|J tttdtd   ttd d t  dttdd dtd  tdd    dttdd dtd  tdd    } t | ttksJ ttdd  tt	dd  tt	dd  tt
dd  d S )Nr+   r,   r2   r0   r.   TrF   zZZ(x)rH   zZZ(x, z)r-   rS   c                   S   s   t tttS r?   )r   r   r&   r'   r@   r@   r@   rA   rB     rE   z-test_minpoly_fraction_field.<locals>.<lambda>c                   S   s   t tttS r?   )r   r   r&   r@   r@   r@   rA   rB     rE   c                   S   s   t ttt tS r?   r   r   r&   r'   r@   r@   r@   rA   rB         c                   S   s   t tttddS )NFr]   r   r@   r@   r@   rA   rB     r   )r   r&   r'   r   r   r(   r   r   r!   r"   r   ri   r@   r@   rA   test_minpoly_fraction_fielda  sB    &&&*.$Z*<0
.
8&r   c                	   C   sH   t t tttdd d tttttdd d ttks"J d S )Nr+   r-   )r   r   r&   r   r'   r   r(   r@   r@   r@   rA    test_minpoly_fraction_field_slow  s   r   c                   C   s   t tdtttddttd ksJ t tdtttddtdtd  ks.J t ttddtttdddtd  d ksIJ ttdd  d S )Nr,   rH   r/   r0   c                   S   s   t tttdS )NrH   )r   r'   r&   r#   r@   r@   r@   rA   rB     rE   z%test_minpoly_domain.<locals>.<lambda>)r   r   r&   r#   rh   r   r   r!   r@   r@   r@   rA   test_minpoly_domain  s   
r   c                  C   s   dt d t dt d d  } t| ttd dt  d ks!J dt dt d d  dt d  d dt d t dt d d   }t|ttksNJ d S )Nr   r,   r4   rK   rT   r/   r   )r   r   r&   )ri   er@   r@   rA   test_issue_14831  s    ""r   c                   C   s   t ttd  tdd  ttd  ddtd   gttttdd tdd ftdd td d tdt d  ftdd td d tdt d  fksVJ d S )Nr0   r,   r.   r2   r5   )r   r&   r'   r   r   r   r@   r@   r@   rA   test_issue_18248  s
   :@(r   c               	   C   sN  t tdtdd} t tdtdd}t| |tdtd td dtd d d	td d  td
td d d    dtd d d	td d  td
td d d  tdtd td td
td d  d dtd d  d	td d    td
td d  d dtd d  d	td d  gksJ d S )Nr0   r-   r2   r)   r.   r*   r      r5      #   i  r,   )r   r   r   r   )c1c2r@   r@   rA   test_issue_13230  s.   * 8r   c                  C   s   dt dt d t dt dt d    d } td dtd   dtd   d }dD ]}tt| |d}|t|ksGJ d||t|f q,d S )Nr+   r,   r2   r0   )TFr]   z3minimal_polynomial(e, compose=%s) = %s; %s expected)r   r&   r   r   )r   mp_expectedcomprn   r@   r@   rA   test_issue_19760  s   0$$r   c                   C   s   t dtd d  tdtgdtdt dt td t  d tdt dt td t  d  tdt dt td t  d  tdt dt td t  d  ttt  d  ttt  d  ksjJ d S )Nr+   r.   r0   )	extensionr,   )r    r&   r   r   r@   r@   r@   rA   test_issue_20163  s   """"r   c                  C   s.   t td} t| d ttd d ksJ d S )Nr,   r0   r/   )r   r   r   r&   )alphar@   r@   rA   test_issue_22559  s   "r   c                  C   s   t tdtd tdd dtdd dgtd} |  tdks#J t| ttd d ks0J t| d ttd d ks?J d S )Nr,   r0   r+   r   i)genr/   )r   r   r   r&   as_exprr   r   r@   r@   rA   test_issue_22561  s   2"r   c                   C      t tdd  d S )Nc                   S   s   t ttdd  t S )Nr+   r0   )r   r&   r   r@   r@   r@   rA   rB         z+test_separate_sq_not_impl.<locals>.<lambda>r   r   r@   r@   r@   rA   test_separate_sq_not_impl  s   r   c                   C   r   )Nc                   S   s   t ttdtdttS )Nr,   r0   )r   r
   r   r&   r#   r@   r@   r@   rA   rB     r   z<test_minpoly_op_algebraic_element_not_impl.<locals>.<lambda>r   r@   r@   r@   rA   *test_minpoly_op_algebraic_element_not_impl  s   r   c                   C   s  t tdd ttdt d ksJ t tdd tdd  tttd dt  d ks.J t tdd tdd  tdd tdd   tttd dtd   d ksXJ t tdd td d  tdd tdd   ttdtd  dtd   d ksJ ttdd  d S )	Nr,   r0   r+   r8   r)   r.   c                   S   s   t td ttS rD   )r   r	   r&   r   r@   r@   r@   rA   rB     r   z'test_minpoly_groebner.<locals>.<lambda>)r   r   r&   r   r   r   r!   r@   r@   r@   rA   test_minpoly_groebner  s"   $02r   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(   rg   rq   rt   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   r@   r@   rA   <module>   s`     b	$
		