
    sgU                        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 ZTy)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 y )Nr            FradicalsT   c                      t        dd      S Nr   r        U/var/www/html/venv/lib/python3.12/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                  6    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 r2   c                  6    t        t        dt              d      S r7   r9   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>Y   r:   r2   c                  0    t        t        t        z
  d      S r/   r   r   r    r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>Z   s    F1q5!$4 r2   c                  4    t        t        t              d      S r/   )r   r   r   r1   r2   r3   r4   z&test_CRootOf___new__.<locals>.<lambda>\   s    F3q61$5 r2   c                  N    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 r2   c                  D    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                  .    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 r2   c                  .    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                  .    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 r2   c                  .    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                  6    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 r2   c                  T    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 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!QVV!!!!a%q   !a%!!!!a%r!!!!a%"""!Q$1*q.!$QtAwY666!Q$1*q.!$QtAwY666!Q$1*q."%aQi777!Q$1*q."%aQi777q!taczA~q51Aa D(((q!taczA~q51Aa D(((q!taczA~rE2Aa D(((q!taczA~rE2Aa D(((1q51q5/1u5;;;1q51q5/1u5:::1q51q5/26!;;;1q51q5/26"<<<1q51q5/1t4:::1q51q5/1t49991q51q5/25:::1q51q5/25;;;1q51a4!8a<(!,q!tax!|Q0GGGG1q51a4!8a<(!,1111q51a4!8a<(!,q!tax!|Q0GGGG1q51a4!8a<(!,q!tax!|Q0GGGG1q51a4!8a<("-1q1a1HHHH1q51a4!8a<("-1q1a1HHHH1q51a4!8a<("-2221q51a4!8a<("-1q1a1HHHH!Q$1a4-#r)))!Q$1a4-#q(((!Q$1a4-#q(((!Q$1a4-#q(((
12
12
?9:
?9:
?45
?56
 EF
 ?@
:34
:34
:23
:23
:23$q1ua.!$)))$q!tax#Q'DG8333$q!tax#Q'47222$q!tax#Q'1hq!n+<<<<!AqD&1Q3,1$a+r111
 DE!Q$(Q,"11T999r2   c                      t        t        dz  t        z   dz   d      } | j                  sJ | j                  t	               k(  sJ t        t        d        y )Nr'   r   c                  f    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(J r2   )r   r   	is_numberfree_symbolssetr   rN   rR   s    r3   test_CRootOf_attributesrZ   t   sH    q!tax!|QA;;;>>SU"""
  J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 y Nr'   r   Tr%   Fr&   r=   r1   r2   r3   test_CRootOf___eq__r]      s<   1a4!8a<#vadQhlA'>>4GGG1a4!8a<#vadQhlA'>>5HHH1a4!8a<#vadQhlA'>>4GGG1a4!8a<#vadQhlA'>>5HHH1a4!8a<#vadQhlA'>>4GGG1a4!8a<#vadQhlA'>>4GGG1a4!8a<#vadQhlA'>>5HHH1a4!8a<#vadQhlA'>>4GGG1a4!8a<#vadQhlA'>>5HHH1a4!8a<#vadQhlA'>>4GGGr2   c                  J   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                  st        ||      t        j
                  u r-J  t        |d      }|D ]-  }|j                  st        ||      t        j                  u r-J  t        dz  t        z   dz   }t        |      }t        d      D cg c]  }|D ]  }t        t        ||      |       ! c}}j                  d      dk(  sJ t        t        |d      dt        j                  z         dk(  sJ y c c}}w )Nfr'   r&   r%   r   TF)r   r   r   r   r   falsetruer   Infinityr   r   is_realrangecountImaginaryUnit)r_   eqr"   r1solsijs           r3   test_CRootOf___eval_Eq__rm      s   A	
