o
    ohU                     @   s*  d Z ddlmZ ddlm  mZ ddlmZmZmZm	Z	m
Z ddlmZmZ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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' ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 dd Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd  Z:d!d" Z;e*d#d$ Z<d%d& Z=d'd( Z>d)d* Z?d+d, Z@d-d. ZAd/d0 ZBd1d2 ZCd3d4 ZDd5d6 ZEd7d8 ZFd9d: ZGd;d< ZHd=d> ZId?d@ ZJdAdB ZKdCdD ZLdEdF ZMdGdH ZNdIdJ ZOdKdL ZPdMdN ZQe*dOdP ZRdQdR ZSdSdT ZTdS )Uz@Tests for the implementation of RootOf class and related tools.     )PolyN)rootofRootOfCRootOfRootSum_pure_key_dict)MultivariatePolynomialErrorGeneratorsNeededPolynomialError)FunctionLambda)FloatIRational)Eq)S)explog)sqrt)tan)Integral)legendre_poly)solve)raisesslow)	unchanged)abxyzrc                  C   s  t tddks	J t tddksJ t ttjdksJ t td ddks'J t td ddks2J t td ddks=J t td ddksHJ t td dt  d ddttd  ks_J t td dt  d ddttd  ksvJ t td dt  d ddttd  ksJ t td dt  d ddttd  ksJ t td dt  d ddd} t| td	u sJ t td dt  d ddd} t| td	u sJ t td dt  d ddd} t| td	u sJ t td dt  d ddd} t| td	u sJ t td td  ddddksJ t td td  ddddks)J t td td  ddddks;J t td td  ddddksMJ t td td  dd	ddks_J t td td  dd	ddksqJ t td td  dd	ddksJ t td td  dd	ddksJ t td td t d  dt td t d dksJ t td td t d  ddksJ t td td t d  dt td t d dksJ t td td t d  dt td t d dks J t td td t d  dt td t d dksJ t td td t d  dt td t d dks:J t td td t d  d
dksNJ t td td t d  dt td t d dkskJ t td dtd   dd
ks}J t td dtd   ddksJ t td dtd   ddksJ t td dtd   ddksJ tt	dd  tt	dd  tt
dd  tt
dd  tt
dd  tt
dd  ttdd  ttdd  ttdd  ttdd  ttdd  ttdd  ttdd  t ttt tdtksJ t ttd t tdtt ks1J t ttd t tdttksDJ t ttd t tdttdd ksZJ t ttd  tt  dt  tddksqJ ttdd  t td t d djd	u sJ d S )Nr            FradicalsT   c                   S   s
   t ddS Nr   r    r.   r.   v/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/polys/tests/test_rootoftools.py<lambda>U      
 z&test_CRootOf___new__.<locals>.<lambda>c                   S   s
   t ddS Nr#   r   r-   r.   r.   r.   r/   r0   V   r1   c                   S   s   t tdtdS r,   r   r   r   r.   r.   r.   r/   r0   X       c                   S   s   t tdtdS r2   r3   r.   r.   r.   r/   r0   Y   r4   c                   S   s   t tt dS r,   r   r   r   r.   r.   r.   r/   r0   Z       c                   S   s   t ttdS r,   )r   r   r   r.   r.   r.   r/   r0   \   r6   c                   S   s   t td t td dS Nr%   r$   r   )r   r   r   r.   r.   r.   r/   r0   ^       c                   S   s   t td t t dS )Nr%   r   )r   r   r   r.   r.   r.   r/   r0   _       c                   S      t td d dS )Nr$   r#   r*   r   r   r.   r.   r.   r/   r0   a       c                   S   r:   )Nr$   r#   r)   r;   r.   r.   r.   r/   r0   b   r<   c                   S   s   t td d dS Nr$   r#   r;   r.   r.   r.   r/   r0   c   r<   c                   S   r:   )Nr$   r#   r%   r;   r.   r.   r.   r/   r0   d   r<   c                   S   s   t td d tS r=   r;   r.   r.   r.   r/   r0   e   r<   c                   S   s   t td t dt  tdS r7   r5   r.   r.   r.   r/   r0   o   s    )r   r   r   Zeror   r   
isinstancer   r   r	   r
   NotImplementedError
