
    gU                        d Z ddlmZ ddlmc 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 Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;e*d             Z<d Z=d Z>d Z?d Z@d  ZAd! ZBd" ZCd# ZDd$ ZEd% ZFd& ZGd' ZHd( ZId) ZJd* ZKd+ ZLd, ZMd- ZNd. ZOd/ ZPd0 ZQe*d1             ZRd2 ZSd3 ZTdS )4z@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                  @   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z
  d          dk    sJ t          t          dz
  d          dk    sJ t          t          dz   d          dk    sJ t          t          dz   d          dk    sJ t          t          dz  dt          z  z   dz   d          dt          t          d          z  z
  k    sJ t          t          dz  dt          z  z   dz   d          dt          t          d          z  z   k    sJ t          t          dz  dt          z  z   dz   d          dt          t          d          z  z   k    sJ t          t          dz  dt          z  z   dz   d          dt          t          d          z  z
  k    sJ t          t          dz  dt          z  z   dz   dd          } t          | t                    d	u sJ t          t          dz  dt          z  z   dz   dd          } t          | t                    d	u sJ t          t          dz  dt          z  z   dz   dd          } t          | t                    d	u sJ t          t          dz  dt          z  z   dz   dd          } t          | t                    d	u sJ t          t          dz
  t          dz   z  dd          dk    sJ t          t          dz
  t          dz   z  dd          dk    sJ t          t          dz
  t          dz   z  dd          dk    sJ t          t          dz
  t          dz   z  dd          dk    sJ t          t          dz
  t          dz   z  dd	          dk    sJ t          t          dz
  t          dz   z  dd	          dk    sJ t          t          dz
  t          dz   z  dd	          dk    sJ t          t          dz
  t          dz   z  dd	          dk    sJ t          t          dz
  t          dz  t          z   dz   z  d          t          t          dz  t          z   dz   d          k    sJ t          t          dz
  t          dz  t          z   dz   z  d          dk    sJ t          t          dz
  t          dz  t          z   dz   z  d          t          t          dz  t          z   dz   d          k    sJ t          t          dz
  t          dz  t          z   dz   z  d          t          t          dz  t          z   dz   d          k    sJ t          t          dz
  t          dz  t          z   dz   z  d          t          t          dz  t          z   dz   d          k    sJ t          t          dz
  t          dz  t          z   dz   z  d          t          t          dz  t          z   dz   d          k    sJ t          t          dz
  t          dz  t          z   dz   z  d
          dk    sJ t          t          dz
  t          dz  t          z   dz   z  d          t          t          dz  t          z   dz   d          k    sJ t          t          dz  dt          dz  z  z   d          d
k    sJ t          t          dz  dt          dz  z  z   d          dk    sJ t          t          dz  dt          dz  z  z   d          dk    sJ t          t          dz  dt          dz  z  z   d          dk    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          t          t          z
  t                    d          t          k    sJ t          t          t          dz  t          z
  t                    d          t          t                     k    sJ t          t          t          dz  t          z
  t                    d          t          t                    k    sJ t          t          t          dz  t          z
  t                    d          t          t!          dd          z  k    sJ t          t          t          dz  z  t          t          z  z   dt          z  z   t          d          dk    sJ t          t          d            t          t          dz  t          z   dz   d          j        d	u sJ d S )Nr            FradicalsT   c                  "    t          dd          S Nr   r        ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_rootoftools.py<lambda>z&test_CRootOf___new__.<locals>.<lambda>U       VAq\\ r2   c                  "    t          dd          S Nr%   r   r0   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>V   r5   r2   c                  H    t          t          dt                    d          S r/   r   r   r   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>X       F41::q$9$9 r2   c                  H    t          t          dt                    d          S r7   r9   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>Y   r:   r2   c                  <    t          t          t          z
  d          S r/   r   r   r    r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>Z   s    F1q5!$4$4 r2   c                  F    t          t          t                    d          S r/   )r   r   r   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>\   s    F3q661$5$5 r2   c                  b    t          t          dz  t          z
  t          d          z   d          S Nr'   r&   r   )r   r   r   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>^   s#    q!tax$q''/A1(E(E r2   c                  R    t          t          dz  t          z
  t          z   d          S )Nr'   r   )r   r   r   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>_   s    q!tax!|Q(?(? r2   c                  8    t          t          dz  dz
  d          S )Nr&   r%   r,   r   r   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>a       vadQh33 r2   c                  8    t          t          dz  dz
  d          S )Nr&   r%   r+   rC   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>b   rD   r2   c                  8    t          t          dz  dz
  d          S Nr&   r%   rC   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>c       vadQh22 r2   c                  8    t          t          dz  dz
  d          S )Nr&   r%   r'   rC   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>d   rH   r2   c                  B    t          t          dz  dz
  t                    S rG   rC   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>e   s    vadQh22 r2   c                  d    t          t          dz  t          z   dt          z  z   t          d          S r@   r=   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>o   s"    q!tax!A#~q!(D(D r2   )r   r   r   Zeror   r   
