
    oVho                        d dl 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mZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZmZ d d
lmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlmNZN d dlmOZOmPZPmQZQmRZRmSZSmTZTmUZU d d lVmWZWmXZXmYZY d d!lZm[Z[m\Z\ d d"l]m^Z^ d d#l_m`Z`maZa d d$lbmcZcmdZdmeZe dbd%Zfd& Zgd' Zhd( Zid) Zjd* Zkd+ Zlead,        Zmd- Znead.        Zod/ Zpd0 Zqd1 Zrd2 Zsd3 Ztd4 Zud5 Zvd6 Zwd7 Zxd8 Zyd9 Zzd: Z{d; Z|d< Z}d= Z~d> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zy)c    N)Productproduct)Sum)Add)N)Functionnfloat)Mul)GoldenRatio)	AlgebraicNumberEFloatIRationaloozoonanpi)Pow)EqS)Symbol)sympify)	factorial)	fibonacci)Absreim)explog)acoshcosh)ceilingfloor)Maxsqrt)acosatancossintan)Integral	integrate)factor)CRootOf)cyclotomic_poly)srepr)sstr)simplify)comp)complex_accuracyPrecisionExhaustedscaled_zeroget_integer_part	as_mpmathevalf_evalf_with_bounded_error)infninfmake_mpc)
from_floatfzero)	unchanged)raisesXFAIL)nxyc                 P    t         t        |       j                  |fi |d      S )NT)	full_prec)r3   r   r;   )erE   optionss      K/home/dcms/DCMS/lib/python3.12/site-packages/sympy/core/tests/test_evalf.pyNSrM   *   s&     
  .g.$??    c                     ddl m}  t        t        d      d dd f      dk(  sJ t        t        d      t        d      ddf      dk(  sJ t        t        d      t        d      ddf      d	k(  sJ t        t        d      t        d      ddf      dk(  sJ t        t        d      t        d      ddf      dk(  sJ t        |       t        j
                  k(  sJ t        t              t        j
                  k(  sJ t        t        d
        y )Nr   finf       @#   g      $@d   %   g     @@+   c                  $    t        t        di       S N   )r9   r    rN   rL   <lambda>z$test_evalf_helpers.<locals>.<lambda>9   s    /Q; rN   )	mpmath.libmprQ   r6   r@   mathr=   r   rC   
ValueErrorrP   s    rL   test_evalf_helpersr_   .   s   !Z_dB=>"DDDZ_j.>CHIROOO	C*V,b#68;=> > >Z_j.>RHIROOO	C*V,c268;=> > >D!TXX---C DHH,,,
:;<rN   c                      t        dd      dk(  sJ t        dd      dk(  sJ t        dd      d	k(  sJ t        d
d      dk(  sJ y )Nr      z3.14159265358979z2/3
   z0.6666666667z
355/113-pi   z
2.66764e-7z16*atan(1/5)-4*atan(1/239)rM   rZ   rN   rL   test_evalf_basicre   <   sW    dB<----eR=N***lA,...*B/3EEEErN   c            
      p    t        t        t        t        dddz        t         d      dd      d	k(  sJ y )
NrY   rb     Fevaluatera   i  maxnz1.00000000000000e-1000)rM   r   r   r   rZ   rN   rL   test_cancellationrl   C   s;    c"hq"d(+bS5A245 5 5rN   c                      t        dd      dk(  sJ t        t        ddz  z  d      dk(  sJ t        dd      dk(  sJ t        d	d      d
k(  sJ y )Nzpi**(10**20)rb   z!1.339148777e+49714987269413385435rT   zq4.946362032e+4971498726941338543512682882908988736516783243804424461340534999249471120895526746555473864642912223z2**(1/10**50)ra   1.00000000000000z2**(1/10**50)-1z6.93147180559945e-51)rM   r   rZ   rN   rL   test_evalf_powersro   H   sm    nb!%HHHHb2s7mR  &' ( ( ( or"&8888$(>>>>rN   c                     dt         dz  z  dz  t        dz  dt        dz  z  t         dz  z  t         dz  z
  dt         dz  z  z
  dz
  z  z   dt         dz  z  dz  z   t        dt         z  z  z   } t        | dt        d	t         d
i      dk(  sJ y )Ni7  rc            y      ra   i1/ iH  subsz-0.827396059946821)rG   rF   rM   as    rL   test_evalf_rumprz   S   s    QT	!adBq!tGAqDL1a4/#ad(:Q>??"QT'!)KaQRSTQTgUAa1eQ./3GGGGrN   c                      t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        d	d      d
k(  sJ t        dd      dk(  sJ y )Nz2*sqrt(pi)*Irb   z3.544907702*Iz3+3*Ira   z%3.00000000000000 + 3.00000000000000*IzE+pi*Iz%2.71828182845905 + 3.14159265358979*Izpi * (3+4*I)z%9.42477796076938 + 12.5663706143592*IzI*(2+I)z&-1.00000000000000 + 2.00000000000000*Ird   rZ   rN   rL   test_evalf_complexr|   X   sn    nb!_444gr?EEEEhFFFFnb!%LLLLi HHHHrN   c                  $    t        dd      dv sJ y )Nz(pi+E*I)*(E+pi*I)ra   )z0.e-15 + 17.25866050002*Iz0.e-17 + 17.25866050002*Iz-0.e-17 + 17.25866050002*Ird   rZ   rN   rL   test_evalf_complex_bugr~   `   s%    !2& +I I I IrN   c                     t        d      dk(  sJ t        dd      dk(  sJ t        d      dk(  sJ t        d	      d
k(  sJ t        dd      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        dd      dk(  sJ y )Nz(E+pi*I)**100000000000000000zL-3.58896782867793e+61850354284995199 + 4.58581754997159e+61850354284995199*Iz(pi + pi*I)**2Tchopz19.7392088021787*Iz(pi + 1/10**8 + pi*I)**2z!6.2831853e-8 + 19.7392088650106*Iz(pi + 1/10**12 + pi*I)**2z6.283e-12 + 19.7392088021850*I(pi + pi*I)**4z-389.636364136010z(pi + 1/10**8 + pi*I)**4z"-389.636366616512 + 2.4805021e-6*Iz(pi + 1/10**12 + pi*I)**4z-389.636364136258 + 2.481e-10*Iz(10000*pi + 10000*pi*I)**4z-3.89636364136010e+18rd   rZ   rN   rL   test_evalf_complex_powersr   f   s    ,-VW W W T*.BBBB"$'JK K K)*.NNNNT*.AAAA"$'KL L L)*.OOOO$414KL L LrN   c                  $    t        d      dk(  sJ y )Nr   z-389.63636413601 + 0.e-14*Ird   rZ   rN   rL   test_evalf_complex_powers_bugr   w   s    #@@@@rN   c            	         t        t        t                     dk(  sJ t        t        t        t        z  t        dd      d            dk(  sJ t        t        t        z        dk(  sJ t        t        t        t        dz  z   z        d	k(  sJ t        t        t        dz  z   t        t        dz  z   z        d
k(  sJ t        t        t                    dk(  sJ t        t        t        t        t        z  z               dk(  sJ t        t        t        z        dk(  sJ t        t         t        z        dk(  sJ t        t         t         z        dk(  sJ y )Nz1.77245385090552*IrY   rr   Frh   z%1.25331413731550 + 1.25331413731550*Iz'0.413292116101594 + 0.910598499212615*I   z%20.8438653991931 + 8.36343473930031*Iz%17.2442906093590 + 13.6839376767037*Iz23.1406926327793z&-21.0981542849657 + 9.50576358282422*Iz36.4621596072079z&-32.9138577418939 - 15.6897116534332*Iz*-0.0247567717232697 + 0.0118013091280262*I)rM   r'   r   r   r   r   r   r    rZ   rN   rL   test_evalf_exponentiationr   |   s7   dB3i=0000c"Q$	1  #JK K Kb!e9AAAAb1qs7m GGGGrAaCx1qs7#$(OOOOc"g;,,,,c"qs(m HHHHb"f:++++sRi=DDDDsrclKKKKrN   c                  t   t        d      } t        d      }t        d      }t        d      }t        d      }t        | |t        z  z   ||t        z  z   z  d      dk(  sJ t        | |t        z  z   ||t        z  z   z  d      d	k(  sJ t        | |t        z  z   ||t        z  z   z  |t        z  z
  d
      dv sJ y )Nz63287/100000z52498/100000z69301/100000z83542/100000z2231321613/2500000000rc   z6.44710e-6 + 0.892529*Irb   z6.447100000e-6 + 0.8925286452*I   )z6.4471e-6 + 0.e-14*Iz6.4471e-6 - 0.e-14*I)r   rM   r   )ABCDFs        rL   test_evalf_complex_cancellationr      s     A A A A()A q1Q3wQqS!1%)BBBBq1Q3wQqS!2&*KKKKq1Q3w	AaCQ3NO O OrN   c                      t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        d	d      d
k(  sJ t        dd      dk(  sJ y )Nzlog(3+pi*I)ra   z&1.46877619736226 + 0.808448792630022*Iz	log(pi*I)z%1.14472988584940 + 1.57079632679490*Izlog(-1 + 0.00001)rr   z-1.0e-5 + 3.1*Izlog(100, 10, evaluate=False)z2.00000000000000z-2*I*log(-(-1)**(S(1)/9))z-5.58505360638185rd   rZ   rN   rL   test_evalf_logsr      ss    mR $LLLLk2"IIII!1%)::::,b15GGGG)2.2EEEErN   c            
      `   t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      d	k(  sJ t        d
d      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        t        t        t        t	        d      z        t        z        d      dk(  sJ t        t        t        ddz  z  t        dd      z   d      dd      dk(  sJ t        t        t        dd      d      d      dk(  sJ y )Nzsin(1)ra   z0.841470984807897zcos(1)z0.540302305868140ztan(1)z1.55740772465490zsin(10**-6)z9.99999999999833e-7zcos(10**-6)z0.999999999999500ztan(10**-6)z1.00000000000033e-6zsin(E*10**100)z0.409160531722613ztan(I)z0.761594155955765*Iztan(1000*I)z1.00000000000000*I   z-2.35596641936785e-12rb   rT      i Frh   x   rj   z6.99999999428333e-5)rM   r+   r    r   r'   r   rZ   rN   rL   test_evalf_trigr      sX   h2222h2222h1111mR $9999mR $7777mR $9999#'::::hr?2222mB"6666c#bcl#B&',0GGGGc"RW*x511EBBSQ  c(1e$u5r:  rN   c                      d } t         | d      t        d      z
  dd      dk(  sJ t        dd      d	k(  sJ t        dd
      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ y )Nc                 H    dt        d      z   | z  d| z  t        d      z  z  S )NrY   r   rr   )r'   )rE   s    rL   r[   z*test_evalf_near_integers.<locals>.<lambda>   s$    AQK!#adT!Wn5 rN   i  rb   i  rj   z5.156009964e-1046zsin(2017*2**(1/5))ra   z-1.00000000000000   z-0.99999999999999997857z1+sin(2017*2**(1/5))z2.14322287389390e-17z45 - 613*E/37 + 35/991z6.03764498766326e-11)rM   r   )fs    rL   test_evalf_near_integersr      s    5Aag	$'$7;NNNN "B'+>>>>"B'+DDDD$b)-CCCC&+/EEEErN   c                  Z   t        t        t        t        d      z        dz
  dz
  d      dk(  sJ dt        t         t        d      z        z  } dt        dt        z  t        d      z        z  }d	t        d
t        z  t        d      z        z  }t        d| z
  |z
  |z   d      dk(  sJ y )Nr   l     h	a%i  rb   z-7.499274028e-13l   h	a%i l   @LhDkB^ rY   z1.613679005e-59)rM   r    r   r'   )r   r   r   s      rL   test_evalf_ramanujanr      s    c"T#Y,)+c126:LLLL3s49}--As2b5c?##A RU49_!55Aa!eai!mR $5555rN   c            
      D   t        t        d      t        d      z   d      t        t        d      d      k(  sJ t        t        d      t        d      z   d      t        t        d      d      k(  sJ t        dd      dk(  sJ t        dd      d	k(  sJ t        d
d      dk(  sJ t        ddt        di      dk(  sJ t        t        d      t	        dddz        t
        z  z   d      dk(  sJ t        j                         t        k(  sJ t        dt
        z   dz  t
        z  d      dk(  sJ t        dt	        dd      z  t        dt	        dd      z  t        dt	        dd      z  i} t        t        dt        dt        z   z  z   z  j                  |       j                         d      dk(  sJ t        t
         t        d      t
        z  z
  dz  j                               dk(  sJ t        dt
        z   dz  t
        z  d      dk(  sJ t        t        j                  d      t        z
        dk(  sJ t        ddt        dz  z  z
  d t        d!z  z  z
  d"t        z  z
  t        d#i      d$k(  sJ t        t        dz
  dt        z
  d%z  z  j                               d&k(  sJ t        t         j                               d'k(  sJ t        d(t        z  j                               d)k(  sJ t        d(t        z  t        z  j                               d*k(  sJ t        t              j                  t        dt
        z   i      t        t              j                  t        dt
        z         j                         k(  sJ d+t        t        z  z  j                         t        j                   u sJ d+t        t        z  z  j                         t        j"                  u sJ d+t        t        z  z   j                         t        j$                  u sJ d+t        t        z  z
  j                         t        j&                  u sJ d,t        t        z  z  j                         t        j$                  u sJ d,t        t        z  z  j                         t        j"                  u sJ d,t        t        z  z   j                         t        j$                  u sJ d,t        t        z  z
  j                         t        j&                  u sJ t)        d-dd.d/i      d+k(  sJ t        t
        z  j                         t        j$                  t
        z  k(  sJ t        t        t
        z  z   j                         t        j$                  t        j$                  t
        z  z   k(  sJ t        dt        d0z  z  d,      d1k(  sJ t        t+        t-        d+t              t        d23      j                               d4k(  sJ t        t/        t        d5      d6z        j                  dd/7            d8k(  sJ y )9NrY   l d(	 rb   l    d(	 zexpand_log(log(1+1/10**50))r   z1.0000000000000000000e-50zlog(10**100,10)z100.0000000zlog(2)z0.6931471806z(sin(x)-x)/x**3ra   z1/10**50rv   z-0.166666666666667rT   z+0.841470984807897 + 1.00000000000000e-100*Irr   rc   z-2.00000r   rq   z0.346011 + 0.433884*Iz-5.82842712474619z-2.00000000000000E   z-4.43863937855894e-71l   Z_/8   i,0xrU      g{Gz?z19.8100000000000rg   z3(1.00000000000000 - x)**1000*(x - 1.00000000000000)z-xr   z-2.00000000000000*xz-2.00000000000000*x*yr   r           r   Tg      @z2.0000*x**2.5000Frh   zx*Max(0, y)l"                                                                       l5   ]olG{x|F.Z 8>5p4wgd~~bA>iv>cg ./
CV'J0Al%1/0][o8~`f	jT[)~XgiUr   z-oo)rM   r+   r    rF   r   r   r;   rE   rG   rw   r'   r   r*   r   r   r   NaNZeroInfinityNegativeInfinityr:   r
   r&   r!   )ds    rL   test_evalf_bugsr      sj   c!fs7|#R(Bs1vrN:::c&kCF"B'2c&k2+>>>>+R04OOOO$555h~---2Q
O58LM M Mc!fx	2s7 KL L L779>>q1uqjlA*,,,	

Xa^hq!n 4a"x1~9M	OAq!aQi- &&q)//1159PPPPT!WQY"))+,0CCCCq1uqjlB#6666bhhrlR $;;;; b=B&&1b582a4?s8 23 3 3AA}$'') HI I Irffh<4r!thhj>2222r!tAvjjl6666q688!QqS8"c!fkk!QqS&9&;&;&==== a"gI==?aee###a"gI==?aff$$$a"gI==?ajj(((a"gI==?a00000a"gI==?ajj(((a"gI==?aff$$$a"gI==?ajj(((a"gI==?a00000 S"vtn-222 THHJ!**Q,&'&1WKKMQZZ!**Q,6676 a3h?0000 c#a)Q/5578MIII c!  l  m  n]  ]  ^  d  d  eg  nr  d  s  t  x}  }  }  }rN   c                  *   t        t        d      t        d      z  t        d      z
  d      } t        t        d      t        d      z  d      }| j                         dk(  sJ |j                         dk(  sJ t	        dt        d      dz  t        d      dz  z   z        dk(  sJ t        t        t        d	      t        z  d      j                  d
            t        d      k(  sJ t        t	        t        d	      t        z  d      j                  d
            t        d      k(  sJ t        t        t        dz  t        d      z  t        j                  z         j                  d            t        d      k(  sJ t        t        t        dz  t        d      z  t        j                  z         j                  d            t        d      k(  sJ t	        t              j                  t        di      dk(  sJ t	        t              j                  t        dt         z  i      dt         z  k(  sJ t	        t              j                  t        ddt         z  z   i      ddt         z  z   k(  sJ t	        t              j                  t        di      dk(  sJ t	        t              j                  t        dt         z  i      dt         z  k(  sJ t	        t              j                  t        ddt         z  z   i      ddt         z  z   k(  sJ t#        t        dd      dz   j                               dk(  sJ t#        t        dd      dz   j                               dk(  sJ d}d}t        |t$        dz  z        |k(  sJ t        dt        d      z        dk(  sJ dt        dt$        z  dz         t$        z  z
  t'        t)        d            k(  sJ t        t              j                  t        t        d      i      dk(  sJ y )Nru   rr   iFrh         @rb   rY   2   F   l   '~$DA7YD3':^Xf l   '~$DA7YD3':^Xf i  r   rg   r   rv   rR         ?gqq?grq?      ?r   l
   oBWIh.2h@hl
   #%:Pe2eb~=xBi; iB i       ?)r%   r!   r    r;   r$   r+   r*   intr   r   r   r'   r   Halfr   rF   r   floatr   r)   r,   )ry   brE   rs       rL   test_evalf_integer_partsr     s   c!fSVmc%j(59Ac!fSVme,A7797792s1vqy3q619,-."444uYr]1_u5;;B?@MNO O Owy}Q7==bABMNO O Ou[#%Q/!&&89d )#/ / /u[$&a01669:d )$0 0 0 1:!Q(C///1:!QqS*c!e3331:!Q1W.#A+===1:!R)S0001:!RT+s1u4441:!R!A#X/3Q;>>>%e,S0779:gEEE%e,R/6689R??? 	7A5Ab1f!###a!V+++ E&)c/*R//4F3DDDD8>>47|>,333rN   c                      t        dt        z  d      j                  d      } t        |       dk  sJ | j                  dk  sJ j                  d	      d
k(  sJ t        t        fd       y )N   Frh   rT   rj   g0.++rr   Tr   r   c                  (     j                  d      S )NT)strict)r;   rx   s   rL   r[   z0test_evalf_trig_zero_detection.<locals>.<lambda>B  s    qwwdw'; rN   )r+   r   r;   abs_precrC   r7   )try   s    @rL   test_evalf_trig_zero_detectionr   <  sh    CFU#A	SAq6F??77Q;;777"""
;<rN   c                  <   t        t        t        ddf      j                         dk(  sJ t        t        t        ddf      j                         j                         dk(  sJ t        dt        z  t        ddf      j                         dk(  sJ t        t        t        t              z  t        dt        f      j                         t        t        z  j                         k(  sJ t        dt        z  t        z  t        t              z  t        dt        f      j                         dt        z  t        z  j                         k(  sJ t        dt        dz  z  t        dt        f      } | j                         | j                         j                         k(  sJ y )NrY   rr   r   r   r   rT   )r   rE   r;   doitr   r   r   rF   )ss    rL   test_evalf_sumr   E  s.   q!Aa>!R'''q!Aa> &&(B...qsAa7!!#s*** q1~1bz*002qskkmCCCq!tAvil"Q2J/557AaCE==?JJJAadFQRL!A335AFFHJJL   rN   c                  6   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	        y )
Nc                  Z    t        dt        z  t        dt        f      j                         S rX   r   rE   r   r;   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>U  s     s1Q3Ar
399; rN   c                  n    t        t        t        dz  dz   z  t        dt        f      j                         S Nrr   rY   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>V  s(    s1adQh<!Q<BBD rN   c                  Z    t        dt        z  t        dt        f      j                         S Nr   rY   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>W       sB7Q2J7==? rN   c                  Z    t        dt        z  t        dt        f      j                         S r   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>X  r   rN   c                  Z    t        t        dz  t        dt        f      j                         S r   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>Y  s     s1a4!Q4::< rN   c                  Z    t        dt        z  t        dt        f      j                         S r   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>Z  s     s1a4!Q4::< rN   c                  Z    t        dt        z  t        dt        f      j                         S )Nr   rY   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>[  r   rN   c                      t        dt        z  dz   dt        dz  z  dz   z  t        dt        f      j                         S )Nrr   r   rq   r   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>\  s5    sAaC!Ga1fqj#9Aq":FLLN rN   c                  z    t        dt        dz  z  t        dz  dz   z  t        dt        f      j                         S )Nr   r   rq   rY   r   r   rZ   rN   rL   r[   z-test_evalf_divergent_series.<locals>.<lambda>]  s1    sC1Hq!tax#81a*EKKM rN   rC   r^   rZ   rN   rL   test_evalf_divergent_seriesr   T  se    
:;<
:DE
:?@
:?@
:<=
:<=
:?@
:NO
:MNrN   c                  L   t        t        t        ddf      j                         dk(  sJ t        t        dt        j
                  dz  t        dz  z  z
  t        dt        f      j                  d      d      sJ t        t        t        ddf      j                         d	k(  sJ y )
NrY   rb   g    KArr   r   g:X0_?r   r   r   )r   rE   r;   r5   r   r   r   rZ   rN   rL   test_evalf_productr   `  s    1q!Rj!'')X555AFFAIadN*Q2J799!<gFFF1q"aj!'')Q...rN   c                     t        t        t        dz         dz
        dk  sJ t        t        t        dz         dz
        dk  sJ t        t        t        t        t
        z  z         dz
        dk  sJ t        t        d        y )NrY   g"@g|=y-DT!	@iW
@c                  .    t        t        t        z         S N)r   r   rF   rZ   rN   rL   r[   z'test_evalf_py_methods.<locals>.<lambda>k  s    eBFm rN   )r   r   r   complexr   r   rC   	TypeErrorrZ   rN   rL   test_evalf_py_methodsr   f  s    uR!V}112U:::wrAv!334u<<<QqSEFHJOP P P
9+,rN   c                     t         dz  j                  t         di      dk(  sJ t        t               j                  t         di      dk(  sJ t         t        dd      z  j                  t         di      dk(  sJ t         t         z  j                  t         di      dk(  sJ dt         z  j                  t         di      dk(  sJ t	        t               j                  t         di      dk(  sJ dt
        z   t         z  j                  t         di      dk(  sJ dt         z  j                  t         di      dk(  sJ y )Nrr   r   rv   r   r   )rF   r;   r'   r   r    r   rZ   rN   rL   test_evalf_power_subs_bugsr   n  s   qD<<aV<$)))7==q!f=%***x1~$$1a&$1Q666qD<<aV<$+++qD<<aV<$+++q6<<aV<$+++UQJAq6*c111qD<<aV<$+++rN   c                  &    t        t        d        y )Nc                  .    t        j                  d      S )Ngarbage)method)r   r;   rZ   rN   rL   r[   z&test_evalf_arguments.<locals>.<lambda>z  s    bhhi8 rN   )rC   r   rZ   rN   rL   test_evalf_argumentsr   y  s    
989rN   c                     ddl m}  t        d      } | |d       }t         |t                    dk(  sJ t         |d            dk(  sJ  |d      j                         dk(  sJ  |t              j                          |t              k(  sJ  | t        d	      d
       } |d      j                         t        d      k7  sJ |`y )Nr   )implemented_functionr   c                     | dz   S rX   rZ   rF   s    rL   r[   z1test_implemented_function_evalf.<locals>.<lambda>  s
    !a% rN   zf(x)rr   zf(2)r   r+   c                     | dz   S rX   rZ   r   s    rL   r[   z1test_implemented_function_evalf.<locals>.<lambda>  s
    A rN   )sympy.utilities.lambdifyr   r   strrF   r;   r+   _imp_)r   r   s     rL   test_implemented_function_evalfr   }  s    =AQ0Aqt9qt9Q4::<3Q4::<1Q4Xe_o>AQ4::<3q6!!!	rN   c                     dD ]P  } t        dd|       j                  sJ t        dd|       j                  sJ t	        dd|       j
                  rPJ  t	        t        dd      t	        t        dd      z
  dk(  sJ y )N)r   Fr   rr   rh   Tr   )r   is_Addr
   is_Mulr   is_PowrG   )nos    rL   test_evaluate_falser     s     -1a"%,,,,1a"%,,,,1a"%,,,,- q!d#c!Q&>>!CCCrN   c                     t        t        dz  t        dz        j                         t        dt        z  dt        z        k(  sJ t	        t         dt
        z
  dz  dz  t
        z   d      sJ t        dt
        z
  dz  dz  t
        z   d      j                         t        j                  u sJ t        t        dt
        z
  dz  t
        z   d            t        j                  k(  sJ y )Nr   rb   g?皙?r   rr   r   )
r   rF   rG   r;   rB   r   rE   r   falser	   rZ   rN   rL   test_evalf_relationalr     s    ac1R4= Bs1uc!e$4444 R!a%!A)1---q1uqjlQ"$$&!''111"a!eaZ!^Q'(AGG333rN   c                  n    t        t        dt        z               j                         j                  rJ y )Nr   )r*   r'   r   rE   is_FunctionrZ   rN   rL   test_issue_5486r     s*    4a=!##%11111rN   c                      ddl m}  ddlm} t	        | j                   |j                  d      d      |z
        dk  sJ y )Nr   )Expr)r   ra   V瞯<)sympy.core.exprr   sympy.core.numbersr   r   _from_mpmath
_to_mpmath)r   r   s     rL   test_issue_5486_bugr    s8    $$t  b!126:;gEEErN   c                      ddl m} m} t         |dt        z   dz              dk  sJ t         | d            j                         dk(  sJ y )Nr   
polar_liftr   rY   rr   r   )$sympy.functions.elementary.complexesr  r   r   r   rE   r  s     rL   	test_bugsr    sF    Er1q51*~&&& z!}!Q&&&rN   c                      t        dt        dt        di      dk(  sJ t        dt        di      dk(  sJ t        t        d	        y )
Nzbesseli(-x, y) - besseli(x, y)g      @g      4@rv   z-4.92535585957223e-10z+Piecewise((x, x>0)) + Piecewise((1-x, x>0))r   rn   c                  :    t        j                  t         df      S )NrY   rv   )rF   r;   rZ   rN   rL   r[   ztest_subs.<locals>.<lambda>  s    aggAq62 rN   )rM   rF   rG   rC   r   rZ   rN   rL   	test_subsr
    sT    .aa5FG     ;1c(K  
923rN   c                      t        d      } t        | d      dk(  sJ t        d      } t        | d      dk(  sJ t        | d      dk(  sJ y )Nz(-27*12**(1/3)*sqrt(31)*I +
    27*2**(2/3)*3**(1/3)*sqrt(31)*I)/(-2511*2**(2/3)*3**(1/3) +
    (29*18**(1/3) + 9*2**(1/3)*3**(2/3)*sqrt(31)*I +
    87*2**(1/3)*3**(1/6)*I)**2)rY   z0.e-118 - 0.e-118*Ia  -(357587765856 + 18873261792*249**(1/2) + 56619785376*I*83**(1/2) +
    108755765856*I*3**(1/2) + 41281887168*6**(1/3)*(1422 +
    54*249**(1/2))**(1/3) - 1239810624*6**(1/3)*249**(1/2)*(1422 +
    54*249**(1/2))**(1/3) - 3110400000*I*6**(1/3)*83**(1/2)*(1422 +
    54*249**(1/2))**(1/3) + 13478400000*I*3**(1/2)*6**(1/3)*(1422 +
    54*249**(1/2))**(1/3) + 1274950152*6**(2/3)*(1422 +
    54*249**(1/2))**(2/3) + 32347944*6**(2/3)*249**(1/2)*(1422 +
    54*249**(1/2))**(2/3) - 1758790152*I*3**(1/2)*6**(2/3)*(1422 +
    54*249**(1/2))**(2/3) - 304403832*I*6**(2/3)*83**(1/2)*(1422 +
    4*249**(1/2))**(2/3))/(175732658352 + (1106028 + 25596*249**(1/2) +
    76788*I*83**(1/2))**2)r   z0.077284 + 1.1104*Iz0.08 + 1.*I)r   rM   )vs    rL   test_issue_4956_5204r    sd    	 # 	$A a8,,,, 	
 
 
	A a8,,,,a8}$$$rN   c                      t         t        t        z  z   t         t        t        z  z
  z  } t        |       dk(  sJ | j	                         dk(  sJ y )Nz17.2586605000200g[Z7B1@)r   r   r   rM   rE   rx   s    rL   test_old_docstringr    sD    	
RTA1HAa5&&&&335%%%%rN   c                      t        t        t              dz  t        ddf      j                         j	                  d      t        dd      k(  sJ t        dd      j                         dk(  sJ y )Nrr   r   rY   r   r   Frh   )r.   r)   rF   r;   roundr   rE   rZ   rN   rL   test_issue_4806r    s]    T!WaZ!R,224::1=sANNNE"$$&!+++rN   c                  v    t        t        dt        t              t        z  z   t        ddf      d      dk(  sJ y )NrY   i  z5.e+567 + 2.e+568*I)rM   r   r'   rE   r   rZ   rN   rL   test_evalf_mulr    s3     ga$q'!)maC[1159NNNNrN   c                  :   dgdddfd}} t        d      | |fk(  sJ t        |       dk(  sJ dgdddfd}} t        dd      | |fk(  sJ t        |       dk(  sJ t        t        d        t        t        d        t        t        d	        t        t        d
        y )Nr   rY   rT   r   )r   rY   rT   rY   )rY   rY   rT   rY   c                  *    t        t        d            S )NrT   r8   rZ   rN   rL   r[   z"test_scaled_zero.<locals>.<lambda>  s    {;s+;< rN   c                      t        dd      S )NrT   rr   r  rZ   rN   rL   r[   z"test_scaled_zero.<locals>.<lambda>      {32 rN   c                      t        dd      S )NrT   r   r  rZ   rN   rL   r[   z"test_scaled_zero.<locals>.<lambda>  r  rN   c                      t        d      S )N)rY   r   rY   r   r  rZ   rN   rL   r[   z"test_scaled_zero.<locals>.<lambda>  s    {<8 rN   )r8   rC   r^   )ry   r   s     rL   test_scaled_zeror    s    S!S!bqAs1v%%%q>^+++S!S!bqAsBAq6)))q>^+++
:<=
:23
:23
:89rN   c                      t        dd      D ]E  } t        d|       dz  j                  d| z        r t        d|       j                  d| z        sEJ  y )Ni   rb   rr   r   )ranger   rE   )is    rL   test_chop_valuer!    sU    3^ OB
1RU+SQZNNAN4NNNOrN   c                      t        j                  d      t        k(  sJ t          j                  d      t        k(  sJ y )NTr   )r   r;   r=   r>   rZ   rN   rL   test_infinitiesr#    s4    88#%%%C;;D;!T)))rN   c                      t        d      j                  d      j                  dt        d      ddfk(  sJ t	        d      j                  d      j                  dt        d      ddfk(  sJ y )	Nr   r   r   i= ig	@i i)r'   r  _mpf_r   r   rZ   rN   rL   test_to_mpmathr&    sb    7b!''As6{C+DDDDS6R &&1c&k3*CCCCrN   c                      dt        d      z  dz   } | j                         dk(  sJ | | z  j                         dk(  sJ y )Ni`yl   y* l   rT g!|=gi;)r'   rE   )adds    rL   test_issue_6632_evalfr)    sB    4
##j0C557o%%%G;;=O+++rN   c                  P    ddl m}  | dz  j                  | di      t        k(  sJ y )Nr   HrY   rv   )	sympy.abcr,  r;   r   r+  s    rL   test_issue_4945r.    s&    aC;;QqE;"c)))rN   c                      t        dd      } t        t        t              t        t         t        | z   f      j                  d      j                  dk(  sJ y )NrY   i@B rr   rb   )r   r-   r+   rF   r   rE   r   )epss    rL   test_evalf_integralr1    sE    
1g
CCFQR#X./11!4::b@@@rN   c                      t        t        j                  d            } t        |       }t	        t        |            dk  sJ t        | d      }t	        t        |            dk  sJ y )N   r   @   g=D2)r   r   r;   r   r   r+   )r   ps     rL   !test_issue_8821_highprec_from_strr6    sT    BHHSMA	!As1v;	!RAs1v;rN   c                  t   t        ddd      } t        |  t        j                  z
        j                  dk(  sJ t        |  t        j                  z         j                  dk(  sJ t        | t        j                  z
        j                  dk(  sJ t        | t        j                  z         j                  dk(  sJ t        t        j                  di d      dk(  sJ t        t        j                  di d      dk(  sJ t        t        dd	      di d      d
k(  sJ t        t        dd	      di d      dk(  sJ y )NrF   T)evenpositiveFr   r   r   rY   )rY   r   rr   )r   r   )r   r%   r   r   is_evenr$   r9   r   )r5  s    rL   test_issue_8853r<    s   s-A!aff%%...!aff%%---1qvv:&&$...1qvv:&&%///AFFBD1V;;;AFFAr40F:::HRORT:gEEEHROQD9VCCCrN   c                       G d dt               } t         | t        d                  dk(  sJ t        t        d      di d      dk(  sJ y )Nc                       e Zd Zd Zy)'test_issue_17681.<locals>.identity_funcc                 @     | j                   d   j                  |i |S Nr   )argsr;   )selfrB  kwargss      rL   _eval_evalfz3test_issue_17681.<locals>.identity_func._eval_evalf$  s"    %499Q<%%t6v66rN   N)__name__
__module____qualname__rE  rZ   rN   rL   identity_funcr?  "  s    	7rN   rI  r   rY   Tr:  )r   r%   r   r9   )rI  s    rL   test_issue_17681rJ  !  sI    7 7
 qt$%***AaD!R.&888rN   c                  p    ddl m}   | d      } | d      }||z   }|j                  |d|di      dk(  sJ y )Nr   )Dummyr   rY   rr   rv   r   )sympy.core.symbolrL  r;   )rL  d1d2rJ   s       rL   test_issue_9326rP  +  sA    '	sB	sB
RA772q"a.7)S000rN   c                  6    t        t        d            dk(  sJ y )Ni  @i  )r$   r'   rZ   rN   rL   test_issue_10323rR  3  s    4	?#y000rN   c                  &    t        t        d        y )Nc                      t        d      S )Na  
    Min(-sqrt(3)*cos(pi/18)/6 + re(1/((-1/2 - sqrt(3)*I/2)*(1/6 +
    sqrt(3)*I/18)**(1/3)))/3 + sin(pi/18)/2 + 2 + I*(-cos(pi/18)/2 -
    sqrt(3)*sin(pi/18)/6 + im(1/((-1/2 - sqrt(3)*I/2)*(1/6 +
    sqrt(3)*I/18)**(1/3)))/3), re(1/((-1/2 + sqrt(3)*I/2)*(1/6 +
    sqrt(3)*I/18)**(1/3)))/3 - sqrt(3)*cos(pi/18)/6 - sin(pi/18)/2 + 2 +
    I*(im(1/((-1/2 + sqrt(3)*I/2)*(1/6 + sqrt(3)*I/18)**(1/3)))/3 -
    sqrt(3)*sin(pi/18)/6 + cos(pi/18)/2))r   rZ   rN   rL   r[   z'test_AssocOp_Function.<locals>.<lambda>9  s    q "-  . rN   r   rZ   rN   rL   test_AssocOp_FunctionrU  7  s    
: . /rN   c                     t         t        dt              z  } t        |       | k(  sJ t         t        t        d      z  } t        |       | k(  sJ t        t        d      j	                         t        dt              k(  sJ y )Nr   grq   g      @)rF   r&   rG   r	   rE   )eqs    rL   test_issue_10395rX  I  sd    	
3q!9B":	
3q$<B":q!9;;=CQK'''rN   c                  (   t        t        t        d      d            dk(  sJ t        t        t        d      d            dk(  sJ t        t        dt        d      z
  d            dk(  sJ t        t        dt        d      z
  d            dk(  sJ y )Nz9.99999999999999999999rb   r   rY   r   rr   )r%   r!   r   r$   rZ   rN   rL   test_issue_13098rZ  Q  s    Q{^R()Q...3q~r*+q000R!K.("-.!3333rAkN*B/0A555rN   c                  V   dt         z  t        z  dz  t        dt         dz  z  dz  dt         z  dz  z
  z  z
  } t         dt        di}| j                  |      }t        |      dk(  sJ t        t         t         t         dz  t         z   z  z   j                  t         di            dk(  sJ y )Nr   rr   rS   r   ra   r   rv   )rF   rG   r;   r   )rJ   subste2s      rL   test_issue_14601r^  X  s    	!Aa!RAYq[2a46)**AsAcNE	
e	B9!aAl"))3x)89S@@@rN   c                  ~   t         j                  } t        | t        ddf      }|| k7  sJ t	        |di       t	        | di       cxk(  rdk(  sJ  J |dz  j                         dk(  sJ t        t        dz  t        z   t        ddf      }t        dt        ddf      }||z  }t        t        |      |z
        dk(  sJ y )NrY   rr   ra   )NNra   Nr   )r   r   r   rF   r;   rE   r4   r/   )zrJ   expr0expr1expr2s        rL   test_issue_11151rd  `  s    	AA1ayA6M6BaR323 3 3 3 3 aC779>>1q1a)$EAq!9E%KEF5ME)*a///rN   c                      t        dd      t        dd      k(  sJ t        dd      dk(  sJ t        t        dd      dz  t        z
  j                               d	k  sJ y )
Nz2**.5   zsqrt(2)zx - xr   zpi*.1   rb   g^ 9^;)r   r   r   rE   rZ   rN   rL   test_issue_13425rh  p  s]    Wb>Qy"----Wb>Q'2r!B&))+,u444rN   c                      t        t        t         t        t	        t	        d      t        z               z               dt        z  k(  sJ y )NrY   r   )r   r(   r   r"   r#   rZ   rN   rL   test_issue_17421rj  v  s7    T1"uT$q'A+.//01SU:::rN   c                     ddl m} m} ddlm}m}m} t        d      }t        d      } |||      }|j                  |d|di       |d	d
      k(  sJ  |||z
  d      }|j                  |d|di       |dd	      k(  sJ  | | || dz  t        |dz  dt        z  z
        dz  z
        |       |d            }	|	j                  |di      | k(  sJ y )Nr   )EmptySetReals)
Complement	FiniteSetIntersectionry   r   rY   rr   rv   r   rR   g      rq   )
sympy.setsrl  rm  sympy.sets.setsrn  ro  rp  r   r;   r'   r   )
rl  rm  rn  ro  rp  ry   r   r   r   sols
             rL   test_issue_20291rt  z  s    *EEsAsA!QA77Aq!7%3)<<<<!A#qA77Aq!7%4)====
\)QBqD41QrT	?13D,D"EuMyYZ|
\C991a&9!X---rN   c                  .   dt         z  j                  t         di      t        k(  sJ dt         z  j                  t         di      t        k(  sJ dt         z  j                  t         di      t        k(  sJ dt         z  j                  t         dt        z   i      t        k(  sJ t        dt        ddd      d      j                         t        k(  sJ t        t         dt         z  d      j                  t         di      t        t         dt         z  d      j                  t         d      cxk(  r
t        k(  sJ  J t        dt         z  dt         z  d      j                  t         di      t        k(  sJ t        dt         z  t        dt         z        d      j                  t         di      t        k(  sJ t        t        d      j                         t        k(  sJ t        t        d      j                         t        k(  sJ t        t        d      j                         t        k(  sJ t        t        t        d      j                         t        k(  sJ t        t        t        d      j                         t        k(  sJ t        t        dd      j                         dk(  sJ t        t        t        dd      d      j                         dk(  sJ t        t        t        dd      d      j                         t        k(  sJ t        t        t        j                  d      j                         t        k(  sJ t        t        dd      j                         t        k(  sJ t        dt        d      j                         t        k(  sJ t!        t        d      j                         t        k(  sJ t        j                  d	
      t        k(  sJ t        j                  t         t        i      t        k(  sJ y )NrY   r   rv   r   rr   Frh   r   Tr   )rF   r;   r   r   r   r
   r   rw   r   r   r   r   r   r   r   r   r!   rZ   rN   rL   test_evalf_with_zoorv    s)   aC;;QF;#s***qD<<aV<$+++F>>2w>'3...F>>26{>+s222q#ae,u=CCELLLq!A#&,,1a&,9SAaCRW=X=]=]^_ab=cjgjjjjjjqsAaC%(..QF.;sBBBqsC!Hu-33!Q3@CGGGsU#))+r111cE"((*c111cE"((*c111sC%(..0C777r3'--/3666sB'--/1444sHROe4::<AAAsHQNU399;sBBBsAFFU+113s:::sA&,,.#555q#&,,.#555sU#))+s22299$3&&&77C!S(((rN   c                     t        d      d dft        d dft        t        z  d dfddt        z  z
  d dft        d      t        dd      d ft        t        dd      d ft        t        z  t        dd      d fddt        z  z
  t        dd      d fddt        z  z
  t        d      d ft        dd	      t        dd
      d fg
} | D ]  \  }}}t        |di       \  }}}}t	        |||      \  }}}}|d| z  }t        |xs t        |xs t        f      }	t        |xs t        |xs t        f      }
t        |
|	z
        |k  rJ  t        t        d        t        t        d        t        t        d        y )Nr   rY   rb   rr   r   r   rg   i  i l    J)5   c                  4    t        t        t        d            S rA  )r<   r   r   rZ   rN   rL   r[   z/test_evalf_with_bounded_error.<locals>.<lambda>  s    8Xa[I rN   c                  ,    t        t        t               S r   )r<   r   rZ   rN   rL   r[   z/test_evalf_with_bounded_error.<locals>.<lambda>  s    8bSA rN   c                  *    t        t        t              S r   )r<   r   r   rZ   rN   rL   r[   z/test_evalf_with_bounded_error.<locals>.<lambda>  s    8Q? rN   )
r   r   r   r;   r<   r?   rA   r   rC   r^   )casesx0r0  mry   r   _cr   r`  ws              rL   test_evalf_with_bounded_errorr    s}    
!dA	T2	AtR	
1Q3a	!hq!nd+	Xa%	a!T"D)	
QUHQ%t,	
QUHTND)	$	F 3T:#E&   
C2r2&
1a.r3:
1a;qb'Caj5!*u-.aj5!*u-.1q5zC  :IJ
:AB
:?@rN   c                  v    ddt        d      z  z   } t        |       }t        | di       t        |di       k(  sJ y )Nir   rY   )r'   r   r;   )ry   rF   s     rL   test_issue_22849r    s<    
Qa[AAAr?eAq"o---rN   c                      t        d      } t        t        t        d      d      g d|       }|j	                         }t        |t              sJ t        |d      rJ t        |d      sJ y )Nzetar   r   )r   r   r   r   )alias_mpc_r%  )r   r   r0   r1   r;   
isinstancer   hasattr)r  a5r`  s      rL   test_evalf_real_alg_numr    sc     &>D	!3R8.PT	UB

Aaq'"""1grN   c                     dt         dz
  t         dz
  z  t         dz
  z  t         dz
  dz  z  t         dz
  dz  z  t         dz
  z  z  } t        | j                  dt         di            d	k(  sJ t        | j                  dt         di            d
k(  sJ t        | j                  dt         di            dk(  sJ t        | j                  dt         di            dk(  sJ t        d t	        dd      D         } t        | j                  dt         di            dk(  sJ t        | j                  dt         di            dk(  sJ t        | j                  dt         di            dk(  sJ y )NrY   	   ru   r   rq   rr   r   rv   z-4.e-5z-4.1e-5rs   z-4.1335978836e-5r   z-0.000041335978835978835979c              3   .   K   | ]  }t         |z
    y wr   r   ).0r   s     rL   	<genexpr>z#test_issue_20733.<locals>.<genexpr>  s     1Q!a%1s   rg   z#Float('4.0271e+2561', precision=10)rb   z*Float('4.02790050126e+2561', precision=37)rx  zWFloat('4.0279005012722099453824067459760158730668154575647110393e+2561', precision=179))rF   r   r;   r
   r  r2   )exprs    rL   test_issue_20733r    sg   q1uq1uoq1u%q1uqj0!a%!;QUCDDtzz!1Q%z()X555tzz!1Q%z()Y666tzz"Aa5z)*.@@@@tzz"Aa5z)*.KKKK1%4.12DAQF+,0UUUUBaV,-1]]]]BaV,-  2K  K  K  KrN   )ra   )r]   sympy.concrete.productsr   r   sympy.concrete.summationsr   sympy.core.addr   sympy.core.evalfr   sympy.core.functionr   r	   sympy.core.mulr
   
sympy.corer   r   r   r   r   r   r   r   r   r   r   sympy.core.powerr   sympy.core.relationalr   sympy.core.singletonr   rM  r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr   %sympy.functions.combinatorial.numbersr   r  r   r   r   &sympy.functions.elementary.exponentialr    r!   %sympy.functions.elementary.hyperbolicr"   r#   #sympy.functions.elementary.integersr$   r%   (sympy.functions.elementary.miscellaneousr&   r'   (sympy.functions.elementary.trigonometricr(   r)   r*   r+   r,   sympy.integrals.integralsr-   r.   sympy.polys.polytoolsr/   sympy.polys.rootoftoolsr0   sympy.polys.specialpolysr1   sympy.printingr2   sympy.printing.strr3   sympy.simplify.simplifyr4   r5   r6   r7   r8   r9   r:   r;   r<   mpmathr=   r>   r?   mpmath.libmp.libmpfr@   rA   r   rB   sympy.testing.pytestrC   rD   r-  rE   rF   rG   rM   r_   re   rl   ro   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r!  r#  r&  r)  r.  r1  r6  r<  rJ  rP  rR  rU  rX  rZ  r^  rd  rh  rj  rt  rv  r  r  r  r  rZ   rN   rL   <module>r     s    6 )   2  $2 2 2   $ " $ & > ; > > = ? @ @ P P ; ( + 4   # , #j j j & & 1 % .  @=F5
?H
I I I
L" A AL O&F(	F6?}D%4P=!	O/-,:
D42F'4%0&,
O
:O
*
D
,*
A
D911	/$(6A0 5;.)2 AF.
KrN   