IndexError
ValueErrorr   r   r   is_commutativer!   r.   r.   r/   test_CRootOf___new__    sv   ....$$$$$$$$:(::::(:$$$$(&,.&rE   c                  C   sB   t td t d d} | jsJ | jt ksJ ttdd  d S )Nr%   r   c                   S   s    t ttd tt  d tdS Nr%   r#   r   )r   r   r   r   r.   r.   r.   r/   r0   |   s     z)test_CRootOf_attributes.<locals>.<lambda>)r   r   	is_numberfree_symbolssetr   r@   rD   r.   r.   r/   test_CRootOf_attributest   s   
rJ   c                   C   s  t td t d dt td t d dkdu sJ t td t d dt td t d dkdu s4J t td t d dt td t d dkdu sNJ t td t d dt td t d dkdu shJ t td t d dt td t d dkdu sJ t td t d dt td t d dkdu sJ t td t d dt td t d dkdu sJ t td t d dt td t d dkdu sJ t td t d dt td t d dkdu sJ t td t d dt td t d dkdu sJ d S Nr%   r   Tr#   Fr$   r5   r.   r.   r.   r/   test_CRootOf___eq__   s   444444444:rL   c                     sp  t d} td t d  t d}t d}t||tju s J t||tju s*J tt|ts2J t|dtju s<J t|tjtju sGJ t|t	tju sQJ tt|| ds[J t
 D ]}|jrpt||tju spJ qat d}D ]}|jrt||tju sJ qxtd t d  t
  fddtdD ddksJ tt ddtj d	ksJ d S )
Nfr%   r$   r#   r   c                    s&   g | ]}D ]
}t t ||qqS r.   )r   r   ).0ijeqsolr.   r/   
<listcomp>      & z,test_CRootOf___eval_Eq__.<locals>.<listcomp>TF)r   r   r   r   r   falsetruer   Infinityr   r   is_realrangecountImaginaryUnit)rM   r!   r1sr.   rQ   r/   test_CRootOf___eval_Eq__   s6   


"r_   c                   C   sd   t td t d djdu sJ t td t d djdu s J t td t d djdu s0J d S rK   )r   r   rY   r.   r.   r.   r/   test_CRootOf_is_real   s     $r`   c                   C   s$   t td t d djdu sJ d S )Nr%   r   T)r   r   
is_complexr.   r.   r.   r/   test_CRootOf_is_complex   s   $rb   c                   C   s<   t td t d dttt td t d dksJ d S rF   )r   r   subsr   r.   r.   r.   r/   test_CRootOf_subs   s   <rd   c                   C   sL   t td t d dtdksJ t td t d dtdks$J d S rF   )r   r   diffr   r.   r.   r.   r/   test_CRootOf_diff   s   $(rf   c                  C   s  t td t d djdd} | tdsJ t td t d djdd \}}|tds4J |td s>J t td t d d	jdd \}}|tdsZJ |tdscJ td
tdd}dd | D }|g dks{J t td dt  d djdd}|tdsJ t td dt  d djdd \}}|tdsJ |tdsJ t td dt  d d	jdd \}}|tdsJ |tdsJ t td dt  d djdd \}}|tdsJ |tdsJ t td dt  d d
jdd \}}|tds+J |tds5J tt td d	td
   td  d d	ddksRJ 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, }t |d	d	 \}}t |d		d	 \}}	||ksJ ||	k sJ ||	 ksJ t td-td$}
|
	d	|
	d.	d	ksJ t td	 d dd/d0}t td	 d dd/d0}|	d
td1d
t
 ksJ |	d
td2d
t
 ksJ tt d
td  d3td   dtd	   d$ d	dd4ks/J td5td&  d6td
   d7td	   d d}|d	sNJ tttd3 d8td9   d:td   d;td   d<td"   d=td&   d>td
   d?td	   d@ d	d	dAksJ tttd
 dtd	   d d	d	dBk sJ dCd tdD }
|
d   |
D ]-}| }|	d	 || ksJ |  || ksJ ||j|j ksJ qd S )DNr%   r      nz-1.2134116627622296341r#   z0.60670583138111481707z1.45061224918844152650r$   r+   Tpolysc                 S      g | ]	}t |d qS    strri   rN   r!   r.   r.   r/   rT      r8   z&test_CRootOf_evalf.<locals>.<listcomp>z-0.86113631159405258z-0.33998104358485626z0.33998104358485626z0.86113631159405258      z-1.84208596619025438271z-0.351854240827371999559z-1.709561043370328882010z+1.709561043370328882010z+1.272897223922499190910z-0.719798681483861386681z+0.719798681483861386681l       @ z147.i    i: 
   i 	   izg   i`jH   il   i i@B i < i  i - i   @   d   Fr'   g      g      ?   z-0.976i`b i  T          i  i@  iV  i  i\ i ie z-3.4*Ig?c                 S   s"   g | ]}t td  t d  |qS )r%   )r   r   rN   rO   r.   r.   r/   rT        " )r   r   evalf