isinstancer   r   r
   r   NotImplementedError
IndexError
ValueErrorr   r    r   is_commutativer"   s    r3   test_CRootOf___new__rS       s		   !Q<<1!R==A!QV!!!!!a%q    !a%!!!!!a%r!!!!!a%""""!Q$1*q.!$$QtAwwY6666!Q$1*q.!$$QtAwwY6666!Q$1*q."%%aQi7777!Q$1*q."%%aQi7777q!taczA~q5111Aa  D((((q!taczA~q5111Aa  D((((q!taczA~rE222Aa  D((((q!taczA~rE222Aa  D((((1q51q5/1u555;;;;1q51q5/1u555::::1q51q5/2666!;;;;1q51q5/2666"<<<<1q51q5/1t444::::1q51q5/1t44499991q51q5/2555::::1q51q5/2555;;;;1q51a4!8a<(!,,q!tax!|Q0G0GGGGG1q51a4!8a<(!,,11111q51a4!8a<(!,,q!tax!|Q0G0GGGGG1q51a4!8a<(!,,q!tax!|Q0G0GGGGG1q51a4!8a<("--1q1a1H1HHHHH1q51a4!8a<("--1q1a1H1HHHHH1q51a4!8a<("--22221q51a4!8a<("--1q1a1H1HHHHH!Q$1a4-##r))))!Q$1a4-##q((((!Q$1a4-##q((((!Q$1a4-##q((((
11222
11222
?99:::
?99:::
?44555
?55666
 E EFFF
 ? ?@@@
:33444
:33444
:22333
:22333
:22333$q1ua..!$$))))$q!tax##Q''DGG83333$q!tax##Q''4772222$q!tax##Q''1hq!nn+<<<<<!AqD&1Q3,1$a++r1111
 D DEEE!Q$(Q,""1T999999r2   c                      t          t          dz  t          z   dz   d          } | j        sJ | j        t	                      k    sJ t          t          d            d S )Nr'   r   c                  ~    t          t          t          dz  t          t          z  z   dz   t                    d          S Nr'   r%   r   )r   r   r   r    r1   r2   r3   r4   z)test_CRootOf_attributes.<locals>.<lambda>|   s*    tAqD1Q3JNA/F/F(J(J r2   )r   r   	is_numberfree_symbolssetr   rN   rR   s    r3   test_CRootOf_attributesrZ   t   s_    q!tax!|QA;>SUU""""
  J JKKKKKr2   c                     t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ t          t          dz  t          z   dz   d          t          t          dz  t          z   dz   d          k    du sJ d S Nr'   r   Tr%   Fr&   r=   r1   r2   r3   test_CRootOf___eq__r]      s   1a4!8a<##vadQhlA'>'>>4GGGG1a4!8a<##vadQhlA'>'>>5HHHH1a4!8a<##vadQhlA'>'>>4GGGG1a4!8a<##vadQhlA'>'>>5HHHH1a4!8a<##vadQhlA'>'>>4GGGG1a4!8a<##vadQhlA'>'>>4GGGG1a4!8a<##vadQhlA'>'>>5HHHH1a4!8a<##vadQhlA'>'>>4GGGG1a4!8a<##vadQhlA'>'>>5HHHH1a4!8a<##vadQhlA'>'>>4GGGGGGr2   c                  R   t          d          } t          dz  t          z   dz   t          d          }t          d          }t          ||          t          j        u sJ t          ||          t          j        u sJ t          t          |t                    sJ t          |d          t          j        u sJ t          |t          j                  t          j        u sJ t          |t                    t          j        u sJ t          t          | | d                    sJ t                    D ]'}|j        rt          ||          t          j        u sJ (t          d          }D ]'}|j        rt          ||          t          j        u sJ (t          dz  t          z   dz   t                    fdt          d          D                                 d          dk    sJ t          t          d          dt          j        z             dk    sJ d S )	Nfr'   r&   r%   r   c           	      V    g | ]%}D ] }t          t          |          |          !&S r1   )r   r   ).0ijeqsols      r3   
<listcomp>z,test_CRootOf___eval_Eq__.<locals>.<listcomp>   sJ     
 
 
QC 
 
qBvb!}}a   
 
 
 
