o
    GZhKZ                     @   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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'    rA   rA   Z/var/www/auris/lib/python3.10/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       c                   S   s   t tdtS )Nr,   )r   r   r'   rA   rA   rA   rB   rC   R   rF   Tpolysr$   domainF)rH   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   rK      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Kre   rA   rA   rB   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   sz   t d} t | }t| d | jsJ t| d | | t|  }t|ttks*J ttd| ttd d ks;J d S )Nl     _r-   )r   r   Zis_Powr   r'   )p1p2zerorA   rA   rB   test_issue_26903   s   &ru   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s'J d S )Nr1   Fevaluater,   r0   r-   )r   r   r   r	   r'   r
   r   rA   rA   rA   rB   test_issue_8353   s   &rx   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| 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*   

rz   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,   r6   r-   r*   r1   r9      r/   l    \!b1")XQ+z>pH.g>tJ4"*v ~b]fit )r   r   r   r'   Zcoeff)ro   rn   rA   rA   rB   test_minimal_polynomial_hi_prec   s   2
r|   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-   r1   r3   v      i)  r*   r0   rV   r/   rW   rX   rY   rZ   r[   r\   c                 S   s   g | ]}t |qS rA   )r   ).0irA   rA   rB   
<listcomp>   s    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~   ro   rn   rA   rA   rB   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 )HNrP   r1   rQ   r-   i  i? r0   r,   r*   i   r5   i   r9   i ] i r/   i` r3   i io  @   r.   i  i0  i        rT   r6   rU   +   F   a   ~         r;            r+      rW      r`   r7   r   r4   $   i   i   r?         i ,  i  i  c                   S      t tttd tS rE   )r   r   r	   r   r'   rA   rA   rA   rB   rC   *      z&test_minpoly_compose.<locals>.<lambda>c                   S   r   rE   )r   r   r	   r   r'   rA   rA   rA   rB   rC   +  r   c                   S   s   t tdt t tS )NgS?)r   r   r   r	   r'   rA   rA   rA   rB   rC   ,  r   c                   S   s   t ttt td tS rE   )r   r   r   r	   r   r'   rA   rA   rA   rB   rC   -  s    i`si      c                      s
   t  tS r@   )r   r'   rA   rm   rA   rB   rC   2  rD   r=   l{> Frv   c                   S   r   rE   )r   r   r	   r   r'   rA   rA   rA   rB   rC   G  r   )r   r   r'   r   r   r	   r   r   r   r   r%   r   r"   ZeroDivisionErrorr&   r   r   is_zero)rl   rn   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   rrn   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   )r1r2numrn   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sJ 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      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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-   r3   r1   r/   TrG   zZZ(x)rI   zZZ(x, z)r.   rT   c                   S   s   t tttS r@   )r   r   r'   r(   rA   rA   rA   rB   rC     rF   z-test_minpoly_fraction_field.<locals>.<lambda>c                   S   s   t tttS r@   )r   r   r'   rA   rA   rA   rB   rC     rF   c                   S   s   t ttt tS r@   r   r   r'   r(   rA   rA   rA   rB   rC         c                   S   s   t tttddS )NFr^   r   rA   rA   rA   rB   rC     r   )r   r'   r(   r   r   r)   r   r   r"   r#   r   ri   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s"J 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sIJ ttdd  d S )Nr-   rI   r0   r1   c                   S   s   t tttdS )NrI   )r   r(   r'   r$   rA   rA   rA   rB   rC     rF   z%test_minpoly_domain.<locals>.<lambda>)r   r   r'   r$   rh   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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-   r5   rL   rU   r0   r   )r   r   r'   )ri   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sVJ d S )Nr1   r-   r/   r3   r6   )r   r'   r(   r   r   r   rA   rA   rA   rB   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 )Nr1   r.   r3   r*   r/   r+   r      r6      #   i  r-   )r   r   r   r   )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 ]}tt| |d}|t|ksGJ d||t|f q,d S )Nr,   r-   r3   r1   )TFr^   z3minimal_polynomial(e, compose=%s) = %s; %s expected)r   r'   r   r   )r   Zmp_expectedcomprn   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sjJ 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s#J t| ttd d ks0J 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      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         z+test_separate_sq_not_impl.<locals>.<lambda>r   r   rA   rA   rA   rB   test_separate_sq_not_impl  s   r   c                   C   r   )Nc                   S   s   t ttdtdttS )Nr-   r1   )r   r
   r   r'   r$   rA   rA   rA   rB   rC     r   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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-   r1   r,   r9   r*   r/   c                   S   s   t td ttS rE   )r    r	   r'   r   rA   rA   rA   rB   rC     r   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)   rg   rq   ru   rx   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   rA   rA   rB   <module>   sf     	b	$
		