epsilon_eqr   as_real_imagr   
real_rootsrp   ri   r   r   _eval_evalfr   absrZ   _reset_get_intervalfuncargs)realreimprootsrR   r   r   cdr!   r0r]   rirO   r.   r.   r/   test_CRootOf_evalf   s   &&"****:.





 B..




2
r   c                  C   sN   t d  d } t| d}|j t d d ksJ |  |jtjv s%J d S )Nr$   r   )r   r   polyas_exprri   rootoftools_reals_cacherM   r!   r.   r.   r/   test_issue_24978  s
   
r   c                  C   sd   t td dt  d d} |   |  }t td dt  d d} |   |  }||ks0J d S )Nrs   rt   r#   )r   r   ri   r   )r!   r   r   r.   r.   r/   test_CRootOf_evalf_caching_bug#  s   r   c                  C   s   t td t d  ttd td  d dgksJ t td t d jddttd td  d dgks:J t dtd	  d
td   dtd   dt  d tdd} t| tdtdtdtdd gksnJ d S )Nrs   r#   r%   r$   r   Fr'   r)   r+   rv   rt   rz   ZZ)domainr"   )r   r   r   r   r   r   r   r.   r.   r/   test_CRootOf_real_roots-  s   8:2r   c                	   C   s8  t td t d  ttd td  d dtddtdt d  tddtdt d  ttd td  d dttd td  d dgksLJ t td t d jddttd td  d dttd t d dddttd t d dddttd td  d dttd td  d dgksJ d S )	Nrs   r#   r%   r$   r   r"   Fr'   )r   r   	all_rootsr   r   r   r   r.   r.   r.   r/   test_CRootOf_all_roots7  s   
r   c                  C   sZ   t dtdd} dd |  D }|D ]	}t|tsJ qdd |D }|g dks+J d S )Nr+   Trj   c                 S      g | ]}|j d dqS )   rh   eval_rationalrq   r.   r.   r/   rT   K      z.test_CRootOf_eval_rational.<locals>.<listcomp>c                 S   rl   rm   ro   )rN   rootr.   r.   r/   rT   N  r8   rr   )r   r   r   r?   r   )r   r   r   r.   r.   r/   test_CRootOf_eval_rationalI  s   r   c                  C   sP  t td dt  d } t  t| d}|jtjvsJ |jtjvs%J |  |jtjv s1J |jtjvs9J t  t| d}|jtjvsJJ |jtjvsRJ |  |jtjv s^J |jtjv sfJ t td d td d  } t  t| d}|jtjv sJ |jtjvsJ t  t| d}|jtjv sJ |jtjv sJ d S )Nr%   r$   r   r#   )	r   r   r   clear_cacher   r   r   _complexes_cacher   r   r.   r.   r/   test_CRootOf_lazyW  s0   



r   c                  C   s  t d t  d } ttttt  }t| |}t|tdu sJ t| d |dt| | ks/J tt d | d  |tdt  dt| |  ksIJ ttt d | d  |ttdt  dt| |  ksgJ ttdd  tt	dd  t| t
t| tt t
t ksJ t| tt| tt tt ksJ tt| dd	tdu sJ t| d
ksJ t| tt t d
ksJ t| tt t d dksJ t| tt ddksJ t| tt ddksJ t| dd	jdu sJ t| tt dt t d   tddksJ t| tt tt t d   tddt ksJ tt d d tt dt d  t dks,J tt d t tt dt d  t dt ksDJ tt d d tt tt d  t dt ks\J tt d t tt tt d  t dt t ksvJ tt d d tt t
t ddt
dt
d ksJ tt d tt   td  tt tt d t  d tt ttt  ksJ ttd t d  tt   d tt tt d t  d tt tt t ksJ d S )Nr%   Tr$   ry   c                   S   s   t td t t S Nr%   )r   r   r   r.   r.   r.   r/   r0         z&test_RootSum___new__.<locals>.<lambda>c                   S   s   t td d dd S )Nr$   r%   c                 S   s   | S Nr.   )r   r.   r.   r/   r0     s    z8test_RootSum___new__.<locals>.<lambda>.<locals>.<lambda>)r   r   r.   r.   r.   r/   r0     r9   F)autor   r&   r#   rz   ru   )	quadraticr"   )r   r   r!   r   r   r?   hashr   r   rB   r   rC   r   r   r    r   r   )rM   gr^   r.   r.   r/   test_RootSum___new__  sF   
 4<""*0,004