r2   TF)r   r   r   r   r   falsetruer   Infinityr   r   is_realrangecountImaginaryUnit)r_   r"   r1srd   re   s       @@r3   test_CRootOf___eval_Eq__rp      s   A	
AABr1A	ABa99a88qvRAa88qwa''''a88qwRAAaDD!!!!!
))C ' '9 	'a88qw&&&&r1A & &9 	&a88qv%%%%	
AAB
))C
 
 
 
 
%(( 
 
 

%++   fRmmQ011U::::::r2   c                     t          t          dz  t          z   dz   d          j        du sJ t          t          dz  t          z   dz   d          j        du sJ t          t          dz  t          z   dz   d          j        du sJ d S r\   )r   r   rj   r1   r2   r3   test_CRootOf_is_realrr      s    !Q$(Q,""*d2222!Q$(Q,""*e3333!Q$(Q,""*e333333r2   c                  ^    t          t          dz  t          z   dz   d          j        du sJ d S )Nr'   r   T)r   r   
is_complexr1   r2   r3   test_CRootOf_is_complexru      s2    !Q$(Q,""-555555r2   c                      t          t          dz  t          z   dz   d                              t          t                    t          t          dz  t          z   dz   d          k    sJ d S rV   )r   r   subsr    r1   r2   r3   test_CRootOf_subsrx      sU    !Q$(Q,""''1--1q1a1H1HHHHHHHr2   c                  
   t          t          dz  t          z   dz   d                              t                    dk    sJ t          t          dz  t          z   dz   d                              t                    dk    sJ d S rV   )r   r   diffr    r1   r2   r3   test_CRootOf_diffr{      sr    !Q$(Q,""''**a////!Q$(Q,""''**a//////r2   c                     t          t          dz  t          z   dz   d                              d          } |                     t	          d                    sJ t          t          dz  t          z   dz   d                              d                                          \  }}|                    t	          d                    sJ |                    t	          d                     sJ t          t          dz  t          z   dz   d	                              d                                          \  }}|                    t	          d                    sJ |                    t	          d                    sJ t          d
t          d          }d |                                D             }|g dk    sJ t          t          dz  dt          z  z
  dz   d                              d          }|                    t	          d                    sJ t          t          dz  dt          z  z
  dz   d                              d                                          \  }}|                    t	          d                    sJ |                    t	          d                    sJ t          t          dz  dt          z  z
  dz   d	                              d                                          \  }}|                    t	          d                    sJ |                    t	          d                    sJ t          t          dz  dt          z  z
  dz   d                              d                                          \  }}|                    t	          d                    sJ |                    t	          d                    sJ t          t          dz  dt          z  z
  dz   d
                              d                                          \  }}|                    t	          d                    sJ |                    t	          d                    sJ t          t          t          dz  d	t          d
z  z  z   t          dz  z   dz
  d          	                    d                    dk    sJ dt          dz  z  dt          dz  z  z   dt          dz  z  z   d t          d!z  z  z   d"t          d#z  z  z   d$t          d%z  z  z   d&t          dz  z  z   d't          d
z  z  z
  d(t          dz  z  z
  d)t          d	z  z  z
  d*t          z  z   d+z   }t          |d          	                    d	                                          \  }}t          |d	          	                    d	                                          \  }}	||k    sJ ||	k     sJ ||	 k    sJ t          t          d,t                    d#          }
 |
j	        d	           |
j	        d-          	                    d	          k    sJ t          t          d	z  dz   dd./          }t          t          d	z  dz   dd./          }|	                    d
          t	          d0d
          t          z  k    sJ |	                    d
          t	          d1d
          t          z  k    sJ t          t          d
t          dz  z  d2t          dz  z  z   dt          d	z  z  z   d#z   d          	                    d                    d3k    sJ t          d4t          d%z  z  d5t          d
z  z  z
  d6t          d	z  z  z   dz
  d          }|                    d	          sJ t          t          t          d2z  d7t          d8z  z  z   d9t          dz  z  z   d:t          dz  z  z   d;t          d!z  z  z   d<t          d%z  z  z   d=t          d
z  z  z   d>t          d	z  z  z   d?z   d          	                    d	                    d@k    sJ t          t          t          d
z  dt          d	z  z  z   dz   d          	                    d	                    dAk     sJ dB t          d          D             }
|
d                                          |
D ]}|                                }|	                    d	           ||                                k    sJ |                                 ||                                k    sJ | |j        |j         k    sJ d S )CNr'   r      nz-1.2134116627622296341r%   z0.60670583138111481707z1.45061224918844152650r&   r-   Tpolysc                 H    g | ]}t           |j        d                      S    strr   ra   r"   s     r3   rf   z&test_CRootOf_evalf.<locals>.<listcomp>   s(    222aSR\\222r2   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                 T    g | ]%}t          t          d z  t          z   d z   |          &S )r'   )r   r   ra   rb   s     r3   rf   z&test_CRootOf_evalf.<locals>.<listcomp>  s.    333Q1q1a	 	 333r2   )r   r   evalf
epsilon_eqr   as_real_imagr   
real_rootsr   r   r   r   _eval_evalfr   absrk   _reset_get_intervalfuncargs)realreimprootsrd   r   r   cdr"   r0rn   rirb   s                  r3   test_CRootOf_evalfr      s   !Q$(Q,""((2(..D??5!9::;;;;;AqD1HqL!$$**R*00==??FB==% 899:::::==% 8999:::::AqD1HqL!$$**R*00==??FB==78899999==78899999a$'''A221<<>>222E
         
