a
    {d>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sTJ t dttd ksjJ t tdttd d ksJ t tdttd d ksJ t tdttd d ksJ t dtd ttd d	 ksJ t d
td ttd d ks
J t dtd ttd d ks.J 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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sNJ t tdtd ttd dtd   d ksJ t tttd ttd	 dtd   d ksJ t dt tdt  ttd dtd   d	t  d ksJ t tdtd
 ttd dtd   d ks*J t tdtd
 td ttd dtd   dt  d ksnJ 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 sdJ t tdttd d ksJ t tddd ttd d ksJ t tdtdd ttd d d!d"ksJ 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s8J t |ttd d
 ksTJ t | tdd ttd d d!d"ks|J 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sJ t t|tt| t|ksJ t | t	d
d td2td  d3td   d4 ksJ t
d5}t |td6td  d ks4J 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s J dtd td
 }t |t}|td dtd
   dtd   d=t  d	 ksTJ ddtd td
  }t |t}|d	td  d=td
   dtd   dt  d ksJ 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	sRJ 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
sJ dtd } t | td |  d
 ttd dNt  d k
sFJ ddtd td
  }t |td#dOd	td  d=td
   dtd   dt  d k
sJ ddtd td
  }t |td#dOtd dtd
   dtd   dt  d k
sJ t dtdt  td#dOtd dt  d
 ks.J t ddtd  d td#dOtd d ks^J 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s6J t tttd t d ksVJ t td
 ttd
 dtd   dRt  dS ksJ t ttttdd"dt td d ksJ 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sTJ 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@   t/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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   rC   c                   S   s   t tdtS )Nr+   )r   r   r&   r@   r@   r@   rA   rB   Q   rC   Tpolysr#   domainF)rF   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   rI      zQQ(y)    "      !   )funcphi)alias)r   r&   r   r   r   r!   Zdummy_eqr   r   Qr   r   r   r#   algebraic_fieldr   r   r   )	abfeqexmppKrc   r@   r@   rA   test_minimal_polynomial(   s    "$$00000044@4