"
""r   c                   C   s   t td t d ttttjt ksJ t td t d ttttt jthks.J t td t t ttttt tjtthksHJ d S r   )	r   r   r   r!   r   rH   rI   r   r   r.   r.   r.   r/   test_RootSum_free_symbols  s   ,0 r   c                  C   s   t ttt} ttd t d | ttd t d | kdu s!J ttd t d | ttd t d | kdu s;J ttd t d | ttd t d | kdu sUJ ttd t d | ttd t d | kdu soJ d S )Nr%   r#   Tr$   F)r   r   r   r   r   rM   r.   r.   r/   test_RootSum___eq__  s
   4448r   c                  C   s   t td d t} t| t du sJ |  tt tt ks!J t td t tt} t| t du s4J |  ttt  ttt  ksIJ d S )Nr$   r#   T)r   r   r   r?   doitr   r   r   rsr.   r.   r/   test_RootSum_doit  s   .r   c                  C   sr   t td d t} | jdddtdsJ | jdddtds%J t td t tt} |  | ks7J d S )	Nr$   r#   rg   T)ri   chopz1.0806046117362794348   z1.08060461173628)r   r   r   r   r   r   r   r   r.   r.   r/   test_RootSum_evalf  s
   r   c                  C   sZ   t d t  d } ttttt  }tttttt   }t| |t t| |ks+J d S r   )r   r   r!   r   r   re   )rM   r   hr.   r.   r/   test_RootSum_diff  s   "r   c                  C   s   t d t  d } ttttt  }td t d }ttttt }t| |tdt| |ks2J t| |t tt||ksBJ d S )Nr%   r#   )r   r   r!   r   r   r   rc   )rM   r   FGr.   r.   r/   test_RootSum_subs  s    $r   c               	   C   s"  t td t d ttttt  dt d td t d  ks"J dtd  dtd   dt  d } ttttd	td  d d
td  d  dtd  d  ttdd  d tt  }t | |tdtdt  dtt  d tt tdt tdt  d   d ksJ d S )Nrs   r#   r+      r%   s   r$      ii5  iq  }   rz   ry   )r   r    r   r   r   r   r   re   )rM   r   r.   r.   r/   test_RootSum_rational  s   $HBr   c                  C   s   t d t d t d t d  } tt dtt  d }tt tt }tt d t |t }tt d t |t }t| |t  d| d| dgksIJ d S )	Nr%   r$   r+   rs   ry   rv   r   ~   )r   r   r   r   r   r   as_ordered_terms)rM   r   r   r   r]   r.   r.   r/   test_RootSum_independent  s    *r   c                  C   sD   t td t d t } dd tdD }t| t|ks J d S )Nrz   r#   c                 S   s"   g | ]}t td  t d |qS )rz   r#   r;   r   r.   r.   r/   rT   
  r   z#test_issue_7876.<locals>.<listcomp>)r   r   r   rZ   	frozenset)l1l2r.   r.   r/   test_issue_7876  s   r   c                  C   sT   t dtd  d } t|  dksJ t dtd  d } t|  dks(J d S )Nry   rx   rw   rv   )r   r   lenr   r   r.   r.   r/   test_issue_8316  s   r   c                     s  ddl m   fdd} | ttd dtd   d dks J | ttd dks,J | tdgd	 d