1qs
R	#	#	)	)B	)	/	/B==899:::::AqD1Q3JOQ''---33@@BBFB==9::;;;;;==9::;;;;;AqD1Q3JOQ''---33@@BBFB==9::;;;;;==9::;;;;;AqD1Q3JOQ''---33@@BBFB==9::;;;;;==9::;;;;;AqD1Q3JOQ''---33@@BBFB==9::;;;;;==9::;;;;; vadQq!tVmad*[8!<<>>qAABBfLLLL
B,B
&!Q$
6!Q$
FA A&(0A68?1EA1%'.qy1367B "a==??1**,,DAq"a==??1**,,DAq6666q55557777}R##Q''A13q66SQSXXZZ]]""""	1q!e	,	,	,B	1q!e	,	,	,B4477eD!nnq(((((4477eCmma''''' va1fr!Q$w&AqD014a88::1==>>(JJJJ 	ad
T!Q$Y&AqD014a88A== vaebBh&QU2T!R%Z?ad
AqD[!#)!Q$;/18A> AaDD %& & & & vadR1Wnq(!,,..q1122S8888 	43%((333AaDKKMMM $ $
QB$$&&&&&&
		B$$&&&&&&FAFAFO#####$ $r2   c                      t           dz   dz   } t          | d          }|j                                        t           dz  dz
  k    sJ  |j                     |j        t
          j        v sJ d S )Nr&   r   )r   r   polyas_exprr   rootoftools_reals_cacher_   r"   s     r3   test_issue_24978r     sp     
A	A1A6>>q!tax'''' ACEEE6[-------r2   c                  &   t          t          dz  dt          z  z
  dz   d          }  | j                      | j                    }t          t          dz  dt          z  z
  dz   d          }  | j                      | j                    }||k    sJ d S )Nr   r   r%   )r   r   r   r   )r"   r   r   s      r3   test_CRootOf_evalf_caching_bugr   #  s    q!taczB""AACEEEAq!taczB""AACEEEA666666r2   c                     t          t          dz  t          z   dz                                             t          t          dz  t          dz  z
  dz   d          gk    sJ t          t          dz  t          z   dz                                 d          t          t          dz  t          dz  z
  dz   d          gk    sJ t          dt          d	z  z  d
t          dz  z  z
  dt          dz  z  z
  dt          z  z
  dz
  t          d          } t	          j        |           t          d          t          d          t          d          t          d          dz  gk    sJ d S )Nr   r%   r'   r&   r   Fr)   r+   r-   r   r   r   ZZ)domainr$   )r   r   r   r   r   r   r   s    r3   test_CRootOf_real_rootsr   -  s?   1q1((**vadQTkAoq/I/I.JJJJJ1q1((%(88V	1q!ta> > =     	R1Wr!Q$wAqD(1Q3.2AdCCCAa  QrUUAbEE1R55!B%%'$BBBBBBBr2   c            
         t          t          dz  t          z   dz                                             t          t          dz  t          dz  z
  dz   d          t	          dd          t          d          t          z  dz  z
  t	          dd          t          d          t          z  dz  z   t          t          dz  t          dz  z
  dz   d          t          t          dz  t          dz  z
  dz   d          gk    sJ t          t          dz  t          z   dz                                 d          t          t          dz  t          dz  z
  dz   d          t          t          dz  t          z   dz   dd          t          t          dz  t          z   dz   dd          t          t          dz  t          dz  z
  dz   d          t          t          dz  t          dz  z
  dz   d          gk    sJ d S )	Nr   r%   r'   r&   r   r$   Fr)   )r   r   	all_rootsr   r   r   r   r1   r2   r3   test_CRootOf_all_rootsr   7  s   1q1''))q!tad{Q""Q$q''!)A+%Q$q''!)A+%q!tad{Q""q!tad{Q"".     1q1'''77q!tad{Q""q!tax!|Q///q!tax!|Q///q!tad{Q""q!tad{Q""<      r2   c                      t          dt          d          } d |                                 D             }|D ]}t          |t                    sJ d |D             }|g dk    sJ d S )Nr-   Tr   c                 0    g | ]} |j         d           S )   r~   eval_rationalr   s     r3   rf   z.test_CRootOf_eval_rational.<locals>.<listcomp>K  s'    ;;;q_Q_r""";;;r2   c                 R    g | ]$}t          |                    d                     %S r   r   )ra   roots     r3   rf   z.test_CRootOf_eval_rational.<locals>.<listcomp>N  s(    ///S__///r2   r   )r   r   r   rM   r   )r   r   r   s      r3   test_CRootOf_eval_rationalr   I  s    a$'''A;;ALLNN;;;E * *$))))))/////E         r2   c                     t          t          dz  dt          z  z   dz             } t          j                     t          | d          }|j        t
          j        vsJ |j        t
          j        vsJ  |j                     |j        t
          j        v sJ |j        t
          j        vsJ t          j                     t          | d          }|j        t
          j        vsJ |j        t
          j        vsJ  |j                     |j        t
          j        v sJ |j        t
          j        v sJ t          t          dz  dz
  t          dz  dz   z            } t          j                     t          | d          }|j        t
          j        v sJ |j        t
          j        vsJ t          j                     t          | d          }|j        t
          j        v sJ |j        t
          j        v sJ d S )Nr'   r&   r   r%   )	r   r   r   clear_cacher   r   r   _complexes_cacher   r   s     r3   test_CRootOf_lazyr   W  s   QTAaCZ!^A 1A611111655555AGIII6[-----655555 1A611111655555AGIII6[-----6[11111 	adQhA"##A 1A6[-----655555 1A6[-----6[1111111r2   c                  &   t           dz  t           z   dz   } t          t          t          t          t           z                      }t	          | |          }t          |t                    du sJ t	          | dz  |          dt	          | |          z  k    sJ t	          t           dz
  | dz  z  |          t          dt           z            dt	          | |          z  z   k    sJ t          t	          t           dz
  | dz  z  |                    t          t          dt           z            dt	          | |          z  z             k    sJ t          t          d            t          t          d            t	          | t                    t	          | t          t           t          t                                         k    sJ t	          | t                    t	          | t          t           t          t                                         k    sJ t          t	          | d          t                    du sJ t	          |           d	k    sJ t	          | t          t           t                               d	k    sJ t	          | t          t           t           dz                      d