.
2
  &,.((88&:
$$
 "..
&
6
:2
f(
f4D@40
"   4
"J
ro   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sJ 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   )exprZpolyr@   r@   rA   #test_minimal_polynomial_issue_19732   s*    

rq   c                  C   sV   dt ddt d  dt d  tddd   } t| t}|td d	ksRJ 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&   Zcoeff)rm   rl   r@   r@   rA   test_minimal_polynomial_hi_prec   s    2
rs   c                  C   sd  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sJ |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s&J | dd tddD  }t|t}|	tdidks`J d S )Nr   )Add)expand_multinomialr+   r-   r,   r0   r2   v      i)  r)   r/   rT   r.   rU   rV   rW   rX   rY   rZ   c                 S   s   g | ]}t |qS r@   )r   ).0ir@   r@   rA   
<listcomp>   rC   z.test_minimal_polynomial_sq.<locals>.<listcomp>r4   l   >/&5> )
Zsympy.core.addrt   sympy.core.functionru   r   r   r   r&   rangesubs)rt   ru   rm   rl   r@   r@   rA   test_minimal_polynomial_sq   s    $4(f
r~   c                     s
  t d} t| d t}|dtd  dt  d ks6J 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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 ks6J 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sZJ 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szJ 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slJ 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sJ td)dttd	   ttd dtd   t d ks0J 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sNJ t d t}|td dtd   d	t  d ksJ tttt d ttd t d ksJ tttt d ttd d ksJ tttt d ttd td  d ks
J tttt d ttd td  d ks:J tttt d ttd td  td  td  d kszJ 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svJ tttd tdtd  dt  d ksJ dt	dd tdt t d   t ttd d ksJ 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
stJ |tttd j
sJ ttd dEdF t t}|dtd  dtd   d k
sJ |tttd j
sJ ttdGd;  d S )HNrN   r0   rO   r,   i  i? r/   r+   r)   i   r4   i   r8   i ] i r.   i` r2   i io  @   r-   i  i0  i        rR   r5   rS   +   F   a   ~         r:            r*      rU      r^   r6   r   r3   $   i   i   r>         i ,  i  i  c                   S   s   t tttd tS rD   )r   r   r	   r   r&   r@   r@   r@   rA   rB     rC   z&test_minpoly_compose.<locals>.<lambda>c                   S   s   t tttd tS rD   )r   r   r	   r   r&   r@   r@   r@   rA   rB     rC   c                   S   s   t tdt t tS )NgS?)r   r   r   r	   r&   r@   r@   r@   rA   rB     rC   c                   S   s   t ttt td tS rD   )r   r   r   r	   r   r&   r@   r@   r@   rA   rB     rC   i`si      c                      s
   t  tS r?   )r   r&   r@   rk   r@   rA   rB   "  rC   r<   l{> F)evaluatec                   S   s   t tttd tS rD   )r   r   r	   r   r&   r@   r@   r@   rA   rB   7  rC   )r   r   r&   r   r   r	   r   r   r   r   r$   r   r!   ZeroDivisionErrorr%   r}   r   is_zero)rj   rl   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&.>)Z	tolerancel   oD!|S0o60" m   l                    869V_jp)A+DGZ  )Zsympy.simplify.simplifyr   r	   r   r&   )r   rrl   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   )Zr1Zr2numrl   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s4J 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@   Zbad_factorsr@   rA   rB   ^  rC   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sFJ t ttttd t ksdJ t ttd ttd t d ksJ t ttt tttd  d ksJ t tdtt ttd dt  ksJ t tdtt ttd dt d td   td  dt  d ks&J t ttdd ttd t ksLJ 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s2J t dt tddtt t d td	d
ksbJ t dtd  tddttd t d td	d
ksJ t tttddttd t td	d
ksJ 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.   TrE   zZZ(x)rG   zZZ(x, z)r-   rR   c                   S   s   t tttS r?   )r   r   r&   r'   r@   r@   r@   rA   rB     rC   z-test_minpoly_fraction_field.<locals>.<lambda>c                   S   s   t tttS r?   )r   r   r&   r@   r@   r@   rA   rB     rC   c                   S   s   t ttt tS r?   r   r   r&   r'   r@   r@   r@   rA   rB     rC   c                   S   s   t tttddS )NFr\   r   r@   r@   r@   rA   rB     rC   )r   r&   r'   r   r   r(   r   r   r!   r"   r   rg   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sDJ 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sJ ttdd  d S )Nr,   rG   r/   r0   c                   S   s   t tttdS )NrG   )r   r'   r&   r#   r@   r@   r@   rA   rB     rC   z%test_minpoly_domain.<locals>.<lambda>)r   r   r&   r#   rf   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sBJ dt dt d d  dt d  d dt d t dt d d   }t|ttksJ d S )Nr   r,   r4   rJ   rS   r/   r   )r   r   r&   )rg   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sJ d S )Nr0   r,   r.   r2   r5   )r   r&   r'   r   r   r   r@   r@   r@   rA   test_issue_18248  s
    :@(r   c               	   C   sP  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sLJ d S )Nr0   r-   r2   r)   r.   r*   r      r5      #   i  r,   )r   r   r   r   )Z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 ]6}tt| |d}|t|ksXJ d||t|f qXd S )Nr+   r,   r2   r0   )TFr\   z3minimal_polynomial(e, compose=%s) = %s; %s expected)r   r&   r   r   )r   Zmp_expectedcomprl   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sJ 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sFJ t| ttd d ks`J t| d ttd d ks~J d S )Nr,   r0   r+   r   i)genr/   )r   r   r   r&   Zas_exprr   r   r@   r@   rA   test_issue_22561  s    2r   c                   C   s   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     rC   z+test_separate_sq_not_impl.<locals>.<lambda>r   r   r@   r@   r@   rA   test_separate_sq_not_impl  s    r   c                   C   s   t tdd  d S )Nc                   S   s   t ttdtdttS )Nr,   r0   )r   r
   r   r&   r#   r@   r@   r@   rA   rB     rC   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sJ t tdd td d  tdd tdd   ttdtd  dtd   d ksJ 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     rC   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   Z
sympy.corer   r   Zsympy.core.numbersr   r   r   r   r	   Zsympy.core.powerr
   Zsympy.core.singletonr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   r   Z(sympy.functions.elementary.trigonometricr   r   r   Zsympy.polys.polytoolsr   Zsympy.polys.rootoftoolsr   Zsympy.solvers.solvesetr   Zsympy.geometryr   r   Zsympy.testing.pytestr   r   Zsympy.sets.setsr   Zsympy.geometry.pointr   Z sympy.polys.numberfields.minpolyr   r   r   r   r   Zsympy.polys.partfracr    Zsympy.polys.polyerrorsr!   r"   Zsympy.polys.domainsr#   r$   r%   Z	sympy.abcr&   r'   r(   re   ro   rq   rs   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	$
		