g tdks=J | ttd	 d dksKJ | ttd d dksYJ | ttd d dksgJ | ttd d dksuJ | ttd d dksJ | tg dtdksJ | ttd	 t d dksJ | ttd t d dksJ dd }| |d
dddksJ | |d
dddksJ | |ddddksJ | |ddddksJ | |d
dddksJ | |d
dddksJ d S )Nr   _imag_count_of_factorc                    s   t  fdd|  d D S )Nc                 3   s     | ]\}} || V  qd S r   r.   )rN   rM   mr   r.   r/   	<genexpr>  s    z7test__imag_count.<locals>.imag_count.<locals>.<genexpr>r#   )sumfactor_listr   r   r.   r/   
imag_count  s   
z$test__imag_count.<locals>.imag_countrz   rv   r$   r#   r%   r"   r+   )r#   r$   r%   c                 S   s"   t t|  t|  tt| tS r   )r   r   rc   )r]   r2r   r.   r.   r/   q%  s   "ztest__imag_count.<locals>.qr&   )sympy.polys.rootoftoolsr   r   r   )r   r   r.   r   r/   test__imag_count  s(   ("  r   c                  C   sD   t td dtd   d d} |  }| jr|j|j dks J d S )Nr+   r$   r#   r   )r   r   r   is_imaginaryaxbx)r!   rO   r.   r.   r/   test_RootOf_is_imaginary/  s   r   c                  C   sP   t d dt   d } t| d }t| d }||sJ ||s&J d S )Nr%   rs   r#   r   )r   r   r   is_disjoint)rR   iriir.   r.   r/   test_is_disjoint5  s
   r   c                      s   t  tv du sJ dv du sJ dt< tv sJ tv s#J t dks+J ttfdd fdd tt fdd d S )NFr#   c                      s    d S Nr#   r.   r.   r   r.   r/   r0   E      z$test_pure_key_dict.<locals>.<lambda>c                    s   d | < d S )Nr$   r.   )kr   r.   r/   dontF  s   z test_pure_key_dict.<locals>.dontc                      s    dS r   r.   r.   )r   r.   r/   r0   H  r   )Dr   r   r   KeyErrorrB   r.   r.   )r   r   r/   test_pure_key_dict=  s   r   c                      s  t   dd tdD dd D tddtddtd	 d  tddtd	 d  gks0J d
   dd D tddtddtd d  tddtd d  gksYJ td
  jdk sfJ td  jdk ssJ td  j	dk sJ td  jdk sJ td  j	dk sJ d
   dd D tddtddtd d  tddtd d  gksJ td
  jdk sJ td  jdk sJ td  j	dk sJ td  jdk sJ td  j	dk sJ d
   dd D tddtddtd d  tddtd d  gks/J t
td
  jd
  dk sCJ t
td  jd   dk sYJ t
td  j	d   dk soJ t
td  jd   dk sJ t
td  j	d   dk sJ d
   dd D tddtd d!td" d!  td d!td" d!  gksJ t
td
  jd
  d#k sJ t
td  jd   d#k sJ t
td  j	d   d#k sJ t
td  jd   d#k sJ t
td  j	d   d#k s1J d
   d$d D  d%d  D g d&ksLJ t fd'd(tt D s_J d S ))Nc                 S   s&   g | ]}t td  dt  d |qS )r%   rv   r#   )r   r   r   r.   r.   r/   rT   N  rU   z-test_eval_approx_relative.<locals>.<listcomp>r%   c                 S      g | ]}| d qS )皙?r   r   r.   r.   r/   rT   O  r9   i   r      i%  r   c                 S   s   g | ]}| d dqS )r   -C6?r   r   r.   r.   r/   rT   S  r   i  i   iS i   r   r#   r   r$   c                 S   s   g | ]}| d d qS )r   r   r   r.   r.   r/   rT   \  r   i/i4N  i  c                 S   r   )r$   rh   r   r   r.   r.   r/   rT   g  r   i'iV i3 i    i;e {Gz?c                 S   r   )r%   rh   r   r   r.   r.   r/   rT   p  r   i i   i'SgMbP?c                 S   r   )r$   )eval_approxr   r.   r.   r/   rT   z  r9   c                 S   s   g | ]}t |qS r.   )rp   r   r.   r.   r/   rT   {  r   )z-0.10z0.05 - 3.2*Iz0.05 + 3.2*Ic                 3   s4    | ]}t  | |  |   d k V  qdS )r   N)r   ri   r   r   tr.   r/   r   }  s   2 z,test_eval_approx_relative.<locals>.<genexpr>)r   r   rZ   r   r   r   r   r   dxdyr   ri   allr   r.   r.   r   r/   test_eval_approx_relativeK  sd   


(,,,,(,,,,*r   c                  C   s:   t td t d d} tttdtf}tt| |sJ d S )Nrs   r#   r   )r   r   r   r   r   r   )r!   r   r.   r.   r/   test_issue_15920  s   r   c                  C   st   t d t  d } tt|  dksJ tt| t tt  dks&J tt| t tt dks8J d S )Nr%   r#   z[CRootOf(x**3 - x + 1, 0)])r   rp   r   r   rc   r   r   )rR   r.   r.   r/   test_issue_19113  s   r   )U__doc__sympy.polys.polytoolsr   r   rk   r   r   r   r   r   r   r   sympy.polys.polyerrorsr   r	   r
   sympy.core.functionr   r   sympy.core.numbersr   r   r   sympy.core.relationalr   sympy.core.singletonr   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   sympy.integrals.integralsr   sympy.polys.orthopolysr   sympy.solvers.solversr   sympy.testing.pytestr   r   sympy.core.exprr   	sympy.abcr   r   r   r   r    r!   rE   rJ   rL   r_   r`   rb   rd   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   <module>   sj     T
[

,1
	
4