k    sJ t	          | t          t           d                    dk    sJ t	          | t          t           d                    dk    sJ t	          | d          j        du sJ t	          | t          t           dt           t           dz  z   z                      t          dd          k    sJ t	          | t          t           t          t           t           dz  z   z                      t          dd          t          z  k    sJ t	          t           dz  dz
  t          t           dt           dz  z            t                     dk    sJ t	          t           dz  t          z
  t          t           dt           dz  z            t                     dt          z  k    sJ t	          t           dz  dz
  t          t           t          t           dz  z            t                     dt          z  k    sJ t	          t           dz  t          z
  t          t           t          t           dz  z            t                     dt          z  t          z  k    sJ t	          t           dz  dz
  t          t           t          t                               d          t          d          t          d          z   k    sJ t	          t           dz  t          t           z  z   t          dz  z   t           t                     t	          t           dz  t           z   dz   t          t           t!          t          t           z                                k    sJ t	          t          dz  t           dz  z  t          t           z  z   dz   t           t                     t	          t           dz  t           z   dz   t          t           t!          t           t          z                                k    sJ d S )Nr'   Tr&   r   c                  P    t          t          dz  t          z   t          z             S Nr'   )r   r   r    r1   r2   r3   r4   z&test_RootSum___new__.<locals>.<lambda>  s    1q10E0E r2   c                  :    t          t          dz  dz   d           S )Nr&   r'   c                     | S Nr1   )r   s    r3   r4   z8test_RootSum___new__.<locals>.<lambda>.<locals>.<lambda>  s    1 r2   )r   r   r1   r2   r3   r4   z&test_RootSum___new__.<locals>.<lambda>  s    wq!tax== r2   F)autor   r(   r%   r   r   )	quadraticr$   )r   r   r"   r   r   rM   hashr   r	   rP   r   rQ   r   r    r!   r   r   )r_   gro   s      r3   test_RootSum___new__r     s*   	1q1Aq#ac((A1Aa!!T))))1a4qA....AE1a4<##s1Q3xx!GAqMM/'AAAAA Q1a(())T#ac((Qwq!}}_2L-M-MMMMM