AABr1A	ABa9a8qvvRAa8qwwa'''a8qwwRAaD!!!
)C '99a8qww&&&' 	r1A &99a8qvv%%%& 
AAB
)C*/( 
QC 
qBvb!}a  
  

%+  fRmQ01U:::
s   6$H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 y r\   )r   r   rc   r1   r2   r3   test_CRootOf_is_realro      sw    !Q$(Q,"**d222!Q$(Q,"**e333!Q$(Q,"**e333r2   c                  Z    t        t        dz  t        z   dz   d      j                  du sJ y )Nr'   r   T)r   r   
is_complexr1   r2   r3   test_CRootOf_is_complexrr      s)    !Q$(Q,"--555r2   c                      t        t        dz  t        z   dz   d      j                  t        t              t        t        dz  t        z   dz   d      k(  sJ y rV   )r   r   subsr    r1   r2   r3   test_CRootOf_subsru      sC    !Q$(Q,"''1-1q1a1HHHHr2   c                      t        t        dz  t        z   dz   d      j                  t              dk(  sJ t        t        dz  t        z   dz   d      j                  t              dk(  sJ y rV   )r   r   diffr    r1   r2   r3   test_CRootOf_diffrx      sZ    !Q$(Q,"''*a///!Q$(Q,"''*a///r2   c                     t        t        dz  t        z   dz   d      j                  d      } | j                  t	        d            sJ t        t        dz  t        z   dz   d      j                  d      j                         \  }}|j                  t	        d            sJ |j                  t	        d             sJ t        t        dz  t        z   dz   d	      j                  d      j                         \  }}|j                  t	        d            sJ |j                  t	        d            sJ t        d
t        d      }|j                         D cg c]  }t         |j                  d             }}|g dk(  sJ t        t        dz  dt        z  z
  dz   d      j                  d      }|j                  t	        d            sJ t        t        dz  dt        z  z
  dz   d      j                  d      j                         \  }}|j                  t	        d            sJ |j                  t	        d            sJ t        t        dz  dt        z  z
  dz   d	      j                  d      j                         \  }}|j                  t	        d            sJ |j                  t	        d            sJ t        t        dz  dt        z  z
  dz   d      j                  d      j                         \  }}|j                  t	        d            sJ |j                  t	        d            sJ t        t        dz  dt        z  z
  dz   d
      j                  d      j                         \  }}|j                  t	        d            sJ |j                  t	        d            sJ t        t        t        dz  d	t        d
z  z  z   t        dz  z   dz
  d      j                  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      j                  d	      j                         \  }}t        |d	      j                  d	      j                         \  }	}
||	k(  sJ ||
k  sJ ||
 k(  sJ t        t        d,t              d#      } |j                  d	       |j                  d-      j                  d	      k(  sJ t        t        d	z  dz   dd./      }t        t        d	z  dz   dd./      }|j                  d
      t	        d0d
      t        z  k(  sJ |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      j                  d            d3k(  sJ t        d4t        d%z  z  d5t        d
z  z  z
  d6t        d	z  z  z   dz
  d      }	|	j                  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      j                  d	            d@k(  sJ t        t        t        d
z  dt        d	z  z  z   dz   d      j                  d	            dAk  sJ t        d      D cg c]  }t        t        dz  t        z   dz   |      ! }}|d   j!                          |D ]{  }|j#                         }|j                  d	       ||j#                         k7  sJ |j!                          ||j#                         k(  sJ | |j$                  |j&                   k(  r{J  y c c}w c c}w )BNr'   r      nz-1.2134116627622296341r%   z0.60670583138111481707z1.45061224918844152650r&   r-   Tpolys   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?)r   r   evalf
epsilon_eqr   as_real_imagr   
real_rootsstrr|   r   r   _eval_evalfr   absrd   _reset_get_intervalfuncargs)realreimpr"   rootsrg   r   r   cdr0rh   rk   ris                  r3   test_CRootOf_evalfr      sl   !Q$(Q,"((2(.D??5!9:;;;AqD1HqL!$**R*0==?FB==% 89:::==% 899:::AqD1HqL!$**R*0==?FB==78999==78999a$'A#$<<>2aSR\2E2
      
1qs
R	#	)	)B	)	/B==89:::AqD1Q3JOQ'---3@@BFB==9:;;;==9:;;;AqD1Q3JOQ'---3@@BFB==9:;;;==9:;;;AqD1Q3JOQ'---3@@BFB==9:;;;==9:;;;AqD1Q3JOQ'---3@@BFB==9:;;;==9:;;; vadQq!tVmad*[8!<>>qABf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6M6q5L57N7}R#Q'A133q6SQSSXZZ]"""	1q!e	,B	1q!e	,B447eD!nq((((447eCma'''' va1fr!Q$w&AqD014a8::1=>(JJJ 	ad
T!Q$Y&AqD014a8A== vaebBh&QU2T!R%Z?ad
AqD[!#)!Q$;/18A>AaD%& & & vadR1Wnq(!,..q12S888 +0(3Q1q1a	 3A3aDKKM $
QB$$&&&&
		B$$&&&&FAFFAFFO###$E 3@ 	4s   "_7=$_<c                      t         dz   dz   } t        | d      }|j                  j                         t         dz  dz
  k(  sJ  |j                          |j                  t
        j                  v sJ y )Nr&   r   )r   r   polyas_exprr|   rootoftools_reals_cacher_   r"   s     r3   test_issue_24978r     sd     
