U
    	-e>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tt dttd ks,tt dttks>tt dttd ksTtt dttd ksjtt tdttd d kstt tdttd d kstt tdttd d kstt dtd ttd d	 kstt d
td ttd d ks
tt dtd ttd d ks.tt dtd d
 ttd dt  d ks^tt d
td d ttd dt  d kstt dtd d ttd dt  d kstt dtd d
 ttd dt  d kstt d
td d ttd dt  d kstt dtd d ttd dt  d ksNtt tdtd ttd dtd   d kstt tttd ttd	 dtd   d kstt dt tdt  ttd dtd   d	t  d kstt tdtd
 ttd dtd   d ks*tt tdtd
 td ttd dtd   dt  d ksntddtd  dtd
  } t d|  tdtd  dtd
   dtd   dt  d kstt dt|  tdtd	  dtd   dtd   dtd   d kstttdd  ttdd  ttdd  t tdtd d sdtt tdttd d kstt tddd ttd d kstt tdtdd ttd d d!d"kstt tdtdd#d$ttd d d!d"kstt	td} t	td
}t | ttd d ks8tt |ttd d
 ksTtt | tdd ttd d d!d"ks|tt |tdd ttd d
 d!d"kstt t| d d% tdtd  d&td   d' kstt t|d d% tdtd  d(td   d) kst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stt t|tt| t|kstt | t
d
d td2td  d3td   d4 ksttd5}t |td6td  d ks4t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 tdtd td
 }t |t}|td dtd
   dtd   d=t  d	 ksTtddtd td
  }t |t}|d	td  d=td
   dtd   dt  d kst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	sRt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	stt tdMttd k
stdtd } t | td |  d
 ttd dNt  d k
sFtddtd td
  }t |td#dOd	td  d=td
   dtd   dt  d k
stddtd td
  }t |td#dOtd dtd
   dtd   dt  d k
stt dtdt  td#dOtd dt  d
 ks.tt ddtd  d td#dOtd d ks^tt tdt tdtd   td#dOtd dPtd   d kstt ttttd"tt ksttttdd  }t tt|d"tt kstt tttd"td d kstt ttdQd"td d ks6tt tttd t d ksVtt td
 ttd
 dtd   dRt  dS kstt ttttdd"dt td d kst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sTtt	tjjddVdWdX}t |ttd t d kstd S )YNi      r                  -      `      	      /   
   1   %      0      i    id  c                   S   s
   t ttS N)r   r   r&    r@   r@   l/var/www/html/Darija-Ai-Train/env/lib/python3.8/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&   AssertionErrorr   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
rp   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st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   re   )exprZpolyr@   r@   rA   #test_minimal_polynomial_issue_19732   s*    

rr   c                  C   sV   dt ddt d  dt d  tddd   } t| t}|td d	ksRt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coeffre   )rn   rm   r@   r@   rA   test_minimal_polynomial_hi_prec   s    2
rt   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st|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&t| dd t	ddD  }t|t}|
tdidks`t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>   s     z.test_minimal_polynomial_sq.<locals>.<listcomp>r4   l   >/&5> )Zsympy.core.addru   sympy.core.functionrv   r   r   r   r&   re   rangesubs)ru   rv   rn   rm   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s6ttttt d ttd d ks\t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st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s6t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st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sZt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st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szttttt t
dd	 t}|td td  td  td  td  t d ksttttt t
dd( t}|td td	  td  td  td  t d ks&ttt	tt
dd	 t}|dtd  dtd   dt  d kslt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sttd)dt	td	   ttd dtd   t d ks0ttttt
dd( td*td  d+td   d,td   d-td   d ksttttt
dd. tdtd  dtd   dt  d ksttt	td( tdtd  dtd   dtd   dt  d kstttd td  d d/ t t}|td dt  d ksNtt d t}|td dtd   d	t  d ksttttt d ttd t d ksttttt d ttd d ksttttt d ttd td  d ks
ttttt d ttd td  d ks:ttttt d ttd td  td  td  d kszttttd tdtd  d0td   d1td   d ksttttd td2td  d3td   d3td   d4td   d5td   d ksttttd6 td
td  d7td   d7td   d8td   d9td   dtd   d ksvttt	td tdtd  dt  d kstdt
dd tdt t d   t ttd d kst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	stttd dEdF t t}|td dtd   d k
s$t|tttd j
s@tttd dEdF t t}|dtd  d k
stt|tttd j
stttd dEdF t t}|dtd  dtd   d k
st|tttd j
st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@   rl   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&   re   r   r   r	   r   r   r   r   r$   r   r!   ZeroDivisionErrorr%   r~   r   is_zero)rk   rm   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:t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&   re   )r   rrm   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st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   re   )r1r2numrm   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s4td S )Nr*   r+   r0   r,   )r   r   r&   re   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 tt dtd  ttd t d ksFtt ttttd t ksdtt ttd ttd t d kstt ttt tttd  d kstt tdtt ttd dt  kstt tdtt ttd dt d td   td  dt  d ks&tt ttdd ttd t ksLt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stt ttt ttd td  t kstt tttd  ttd dt  d td  t ks2tt dt tddtt t d td	d
ksbtt dtd  tddttd t d td	d
kstt tttddttd t td	d
kstt ttt tddttd td  t tdd
ks t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st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'   re   r   r   r(   r   r   r!   r"   r   rh   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sDtd S )Nr+   r-   )r   r   r&   r   r'   r~   r(   re   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,tt tdtttddtdtd  ks\tt ttddtttdddtd  d kst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#   rg   re   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sBtdt dt d d  dt d  d dt d t dt d d   }t|ttkstd S )Nr   r,   r4   rJ   rS   r/   r   )r   r   r&   re   )rh   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std S )Nr0   r,   r.   r2   r5   )r   r&   r'   r   r   r   re   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sLtd S )Nr0   r-   r2   r)   r.   r*   r      r5      #   i  r,   )r   r   r   r   re   )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sXtd||t|f qXd S )Nr+   r,   r2   r0   )TFr\   z3minimal_polynomial(e, compose=%s) = %s; %s expected)r   r&   r   r   re   )r   Zmp_expectedcomprm   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std S )Nr+   r.   r0   )	extensionr,   )r    r&   r   r   re   r@   r@   r@   rA   test_issue_20163  s    """"r   c                  C   s.   t td} t| d ttd d ks*td S )Nr,   r0   r/   )r   r   r   r&   re   )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sFtt| ttd d ks`tt| d ttd d ks~td S )Nr,   r0   r+   r   i)genr/   )r   r   r   r&   Zas_exprre   r   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$tt tdd tdd  tttd dt  d ks\tt tdd tdd  tdd tdd   tttd dtd   d kstt tdd td d  tdd tdd   ttdtd  dtd   d kst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   re   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(   rf   rp   rr   rt   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	$
		