a
    khKZ                     @   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  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/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddlm8Z8 ddlm9Z9 ddl:m;Z;m<Z<m=Z= e	Z>dd Z?dd Z@dd ZAdd  ZBd!d" ZCd#d$ ZDd%d& ZEd'd( ZFd)d* ZGd+d, ZHd-d. ZId/d0 ZJe&d1d2 ZKd3d4 ZLd5d6 ZMd7d8 ZNd9d: ZOd;d< ZPd=d> ZQd?d@ ZRdAdB ZSdCdD ZTdEdF ZUdGdH ZVdIS )JzTests for minimal polynomials.     )expand)GoldenRatioTribonacciConstant)AlgebraicNumberIRationaloopi)Pow)S)exp)cbrtsqrt)cossintan)	nextprime)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'    rA   rA   Y/var/www/auris/lib/python3.9/site-packages/sympy/polys/numberfields/tests/test_minpoly.py<lambda>P       z)test_minimal_polynomial.<locals>.<lambda>c                   S   s   t dt tS Nr-   )r   r(   r'   rA   rA   rA   rB   rC   Q   rD   c                   S   s   t tdtS )Nr,   )r   r   r'   rA   rA   rA   rB   rC   R   rD   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"   Zdummy_eqr   r   Qr   r   r   r$   algebraic_fieldr   r   r   )	abfeqexmppKrd   rA   rA   rB   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
rp   c                  C   sz   t d} t | }t| d | js&J t| d | | t|  }t|ttksTJ ttd| ttd d ksvJ d S )Nl     _r-   )r   r   Zis_Powr   r'   )p1p2ZzerorA   rA   rB   test_issue_26903   s    rs   c                   C   sR   t tdt t ddttd ks&J t tdtdd ddttd ksNJ d S )Nr1   Fevaluater,   r0   r-   )r   r   r   r	   r'   r
   r   rA   rA   rA   rB   test_issue_8353   s    &rv   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| r3   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polyrA   rA   rB   #test_minimal_polynomial_issue_19732   s*    

rx   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,   r6   r-   r*   r1   r9      r/   l    \!b1")XQ+z>pH.g>tJ4"*v ~b]fit )r   r   r   r'   Zcoeff)rn   rm   rA   rA   rB   test_minimal_polynomial_hi_prec   s    2
rz   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-   r1   r3   v      i)  r*   r0   rU   r/   rV   rW   rX   rY   rZ   r[   c                 S   s   g | ]}t |qS rA   )r   ).0irA   rA   rB   
<listcomp>   rD   z.test_minimal_polynomial_sq.<locals>.<listcomp>r5   l   >/&5> )
Zsympy.core.addr{   sympy.core.functionr|   r   r   r   r'   rangesubs)r{   r|   rn   rm   rA   rA   rB   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 )HNrO   r1   rP   r-   i  i? r0   r,   r*   i   r5   i   r9   i ] i r/   i` r3   i io  @   r.   i  i0  i        rS   r6   rT   +   F   a   ~         r;            r+      rV      r_   r7   r   r4   $   i   i   r?         i ,  i  i  c                   S   s   t tttd tS rE   )r   r   r	   r   r'   rA   rA   rA   rB   rC   *  rD   z&test_minpoly_compose.<locals>.<lambda>c                   S   s   t tttd tS rE   )r   r   r	   r   r'   rA   rA   rA   rB   rC   +  rD   c                   S   s   t tdt t tS )NgS?)r   r   r   r	   r'   rA   rA   rA   rB   rC   ,  rD   c                   S   s   t ttt td tS rE   )r   r   r   r	   r   r'   rA   rA   rA   rB   rC   -  rD   i`si      c                      s
   t  tS r@   )r   r'   rA   rl   rA   rB   rC   2  rD   r=   l{> Frt   c                   S   s   t tttd tS rE   )r   r   r	   r   r'   rA   rA   rA   rB   rC   G  rD   )r   r   r'   r   r   r	   r   r   r   r   r%   r   r"   ZeroDivisionErrorr&   r   r   is_zero)rk   rm   rA   r   rB   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   rrm   rA   rA   rB   test_minpoly_issue_7113J  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 	= r1   iMr-   l   !: l   1D> r   r,   l      =]T r3   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numrm   rA   rA   rB   test_minpoly_issue_23677S  sZ    **&





		
r   c                  C   s8   dt dd  dt dd  } t| ttd ks4J d S )Nr+   r,   r1   r-   )r   r   r'   r   rA   rA   rB   test_minpoly_issue_7574f  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 )Nr1   )r   r'   r   rA   Zbad_factorsrA   rB   rC   n  rD   z$test_choose_factor.<locals>.<lambda>)r   r'   r   NotImplementedErrorrA   rA   r   rB   test_choose_factork  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-   r3   r1   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(   rA   rA   rA   rB   rC     rD   z-test_minpoly_fraction_field.<locals>.<lambda>c                   S   s   t tttS r@   )r   r   r'   rA   rA   rA   rB   rC     rD   c                   S   s   t ttt tS r@   r   r   r'   r(   rA   rA   rA   rB   rC     rD   c                   S   s   t tttddS )NFr]   r   rA   rA   rA   rB   rC     rD   )r   r'   r(   r   r   r)   r   r   r"   r#   r   rh   rA   rA   rB   test_minpoly_fraction_fieldq  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)   rA   rA   rA   rB    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-   rH   r0   r1   c                   S   s   t tttdS )NrH   )r   r(   r'   r$   rA   rA   rA   rB   rC     rD   z%test_minpoly_domain.<locals>.<lambda>)r   r   r'   r$   rg   r   r   r"   rA   rA   rA   rB   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-   r5   rK   rT   r0   r   )r   r   r'   )rh   erA   rA   rB   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 )Nr1   r-   r/   r3   r6   )r   r'   r(   r   r   r   rA   rA   rA   rB   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 )Nr1   r.   r3   r*   r/   r+   r      r6      #   i  r-   )r   r   r   r   )Zc1c2rA   rA   rB   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-   r3   r1   )TFr]   z3minimal_polynomial(e, compose=%s) = %s; %s expected)r   r'   r   r   )r   Zmp_expectedcomprm   rA   rA   rB   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/   r1   )	extensionr-   )r!   r'   r   r   rA   rA   rA   rB   test_issue_20163  s    """"r   c                  C   s.   t td} t| d ttd d ks*J d S )Nr-   r1   r0   )r   r   r   r'   )alpharA   rA   rB   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-   r1   r,   r   i)genr0   )r   r   r   r'   Zas_exprr   r   rA   rA   rB   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,   r1   )r   r'   r   rA   rA   rA   rB   rC     rD   z+test_separate_sq_not_impl.<locals>.<lambda>r   r   rA   rA   rA   rB   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-   r1   )r   r
   r   r'   r$   rA   rA   rA   rB   rC     rD   z<test_minpoly_op_algebraic_element_not_impl.<locals>.<lambda>r   rA   rA   rA   rB   *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-   r1   r,   r9   r*   r/   c                   S   s   t td ttS rE   )r    r	   r'   r   rA   rA   rA   rB   rC     rD   z'test_minpoly_groebner.<locals>.<lambda>)r    r   r'   r   r   r   r"   rA   rA   rA   rB   test_minpoly_groebner  s"    $02
r   N)W__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.ntheory.generater   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)   rf   rp   rs   rv   rx   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   rA   rA   rB   <module>   sd    	b	$
		