A	A1A66>>q!tax''' ACCE66[-----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 y )Nr   r   r%   )r   r   r|   r   )r"   r   r   s      r3   test_CRootOf_evalf_caching_bugr   #  sw    q!taczB"AACCEAq!taczB"AACCEA6M6r2   c                  P   t        t        dz  t        z   dz         j                         t        t        dz  t        dz  z
  dz   d      gk(  sJ t        t        dz  t        z   dz         j                  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 y )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.JJJJ1q1((%(8V	1q!ta> =    	R1Wr!Q$wAqD(1Q3.2AdCAa QrUAbE1R5!B%'$BBBBr2   c            
      4   t        t        dz  t        z   dz         j                         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         j                  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 y )	Nr   r%   r'   r&   r   r$   Fr)   )r   r   	all_rootsr   r   r   r   r1   r2   r3   test_CRootOf_all_rootsr   7  sk   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q!tad{Q"q!tax!|Q/q!tax!|Q/q!tad{Q"q!tad{Q"<   r2   c                  *   t        dt        d      } | j                         D cg c]  } |j                  d       }}|D ]  }t	        |t
              rJ  |D cg c]  }t        |j                  d             }}|g dk(  sJ y c c}w c c}w )Nr-   Tr}      r{   r   r   )r   r   r   eval_rationalrM   r   r   r|   )r   r"   r   roots       r3   test_CRootOf_eval_rationalr   I  s    a$'A,-LLN;q_Q__r";E; *$)))*)./S_/E/    	 < 0s   B!B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 y )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66111116655555AGGI66[-----6655555 1A66111116655555AGGI66[-----66[11111 	adQhA"#A 1A66[-----6655555 1A66[-----66[11111r2   c                  l
   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 y )Nr'   Tr&   r   c                  B    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0E r2   c                  0    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_   grj   s      r3   test_RootSum___new__r     s   	1q1Aq#ac(A1Aa!T)))1a4qA...AE1a4<#s1Q3x!GAqM/'AAAA Q1a()T#ac(Qwq!}_2L-MMMM
&(EF
:=>1c?ga3q6):;;;;1c?ga3q6):;;;;gae,g6$>>>1:??1fQl#q(((1fQ1o&",,,1fQl#q(((1fQl#q(((15!00D8881fQ1q!t8-.(2q/AAA1fQ1q!t8-.(2q/!2CCCC1a4!8VAqAv.2a7771a4!8VAqAv.2ac9991a4!8VAqAv.2ac9991a4!8VAqAv.2ac!e;;;	1q&CF#t58;B#a&8HI I I 1a4!A#:1$c1-1q1fQAaC123 3 31a419qs?Q&Q/1q1fQAaC123 3 3r2   c            
      
   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 y r   )	r   r   r   r"   r   rX   rY   r   r    r1   r2   r3   test_RootSum_free_symbolsr     s    1a4!8a<3q6!23@@CEIII1a4!8a<3qs8!45BBqcIII	1q1fQAaC)1..:lq!fE E Er2   c                  6   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 y )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AqD1HqL!$1q1a(@@TIIIAqD1HqL!$1q1a(@@UJJJAqD1HqL!$1q1a(@@UJJJr2   c                     t        t        dz  dz   t              } t        | t               du sJ | j	                         t        t
               t        t
              z   k(  sJ t        t        dz  t        z   t        t              } t        | t               du sJ | j	                         t        t        t                      t        t        t                     z   k(  sJ y )Nr&   r%   T)r   r   r   rM   doitr   r   r   rss    r3   test_RootSum_doitr     s    	A3	Bb'"d***779QB#a&((((	A3	"Bb'"d***779T1"XIT1"X6666r2   c                  \   t        t        dz  dz   t              } | j                  dd      j	                  t        d            sJ | j                  dd      j	                  t        d            sJ t        t        dz  t        z   t        t              } | j                         | k(  sJ y )	Nr&   r%   rz   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$//6M0NOOO88bt8$//6H0IJJJ	A3	"B88:r2   c                  $   t         dz  t         z   dz   } t        t        t        t        t         z              }t        t        t        t        t        t         z        z        }t	        | |      j                  t               t	        | |      k(  sJ y r   )r   r   r"   r   r   rw   )r_   r   hs      r3   test_RootSum_diffr     sd    	1q1Aq#ac(Aq!C!H*A1a=a GAqM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        | |      j                  t        d      t        | |      k(  sJ t        | |      j                  t         t              t        ||      k(  sJ y )Nr'   r%   )r   r   r"   r   r    r   rt   )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1a=a#wq!}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        | |      j                  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 y )Nr   r%   r-      r'   s   r&      ii5  iq  }   r   r   )r   r!   r   r   r   r   r   rw   )r_   r   s     r3   test_RootSum_rationalr     so   	1q1fQ1q5	*,01!a!Q$(Q,/GH H H 	AqD3q!t8bd"Q&Aq!Cad
1tAqDy{"SAXaZ/!HS!4D2DDqH3q6QS S 	TA 1a=a 	
3qs8aAh		"CF*C!Hs1Q3x,?!,CD%FFG%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               j                         d|z  d|z  dgk(  sJ y )	Nr'   r&   r-   r   r   r   r   ~   )r   r   r   r   r   r   as_ordered_terms)r_   r   r   r   rh   s        r3   test_RootSum_independentr     s    	
AAq!tax!m#Aq!CF(Q,Aq#a&A	A1a	 B	A1a	 B1a,,.2b5"R%2EEEEr2   c                     t        t        dz  t        z
  dz   t              j                         } t        d      D cg c]  }t	        t        dz  t        z
  dz   |      ! }}t        |       t        |      k(  sJ y c c}w )Nr   r%   )r   r   r   rd   r   	frozenset)l1rk   l2s      r3   test_issue_7876r     sh    	adQhlA		(	(	*B+08	4a&AAq
!	4B	4R=IbM))) 
5s   $A=c                      t        dt        dz  z  dz
        } t        | j                               dk(  sJ t        dt        dz  z  dz
        } t        | j                               dk(  sJ y )Nr   r   r   r   )r   r   lenr   r   s    r3   test_issue_8316r     s`    Qq!tVaZAq{{}"""Qq!tVb[Aq{{}"""r2   c                     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 y )Nr   )_imag_count_of_factorc                 N    t        fd| j                         d   D              S )Nc              3   :   K   | ]  \  }} |      |z    y wr   r1   ).0r_   mr   s      r3   	<genexpr>z7test__imag_count.<locals>.imag_count.<locals>.<genexpr>  s$      $!Q(+A- s   r%   )sumfactor_list)r   r   s    r3   
imag_countz$test__imag_count.<locals>.imag_count  s(     	  	r2   r   r   r&   r%   r'   r$   r-   )r%   r&   r'   c                 z    t        t        | z
  t        |z
  z  j                  t        t        |z        t              S r   )r   r   rt   )rh   r2r   s      r3   qztest__imag_count.<locals>.q%  s-    a"fq2v&,,Q15q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d1a4j!Q&&&dA3q5B4<+,111d1a4!8n%***d1a4!8n%***d1a4!8n%***d1a4!8n%***d1a4!8n%***d9a()Q...d1a4!8a<()Q...d1a4!8a<()Q...:aBl#q(((aAqk"a'''a1aj!Q&&&a1aj!Q&&&aAqk"a'''aBl#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 y )Nr-   r&   r%   r   )r   r   r   is_imaginaryaxbx)r"   rk   s     r3   test_RootOf_is_imaginaryr  /  sR    q!ta1f}q !$AA>>add144i1n,,nr2   c                      t         dz  dt         z  z   dz   } t        | d      j                         }t        | d      j                         }|j                  |      sJ |j                  |      sJ y )Nr'   r   r%   r   )r   r   r   is_disjoint)rg   iriis      r3   test_is_disjointr  5  sc    	
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       y )NFr%   c                       d   S Nr%   r1   r   s   r3   r4   z$test_pure_key_dict.<locals>.<lambda>E  s    QqT r2   c                     d| <   y )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    tAw r2   )Dr   r    r   KeyErrorrP   )r  r   s   @@r3   test_pure_key_dictr  =  sv    	AFuFuAaD6M66M6Q4199
8\"
:'r2   c                     t        j                          t        d      D  cg c]"  } t        t        dz  dt        z  z   dz   |       $ c} D  cg c]  } | j	                  d       c} 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
   j                          D  cg c]  } | j	                  dd       c} 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                         j                        dk  sJ t        d   j                         j                        dk  sJ t        d   j                         j                        dk  sJ t        d   j                         j                        dk  sJ t        d   j                         j                        dk  sJ d
   j                          D  cg c]  } | j	                  dd       c} 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                         j                        dk  sJ t        d   j                         j                        dk  sJ t        d   j                         j                        dk  sJ t        d   j                         j                        dk  sJ t        d   j                         j                        dk  sJ d
   j                          D  cg c]  } | j	                  d       c} 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                         j                        d
   z        dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ d
   j                          D  cg c]  } | j	                  d       c} 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                         j                        d
   z        dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ t        t        d   j                         j                        d   z        j                         dk  sJ d
   j                          D  cg c]  } | j                  d       c} D  cg c]  } t        |        c} g dk(  sJ t!        fd t        t#                    D              sJ y c c} w c c} w c c} w c c} w c c} w c c} w c c} w c c} w )!Nr'   r   r%   g?i   r      i%  r   g-C6?i  i   iS i   r&   i/i4N  i  r{   i'iV i3 i    i;e {Gz?i i   i'SgMbP?)z-0.10z0.05 - 3.2*Iz0.05 + 3.2*Ic              3   t   K   | ]/  }t        |   |   z
  |   z  j                               d k   1 yw)r  N)r   r|   )r   rk   r   ts     r3   r   z,test_eval_approx_relative.<locals>.<genexpr>}  s9     KsQqTAaD[!A$&))+,t3Ks   58)r   r   rd   r   r   r   r   r   r   r   dxdyr   r|   eval_approxr   allr   )rk   r   r  s    @@r3   test_eval_approx_relativer  K  s   .3Ah7A1q!	$7A+,-aAOOD!-cHR-#c	9SAcE#I%2' ' ' ' aDKKM123AAOOD$'3cHT51AfHVOCu&/81 1 1 1 QqT!$$%,,,QqT!$$%,,,QqT!$$%,,,QqT!$$%,,,QqT!$$%,,,aDKKM123AAOOD$'3v 66& Hv6&082 2 2 2 QqT!$$%,,,QqT!$$%,,,QqT!$$%,,,QqT!$$%,,,QqT!$$%,,, aDKKM*+,QAOOaO ,'"HVW$='	'@Q$Q!AgIg$5517 7 7 7 q1##%(()!A$./$666q1##%(()!A$./113d:::q1##%(()!A$./113d:::q1##%(()!A$./113d:::q1##%(()!A$./113d:::aDKKM*+,QAOOaO ,'"HWh$?!I+hBV$V(#a	k(&::1< < < < q1##%(()!A$./$666q1##%(()!A$./113d:::q1##%(()!A$./113d:::q1##%(()!A$./113d:::q1##%(()!A$./113d:::aDKKM#$%aq	%AqCF #1 1 1 1KU3q6]KKKK_ 	8- 4 4 - - 	&s/   ']]]!]&]+%]02]5]:c                      t        t        dz  t        z
  dz   d      } t        t        t        dt        f      }t	        t
        | |      sJ y )Nr   r%   r   )r   r   r   r    r   r   )r"   r   s     r3   test_issue_15920r    s>    q!tax!|QAQ1IARAr2   c            
         t         dz  t         z
  dz   } t        t        |       j                               dk(  sJ t        t        | j	                  t         t        t                           j                               dk(  sJ t        t        | j	                  t         t        t                          j                               dk(  sJ y )Nr'   r%   z[CRootOf(x**3 - x + 1, 0)])r    r   r   r   rt   r   r   )rg   s    r3   test_issue_19113r!    s    	
AABtBx""$%)EEEEtBGGAs1v&'224 
)* * *tBGGAs1v&'22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]   rm   ro   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  r  r!  r1   r2   r3   <module>r2     s+   F & - -   3 3 3 $ " = 9 8 . 0 ' . % & &Q:hLH;646I0
 X$ X$v	.C$)2X.3bEK	725	H	F*#)4-( 1L 1Lh*r2   