&(E(EFFF
:==>>>1c??ga3q66):):;;;;;;1c??ga3q66):):;;;;;;gae,,,g66$>>>>1::????1fQll##q((((1fQ1oo&&",,,,1fQll##q((((1fQll##q((((15!!!0D88881fQ1q!t8--..(2q//AAAA1fQ1q!t8--..(2q//!2CCCCC1a4!8VAqAv..22a77771a4!8VAqAv..22ac99991a4!8VAqAv..22ac99991a4!8VAqAv..22ac!e;;;;	1q&CFF##t5 5 58;B#a&&8HI I I I 1a4!A#:1$c1--1q1fQAaC11223 3 3 31a419qs?Q&Q//1q1fQAaC11223 3 3 3 3 3r2   c            
      j   t          t          dz  t          z   dz   t          t          t	          t                                        j        t                      k    sJ t          t          dz  t          z   dz   t          t          t	          t          t          z                                j        t          hk    sJ t          t          dz  t          z   t          z   t          t          t	          t          t          z                      t                    j        t          t          hk    sJ d S r   )	r   r   r   r"   r   rX   rY   r   r    r1   r2   r3   test_RootSum_free_symbolsr     s    1a4!8a<3q66!2!233@CEEIIII1a4!8a<3qs88!4!455BqcIIII	1q1fQAaC))1. ..:q!fE E E E E Er2   c                     t          t          t          t                              } t          t          dz  t          z   dz   |           t          t          dz  t          z   dz   |           k    du sJ t          t          dz  t          z   dz   |           t          t          dz  t          z   dz   |           k    du sJ t          t          dz  t          z   dz   |           t          t          dz  t          z   dz   |           k    du sJ t          t          dz  t          z   dz   |           t          t          dz  t          z   dz   |           k    du sJ d S )Nr'   r%   Tr&   F)r   r   r   r   r    r_   s    r3   test_RootSum___eq__r     s%   q#a&&AAqD1HqL!$$1q1a(@(@@TIIIIAqD1HqL!$$1q1a(@(@@TIIIIAqD1HqL!$$1q1a(@(@@UJJJJAqD1HqL!$$1q1a(@(@@UJJJJJJr2   c                  @   t          t          dz  dz   t                    } t          | t                     du sJ |                                 t          t
                     t          t
                    z   k    sJ t          t          dz  t          z   t          t                    } t          | t                     du sJ |                                 t          t          t                                t          t          t                               z   k    sJ d S )Nr&   r%   T)r   r   r   rM   doitr   r   r   rss    r3   test_RootSum_doitr     s    	A3		Bb'""d****7799QB#a&&(((((	A3	"	"Bb'""d****7799T1"XXIT1"XX6666666r2   c                     t          t          dz  dz   t                    } |                     dd                              t          d                    sJ |                     dd                              t          d                    sJ t          t          dz  t          z   t          t                    } |                                 | k    sJ d S )	Nr&   r%   r}   T)r   chopz1.0806046117362794348   z1.08060461173628)r   r   r   r   r   r   r   r   s    r3   test_RootSum_evalfr     s    	A3		B88bt8$$//6M0N0NOOOOO88bt8$$//6H0I0IJJJJJ	A3	"	"B88::r2   c                  t   t           dz  t           z   dz   } t          t          t          t          t           z                      }t          t          t          t          t          t           z            z            }t	          | |                              t                     t	          | |          k    sJ d S r   )r   r   r"   r   r   rz   )r_   r   hs      r3   test_RootSum_diffr     s~    	1q1Aq#ac((Aq!C!HH*A1a==a  GAqMM111111r2   c                     t           dz  t           z   dz   } t          t          t          t          t           z                      }t          dz  t          z   dz   }t          t          t          t          t          z                      }t          | |                              t          d          t          | |          k    sJ t          | |                              t           t                    t          ||          k    sJ d S )Nr'   r%   )r   r   r"   r   r    r   rw   )r_   r   FGs       r3   test_RootSum_subsr     s    	1q1Aq#ac((A	1q1Aq#ac((A1a==a##wq!}}44441a==a##wq!}}444444r2   c                     t          t          dz  t          z
  dz   t          t          t          t          t          z
  z                      dt          z  dz
  t          dz  t          z
  dz   z  k    sJ dt          dz  z  dt          dz  z  z   dt          z  z   dz   } t          t          t          t	          d	t          dz  z  dz  d
t          dz  z  dz  z
  dt          dz  z  dz  z
  t          t          dd          z  z
  dz
  t          t                    z             z            }t          | |                              t                    dt          dt          z            z  dt          t                    z  z
  dz   t          t                    z  t          dt          z            t          dt          z            z
  dz   z   dz  k    sJ d S )Nr   r%   r-      r'   s   r&      ii5  iq  }   r   r   )r   r!   r   r   r   r   r   rz   )r_   r   s     r3   test_RootSum_rationalr     s   	1q1fQ1q5	**, ,01!a!Q$(Q,/GH H H H 	AqD3q!t8bd"Q&Aq!Cad
1tAqDy{"SAXaZ/!HS!4D4D2DDqH3q66QS S S 	T 	TA 1a==a  	
3qs88aAh		"CFF*C!HHs1Q3xx,?!,CD%FFG%H H H H H H Hr2   c                  
   t           dz  t          z
  dz  t           dz  t          z
  dz  z  } t          t           dt	          t                     z  dz             }t          t           t	          t                               }t          t           dz  t          z
  |t                     }t          t           dz  t          z
  |t                     }t          | |t                                                     d|z  d|z  dgk    sJ d S )	Nr'   r&   r-   r   r   r   r   ~   )r   r   r   r   r   r   as_ordered_terms)r_   r   r   r   rn   s        r3   test_RootSum_independentr     s    	
AAq!tax!m#Aq!CFF(Q,Aq#a&&A	A1a	 	 B	A1a	 	 B1a,,..2b5"R%2EEEEEEEr2   c                      t          t          dz  t          z
  dz   t                                                    } d t          d          D             }t	          |           t	          |          k    sJ d S )Nr   r%   c                 T    g | ]%}t          t          d z  t          z
  dz   |          &S )r   r%   rC   r   s     r3   rf   z#test_issue_7876.<locals>.<listcomp>
  s.    	4	4	4a&AAq
!
!	4	4	4r2   )r   r   r   rk   	frozenset)l1l2s     r3   test_issue_7876r     se    	adQhlA			(	(	*	*B	4	4588	4	4	4BR==IbMM))))))r2   c                     t          dt          dz  z  dz
            } t          |                                           dk    sJ t          dt          dz  z  dz
            } t          |                                           dk    sJ d S )Nr   r   r   r   )r   r   lenr   r   s    r3   test_issue_8316r     s|    Qq!tVaZAq{{}}""""Qq!tVb[Aq{{}}""""""r2   c                  0   ddl m fd}  | t          t          dz  dt          dz  z  z   dz                       dk    sJ  | t          t          dz                      dk    sJ  | t          dgdz  d	gz   t                              dk    sJ  | t          t          dz  dz                       dk    sJ  | t          t          dz  dz                       dk    sJ  | t          t          dz  dz
                      dk    sJ  | t          t          d
z  dz
                      dk    sJ  | t          t          d
z  dz                       dk    sJ  | t          g dt                              dk    sJ  | t          t          dz  t          z   dz                       dk    sJ  | t          t          d
z  t          z   dz                       dk    sJ d } |  |d	dd                    d
k    sJ  |  |d	dd                    dk    sJ  |  |ddd                    dk    sJ  |  |ddd
                    d
k    sJ  |  |d	dd
                    dk    sJ  |  |d	dd
                    dk    sJ d S )Nr   )_imag_count_of_factorc                 j    t          fd|                                 d         D                       S )Nc              3   :   K   | ]\  }} |          |z  V  d S r   r1   )ra   r_   mr   s      r3   	<genexpr>z7test__imag_count.<locals>.imag_count.<locals>.<genexpr>  sH        $!Q((++A-      r2   r%   )sumfactor_list)r   r   s    r3   
imag_countz$test__imag_count.<locals>.imag_count  sH        	     	r2   r   r   r&   r%   r'   r$   r-   )r%   r&   r'   c                     t          t          | z
  t          |z
  z                      t          t          |z            t                    S r   )r   r   rw   )rn   r2r   s      r3   qztest__imag_count.<locals>.q%  s3    a"fq2v&,,Q155q999r2   r(   )sympy.polys.rootoftoolsr   r   r   )r  r  r   s     @r3   test__imag_countr
    s   ======     :d1a4"QT'>A-..//14444:d1a4jj!!Q&&&&:dA3q5B4<++,,1111:d1a4!8nn%%****:d1a4!8nn%%****:d1a4!8nn%%****:d1a4!8nn%%****:d1a4!8nn%%****:d999a(())Q....:d1a4!8a<(())Q....:d1a4!8a<(())Q....: : ::aaBll##q((((:aaAqkk""a'''':aa1ajj!!Q&&&&:aa1ajj!!Q&&&&:aaAqkk""a'''':aaBll##q((((((r2   c                      t          t          dz  dt          dz  z  z   dz   d          }  | j                    }| j        r|j        |j        z  dk    sJ d S )Nr-   r&   r%   r   )r   r   r   is_imaginaryaxbx)r"   rb   s     r3   test_RootOf_is_imaginaryr  /  sU    q!ta1f}q !$$AA>,ad14i1nnnnnnr2   c                     t           dz  dt           z  z   dz   } t          | d                                          }t          | d                                          }|                    |          sJ |                    |          sJ d S )Nr'   r   r%   r   )r   r   r   is_disjoint)rd   iriis      r3   test_is_disjointr  5  s    	
A!aB	A	$	$	&	&B	A	$	$	&	&B>>">>"r2   c                       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           fd t          t
           fd           d S )NFr%   c                       d         S Nr%   r1   r   s   r3   r4   z$test_pure_key_dict.<locals>.<lambda>E  s    QqT r2   c                     d| <   d S )Nr&   r1   )kr   s    r3   dontz test_pure_key_dict.<locals>.dontF  s    !r2   c                        d          S r  r1   )r  s   r3   r4   z$test_pure_key_dict.<locals>.<lambda>H  s    ttAww r2   )Dr   r    r   KeyErrorrP   )r  r   s   @@r3   test_pure_key_dictr  =  s    	AFuFuAaD66666666Q419999
8\\\\"""    
:'''''r2   c                  L    t          j                     d t          d          D             d D             t          dd          t          dd          t          dz  dz  z
  t          dd          t          dz  dz  z   gk    sJ d	                                          d
 D             t          dd          t          dd          t          dz  dz  z
  t          dd          t          dz  dz  z   gk    sJ t          d	                                         j                  dk     sJ t          d                                         j                  dk     sJ t          d                                         j	                  dk     sJ t          d                                         j                  dk     sJ t          d                                         j	                  dk     sJ d	                                          d D             t          dd          t          dd          t          dz  dz  z
  t          dd          t          dz  dz  z   gk    sJ t          d	                                         j                  dk     sJ t          d                                         j                  dk     sJ t          d                                         j	                  dk     sJ t          d                                         j                  dk     sJ t          d                                         j	                  dk     sJ d	                                          d D             t          dd          t          dd          t          dz  dz  z
  t          dd          t          dz  dz  z   gk    sJ t          t          d	                                         j                  d	         z            dk     sJ t          t          d                                         j                  d         z                                            dk     sJ t          t          d                                         j	                  d         z                                            dk     sJ t          t          d                                         j                  d         z                                            dk     sJ t          t          d                                         j	                  d         z                                            dk     sJ d	                                          d D             t          dd          t          dd           t          d!z  d z  z
  t          dd           t          d!z  d z  z   gk    sJ t          t          d	                                         j                  d	         z            d"k     sJ t          t          d                                         j                  d         z                                            d"k     sJ t          t          d                                         j	                  d         z                                            d"k     sJ t          t          d                                         j                  d         z                                            d"k     sJ t          t          d                                         j	                  d         z                                            d"k     sJ d	                                          d# D              d$  D             g d%k    sJ t           fd&t          t                               D                       sJ d S )'Nc                 Z    g | ](}t          t          d z  dt          z  z   dz   |          )S )r'   r   r%   )r   r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>N  s2    777A1q!	$	$777r2   r'   c                 8    g | ]}|                     d           S )皙?r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>O  s$    ---aAOOD!!---r2   i   r      i%  r   c                 :    g | ]}|                     d d          S )r"  -C6?r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>S  &    333AAOOD$''333r2   i  i   iS i   r"  r%   r&  r&   c                 :    g | ]}|                     d d           S )r&  r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>\  r'  r2   i/i4N  i  c                 :    g | ]}|                     d           S )r&   r~   r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>g  &    ,,,QAOOaO  ,,,r2   i'iV i3 i    i;e {Gz?c                 :    g | ]}|                     d           S )r'   r~   r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>p  r*  r2   i i   i'SgMbP?c                 8    g | ]}|                     d           S )r&   )eval_approxr   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>z  s$    %%%aq		%%%r2   c                 ,    g | ]}t          |          S r1   )r   r   s     r3   rf   z-test_eval_approx_relative.<locals>.<listcomp>{  s    qCFFr2   )z-0.10z0.05 - 3.2*Iz0.05 + 3.2*Ic              3      K   | ]A}t          |         |         z
  |         z                                            d k     V  BdS )r+  N)r   r   )ra   rb   r   ts     r3   r  z,test_eval_approx_relative.<locals>.<genexpr>}  sQ      KKsQqTAaD[!A$&))++,,t3KKKKKKr2   )r   r   rk   r   r   r   r   r   dxdyr   r   allr   )r   r1  s   @@r3   test_eval_approx_relativer5  K  s   77eAhh777A--1---cHR--#c	9SAcE#I%2' ' ' ' ' aDKKMMM33333cHT511AfHVOCu&/81 1 1 1 1 QqT!!$%%,,,,QqT!!$%%,,,,QqT!!$%%,,,,QqT!!$%%,,,,QqT!!$%%,,,,aDKKMMM33333v 6 66& Hv6&082 2 2 2 2 QqT!!$%%,,,,QqT!!$%%,,,,QqT!!$%%,,,,QqT!!$%%,,,,QqT!!$%%,,,, aDKKMMM,,!,,,'""HVW$=$='	'@Q$Q!!AgIg$5517 7 7 7 7 q1##%%())!A$.//$6666q1##%%())!A$.//1133d::::q1##%%())!A$.//1133d::::q1##%%())!A$.//1133d::::q1##%%())!A$.//1133d::::aDKKMMM,,!,,,'""HWh$?$?!I+hBV$V(##a	k(&::1< < < < < q1##%%())!A$.//$6666q1##%%())!A$.//1133d::::q1##%%())!A$.//1133d::::q1##%%())!A$.//1133d::::q1##%%())!A$.//1133d::::aDKKMMM%%1%%%AA #1 #1 #1 1 1 1 1KKKKKU3q66]]KKKKKKKKKKr2   c                      t          t          dz  t          z
  dz   d          } t          t          t          dt          f          }t	          t
          | |          sJ d S )Nr   r%   r   )r   r   r   r    r   r   )r"   r   s     r3   test_issue_15920r7    sP    q!tax!|QAQ1IARAr2   c            
         t           dz  t           z
  dz   } t          t          |                                                     dk    sJ t          t          |                     t           t          t                                                                                   dk    sJ t          t          |                     t           t          t                                                                                  dk    sJ d S )Nr'   r%   z[CRootOf(x**3 - x + 1, 0)])r    r   r   r   rw   r   r   )rd   s    r3   test_issue_19113r9    s    	
AABtBxx""$$%%)EEEEEtBGGAs1vv&&''2244 
 
)* * * *tBGGAs1vv&&''2244 
 
)* * * * * *r2   )U__doc__sympy.polys.polytoolsr   r	  r   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"   rS   rZ   r]   rp   rr   ru   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r5  r7  r9  r1   r2   r3   <module>rJ     s   F F & & & & & & - - - - - - - - -                       3 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 $ $ $ $ $ $ " " " " " " = = = = = = = = 9 9 9 9 9 9 8 8 8 8 8 8 . . . . . . 0 0 0 0 0 0 ' ' ' ' ' ' . - - - - - - - % % % % % % & & & & & & & & & & & & & & & &Q: Q: Q:hL L LH H H; ; ;64 4 46 6 6I I I0 0 0
 X$ X$ X$v	. 	. 	.  C C C  $  )2 )2 )2X.3 .3 .3bE E EK K K	7 	7 	7  2 2 25 5 5	H 	H 	H	F 	F 	F* * *# # #) ) )4- - -  ( ( ( 1L 1L 1Lh  * * * * *r2   