
    oVh\2                       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mZ d dlmZmZmZmZmZmZmZ d dlmZmZ d d	lmZmZmZ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*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@mAZA d dlBmCZCmDZD d dlEmFZF d dlGmHZHmIZImJZJ d dlKmLZLmMZM d dlNmOZO d dlPmQZQ d dlRmSZSmTZT d dlUmVZV d dlWmXZX d dlYmZZZm[Z[m\Z\ d dl]m^Z^ d dl_m`Z` d dlambZb d d lcmdZd d d!lemfZf d d"lgmhZh d d#limjZjmkZk d d$llmmZm d d%lnmoZompZp d d&lqmrZr d d'lsmtZt d d(lumvZv d d)lwmxZxmyZy d d*lzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZ  e4d+e,      \  ZZZ G d- d.      Z G d/ d0e      Z G d1 d2e      Z e       Z e       Z e!d3       ed4      ee eee      ez  gZed5d6eegz   Zd7 Zd8 Zd9 Z G d: d;      Z G d< d=ee      Z G d> d?      Z G d@ dAe      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_ Zeyd`        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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zeyd        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Zy)    )refine)Sum)Add)Basic)Tuple)ExprBuilder	unchangedExprUnevaluatedExpr)FunctionexpandWildFunctionAppliedUndef
DerivativediffSubs)Mul_unevaluated_Mul)NumberSymbolEzooooFloatIRationalnanIntegerNumberpi_illegal)Pow)GeLtGtLe)S)default_sort_key)SymbolsymbolsDummyWild)sympify)	factorial)	exp_polarexplog)sinhtanh)sqrtMax)	Piecewise)tansincos)	Heaviside
DiracDelta)Si)gamma)	integrateIntegral)	FockState)apart)factorcancelPoly)together)O)	FiniteSet)combsimp)	gammasimp)powsimp)collectradsimp)ratsimp)simplify	nsimplify)trigsimp)Indexed)meter)raisesXFAIL)	abcntuxyzzf,g,hclsc                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)DummyNumbera  
    Minimal implementation of a number that works with SymPy.

    If one has a Number class (e.g. Sage Integer, or some other custom class)
    that one wants to work well with SymPy, one has to implement at least the
    methods of this class DummyNumber, resp. its subclasses I5 and F1_1.

    Basically, one just needs to implement either __int__() or __float__() and
    then one needs to make sure that the class works with Python integers and
    with itself.
    c                 X    t        |t        t        f      r|| j                  z   S t        S N
isinstanceintfloatnumberNotImplementedselfrT   s     J/home/dcms/DCMS/lib/python3.12/site-packages/sympy/core/tests/test_expr.py__radd__zDummyNumber.__radd__C   $    a#u&t{{?"    c                 b    t        |t        t        t        f      r| j                  |z   S t
        S rb   rd   re   rf   r`   rg   rh   ri   s     rk   __add__zDummyNumber.__add__H   '    a#uk23;;?"rn   c                 X    t        |t        t        f      r|| j                  z
  S t        S rb   rc   ri   s     rk   __rsub__zDummyNumber.__rsub__M   rm   rn   c                 b    t        |t        t        t        f      r| j                  |z
  S t
        S rb   rp   ri   s     rk   __sub__zDummyNumber.__sub__R   rr   rn   c                 X    t        |t        t        f      r|| j                  z  S t        S rb   rc   ri   s     rk   __rmul__zDummyNumber.__rmul__W   rm   rn   c                 b    t        |t        t        t        f      r| j                  |z  S t
        S rb   rp   ri   s     rk   __mul__zDummyNumber.__mul__\   rr   rn   c                 X    t        |t        t        f      r|| j                  z  S t        S rb   rc   ri   s     rk   __rtruediv__zDummyNumber.__rtruediv__a   rm   rn   c                 b    t        |t        t        t        f      r| j                  |z  S t
        S rb   rp   ri   s     rk   __truediv__zDummyNumber.__truediv__f   rr   rn   c                 X    t        |t        t        f      r|| j                  z  S t        S rb   rc   ri   s     rk   __rpow__zDummyNumber.__rpow__k   s%    a#u&##rn   c                 b    t        |t        t        t        f      r| j                  |z  S t
        S rb   rp   ri   s     rk   __pow__zDummyNumber.__pow__p   s(    a#uk23;;!##rn   c                     | j                   S rb   rg   rj   s    rk   __pos__zDummyNumber.__pos__u       {{rn   c                     | j                    S rb   r   r   s    rk   __neg__zDummyNumber.__neg__x   s    }rn   N)__name__
__module____qualname____doc__rl   rq   rt   rv   rx   rz   r|   r~   r   r   r   r    rn   rk   r`   r`   6   sC    










rn   r`   c                       e Zd ZdZd Zy)I5   c                     | j                   S rb   r   r   s    rk   __int__z
I5.__int__   r   rn   N)r   r   r   rg   r   r   rn   rk   r   r   |   s    Frn   r   c                       e Zd ZdZd Zy)F1_1皙?c                     | j                   S rb   r   r   s    rk   	__float__zF1_1.__float__   r   rn   N)r   r   r   rg   r   r   rn   rk   r   r      s    Frn   r      z1.3r   g      @c                 B    t         D ]  }t         D ]  } | ||         y)NT)all_objs)sxoyos      rk   dotestr      s.      	Bb"I	 rn   c                  $    d } t        |       sJ y )Nc                 H    | }| }|  }| |z   }| |z
  }| |z  }| |z  }| |z  }~y rb   r   rT   rU   rZ   s      rk   jztest_basic.<locals>.j   sE    BBEEaCaCqDrn   r   )r   s    rk   
test_basicr      s    	 !99rn   c                  $    d } t        |       sJ y )Nc                 <    | }||z  }| }||z  }| }||z  }| }||z  }y rb   r   r   s      rk   r   ztest_ibasic.<locals>.s   s:    	Q	Q	Q	Qrn   r   r   s    rk   test_ibasicr      s     !99rn   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)NonBasicaV  This class represents an object that knows how to implement binary
    operations like +, -, etc with Expr but is not a subclass of Basic itself.
    The NonExpr subclass below does subclass Basic but not Expr.

    For both NonBasic and NonExpr it should be possible for them to override
    Expr.__add__ etc because Expr.__add__ should be returning NotImplemented
    for non Expr classes. Otherwise Expr.__add__ would create meaningless
    objects like Add(Integer(1), FiniteSet(2)) and it wouldn't be possible for
    other classes to override these operations when interacting with Expr.
    c                     t        d| |      S N+	SpecialOprj   others     rk   rq   zNonBasic.__add__       dE**rn   c                     t        d||       S r   r   r   s     rk   rl   zNonBasic.__radd__       eT**rn   c                     t        d| |      S N-r   r   s     rk   rv   zNonBasic.__sub__   r   rn   c                     t        d||       S r   r   r   s     rk   rt   zNonBasic.__rsub__   r   rn   c                     t        d| |      S N*r   r   s     rk   rz   zNonBasic.__mul__   r   rn   c                     t        d||       S r   r   r   s     rk   rx   zNonBasic.__rmul__   r   rn   c                     t        d| |      S N/r   r   s     rk   r~   zNonBasic.__truediv__   r   rn   c                     t        d||       S r   r   r   s     rk   r|   zNonBasic.__rtruediv__   r   rn   c                     t        d| |      S N//r   r   s     rk   __floordiv__zNonBasic.__floordiv__       tU++rn   c                     t        d||       S r   r   r   s     rk   __rfloordiv__zNonBasic.__rfloordiv__       ud++rn   c                     t        d| |      S N%r   r   s     rk   __mod__zNonBasic.__mod__   r   rn   c                     t        d||       S r   r   r   s     rk   __rmod__zNonBasic.__rmod__   r   rn   c                     t        d| |      S Ndivmodr   r   s     rk   
__divmod__zNonBasic.__divmod__   s    4//rn   c                     t        d||       S r   r   r   s     rk   __rdivmod__zNonBasic.__rdivmod__   s    5$//rn   c                     t        d| |      S N**r   r   s     rk   r   zNonBasic.__pow__   r   rn   c                     t        d||       S r   r   r   s     rk   r   zNonBasic.__rpow__   r   rn   c                     t        d| |      S )N<r   r   s     rk   __lt__zNonBasic.__lt__   r   rn   c                     t        d| |      S )N>r   r   s     rk   __gt__zNonBasic.__gt__   r   rn   c                     t        d| |      S )N<=r   r   s     rk   __le__zNonBasic.__le__  r   rn   c                     t        d| |      S )N>=r   r   s     rk   __ge__zNonBasic.__ge__  r   rn   N)r   r   r   r   rq   rl   rv   rt   rz   rx   r~   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rk   r   r      sk    	++++++++,,++00,,++,,rn   r   c                       e Zd ZdZy)NonExprzCLike NonBasic above except this is a subclass of Basic but not ExprNr   r   r   r   r   rn   rk   r   r     s    Mrn   r   c                       e Zd ZdZd Zy)r   z>Represents the results of operations with NonBasic and NonExprc                 D    t         j                  |       }|||f|_        |S rb   )object__new__args)r^   oparg1arg2objs        rk   r   zSpecialOp.__new__  s#    nnS!d#
rn   N)r   r   r   r   r   r   rn   rk   r   r     s
    Hrn   r   c                       e Zd ZdZy)NonArithmeticzGRepresents a Basic subclass that does not support arithmetic operationsNr   r   rn   rk   r   r     s    Qrn   r   c                     t               t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        d      t        d      t        d      t        dt        d            t        dt        d            t        dt        d            g} | D ]-  t               t               fD ]  }|z   d|ff|z   d|ff|z
  d|ff|z
  d|ff|z  d|ff|z  d|ff|z  d|ff|z  d|ff|z  d|ff|z  d|ff|z  d	|ff|z  d	|fft!        |      d
|fft!        |      d
|ff|z  d|ff|z  d|ff|k  d|ff|k  d|ff|kD  d|ff|kD  d|ff|k  d|ff|k  d|ff|k\  d|ff|k\  d|ffg}|D ]'  \  }}t#        |      t$        u r|j&                  |k(  r'J   t)               t+               fD ]  t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd       t-        t.        fd        t-        t.        fd!       t-        t.        fd"       t-        t.        fd#       t-        t.        fd$       t-        t.        fd%       t-        t.        fd&       t-        t.        fd'        0 y())a}  Tests that Expr uses binary operations cooperatively.

    In particular it should be possible for non-Expr classes to override
    binary operators like +, - etc when used with Expr instances. This should
    work for non-Expr classes whether they are Basic subclasses or not. Also
    non-Expr classes that do not define binary operators with Expr should give
    TypeError.
          ?r   rZ   r   r   r   r   r   r   r   r   r   r   r   r   c                       z   S rb   r   enas   rk   <lambda>z-test_cooperative_operations.<locals>.<lambda>[      q2v rn   c                       z   S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>\      rAv rn   c                       z
  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>]  r   rn   c                       z
  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>^  r   rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>_  r   rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>`  r   rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>a  r   rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>b  r   rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>c      qBw rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>d      rQw rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>e  r   rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>f  r   rn   c                      t               S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>g  s    va} rn   c                      t               S rb   r  r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>h  s    vb!} rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>i  r  rn   c                       z  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>j  r  rn   c                       kD  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>k  r   rn   c                       kD  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>l  r   rn   c                       k  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>m  r   rn   c                       k  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>n  r   rn   c                       k\  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>o  r  rn   c                       k\  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>p  r  rn   c                       k  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>q  r  rn   c                       k  S rb   r   r   s   rk   r   z-test_cooperative_operations.<locals>.<lambda>r  r  rn   N)r
   r&   ZeroOneInfinityNegativeInfinityComplexInfinityHalfr   r   r(   r   r   r!   r   r   r   typer   r   r   r   rR   	TypeError)exprsneresultsresr   r   r   s        @@rk   test_cooperative_operationsr#    s    				

			c

sAvc{Avc{Avc{E   >0 :wy) 	CB a#r1&R#q"&a#r1&R#q"&a#r1&R#q"&a#r1&R#q"&q4Q-(b4B-(a#r1&R#q"&A2q 1221b 12q4Q-(b4B-(R#r1&a#r1&R#r1&a#r1&b4Q-(q4Q-(b4Q-(q4Q-(1G6 % C	TCyI-#((d2BBBC;	CD !?FH- 	0B9o.9o.9o.9o.9o.9o.9o.9o.9./9./9o.9o.9459459./9./9o.9o.9o.9o.9./9./9./9./3	0K>0rn   c                  ~   ddl m}  t        dk  t        j                  u sJ t        dk  t        j                  u sJ t        dkD  t        j
                  u sJ t        dk\  t        j
                  u sJ t         dk  t        j
                  u sJ t         dk  t        j
                  u sJ t         dkD  t        j                  u sJ t         dk\  t        j                  u sJ t        dd      }|dz
  |dz
  k  t        j                  u sJ  | t        t        z   t        t        z   dz         j                  | k(  sJ y )Nr   )r#      rTrealr   )
sympy.core.relationalr#   r   r&   falsetruer(   rZ   r   func)r#   r&  s     rk   test_relationalr-  u  s   (Fqww!GFqvv!GC!GC1HC!GC1H   sAEAEMagg%%%a!eQUQY$$***rn   c                  |   t        dd      } t        dd      }t        dd      }t        dd	      }| d
k  t        | d
      k(  sJ |d
k  t        |d
      k(  sJ |d
kD  t        |d
      k(  sJ |d
k\  t	        |d
      k(  sJ t        ddd      } t        ddd      }t        ddd      }t        ddd      }| d
k  t
        j                  u sJ |d
k  t
        j                  u sJ |d
kD  t
        j                  u sJ |d
k\  t
        j                  u sJ t        dd	      } t        dd      }t        dd      }t        dd      }| d
k  t
        j                  u sJ |d
k  t
        j                  u sJ |d
kD  t
        j                  u sJ |d
k\  t
        j                  u sJ t        ddd      } t        ddd      }t        ddd      }t        ddd      }| d
k  t
        j                  u sJ |d
k  t
        j                  u sJ |d
kD  t
        j                  u sJ |d
k\  t
        j                  u sJ y )Nm1F)nonnegativem2positivem3)nonpositivem4)negativer   T)r0  r(  r3  r(  )r5  r(  )r7  r(  )r(   r#   r%   r$   r"   r&   r+  r*  )r/  r1  r4  r6  s       rk   test_relational_assumptionsr9    s:   	%	(B	u	%B	%	(B	u	%BFr"ay   !G2q	!!!Fr"ay   !G2q	!!!	%d	3B	u4	0B	%d	3B	u4	0BFqvv!GFqvv!G	t	$B	$	'B	t	$B	$	'BFqvv!GFqvv!G	u4	0B	%d	3B	u4	0B	%d	3BFqww!GFqww!Grn   c                       t         D ]p   t        t         fd       t        t         fd        dk(  r
 dz  dk(  sJ t        t         fd       t        t         fd       t        t         fd       r y )	Nc                       dz   S N1r   r   s   rk   r   z"test_basic_nostr.<locals>.<lambda>      #) rn   c                       dz
  S r<  r   r>  s   rk   r   z"test_basic_nostr.<locals>.<lambda>  r?  rn   r   r=  11c                       dz  S r<  r   r>  s   rk   r   z"test_basic_nostr.<locals>.<lambda>  s    cCi rn   c                       dz  S r<  r   r>  s   rk   r   z"test_basic_nostr.<locals>.<lambda>  r?  rn   c                       dz  S r<  r   r>  s   rk   r   z"test_basic_nostr.<locals>.<lambda>  s    #* rn   )
basic_objsrR   r  r>  s   @rk   test_basic_nostrrF    sb     .y+,y+,!89$$$9/0y+,y,-.rn   c                  8   dt         z  t        z   t         z   j                  t         dd      dt         z  t        dt               z   k(  sJ dt         z  t        z   t         z   j                  t         dd      dt         z  t        z   t        t               z   k(  sJ dt         z  dz   t         z   j                  t         dd      dt         z  t        dt               z   k(  sJ dt         z  dz   t         z   j                  t         dd      dt         z  dz   t        t               z   k(  sJ dt         z  t         z   j                  t         dd      dt         z  t        dt               z   k(  sJ dt         z  t        z   t        t         z  z   t         z   j                  t         dd      dt         z  t        dt               z   k(  sJ dt         z  t        z   t        t         z  z   t         z   j                  t         dd      dt         z  t        z   t        t               z   k(  sJ y N   r   )rZ   r[   seriesrE   r   rn   rk   'test_series_expansion_for_uniform_orderrK    s   aC!GaK1a(AaC!Aq'M999aC!GaK1a(AaC!GadN:::aC!GaK1a(AaC!Aq'M999aC!GaK1a(AaC!GadN:::aC!GAq!$!a1g555aC!GacMA%%aA.!A#!Q-???aC!GacMA%%aA.!A#'AaD.@@@rn   c                     ddt         t        d      t        d      z  dz
  z  z  z   j                  t               dk(  sJ dt         dz  z  dz   t         z   t         dz  z   j                  t               d   dk(  sJ dt         z  dz   t         z   t         dz  z   j                  t               d   dk(  sJ t         dz  dt         z  z   j                  t               d   dk(  sJ dt         dz  z   j                  t               d   dk(  sJ t         dz   j                  t               d   dk(  sJ t         t         dz  z   j                  t               d   dk(  sJ t         dz  j                  t               d   dk(  sJ y )Nr%  r   rI  r%  r   r   )rZ   r0   leadtermr   rn   rk   test_leadtermrQ    s]   !c!fSVma'(((2215???adFQJNQT!++A.q1R777aC!GaK!Q$((+A."444qD1Q3J  #A&",,,1Hq!!$)))EAq!Q&&&1Hq!!$)))qD??1a A%%%rn   c                  b   ddt         t        d      t        d      z  dz
  z  z  z   j                  t               dk(  sJ dt         dz  z  dz   t         z   t         dz  z   j                  t               dt         dz  z  k(  sJ dt         z  dz   t         z   t         dz  z   j                  t               dt         z  k(  sJ t         dz  dt         z  z   j                  t               dt         z  k(  sJ dt         dz  z   j                  t               dk(  sJ t         dz   j                  t               dk(  sJ t         t         dz  z   j                  t               t         k(  sJ t         dz  j                  t               t         dz  k(  sJ t         t        z   j                  t               t        u sJ t	        t
        d        dt         z  t         t        dd      z   t        d      t        j                  z  dz  z
  dz  z   t        dd      z
  dt        d      z  t        j                  z  dz  z   } | j                  t               t        d       t        z  t         z  k(  sJ dt         z
  t         dz  z
  } dt        d      z   dz  }| j                  t         t        d|z  z         j                  t              dt        z  dt        d      z  t        z  z
  dd	t        d      z  z   z  k(  sJ t        t        dd
t         z  z              j                  t         d      t        d      k(  sJ y )Nr%  r   rI  c                  2    t         dz   j                  d      S NrI  rZ   as_leading_termr   rn   rk   r   z&test_as_leading_term.<locals>.<lambda>  s    A66q9 rn   r   i      d   )cdir)rZ   r0   rV  r   rR   
ValueErrorr   r3   r&   ImaginaryUnitr   subsr[   r1   r2   )r   ds     rk   test_as_leading_termr`    s   !c!fSVma'(((99!<AAAadFQJNQT!22151a4???aC!GaK!Q$//2ac999qD1Q3J''*ac1111H%%a(A---E""1%***1H%%a(A---qD!!!$1,,,F##A&",,,
:9: 	1HQN"T!WQ__%<Q%>>BB
1a.	T!W9Q__4Q6	7AQDG8A:a</// 	
A1A	
T!WaA66!Q1W--a0	QDGA	QtAwY/0 0 0 QAY 0010=aHHHrn   c                      t         t        d      z  t        dt        d      z         z  t        dt        d      z         z   j                  t               t        dt        d      z         dfk(  sJ y rH  )rZ   r8   r7   rP  r   rn   rk   test_leadterm2rb    s]    c!fHSSV_$s1s1v:6@@CCF
OQ     rn   c                  v    t         t        z   t        z   j                  t              t         t        z   dfk(  sJ y )Nr   )r[   r\   rZ   rP  r   rn   rk   test_leadterm3rd    s+    EAI"q1uaj000rn   c                      t         t        d      z  t        dt        d      z         z  t        dt        d      z         z   j                  t               t        dt        d      z         k(  sJ y rT  )rZ   r8   r7   rV  r   rn   rk   test_as_leading_term2rf    sX    c!fHSSV_$s1s1v:6GGJAAJ  rn   c                      dt         z   t        z   j                  t              dt         z   k(  sJ dt        z  t         t        z  z   t        dz  z   j                  t              dt        z  t         t        z  z   k(  sJ y Nr   )r   rZ   rV  r   rn   rk   test_as_leading_term3ri    sa    FQJ''*a"f444aC"Q$JA..q1QqS2a4Z???rn   c                     t        ddd      } | dz   d| dz  z  d| z  z   dz   z  | dz  | dz  d| z  z   dz   z  z
  | dz  | dz   z  z   | d| dz  z  d| z  z   dz   z  z
  | | t        z  t        z   z  z   d| z  | dz   z  z   dz
  d| t        z  t        z   z  z   d| dz   z  z   dt        z  z
  }|j                  t              j                         | dz  k(  sJ y )NrW   T)integerr3  r%  r      rI  )r(   rZ   rV  rB   )rW   r&  s     rk   test_as_leading_term4rm    s   sD40A	
AqAv!|a 1a4A!a#88	1a!e	!AqD&1Q3,*+	,./1qk	:<=aCQK	H		
qsQwK	QU)	$&'c	*A Q&&(AaC///rn   c                        G d dt                  dt        z        j                  t                dt        z        k(  sJ   d      j                  t                d      k(  sJ t        t         fd       y )Nc                       e Zd Zy)&test_as_leading_term_stub.<locals>.fooNr   r   r   r   rn   rk   foorp        rn   rr  rI  c                  B      t               j                  t               S rb   rU  rr  s   rk   r   z+test_as_leading_term_stub.<locals>.<lambda>  s    A(>(>q(A rn   )r   rZ   rV  rR   NotImplementedErrorru  s   @rk   test_as_leading_term_stubrw    se    h qs8##A&#ac(222q6!!!$A...
 ABrn   c                     t        t        dz  t              j                  t              dt        dz  z  k(  sJ t        t        dz  t              j                  t              dk(  sJ t	        t        dz  t              j                  t              t        dz  dz  k(  sJ t	        t        dz  t              j                  t              t        t        dz  z  k(  sJ t        t        t              t              j                  t              dk(  sJ t        t        t              t              j                  t              dt        z  j                  t              k(  sJ y )Nr%  r   r   rl  rI  )r   rZ   rV  r[   r>   r/   r0   r   rn   rk   #test_as_leading_term_deriv_integralry    s   a1fa 003qAv===a1fa 003q888AFA..q1QT!V;;;AFA..q1Qq!tV;;;c!fa 003q888c!fa 003!7L7LQ7OOOOrn   c                     t        j                         t         hk(  sJ dt         z   j                         t         t        j                  hk(  sJ ddt	        t               z  z   j                  t
              t         hk(  sJ ddt	        t               z  z   j                  t
        t              t        j                  t        d      t         hk(  sJ dt         t        t         z  z  z  j                         t        d      t         t        hk(  sJ t        j                  j                         t        j                  hk(  sJ t        j                  j                  t
              t               k(  sJ t        t              j                  t              t               k(  sJ t        dt               j                         t        j                  t         hk(  sJ t        dt               j                         t        j                  t         hk(  sJ t        t         t               j                         t         hk(  sJ t        t         t         t              j                         t         t        hk(  sJ t        t         t        z   t         t              j                         t         t        hk(  sJ t        t         t        z   t         t        t              j                         t         t        t        hk(  sJ t        t         t        t        z  z   t         t        t              j                         t        t         t        t        hk(  sJ t         t"        z  j                  t$              t"        hk(  sJ t         t"        z  j                  t$        t               t         t"        z  j                  t         t$              cxk(  rt"        t         hk(  sJ  J t'        t'        t                     j                  t&              t'        t'        t                     t'        t               hk(  sJ dt         dt        z   z  z   t'        dt        z         z   j                  t(              dt         dt        z   z  z   t'        dt        z         z   dt        z   dt        z   hk(  sJ t+        t               t        t               z   dz   } | j                  t,              t+        t               hk(  sJ | j                  t,        t.              t+        t               t        t               hk(  sJ | j                  t.              t+        t               t        t               hk(  sJ | j                  t,        t              t+        t               t        d      hk(  sJ | j                  t.        t              t        d      t        t               t+        t               hk(  sJ y )NrI  r   r   r%  )rZ   atomsr&   r  r8   r(   r   r[   r  setr7   r   rC   r  r\   rX   r   r   r   r/   r   fr   r   r   s    rk   
test_atomsr    s   779E==?q!%%j(((#a&L'A3...#a&L/AEE1Q43CCCCq1a4yM  "qtQl22266<<>affX%%%66<<35(((r7==%%%1:!&&!,,,1:!%%+++1:!$$$1a= QF***Aq!""$A...Aq!Q%%'Aq!9444AaCAq!'')aAq\999bD<<%"---bD<<a(	
2Q%1*,a1 1 1 1 1 s1v;S!c#a&k3q6%::::1q5	MCAJ&--c2	
QAYQU	#QUAE23 3 3 
1A	A77< 	
1  77<*	
1s1v  778	
1s1v  77<(	
1qt  778V$	
1s1vqt  rn   c                  6
   t        ddd      } t        d      j                  t        t        t
              du sJ t        j                  j                  t        t        t
              du sJ t        j                  t              du sJ t        j                  t              du sJ t        dz  j                  t              du sJ t        dz  j                  t              du sJ t        dz  j                  t              du sJ t        dz  j                  t              du sJ dt        z  j                  t              du sJ dt        z  j                  t              du sJ t        | z  j                  t              du sJ t        | z  j                  |       du sJ t        t        z  j                  t              du sJ | | z  j                  |       du sJ | t        z  j                  |       du sJ t        |  z  j                  t              du sJ dt        z  | z  j                  t              du sJ t        dz  dt        z  z   dz
  j                  t              du sJ t        dz  dt        z  z   dz
  j                  t              du sJ t        dz  dt        z  z   dz
  j                         du sJ t        t              j                  t              du sJ t        t              dz  j                  t              du sJ t        dz  dt        z  t        t              z  z   dz
  j                  t              du sJ t        dz  dt        z  t        t              z  z   dz
  j                  t              du sJ t        dz  t        dz  z  t        t        dz  z  z   t        t        z  z   t        d      z   j                         du sJ t        dz  t        dz  z  t        t        dz  z  z   t        t        z  z   t        t              z   j                         du sJ t        dz  t        dz  z  t        t        dz  z  z   t        t        z  z   t        d      z   j                  t        t              du sJ t        dz  t        dz  z  t        t        dz  z  z   t        t        z  z   t        t              z   j                  t        t              du sJ d	t        t              z  d	z   j                  t        t                    du sJ y )
NkT)r0  rk  r   rN  Fr%  rY  rI  )r(   r   is_polynomialrZ   r[   r\   r&   Pir3   r/   r}  )r  s    rk   test_is_polynomialr  L  si   sd3AA;$$Q1-555DD1a(D000??1%%%??1%%%qD"d***qD"d***G""1%...G""1%---qD"e+++qD"d***qD"e+++qD"e+++qD"e+++qD"e+++qD"e+++G""1%...qS1H##A&%///qD1Q3JN))!,444qD1Q3JN))!,444qD1Q3JN))+t3337  #u,,,GQJ%%a(E111qD1Q3tAw;"11!4<<<qD1Q3tAw;"11!4===TAqDMAq!tH$qs*SV3BBDLLLTAqDMAq!tH$qs*SV3BBDMMM 
A11a4 1Q3&Q/q!1DM M M 
A11a4 1Q3&Q/q!1DN N N adFQJ%%ad+u444rn   c                  ^   t        d      j                         du sJ t        d      j                  t              du sJ t        dd      j                         du sJ t        dd      j                  t              du sJ dt        z  j                         du sJ dt        z  j                  t              du sJ t        t        z  j                         du sJ t        t        z  j                  t              du sJ t        t        z  j                  t        t              du sJ t        dz  dt        z  t        z  z   j                         du sJ t        dz  dt        z  t        z  z   j                  t              du sJ t        dz  dt        z  t        z  z   j                  t        t              du sJ t        t              t        z  j                         du sJ t        t              t        z  j                  t              du sJ t        t              t        z  j                  t              du sJ t        t              t        z  j                  t        t              du sJ t        D ]6  } | j                         rJ dt        fD ]  }| |z  j                         sJ  8 y )NrI  T   6      r   F)r   is_rational_functionrZ   r   r[   r7   r    )ir_  s     rk   test_is_rational_functionr  }  sP   1:**,4441:**1-555B002d:::B003t;;;qD&&(D000qD&&q)T111aC%%'4///aC%%a(D000aC%%a+t333qD1Q3q5L..0D888qD1Q3q5L..q1T999qD1Q3q5L..q!4<<<F1H**,555F1H**1-666F1H**1-555F1H**1a0E999 4))+++Q 	4A!11333	44rn   c                     t         t        dz  z  t        z   t        z   t        t        dz  z  z   } | j	                  t        d      du sJ | j	                  t        d      du sJ | j	                  t        t
              du sJ ddt        t        d      t        d      z  dz
  z  z  z   }|j	                  t        d      du sJ |j	                  t        d      du sJ |j	                  t        t
              du sJ t        dd      }t        dt        z        |z  t        z  }|j	                  t        d      du sJ |j	                  t        d      du sJ |j	                  t        t
              du sJ t        t              t        z  }|j	                  t        d      du sJ |j	                  t        d      du sJ |j	                  t        d      du sJ |j	                  t        t
              du sJ t        t              t         z  j	                  t        d      du sJ t        t              t         z  j	                  t        d      du sJ t         t        t              z  j	                  t        d      J dt        t              z  j	                  t        d      du sJ dt        t              z  j	                  t        d      du sJ y )	Nr   r   TrI  r%  FrW   rk  )
rT   rZ   rU   rV   is_meromorphicr   r0   r(   r7   r   )r}  grW   r   s       rk   test_is_meromorphicr    s   	!Q$
Q1a4AAq!T)))Aq!T)))As#t+++	Aa#a&Q-!#$$$AAq!U***Aq!T)))As#u,,,sD!AAaC!AAAq!U***Aq!T)))As#u,,,A
AAq!U***Aq!U***Aq!T)))As#u,,,FAI%%a+u444FAI%%a+u444s1vI%%a+333s1vI%%a+u444s1vI%%a+t333rn   c                  N   t        d      j                  t              du sJ t        d      j                         du sJ dt        dz  z   dt        dz  z
  z  t        j
                  dz  z  } | j                  t              du sJ | j                  t              du sJ t        t              t        t	        d      dz  z  z   j                  t              du sJ t        t              t        t	        d      dz  z  z   j                  t              du sJ t        t              t        t	        d      dz  z  z   j                         du sJ t        t              t        t              z  j                         du sJ t        t              t        t              z  j                  t              du sJ t        t              t        t              z  j                  t              du sJ t        t              t        t              z  j                  t        t              du sJ y )Nr%  TrI  r   F)r3   is_algebraic_exprrZ   r[   r&   r  r8   )eqs    rk   test_is_algebraic_exprr    s   7$$Q'4///7$$&$...q!t8a!Q$h
1557	+B"d***"d***Ga!A$q&k!44Q74???Ga!A$q&k!44Q74???Ga!A$q&k!446$>>>F47N--/5888F47N--a0D888F47N--a0E999F47N--a3u<<<rn   c                  x     G d d              } t        d      | z  }|dk(  sJ t        t        fd       y )Nc                       e Zd Zd Zy)test_SAGE1.<locals>.MyIntc                     t        d      S Nr   )r   r   s    rk   _sympy_z!test_SAGE1.<locals>.MyInt._sympy_  s    1:rn   N)r   r   r   r  r   rn   rk   MyIntr    s    	rn   r  r   
   c                       t        d       z  S rh  r   r  s   rk   r   ztest_SAGE1.<locals>.<lambda>      hqk%/ rn   )r   rR   r  )mr   r  s     @rk   
test_SAGE1r    s9      	AAA7N7
9/0rn   c                       G d d      t                      dk(  sJ t        d              z  } | dk(  sJ t        t        fd       y )Nc                       e Zd Zd Zy)test_SAGE2.<locals>.MyIntc                      yr  r   r   s    rk   r   z!test_SAGE2.<locals>.MyInt.__int__  s    rn   N)r   r   r   r   r   rn   rk   r  r    s    	rn   r  r   r   r  c                       t        d       z  S rh  r  r  s   rk   r   ztest_SAGE2.<locals>.<lambda>  r  rn   )r,   r   rR   r  )r   r  s    @rk   
test_SAGE2r    sJ      57q   EGA7N7
9/0rn   c                  T     G d d      }  |        }t         |z  }|dt         |fk(  sJ y )Nc                       e Zd Zd Zy)test_SAGE3.<locals>.MySymbolc                     d|| fS )Nmysr   r   s     rk   rx   z%test_SAGE3.<locals>.MySymbol.__rmul__  s    5$''rn   N)r   r   r   rx   r   rn   rk   MySymbolr    s    	(rn   r  r  rZ   )r  or   s      rk   
test_SAGE3r    s2    ( ( 	
A	!A1rn   c                      t         t        z  } t        | j                        dk(  sJ t         t        z   t        z   } t        | j                        dk(  sJ y )Nr   r%  )rZ   r[   lenr   r\   r~  s    rk   test_lenr    sD    	!Aqvv;!	A	Aqvv;!rn   c                  n   t        t        dz  t              } t         | j                         t               du sJ t         | j                  d      t               du sJ t         | j                  d      t               du sJ dt        t        t              z  j                         t        dz  k(  sJ y )Nr   FT)	integrals)r>   rZ   rd   doitrT   s    rk   	test_doitr    s    AqAfaffh)U222fafft,h75@@@faffu-x8D@@@hq!n""$1,,,rn   c                  j    t        t        d        t        t        d        t        t        d        y )Nc                  *    t        j                         S rb   )rZ   r8   r   rn   rk   r   z&test_attribute_error.<locals>.<lambda>      1557 rn   c                  *    t        j                         S rb   )rZ   r7   r   rn   rk   r   z&test_attribute_error.<locals>.<lambda>  r  rn   c                  *    t        j                         S rb   )rZ   r/   r   rn   rk   r   z&test_attribute_error.<locals>.<lambda>   r  rn   )rR   AttributeErrorr   rn   rk   test_attribute_errorr    s     
>?+
>?+
>?+rn   c                     t         t        z  j                  t         t        ft        t         ffv sJ t         t        z   j                  t         t        ft        t         ffv sJ t         t        z  dz   j                  t         t        z  dfdt         t        z  ffv sJ t        t         t        z        j                  t         t        z  fk(  sJ t        t         t        z        j                  d   t         t        z  k(  sJ t         t        z  j                  t         t        fk(  sJ t         t        z  j                  d   t         k(  sJ t         t        z  j                  d   t        k(  sJ y rH  )rZ   r[   r   r7   r   rn   rk   	test_argsr    s   aC::1a&1a&))))E<<QFQF++++aC!G>>qsAhAaC1111qs8==QqSF"""qs8==qs"""qD;;1a&   qD;;q>QqD;;q>Qrn   c                     t        dd      \  } }}| |z  || z  z
  dk7  sJ | | |z   z  |z  j                         | dz  |z  | |dz  z  z   k(  sJ | | |z   |z   z  |z  j                         | dz  |z  | |dz  z  z   | |z  |z  z   k(  sJ y )NA,B,CFcommutativer   r   )r)   r   )ABCs      rk   %test_noncommutative_expand_issue_3757r    s    g51GAq!Q319>>q1uIaK!QT!Va1f_444q1uqyM!O##%Aa!AqD&1Q3q5)@@@@rn   c                  T   t        d      \  } }}t        j                         t        dfk(  sJ t        j                         t        dfk(  sJ t         j                         t         dfk(  sJ t	        j                         t        dfk(  sJ t         j                         t        dfk(  sJ t        j                         t
        dfk(  sJ dt
        z  j                         dt
        fk(  sJ t
        t        z  j                         t
        t        fk(  sJ t
        dz  j                         t
        dfk(  sJ t
        t        z  t        z  j                         t
        t        z  t        fk(  sJ t
        t        t        z  z  j                         t
        t        t        z  fk(  sJ t        j                  j                         dk(  sJ dt        dz  z  j                         dt        dz  fk(  sJ t
        t        dz  z  j                         t
        t        dz  fk(  sJ t
        dz  dz   t        z  j                         t
        dz  dz   t        fk(  sJ t
        t        dz   z  t        dz  z  j                         t
        t        dz   z  t        dz  fk(  sJ t
        dz  j                         dt
        dz  fk(  sJ | t
        z  |dz  t
        z  z   |dz  t
        z  z   j                         d| z  d|z  z   d|z  z   dt
        z  fk(  sJ | t
        z  |dz  t
        z  z   |dz  t        z  z   j                         d|z  t
        z  t        d| z  d|z  z   z  z   dt
        z  t        z  fk(  sJ | t
        z  |dz  t
        z  z   |d	z  t
        z  z   j                         d| z  |z   d
|z  z   dt
        z  fk(  sJ t        t        t        t        dd      D cg c]  }t               |z  t
        z   c} j                         d   t
        z        j                  d            dk(  sJ t        j                   t        j"                  t        j$                  fD ]*  }|t
        dz  z   j                         t
        |z   dfk(  r*J  t        j                   t
        dz  z   t        dz  z   j                         dt
        z  dt        z  z   t        j                   z   dfk(  sJ t        t
        z  t        t        z  z   j                         t        t        z  t        t
        z  z   dfk(  sJ t        dd      \  }}}||z  |dz  z  j                         ||z  |dz  z  dfk(  sJ ||z  |dz  z  t
        z  j                         ||z  |dz  z  t
        fk(  sJ |dz  |z  |z  j                         |dz  |z  |z  dfk(  sJ |dz  |z  |z  t
        z  j                         |dz  |z  |z  t
        fk(  sJ ||z  |z  dz  j                         ||z  |z  dz  dfk(  sJ ||z  |z  dz  t
        z  j                         ||z  |z  dz  t
        fk(  sJ t        dt
        t        z   t        z  dz  d      j                         t
         t        z
  dt        z  fk(  sJ y c c}w )Nza, b, crI  r   )rI  r      rN  r%     r         @i  rl  r  r  Fr  rO  r   evaluate)r)   r   as_numer_denomr   r   rZ   r[   r\   r&   r  re   r0   r   ranger*   rW   r  r  r  )rT   rU   rV   r  r  r  r  s          rk   test_as_numer_denomr    sM   i GAq!C8+++2q')))C!rc1X---C8+++D  "sAh...!Q'''aC!aV+++aC!aV+++aC!aV+++aCE!!#!Qx///qsG##%!QqS11166  "f,,,adF""$AqD	111adF""$AqD	111TAXqL((*q!taxm;;;q1uIadN**,AEAqD0AAAArE!!#1a4y000aC!A#a%K!A#a%//1	
1qsQqS!A#  aC!A#a%K!A#a%//1	
1QAaC!A#I	!A&' ' 'aC!A#a%K!B$q& 002	
1q3q5!A#   s3eAsm<1< ')!--./ 001!69<= = =jj!,,a.?.?@ AaC'')UAJ 	  JJ1qs"224	
1qsQZZ	$% % %qD3q5L((*	QAq   g51GAq!aC2I%%'AaC2Iq>999aC2IaK'')ac!R%i^;;;rE!GAI%%'ArE!GAIq>999rE!GAIaK'')aeAgai^;;;qSURK'')qs1urk1-====qSURKM))+1QQ/???? q1q5!)B,/>> 
b1fac]  ) =s   Z%c                  ^    dd l  t        d      \   j                  d      dk(  sJ  j                  d      dk(  sJ  j                  d      dk(  sJ  j                  t              dk(  sJ  j                  t	        d	            d
k(  sJ  j                  t        d            dk(  sJ  j                  t        t                    dk(  sJ  j                  t        d            dk(  sJ t        t         fd       t        t         fd       t        t         fd       y )Nr   zx yr   gHzG@rl  g)\(r%  r  rI  r      rO  c                  &     j                        S rb   trunc)mathrZ   s   rk   r   ztest_trunc.<locals>.<lambda>U  s    djjm rn   c                  2     j                  dz  z         S rh  r  r  rZ   r[   s   rk   r   ztest_trunc.<locals>.<lambda>V  s    djjQT2 rn   c                  .     j                  t              S rb   )r  r   )r  s   rk   r   ztest_trunc.<locals>.<lambda>W  s    djjn rn   )
r  r)   r  r   r0   r/   r8   r7   rR   r  r  s   @@@rk   
test_truncr  I  s    5>DAq::a=A::dq   ::e"""::b>Q::c!f"""::c!f$$$::c"g"$$$::c!f"""
9+,
923
9,-rn   c                     t         j                  j                  t        d      dk(  sJ t         j                  j                  t        d      dk(  sJ dt        z  t	        t              z  t
        z   t        z   j                  t              t
        t        dt        z  t	        t              z  z   fk(  sJ dt        z  t	        t              z  t
        z   t        z   j                  t
              t        dt        z  t	        t              z  z   t
        fk(  sJ dt        z  t	        t              z  t
        z   t        z   j                  t        t
              dt
        t        z   dt        z  t	        t              z  z   fk(  sJ t        t	        t              z  t        t
              z  j                  t              t        t
              t        t	        t              z  fk(  sJ t        t	        t              z  t        t
              z  j                  t
              t        t	        t              z  t        t
              fk(  sJ t        t	        t              z  t        t
              z  j                  t        t
              dt        t	        t              z  t        t
              z  fk(  sJ t	        t              j                  t              dt	        t              fk(  sJ t	        t              j                  t
              t	        t              dfk(  sJ dt	        t              z  j                  t              dt	        t              fk(  sJ dt	        t              z  j                  t
              dt	        t              z  dfk(  sJ t        dd	      \  } }}| | |z  z   j                  |      | | |z  fk(  sJ || z  | |z  z   j                  |      d| |z  || z  z   fk(  sJ | |z  | z  j                  |      | || z  fk(  sJ | |z  | z  j                  |       d| |z  | z  fk(  sJ d
t        z  j                  t        d      dd
t        z  fk(  sJ d
t        z  j                  t        d      d
t        fk(  sJ d
t        z   j                  t        d      d
t        fk(  sJ d
t        z   j                  t        d      dd
t        z   fk(  sJ d
t        z  j                  t              d
t        fk(  sJ | t        z  t
        z  j                  t              | t
        z  t        fk(  sJ t        | z   t        t
        z
  z  j                  t              dt        | z   t        t
        z
  z  fk(  sJ t        | z   t        t
        z
  z  j                  t
              t        | z   t        t
        z
  fk(  sJ t        t        | z
        t        t        t
        z
        z  j                  t              dt        t        | z
        t        t        t
        z
        z  fk(  sJ t        t
        z  | z  |z  |z  j                  |      t        t
        z  | z  ||z  fk(  sJ t        t
        z  | z  |z  |z  j                  |       t        t
        z  | |z  |z  fk(  sJ t        t
        z  | z  |z  |z  j                  |      t        t
        z  | z  |z  |fk(  sJ t        t        | z
        t        t
        | z
        z  t        t        |z
        z  j                  t
              t        t        | z
        t        t        |z
        z  t        t
        | z
        fk(  sJ t        t        t        t        ddf      z   j                  t        d      t        t        t        ddf      t        fk(  sJ t        t        t         ddd      }|j                  t              dt        t        t         d      fk(  sJ t        t        dt        z  ddd      }|j                  t              dt        t        dt        z  d      fk(  sJ t        t
        z  j                  t        d      t        t
        z  dfk(  sJ y )NT)as_Addr   r   Fr   r   rI  zn1 n2 n3r  r%  )strictrW  r  rO  )r&   r  as_independentrZ   r7   r[   r8   r)   r(   r:   r>   r   r   r\   )n1n2n3r  s       rk   test_as_independentr  Z  s   66  4 0F:::66  5 1V;;;aCAJNQ..q1aQqSQZ5HHHHaCAJNQ..q1a!A#c!f*na5HHHHaCAJNQ..q!4AEAaCAJ<N8OOOOc!fHSVO++A.3q61SV82DDDDc!fHSVO++A.1SV8SV2DDDDc!fHSVO++Aq1a3q6#a&5IIIIF""1%!SV444F""1%#a&!444c!fH$$Q'As1v;666c!fH$$Q'Ac!fHa=888 7JBBBJ&&r*r2b5k999rEBrEM))"-!RURU]1CCCCrE"H$$R(RBK777rE"H$$R(Q2bM999aC$/Aqs8;;;aC%0QF:::E!!!D!1aV;;;E!!!E!2q!a%j@@@ aC'Aq6111 qDF""1%"Q$222Va!e,,Q/ABQ7G3HHHHVa!e,,Q/AFAE?BBBq2vz!a%00@@Cz!b&!*QU"3345 5 5aCF2IbL((,1RB???aCF2IbL((,1beBh???aCF2IbL((,1RB???q2vz!b&11*QV2DDTTUVWq2vz!b&11:a"f3EFG G G Q1I&&66q6FQAq	"A&' ' ' 
QArE	*BQBArE(B#CCCC	Q!QU	+BQBAqsU(C#DDDDaC$/AaC8;;;rn   c                  T     dt         z  t              dt        t              z  k(  sJ y rh  )r}  rZ   r   rn   rk   test_call_2r    s$     AaC8q1vrn   c                  h   t        t        t                    t        t        t        dz              z   } | j	                  t        t
              t        t        t                    t        t        t        dz              z   k(  sJ | j	                  t        d       t        t        dt        z              t        t        dt        dz  z              z   k(  sJ t        d      }t        d      }| j	                  t        |      t        |            t        t        t                    t        t        t        dz              z   k(  sJ | j	                  t        |      d       t        t        dt        z              t        t        dt        dz  z              z   k(  sJ dt        z  j	                  |t        z  |z   ||z
  d      dt        z  k(  sJ dt        z  j	                  |t        z  |z   ||z
        dt        z  k(  sJ dt        z  j	                  |t        z  |z   ||z
  d      dt        z  k(  sJ dt        z  j	                  |t        z  |z   d	 d      dt        z  k(  sJ dt        z  j	                  |t        z  |z   d
       dt        z  k(  sJ dt        z  j	                  |t        z  |z   d d      dt        z  k(  sJ dt        t        dz        z  }|j	                  d d       dt        t        dz        z  k(  sJ t        t              j	                  t
        t        d      t        t              t        t              t        t              ifk(  sJ t        t              j	                  t
        t              t        t              k(  sJ d d }}t        t        z  j	                  ||d      dt        z  t        z  t        t        z  dt        z  t        z  ifk(  sJ t        dt        t        z  z   z  j	                  ||d      dt        z  dt        z  t        z  dz   z  t        dt        z  t        z  dz   z  dt        z  dt        z  t        z  dz   z  t        t        z  dt        z  t        z  ifk(  sJ t        t        t              z  j	                  t        d d      t        t              t        t              t        t              t        z  ifk(  sJ t        t        t              z  j	                  t        d d      t        t              t        z  k(  sJ t        dz  t        t        dz        z   j	                  t        d       t        dz  dz  t        t        dz        z   k(  sJ t        dz  t        t        dz        z   j	                  t        d d      t        dz  dz  t        t        dz        z   k(  sJ t        t        t        z  dz   z  j	                  d d       t        t        t        z  dz   z  dz   k(  sJ t        t        z  dz   dt        z  t        z  dz   z  dz   } | j	                  ||d      ddt        z  t        z  dz   dt        z  t        z  dz   z  z  dz   dt        z  t        z  dt        z  t        z  t        t        z  dt        z  t        z  dt        z  t        z  dz   dt        z  t        z  dz   z  ddt        z  t        z  dz   dt        z  t        z  dz   z  z  ifk(  sJ t        j                  t        t              t        k(  sJ t        dz   j	                  dd      t        dz   k(  sJ t        dd      \  }}}|t        |      z  j	                  t        d       ||z  k(  sJ |t        |      z  j	                  t        d        ||z  k(  sJ t        j                  j	                  t        d!      d      dk(  sJ t        j                  j	                  t        d!      dd      d"k(  sJ y )#Nr   c                     t        d| z        S rh  r7   r  s    rk   r   ztest_replace.<locals>.<lambda>  s    s1Q3x rn   rT   rU   c                     t        d| z        S rh  r  r  s    rk   r   ztest_replace.<locals>.<lambda>  s    #ac( rn   T)exactFc                     || z
  S rb   r   rT   rU   s     rk   r   ztest_replace.<locals>.<lambda>  
    q1u rn   c                     || z
  S rb   r   r  s     rk   r   ztest_replace.<locals>.<lambda>  r  rn   c                     || z
  S rb   r   r  s     rk   r   ztest_replace.<locals>.<lambda>  r  rn   r%  c                     | j                   S rb   )	is_Numberexprs    rk   r   ztest_replace.<locals>.<lambda>  s
    T^^ rn   c                     | dz  S rh  r   r  s    rk   r   ztest_replace.<locals>.<lambda>  s
    $' rn   rl  	   )mapc                     | j                   S rb   is_Mulr  s    rk   r   ztest_replace.<locals>.<lambda>  s
    188 rn   c                     d| z  S rh  r   r  s    rk   r   ztest_replace.<locals>.<lambda>  s
    qs rn   rI  c                 &    t        |       t        z  S rb   r7   r[   r  s    rk   r   ztest_replace.<locals>.<lambda>      D	! rn   c                 &    t        |       t        z  S rb   r  r  s    rk   r   ztest_replace.<locals>.<lambda>  r  rn   )simultaneousc                     | |z  |z  S rb   r   rU   r   s     rk   r   ztest_replace.<locals>.<lambda>      ad1f rn   c                     | |z  |z  S rb   r   r  s     rk   r   ztest_replace.<locals>.<lambda>  r  rn   c                     | j                   S rb   r  r  s    rk   r   ztest_replace.<locals>.<lambda>  s
    188 rn   c                     d| z   S rh  r   r  s    rk   r   ztest_replace.<locals>.<lambda>  s
    q1u rn   r   zn1:4r  c                     | S rb   r   r  s    rk   r   ztest_replace.<locals>.<lambda>      1 rn   c                     | S rb   r   r  s    rk   r   ztest_replace.<locals>.<lambda>  r  rn   rZ   r   )r0   r7   rZ   r6   replacer8   r+   r[   rE   r!   r)   r}  r&   r  )	r   rT   rU   r  condr,  r  r  r  s	            rk   test_replacer    s   CFc#ad)n$A99S##c!f+C1I">>>>99!$'AaCMCAadF4D$DE E E 	S	AS	A99SVSV$CFc#ad)n(DDDD99A"$'*3qs8}s3qAv;7G'GH H H aC==1q!a%t=4!;;;aC==1q!a%(AaC///aC==1q!a%u=51<<<aC==1q"4D=AQqSHHHaC==1q"451<<<aC==1q"4E=BacIII	#ad)A99#%9;>?AqD	kJ J J q6>>#s>-#a&3q63q6:J1KKKKq6>>#s#s1v---#]$DaC==t=.1Q3q51Q3!A,2GGGGq1Q3wK  t 6	
1ac!eai1ac!eai=!A#qs1uqy/1Q3!AFGH H Hc!fHc#;F	Q#a&#a&(#$% % % c!fHc#;  "1vax( ( (qD1QT7N##C)< 
T!Va1g  qD1QT7N##C)< $  !tAv!Q$/0 0 0qsQwK  !3_E	1Q37a  	
1q1Q3q519!A99T4T9*	AaCEAI!A	"#a'	
1Q!AqsAaCEAaCEAI!A	#:	AaCEAI!A	"#	%/& & & & 99Q?aE??1a AE))) U3JBBquHa-B666quHa-B666 66>>$s)Q'1,,,66>>$s)Qd>3q888rn   c                      t        dt              \  } }}}t        d      \  }}}}t        ||z   |||f      }t        | |||f      }	|j                  |	|       ||z   k(  sJ y )Nzq p s tr]   za b c d)r)   r+   r>   r  )
qpr   rX   rT   rU   rV   r_  r  patterns
             rk   test_replace_integralr    sm    -JAq!Q#JAq!QQAq	"Aq1a)$G99Wa AE)))rn   c                     t         t        z   dz   t        dt         z        z   } | j                  d       t	        d      t	        d      hk(  sJ | j                  d       t         t        hk(  sJ | j                  d d      t	        d      dt	        d      dik(  sJ | j                  d	 d      t         dt        dik(  sJ | j                  t
              t	        d      t	        d      hk(  sJ | j                  t              t         t        hk(  sJ | j                  t
        d      t	        d      dt	        d      dik(  sJ | j                  t        d      t         dt        dik(  sJ t        d
      }t        t        t                     t        t               z   t        t               z   t         z   } | j                  d       t        t               t        t        t                     hk(  sJ | j                  d d      t        t               dt        t        t                     dik(  sJ | j                  t        |            t        t               t        t        t                     hk(  sJ | j                  t        |      d      t        t               dt        t        t                     dik(  sJ | j                  t              t        t               t        t        t                     hk(  sJ | j                  t        d      t        t               dt        t        t                     dik(  sJ y )Nr   r%  c                     | j                   S rb   
is_IntegerrY   s    rk   r   ztest_find.<locals>.<lambda>  
    q|| rn   c                     | j                   S rb   	is_Symbolr  s    rk   r   ztest_find.<locals>.<lambda>  
    q{{ rn   c                     | j                   S rb   r  r  s    rk   r   ztest_find.<locals>.<lambda>  r  rn   T)grouprI  c                     | j                   S rb   r  r  s    rk   r   ztest_find.<locals>.<lambda>  r  rn   rT   c                 $    t        |       t        u S rb   r  r7   r  s    rk   r   ztest_find.<locals>.<lambda>  s    tAw#~ rn   c                 $    t        |       t        u S rb   r$  r  s    rk   r   ztest_find.<locals>.<lambda>  s    $q'S. rn   )	rZ   r[   r7   findr&   r   r(   r+   r8   r  rT   s     rk   	test_findr(    s   EAIAaC D99+,1qt<<<99*+1v55599+498QqT1adA<NNNN99*$97Aq!Q<GGG99W!A$!---99VA&&&99WD9)adAqtQ-????99V49(Q1aL888S	As1v;Q#a&(1,D99-.3q63s1v;2GGGG99   .25a&!SQ[!1LM M M 99SVQSV 555599SV49(SVQCFQ,GGGG99S>c!fc#a&k222299S9%#a&!SQ[!)DDDDrn   c                  J   t         t        z   dz   t        dt         z        z   } | j                  d       dk(  sJ | j                  d       dk(  sJ | j                  t              dk(  sJ | j                  t
              dk(  sJ | j                  d      dk(  sJ t        d      }| j                  t              dk(  sJ | j                  t        |            dk(  sJ | j                  d       dk(  sJ t        t               j                  t        t                     dk(  sJ t        t               j                  t               j                  t        t                     dk(  sJ t        t               j                  t               j                  t               dk(  sJ y )Nr   r%  c                     | j                   S rb   r  r  s    rk   r   ztest_count.<locals>.<lambda>  s
     rn   c                     | j                   S rb   r  r  s    rk   r   ztest_count.<locals>.<lambda>  s
     rn   rI  rT   c                 $    t        |       t        u S rb   r$  r  s    rk   r   ztest_count.<locals>.<lambda>  s    Q3 rn   )	rZ   r[   r7   countr   r(   r+   r}  r   r'  s     rk   
test_countr.    sO   EAIAaC D::,-222::+,111::g!###::f"""::a=AS	A::c?a::c!f"""::./1444Q4::adq   Q499Q<ad#q(((Q499Q<a A%%%rn   c                  <   t        d      } t        t              j                  t              sJ t        t              j                  t              sJ t        t              j                  t              rJ t        t              j                  t
              rJ t        t              j                  t              sJ t        t              j                  t              sJ t        t              j                  t              rJ t        t              j                  t              rJ t        t              j                  t              j                  t              sJ t        t              j                  t              j                  t              sJ t        t              j                  t              j                  t              sJ t        t              j                  t              j                  t              rJ t        t              j                  t              j                  t              rJ t        t              j                  t              j                  t              rJ t        dz  j                  t              sJ t        dz  j                  t               rJ d| z  j                  t               sJ t        j                         rJ t        d      j                  t               rJ t        j                  t               rJ y )Nr  r   rI  )r+   r7   rZ   hasr[   r8   r}  r  r   r   r(   r&   )r  s    rk   test_has_basicsr1    s   S	Aq6::a==q6::c??1vzz!}1vzz#Q488A;;Q488A;;txx{?txx{?Q499Q<AQ499Q<AQ499Q<J'''tyy|"""tyy|"""tyy|$$$qD::f1zz$aC99T??uuw; txx~uuT{?{rn   c                  R   t         dz  t        z  t        dt        z  t	        t
              z         z   } | j                  t               sJ | j                  t              sJ | j                  t
              sJ | j                  t              sJ | j                  t              rJ | j                  t         t        t
        t              sJ | j                  t         t        t
        t        t              sJ t        d      }|j                  t               rJ |t         |z  z  j                  t               sJ |t        |z  z  j                  t               rJ |t        |z  z  j                  t         t              sJ |t        |z  z  j                  t         t
              rJ y )Nr   i0  )	rZ   r[   r7   rX   r0   r\   r0  rY   r   )r}  r  s     rk   test_has_multipler3  2  s(   	1QQTCF]##A558O8558O8558O8558O8uuQx<55Aq!55Aq!QAuuQx<adF<<??!Q$||AadF<<1!Q$||Aq!!!!rn   c                     t         t        z  dt        z  z   dz  } t        t        t               t         dk  fdt         dk  f| df      }|j	                  t               sJ |j	                  t              sJ |j	                  t
              rJ |j	                  d      sJ |j	                  d      sJ |j	                  d      rJ |j	                  |       sJ |j	                  t              sJ |j	                  t              rJ y )Nr%  r   rO  rI  Trl  )rZ   r[   r5   r  r0  r\   hr}  r  s     rk   test_has_piecewiser7  I  s    	
1qseA1Q4R.1a1f+4y9A558O8558O8uuQx<558O8558O8uuQx<558O8558O8uuQx<xrn   c                  (   t        dd      \  } }}t        t        t              z  t        t              z  t	        t        t
        z        z  | z  |z  |z  t        t        | z  |z        z  }|j                  t              sJ |j                  t        t
        z        sJ |j                  t        t        t              z        sJ |j                  t        t        t
              z        rJ |j                  t        | z        sJ |j                  t        | z  |z        sJ |j                  t        | z  |z        rJ |j                  t        | z  |z  |z        sJ |j                  t        | z  |z  |z        rJ |j                  t        t        t              z  | z  |z  |z        sJ |j                  t        t        t              z  | z  |z  |z        rJ |j                  t        t        t
              z  | z  |z  |z        rJ |j                  t        t        t              z        sJ |j                  t        t        t              z         rJ t        t
        z  t        z  j                  t        t        z        sJ y )Nr  Fr  )	r)   rZ   r<   r7   r/   r[   r8   r0  r\   )r  r  r  r}  s       rk   test_has_iterativer9  X  s   g51GAq!	%(
3q6#ac("1$Q&q(QqSU3A558O8551::553q6??uuQs1vX551::551Q<<uuQqSU|551Qq>>uuQqSU1W~553q6!Aa   uuQs1vXaZ\!^$$$uuQs1vXaZ\!^$$$5558uuQQZ   EAI??1q5!!!rn   c                     t        t        dz  t        t        t        z  t        z        z   t        dt        t        z   t        z   f      } | j                  t        t        z         sJ | j                  t        t        z         sJ | j                  t        t        z         sJ | j                  t        t        z        sJ | j                  t        t        z        sJ | j                  t        t        z        sJ | j                  dt        z  t        z         rJ | j                  dt        z  t        z        rJ y )Nr   r   )r>   rZ   r7   r[   r\   r0  )r}  s    rk   test_has_integralsr;  n  s    AAaCE
"Q1q519$56A55Q<<55Q<<55Q<<551::551::551::uuQqS1W~uuQqSU||rn   c                  V   t        t        t              j                  t              sJ t        t        t              j                  t              rJ t        t        t              t        t                    j                  t              sJ t        t        t              t        t                    j                  t              rJ t        t        t              t        t                    j                  t
              sJ t        t        t              t        t                    j                  t        t                    sJ t        d      j                  d      sJ t        d      j                  t        j                        sJ t        d      j                  d      rJ y )NTrI  )	r   rZ   r[   r0  r\   r}  r  r&   r+  r   rn   rk   test_has_tupler=  }  s   A;??1Q{q!!!1qt  ###QqT1Q4 $$Q'''1qt  ###1qt  1&&&
 ;??4   ;??166"""T{q!!!!rn   c                      ddl m} m} t        | z  |z  j	                  t              sJ t        | z  |z  j	                  t
        t              du sJ y )Nr   r  r   F)sympy.physics.unitsr  r   rZ   r0  r[   r\   r?  s     rk   test_has_unitsrA    s>    (aCE;;q>>aCE;;q!%%%rn   c                  >   t        t        dz  t        t        z  t        t              z  z   t        t        t
              } | j                  t              sJ | j                  t        t        t              sJ | j                  t        t        t        t
              sJ y rh  )rC   rZ   r[   r7   r\   rX   r0  )polys    rk   test_has_polysrD    se    1qs3q6z!1a+D88A;;88Aq!88Aq!Qrn   c                  X    t        t        t        f      j                  t              sJ y rb   )r?   rZ   r[   r0  r   rn   rk   test_has_physicsrF    s    aV  ###rn   c                  8   t         dz  dt         z  t        z  z   } | j                         j                         | k(  sJ | j                  t         t              j                         | k(  sJ | t	        t               z   j                  t         t              J t        | t         t              }|j                         |k(  sJ t        d      j                         J t        d      j                  d      J t        t        d        t        t        d        y )Nr   T)	extensionc                  P    t        t        t              j                  t              S rb   )r   rZ   as_polyr   rn   rk   r   z&test_as_poly_as_expr.<locals>.<lambda>  s    5A;#6#6q#9 rn   c                  `    t        t        dz  t        t              j                  t              S rh  )r   rZ   r[   rJ  r   rn   rk   r   z&test_as_poly_as_expr.<locals>.<lambda>  s    5aA#6#>#>q#A rn   )
rZ   r[   rJ  as_exprr7   rC   r&   r3   rR   r  r6  s     rk   test_as_poly_as_exprrM    s    	1qs1uA99; A%%%99Q?""$)))AJ1%---Q1A99;! Q4<<>!!!7??T?*222
>9:
>ABrn   c                     t        t        j                        du sJ t        t        j                        du sJ t        t              du sJ t        t        t
        z         du sJ t        t        t        z
        du sJ t        t        t
        z        du sJ t        t        dz        du sJ t        t        dz        du sJ y )NFTrI  r   )boolr&   r  r  rZ   r[   r   rn   rk   test_nonzerorP    s    <5   ;$7d??A;$A;%!9!9!9rn   c                  ,   t        d      j                  du sJ t        d      j                  du sJ t        dd      j                  du sJ t        d      j                  du sJ t        j                  du sJ dt        z  j                  du sJ t        t
        z   j                  du sJ t        d      j                  du sJ t        t              j                  du sJ dt        d      z   j                  du sJ dt        d      z   j                  du sJ dt        t              z   j                  du sJ dt        d      z   t        z   j                  du sJ dt        dz  t        z  z   t        z
  j                  du sJ t        t        d            j                  du sJ t        dt              j                  du sJ t        dd	      j                  du sJ t        t        d      d      j                  du sJ t        j                  du sJ t        d
      } | j                  du sJ d| z  j                  du sJ t        dz  j                  t        d      j                  du sJ  G d dt              } |       }|j                  du sJ y )NgQ	@Ti  r%  r   rY  FrI  rl  r  c                       e Zd Zy)test_is_number.<locals>.ANrq  r   rn   rk   r  rS    rs  rn   r  )r   	is_numberr   r   rZ   r[   r0   r   r   r   r!   r   r   r^  r   )r  r  rT   s      rk   test_is_numberrU    sg   ;  D(((3<!!T)))Aq>##t+++A;  D(((;;%aC??e###E%%%q6t###q6u$$$AJ!!T)))AJ!!T)))AJ!!U***AJN%%...1QJN%%---&&%///q!9%'''q!9$&&&s1vq>##t+++<<4SA;;%aC??e###qD;;q!&&$...E 	A;;%rn   c                     t        d      j                         dk(  sJ t        d      j                         dt        d      ffk(  sJ t        d      j                         dt        d      ffk(  sJ t        j                         dt        ffk(  sJ t        dz
  j                         dt        ffk(  sJ t        dz   j                         dt        ffk(  sJ t        dz   j                         dt        ffk(  sJ t        t        z   j                  t              t        t        ffk(  sJ dt        z  j                  t              dt        z  d	fk(  sJ t        t        z   dz  } | j                  t              d| ffk(  sJ y )
Nr   r   r         @r         rI  rO  r%  r   )r&   as_coeff_addrZ   r[   r~  s    rk   test_as_coeff_addr[    sW   Q4')))S6 Q3	N222T7!a!D'_444>>A4y(((E!b1$Z///E!a!Y...E!a!Y...E"q1$i///aCa QqS"I---	
Q
A>>!QD	)))rn   c                     t        d      j                         dk(  sJ t        d      j                         dt        d      ffk(  sJ t        d      j                         dt        d      ffk(  sJ t        d      j                  d      t        d       d	fk(  sJ t        j                         dt        ffk(  sJ t         j                         dt        ffk(  sJ dt        z  j                         dt        ffk(  sJ t        t        z  j                  t              t        t        ffk(  sJ d
t        z   j                         dd
t        z   ffk(  sJ d
t        z   j                  t              d
t        z   d	fk(  sJ t	        t        t        z         } | j                  t              d| ffk(  sJ dt        t        z   z  } | j                  t              d| ffk(  sJ dt        z  j                  d      dt        ffk(  sJ dt        z  j                         ddt        ffk(  sJ t
         t        z  j                  d      dt
        t        ffk(  sJ y )Nr   rW  rX  rI  rY  rO  Frationalr   r%  r   T)r&   as_coeff_mulrZ   r[   r/   r   r~  s    rk   test_as_coeff_mulr`    s    Q4')))S6 Q3	N222T7!b1S6)_444T7/QsVGR=@@@>>A4y(((B2t*,,,aCAt9,,,aCa QI---E!a!a%]222E"q1ubk111AE
A>>!QD	)))	AE
A>>!QD	)))E/C!;>>>E!a#q]222CE.2Aw-???rn   c                     dt         dz  z  j                  t               dk(  sJ dt         dz  z  j                  t               dk(  sJ dt         dz  z  j                  t               dk(  sJ dt         dz  z  j                  t               d	k(  sJ dt         d
z  z  j                  t               dk(  sJ dt         d
z  z  j                  t               dk(  sJ dt         d
z  z  j                  t               dk(  sJ d
t         d
z  z  j                  t               dk(  sJ dt         d
z  z  j                  t               dk(  sJ dt         d
z  z  j                  t               dk(  sJ dt         dz  z  t        t         dz  z  z   j                  t               dt        z   dfk(  sJ t         t        d      z  dt         z  t        t         z  z   z  j                  t               t        d      dt        z   z  d
fk(  sJ t        }  | t        t               t               }|j                  t        t                     |d
fk(  sJ y )Nr%  rl  )r%  rl  r   )r   r%  )rl  r   r  rI  )r  rI  r   rM  )r   r   )rI  r   r  rO  )rO  r   rN  )rN  r   )rZ   as_coeff_exponentr   r0   r   r}  )Dfxs     rk   test_as_coeff_exponentre    s   adF%%a(F222adF%%a(F222adF%%a(F222adF%%a(F222adF%%a(F222adF%%a(F222adF%%a(F222adF%%a(F222q!tG&&q)W444q!tG&&q)W444adFR1W//2q2vqkAAAc!fHacBqDj!44Q7	QR!   	A	
1Q4B!%"a000rn   c                  t   dt         j                  fD ]p  } t        | t        z  dd      j	                  | t        z        | dt        z  z  k(  sJ | dt        z  z  j	                  | dt        z  z        | dt        z  z  k(  rpJ  t        t
        z  dz  j	                  t        dz  t
        z        t        t
        dz  z  k(  sJ t        t
        z  dz  j	                  t        dz  t
        z        J dt        z  j	                  d      t        k(  sJ dt        z  j	                  d      J dt        z  j	                  d      J t         j                  t        z  j	                  d      t        dz  k(  sJ t        t              j	                  t              J t        t              j	                  d	t        z        J t        j                  t               J d
dt        z  z
  j	                  d
      d	dt        z  z   k(  sJ d
dt        z  z
  j	                  d      J d
t        z  dt
        z  z
  dz
  j	                  d
      t        dt
        z  z   dz   k(  sJ d
t        z  t
        z  dt        dz  z  t
        z  z
  j	                  d
t
        z        dt        dz  z  t        z   k(  sJ dt        z  t
        z  dt        dz  z  t
        z  z   j	                  dt
        z        dt        dz  z  t        z   k(  sJ dt
        dz  z  t        z  j	                  dt
        z        J dt        z  j	                  d	      dt        z  k(  sJ t         j	                  d      t         u sJ t        j                  d      t        u sJ t        t
        z  dz  j                  d	      J t        d	z   j                  t              d	k(  sJ t        d	z   j                  dt        z        J t        d	z   j                  t               J t         d	z   j                  dt        z        J dt        z  dz   j                  t              t        dz   k(  sJ dt        z  dz   j                  d      dt        z  d	z   k(  sJ dt        z  dz   j                  d      dt        z  k(  sJ dt        z  dz   j                  d
      J dt        z  dz   j                  dt        z        J dt        z  dz   j                  dt        z        dk(  sJ t        j                  d      t        k(  sJ t        d      j                  t              J t        d      j                  d      t         j                  u sJ t        d      j                  d      t         j                  u sJ t        dt        z  dz         j                  t        d	z         t        dz   k(  sJ t        dt        z  dz         j                  t
        d	z         J t        dt        z  dz
        j                  t        d	z         J t        dt        z  dz
        j                  t
        t        z         J t        d	z   t        z  dz  t
        z   j                  t              j                         dt        z  t        z  dt        z  z   t
        z   k(  sJ t        d	z   t        z  dz  dt
        z  z   j                  t        dt
        z  z         j                         dt        z  t        z  dt        z  z   t
        z   k(  sJ t
        t        d	z   z  j                  t        d	z         J t
        d	z   t        d	z   z  dz   j                  t        d	z         t
        t        d	z   z  dz   k(  sJ t        t
        z   t        d	z   z  t        z   t
        z   dz   j                  t        t
        z         t        t        t
        z   z  dz   k(  sJ t        t
        z   dt        t
        z   t        d	z   z  z  z   dz   j                  t        t
        z   t        d	z   z        t        t
        z   t        d	z   t        t
        z   z  z   dz   k(  sJ t
        d	z   t        dt
        z  z   d	z   z  dz   j                  t
        d	z         t        dt
        z  z   t
        d	z   z  dz   k(  sJ t         t        t        z  z
  j                  t               t         t        z  k(  sJ dt        z  t
        d	z   z  t
        z   j                  t              t        dt
        z  dz   z  t
        z   k(  sJ t        dd      }t!        d      j#                         du sJ | t        z  t        z   j#                         |t        z  t        z
  j#                         k7  sJ t        t
        z
  j#                         t         t
        z   j#                         k7  sJ d	t        z
  t
        z
  j#                         du sJ d	t        z
  t
        z   j#                         du sJ t         t        t
        z  z
  t
        z  j#                         du sJ t        t        t
        z  z   t
         z  j#                         du sJ t        t        t
        z  z   t
        z  j#                         du sJ t         t
        z
  t        t
        z   z  j#                         du sJ  G d dt$        t&              } |t              }|| k(  sJ |j#                         du sJ t        t
        z
  j#                         du sJ t         t
        z   j#                         du sJ t        d	z
  j#                         du sJ d	t        z
  j#                         du sJ t        d      d	z
  j#                         du sJ d	t        d      z
  j#                         du sJ dt        z  dt
        z  z   j	                  d      }|j(                   |j*                  |j(                   j(                  k(  sJ y )Nr   r%  Fr  r   rl  rO  r  rI  rN  rY  rW  r          @rW   Tr  c                       e Zd ZdZd Zy)(test_extractions.<locals>.sign_invariantrI  c                     | S rb   r   r   s    rk   r   z0test_extractions.<locals>.sign_invariant.__neg__d  s    Krn   N)r   r   r   nargsr   r   rn   rk   sign_invariantrj  b  s    	rn   rm     )r&   Exp1r!   rZ   extract_multiplicativelyr[   r  r3   r   r   extract_additivelyr  r\   rT   r   r(   r   could_extract_minus_signr   r
   r   r,  )baserW   rm  rr  r  s        rk   test_extractionsrt    s
   AFF (47A &&tQw/4!A#;? 	? ?qs551Q3K 1Q3K( 	( ((
 qS1H..q!tax8AadFBBBqS1H..q!tax8@@@aC))!,111aC))!,444aC))"-555FF1H..q1QqS888G--a0888G--ac2:::%%qb)1111H..r2a!A#g===1H..q1999qD1Q3JN44R8A!GaKGGGqDFQq!tVAX771=1a4!KKKaCEAadF1H66qs;qAvzIIIq!tGAI//15===aC))!,!333C))!,333((+r111qS1H((+333E%%a(A---E%%ac*222E%%qb)111BF&&qs+333aC!G''*a!e333aC!G''*acAg555aC!G''*ac111aC!G''+333aC!G''!,444aC!G''!,111"a'''Q4""1%---R5##B'166111R5##A&!&&000QqS1W:((Q/1q5888QqS1W:((Q/777QqS1W:((Q/777QqS1W:((Q/777UAIaK!O//299;	!A!a  UAIaK!A#11!ac':AAC	!A!a  q1uI))!a%0888UQUOa33AE:	1q5	A  UQUOa!#a';;AEB	1q5	A  EAAA''!+??QQP	AQQ!#$ $ $UQ1Wq[!A%99!a%@	
QqS1q5A  B1H((!,1444aCQK!O//2a1qkAoEEEsD!ABK113t;;;BqD1H..0	
1q**,- - -E++-
a))+, , ,EAI//1T999EAI//1U:::R!A#XqL224===1WrN446$>>>1WaK113u<<<R!Va!e668EAAA4  
C3$;;'')U222E++-666BF,,.$666E++-666E++-555GaK113t;;;QK113u<<<
A#1*	.	.q	1B77gbggrww',,,,,rn   c                      ddt         t        fD ]0  } t        j                  |       J t        j                  |       0J  y rH  )r   r   rq  rp  )r&  s    rk   test_nan_extractionsrv  t  sG    As^ 7%%a(000++A.6667rn   c                  `   t         dz   j                  t         dz         dk(  sJ dt         z  j                  d      dk(  sJ t        dt         z   z  t         dz  z  j                  dt         z         t        t         dz  z  k(  sJ ddt         z  t         dt         z   z  z  z   j                  t         t         dt         z   z  z        dk(  sJ ddt         t        t        z   z  z  z   j                  t         t        t        z   z        dk(  sJ ddt         z  z   dt         dz  z  z   j                  d      dk(  sJ ddt         z  z   dt         dz  z  z   j                  d      dk(  sJ ddt         z  z   dt         dz  z  z   j                  t               dk(  sJ ddt         z  z   dt         dz  z  z   j                  t         dz        dk(  sJ ddt         z  z   dt         dz  z  z   j                  t         dz        dk(  sJ t          dz  t         t        z  z   j                  t               t	        dd      t        z   k(  sJ t          dz  t         t        z  z   j                  t                t
        j                  dz  k(  sJ dt         z  j                  dt         z        dk(  sJ dt         z  j                  dt         z        dk(  sJ t         t         z  j                  t         t        z        dk(  sJ dt         z  j                  t         d      dk(  sJ dt         z  j                  dt         z  d      dk(  sJ t        d	d
      \  } }| |z  j                  |       dk(  sJ | |z  j                  |      | k(  sJ | |z  t         | z  z   j                  |       dk(  sJ || z  t         | z  z   j                  |       |t         z   k(  sJ || z  t         | dz  z  z   j                  |       |k(  sJ | t         z  j                  |       dk(  sJ | |z  || z  z   j                  |       dk(  sJ d| |z   z  |z  j                  | |z   d      |k(  sJ d| |z   z  |z  j                  | |z   d      dk(  sJ dt        t               z  dt        t               j                  t               z  z   j                  t        t                     dk(  sJ t        t         t        z   dz  z  }t        t         t        z   dz  z  t        dt         z  dt        z  z   dz  z  z   }|j                  t              t         t        z   dz  k(  sJ |j                  t         t        z         dk(  sJ |j                  t              t         t        z   dz  dt         z  dt        z  z   dz  z   k(  sJ t         t        z   dt        z  z   j                  d      t         t        z   k(  sJ t          dt        z  z   j                  d      t         k(  sJ t         dt        z  z
  j                  d      dt        z  k(  sJ ddt         z  z   dt         dz  z  z   j                  d      dk(  sJ t          dt        z  z
  j                  d      t         k(  sJ t         t        d      t         z  z   j                  t        d            t         k(  sJ ddt         z  z   dt         dz  z  z   j                  t               dk(  sJ ddt         z  z   dt         dz  z  z   j                  t         dz        dk(  sJ ddt         z  z   dt         dz  z  z   j                  t         dz        dk(  sJ t        t         t        z   dz  z  j                  t         t        z   dz        t        k(  sJ t        t         t        z   dz  z  j                  t         t        z         dk(  sJ ddt         z  z   t         dz   t        z  z   j                  t         dz         t        k(  sJ t         dt        z  z   dz   j                  d      t         k(  sJ t         dt        z  z   dz   j                  t         d      dt        z  dz   k(  sJ t         dz  dt        z  z   dt         z  z   j                  t         dz  d      dt        z  dt         z  z   k(  sJ t        j                  dd      dk(  sJ t        j                  t         d      dk(  sJ t        dd
      \  }}}} |j                  |      dk(  sJ t        j                  |      dk(  sJ d|z  j                  |      dk(  sJ d|z   j                  t         |z        dk(  sJ dt         z  |z  |z  j                  t               d|z  |z  k(  sJ d|z   j                  t         |z  |z  t        z         dk(  sJ dt         z  |z  |z  j                  d|z        dk(  sJ ||z  ||z  |z  z   j                  |      d|z   k(  sJ ||z  ||z  |z  z   j                  |d      |k(  sJ ||z  ||z  z   j                  |      dk(  sJ ||z  ||z  |z  z   j                  ||z        |k(  sJ ||z  ||z  |z  z   j                  ||z  d      dk(  sJ ||z  ||z  |z  z   j                  ||z  d      d|z   k(  sJ t         t        z  j                  t        d      t         t        z  k(  sJ t         |z  t        |z  z   t        |z  z   j                  |      t         t        z   k(  sJ ||z  ||z  z   ||z  z   j                  |d      ||z   k(  sJ t         |z  |z  |z  t        |z  |z  |z  z   t        |z  z   j                  |d      t         |z  t        |z  z   k(  sJ t         |z  |z  |z  t         |z  |z  |z  z   t        |z  z   j                  |d      ||z   k(  sJ t         |z  |z  |z  t         |z  |z  |z  z   t        |z  z   j                  |      t         |z  k(  sJ y )NrI  r%  r   r   rl  rO  rY  r  zn1 n2Fr  )rightzn m o lT)rZ   coeffr\   r[   r   r&   r  r   r)   r}  r   r3   )r  r  r  expr2rW   r  r  ls           rk   
test_coeffr|  z  s6   E==Q1$$$aC;;q>Qq1uIadN!!!a%(AadF222!AAJ%%aAE
l3q888!a!e*##AAJ/1444!Ga1f##A&!+++!Ga1f##B'1,,,!Ga1f##A&!+++!Ga1f##AqD)Q...!Ga1f##AqD)Q...BqD1Q3Ja HROa$7777BqD1Q3Jqb!QUU1W,,,aC;;qsq   aC;;qsq   CE==2"$$$qD<<1"""qD<<1a A%%%W%0FBrE==!!!rE=="""rEAbDL#q(((rEAbDL#rAv---rEAb!eGO""2&",,,E==!!!rEBrEM  $)))rBwKN!!"r'!3r999rBwKN!!"r'!3q888adFQqtyy|^#**1Q40A555a!eaZ<Dq1uqjL1acAaCi!^++E::a=QUQJ&&&::a!e!!!;;q>a!eaZ1Q319q.8888EAaCKq!QU***B1HB1$$$!G??2!A#%%%!Ga1f##A&!+++B1HA1"$$$Q	M  a)Q...!Ga1f##A&!+++!Ga1f##AqD)Q...!Ga1f##AqD)Q...q1uqjLQ
+q000q1uqjLA&!+++!Gq1uai&&q1u-222!GaKq!Q&&&!GaKq!$!a///qD1Q3J1##AqD!,!ac	999771a=A771a=A6JAq!Q1771:??771:??aC;;q>QE==1"""aCE!G??11Q&&&E==1Q#q(((aCE!G??1Q31$$$aC!A#a%Kq!QU***aC!A#a%Kq-222aC!A#IQ1$$$aC!A#a%Kqs#q(((aC!A#a%Kqs$/1444aC!A#a%Kqs$/1q5888aC;;q!!###aC!A#I!O""1%Q...aC!A#I!O""1D"1QU:::aCE!Gac!eAg!#**1D*9QqS1Q3YFFFaCE!Gac!eAg!#**1D*9QUBBBaCE!Gac!eAg!#**1-1444rn   c                  >   t        d      \  } }t        d      }d| dz  z  d| z   ||       j                  | d      z  | dz   ||       j                  | d      z  z   z  }|j                         }|j	                   ||       j                  |             d| z  k(  sJ y Nzr, kappapsirI  r   r)   r   r   r   ry  r&  kappar  r  s       rk   test_coeff2r    s    z"HAu
5/C	!Q$!A#c!fkk!Q''!Q$QQ1B*BBCA	
A773q6;;q>"ac)))rn   c                  :   t        d      \  } }t        d      }d| dz  z  d| z   ||       j                  | d      z  | dz   ||       j                  | d      z  z   z  }|j                         }|j	                   ||       j                  | d            dk(  sJ y r~  r  r  s       rk   test_coeff2_0r    s    z"HAu
5/C	!Q$!A#c!fkk!Q''!Q$QQ1B*BBCA	
A773q6;;q!$%***rn   c                  j   t         t        t        z   dz  z  } t         t        t        z   dz  z  t         dt        z  dt        z  z   dz  z  z   }| j                  t               t        t        z   dz  k(  sJ |j                  t               t        t        z   dz  dt        z  dt        z  z   dz  z   k(  sJ y rh  )r\   rZ   r[   ry  )r  rz  s     rk   test_coeff_expandr    s    a!eaZ<Dq1uqjL1acAaCi!^++E::a=QUQJ&&&;;q>a!eaZ1Q319q.8888rn   c                      t        j                  t               t         dz  dz  k(  sJ t        j                  t         ddf      t        j                  k(  sJ y )Nr   r   rI  )rZ   r=   r&   r  r   rn   rk   test_integrater    sA    ;;q>QT!V###;;1ay!QVV+++rn   c                     t        j                         t         t        j                  fk(  sJ t         t        z  t
        z  j                         t         t        z  t
        z  t        j                  fk(  sJ t         t        z   t
        z   j                         t         t        z   t
        z   t        j                  fk(  sJ t         t        z   t
        z  j                         t         t        z   t
        fk(  sJ t         dz  t        dz  z  j                         t         t        z  dfk(  sJ t         t
        z  t        t
        z  z  j                         t         t
        z  t        t
        z  z  t        j                  fk(  sJ y rh  )rZ   as_base_expr&   r  r[   r\   r   rn   rk   test_as_base_expr    s   ==?q!%%j(((aCE QqSUAEEN222EAI""$QAEE(::::UQJ##%!a%333qDAI""$1a000qDAI""$AadAEE(::::rn   c                  b   t        t        t        t              d      sJ t        t        t        t        d      d      sJ t        t	        t        t              d      sJ t        t	        t        t        d      d      sJ t        t	        ddd      dd      dz   } t        | d      sJ y )Nis_commutativeFr  r   r%  rI  )hasattrr   rZ   r[   r!   r  s    rk   test_issue_4963r    s    3q!9.///3q!e,.>???3q!9.///3q!e,.>???s1a%(!e<q@D4)***rn   c                  
   t        dt        dt        z  t        z  dz        dz   z        dt        dt        z  t        z  dz        dz   z  j                         k(  sJ t	        dt        z  dt
        z  z         dt        z  dt
        z  z   j	                         k(  sJ t        t        t              d      t        t              j                  d      k(  sJ t        ddt        d      z   z        ddt        d      z   z  j                         k(  sJ t        dt        t        t        t              z  z   z  d      dt        t        t        t              z  z   z  j                  d      k(  sJ t        t        t
        z  t        t        z  z  t
        t        z  z  d	
      t        t
        z  t        t        z  z  t
        t        z  z  j                  d	
      k(  sJ t        t        z  t
        t        z  z  j                  d      t        t
        z  t        z  k(  sJ t!        t        t
        z  t        t        z  z  t
        t        z  z        t        t
        z  t        t        z  z  t
        t        z  z  j!                         k(  sJ t#        dt        z  dt
        z  z         dt        z  dt
        z  z   j#                         k(  sJ t%        t        t        dz  z  t        t        dz  z  z   t        t        z  z   t        t        z  z
  t        z   t              t        t        dz  z  t        t        dz  z  z   t        t        z  z   t        t        z  z
  t        z   j%                  t              k(  sJ t'        t
        t
        dz   z  t
        dz   z  t
              t
        t
        dz   z  t
        dz   z  j'                  t
              k(  sJ t)        t
        t        dz   z  t        dz   z        t
        t        dz   z  t        dz   z  j)                         k(  sJ t+        t-        t              t-        t        dz
        z        t-        t              t-        t        dz
        z  j+                         k(  sJ t/        t        dz  dt        z  z   dz         t        dz  dt        z  z   dz   j/                         k(  sJ t1        t        t        dz              t        t        dz        j1                         k(  sJ t3        t        dz  dt        z  z   dz   t        dz   z        t        dz  dt        z  z   dz   t        dz   z  j3                         k(  sJ y )NrI  r%  r   Tdeepr   F)symbolicall)combine)forcer  )rN   r/   r   rZ   rL   r[   rO   r0   rK   r3   rT   rU   rV   rI   r\   rX   rM   rD   rJ   r@   rG   rH   r<   rA   r   rB   r   rn   rk   test_action_verbsr    s#   QAbDF1H)*+	
C"QqMA	))+, , ,1Q319!A#!)!4!4!6666CF&3q6*;*;*;*FFFF1a$q'k?#1tAw;'@'@'BBBB1a!DG)m$u5	
A$q'	M	##U#34 4 41a419QT>51	
Aad1a4   /0 0 0qDAIT*qsQh666AqDAIadN#1QT	!Q$'@'@'BBBBAaC!A#I1Q319"6"6"88881QT6AadF?QqS(1Q3.2A6	
1a4!AqD&1Q3	1	$q	(11!45 5 5AEAE"A&1a!e9a!e+<*C*CA*FFFFAq1uIq1u%&1a!e9a!e+<*F*F*HHHHU1XeAaCj()eAhuQqSz.A-L-L-NNNN!Q$1*q.!adQqSj1n%<%<%>>>>$q!t*ad!2!2!44441a4!A#:>AE*+A!a!a%0H/P/P/RRRRrn   c                     t        j                         t         dik(  sJ t         t        z  t        z  j                         t         t        t        dik(  sJ t	        ddd      j                         t        d      t        d      ik(  sJ t         t        z  j                         t           dk(  sJ t         t        z   j                         t           dk(  sJ y )NrI  r   Fr  r   )rZ   as_powers_dictr[   r\   r   r&   r   rn   rk   test_as_powers_dictr    s    !Q'''qDF""$Aq!444q!e$335!A$!EEEaC!!$)))E!!#A&!+++rn   c            
         t         j                  t        t        t        t        z  dg} | D cg c]3  }t	        dt        z  dt        z  t        d      j                         |   5 c}g dk(  sJ | D cg c]5  }t	        dt        z  dt        z  t        dd      j                         |   7 c}g dk(  sJ | D cg c]#  }dt        z  t        z  j                         |   % c}g dk(  sJ | D cg c]#  }dt        z  t        z  j                         |   % c}g d	k(  sJ dt        z  t        z  j                         dt        z  t        z     d
k(  sJ t        t        dz   z  t        z  t        t        z  z   t        t        z  z   }|j                  t              t        t        dt        z  t        t        t        dz   z  t        ik(  sJ |j                         j                  t              t        dz  t        t        t        t        z   dt        z  t        ik(  sJ t        j
                         t        t         j                  ik(  sJ y c c}w c c}w c c}w c c}w )NrI  r%  r   )r%  r   rI  r   r%  Fr  )r   r   r   r%  r   rX  )r   r   r   rX  r   r   )
r&   r  rZ   r[   r   as_coefficients_dictrT   rU   rV   r   )checkr  r  s      rk   test_as_coefficients_dictr    s   UUAq!A#q!ECHIaC!QqS!Q446q9I    !QqS!Q/DDFqI ./ / /7<=!QqSU((*1-=  9>?ASU1W**,Q/?  E!G))+CE!G4999	
AE1qs	QqS	 B""1%!Q!Q	1q5	1*   99;++A.1a4Aq1uac12MMMM!!#155z111 J=?s   8I3:I;(I1(Ic                  b   t        dd      } t        | z   j                         g t        | z   ggk(  sJ t        t        z   j                         t        t        z   gg gk(  sJ t        t        z  j                         t        t        gg gk(  sJ t        t        z  | z  | dz   z  j                  d      t        t        h| d| z   ggk(  sJ t        t        t        d      j                  dd      t        hg gk(  sJ t        t        t        d	z  d      j                  dd      t        t        d	z  hg gk(  sJ t        t        d
        t        t        t        t        d      j                         t        t        t        gg gk(  sJ dt        z  j                         ddt        gg gk(  sJ y )Nr  Fr  rI  Tcsetr  )r  warnr   c                  N    t        t        t        d      j                  d      S )NFr  Tr  )r   rZ   args_cncr   rn   rk   r   ztest_args_cnc.<locals>.<lambda>:  s    s1a%8AAtAL rn         rO        ?)r)   rZ   r  rT   r[   r   rR   r\  )r  s    rk   test_args_cncr  ,  s   'AE	a!eW  E
a%"  aC>>
Q  aCE1q5M###.
Q!QU  q!e$--4e-D
b	  q!Q$'00d0G
QTB  
:LMq!Q'002
QB   E2sA,!3333rn   c                     t        dd      } t        | z   }|j                  du sJ  |j                  t              j                  sJ  |j                  t        t              j                  sJ  |j                  t        |       j                  du sJ  |j                  t        t        |       j                  du sJ t        | z  }|j                  du sJ |j                  t              j                  sJ |j                  |       j                  du sJ |j                  t        t              j                  sJ |j                  t        |       j                  du sJ |j                  t        t        |       j                  du sJ |j                  t        | d      j                  du sJ |j                  t
        j                        t
        j                  u sJ y )NrW   Fr  )reeval)r(   rZ   r  _new_rawargsr[   r&   r  )rW   rT   r  s      rk   test_new_rawargsr  A  s   s&A	AAu$$$1>>!++++1>>!Q....1>>!Q..%7771>>!Q"11U:::	!Au$$$>>!++++>>!++u444>>!Q....>>!Q..%777>>!Q"11U:::>>!Qu>-<<EEE>>!%% AEE)))rn   c                      t        d      dk(  sJ t        d      dk(  sJ t        t        t        z   d      j                  sJ y )NFr  r   rI  )r   r   rZ   r[   is_Addr   rn   rk   test_issue_5226r  U  sB    !###!###q1uu%,,,,rn   c                     t         j                  j                  t               k(  sJ t        j                  t        hk(  sJ t        t        t        dt        f      j                  t        hk(  sJ t        t        t        dt        f       j                  t        hk(  sJ t        j                  t               k(  sJ t        t        z  j                  t        hk(  sJ y rT  )r&   r  free_symbolsr|  rZ   r>   r[   rQ   r   rn   rk   test_free_symbolsr  [  s    55&&&>>aS   A1ay!..1#555a!Q##11aS888&&&1H""qc)))rn   c                  (   t        j                  t               sJ t        j                  t              rJ t         t        z   j                  t               sJ t        t        z   j                  t         t        f sJ t	        t               j                  t               sJ t	        t               j                  t	        t                     sJ t        t	        t               t	        t               dt        f      j                  t              sJ t        t	        t               t	        t               dt        f      j                  t               rJ t        t	        t               t	        t               dt        f      j                  t	        t                     rJ t         dz   t        z   j                  t         dz         sJ t         dz   t        z   j                  t         dz         rJ ddt         z  t        z  z   j                  dt         z        sJ t        t        d        t        dd      } t        | t         dkD  fd      j                  |       sJ t        dt         dkD  fd      j                  |       rJ t        t        d        y )NrI  r   r%  c                  @    t        j                  t         t        h      S rb   rZ   has_freer[   r   rn   rk   r   ztest_has_free.<locals>.<lambda>s  s    ajj!Q0 rn   )rl  Tc                  6    t        j                  t        g       S rb   r  r   rn   rk   r   ztest_has_free.<locals>.<lambda>x  s    ajjB/ rn   )
rZ   r  r[   r\   r}  r>   rR   r  rF   r5   r   s    rk   test_has_freer  e  s   ::a==zz!}EAEaV$$$Q4==Q4==1AaD1Q4A,'00333!qtQl+44Q777!qtQl+44QqT:::EAIA&&&A	##AE***!AI!$$$
901!QAaQZ+44Q777!QUY/88;;;
9/0rn   c                  "   t         dz   j                  t         h      sJ t         dz   dz  j                  t         dz   h      sJ t         t        z   dz   j                  t         dz   h      rJ t        t        d        t        t        d        y )NrI  r   c                  4    t        j                  t               S rb   rZ   	has_xfreer   rn   rk   r   z test_has_xfree.<locals>.<lambda>  s    akk!n rn   c                  6    t        j                  t         g      S rb   r  r   rn   rk   r   z test_has_xfree.<locals>.<lambda>  s    akk1#. rn   )rZ   r  r[   rR   r  r   rn   rk   test_has_xfreer  {  sv    EaS!!!UQJ!!1q5'***A	$$a!eW---
9,-
9./rn   c                  z    t        dd      } | t        d      z  t        d      z  | t        d      z  dz  k(  sJ y )NrZ   Fr  r   r  r%  )r(   r3   r  s    rk   test_issue_5300r    s9    s&AT!W9T!W$q'	!+++rn   c                  V    ddl m}  t        t        z   | t        t        z        k(  sJ y )Nr   floor)#sympy.functions.elementary.integersr  rZ   r[   r  s    rk   test_floordivr    s    96U1q5\!!!rn   c                     t        d      j                         t        d      t        d      fk(  sJ t        dd      j                         t        dd      t        d      fk(  sJ t        d      j                         t        d      t        d      fk(  sJ t        d      j                         t        d      t        d      fk(  sJ t        d      t        z  j                         t        d      t        fk(  sJ t        dd      t        z  j                         t        dd      t        fk(  sJ t        d      t        z  j                         t        d      t        fk(  sJ t        d      t        z  t
        z  j                         t        d      t        t
        z  fk(  sJ t        dd      t        z  t
        z  j                         t        dd      t        t
        z  fk(  sJ t        d      t        z  t
        z  j                         t        d      t        t
        z  fk(  sJ t	        j                         t        j                  t        fk(  sJ t        t
        z  j                         t        j                  t        t
        z  fk(  sJ t         t        z  j                  d      dt        t        z  fk(  sJ y )	Nr%  rI  rl        @        Tr]  rO  )	r   as_coeff_Mulr   r   rZ   r[   r&   r  r   r   rn   rk   test_as_coeff_Mulr    s'   1:""$WQZ(@@@@Aq>&&(Xa^WQZ,HHHH:""$sWQZ(@@@@:""$sWQZ(@@@@AJqL&&(WQZO;;;QN1**,!Q0CCCC#JqL&&(U3ZO;;;AJqLN((*wqz1Q3.????QN1Q,,.8Aq>1Q32GGGG#JqLN((*uSz1Q3.????!%%+++aCAEE1Q3<///CE.2r!t*<<<rn   c                  B   t        d      j                         t        d      t        d      fk(  sJ t        dd      j                         t        dd      t        d      fk(  sJ t        d      j                         t        d      t        d      fk(  sJ t        d      t        z   j                         t        d      t        fk(  sJ t        dd      t        z   j                         t        dd      t        fk(  sJ t        d      t        z   j                         t        d      t        fk(  sJ t        d      t        z   j                  d      dt        d      t        z   fk(  sJ t        d      t        z   t
        z   j                         t        d      t        t
        z   fk(  sJ t        dd      t        z   t
        z   j                         t        dd      t        t
        z   fk(  sJ t        d      t        z   t
        z   j                         t        d      t        t
        z   fk(  sJ t	        j                         t        j                  t        fk(  sJ t        t
        z  j                         t        j                  t        t
        z  fk(  sJ y )Nr%  r   rl  r  Tr]  )r   as_coeff_Addr   r   rZ   r[   r&   r  r   rn   rk   test_as_coeff_Addr    s   1:""$WQZ(@@@@Aq>&&(Xa^WQZ,HHHH:""$sWQZ(@@@@AJN((*wqz1o===QNQ,,.8Aq>12EEEE#JN((*uSz1o===#JN(($(7AuSzA~;NNNNAJNQ,,.71:q1u2EEEEQNQ"002x1~q1u6MMMM#JNQ,,.5:q1u2EEEE!&&!,,,aCAFFAaC=000rn   c                     dt         dz  z  dt         z  t        t        t                     t        t               t         t        t               dz  t         dz  g} t        | t              | k(  sJ t         dt         z  dt         dz  z  dt         dz  z  t         t        z  dt         t        z  z  t        t               t        t               t        z  t        t         dz        t        t               t        t         dz        t        t               g} t        | t              | k(  sJ t         dz   t         dz  t         z   dz   t         dz  t         dz  z   t         z   dz   g} t        | t              | k(  sJ t        d      t         dt        z  dz  z
  t         dt        z  dz  z   t         dt        z  z
  dz   t         dt        z  z   dz   g} t        | t              | k(  sJ t        d      t        d      t        d      t        ddd      t        d      t        d      t        d      t        ddd      g} t        | t              | k(  sJ t        t               t        t               t        t               t        t               t        t               t        t               g} t        | t              | k(  sJ t        t         t              t        t         t               t        t         t        t               g} t        | t              | k(  sJ dgddgg} t        | t              | k(  sJ ddgddgg} t        | t              | k(  sJ ddgg dg} t        | t              | k(  sJ t         t         it         t        ig} t        | t              | k(  sJ dhddhg} t        | t              | k(  sJ t#        d      t#        d      gx\  }}} t        ||gt              | k(  sJ y )NrI  r   r%  keyrl  )rI  r   r%  rZ   )rZ   r3   sortedr'   rW   r7   r8   r6   r&   r   r}  r  r/   r-   r   r[   r\   r*   )r  rT   rU   s      rk   test_expr_sortingr    s+   q!tVQqS$tAw-a!T!WaZAFE%-.%777!Qq!tVQq!tVQT1QT63q63q619AYAAqD	3q63E%-.%777UAqD1HqL!Q$A+/A"56E%-.%777qT1qs1u9a!A#a%iQqS1a!A#gkBE%-.%777qT1Q41qAqz1Q41qtQq!QZHE%-.%777qT1Q4QQQ1>E%-.%7771a[%1+uQ1~6E%-.%777S1a&ME%-.%777VaVE%-.%777VYE%-.%777!Wq!fE%-.%777S1a&ME%-.%777#Jc
++DAq51a&./5888rn   c                     t        j                         t         gk(  sJ dt         z  t         t        z  z  t        t               z  t	        t               z  j                         t        d      t         t         t        z  t        t               t	        t               gk(  sJ t        d      t        d      t        d      t        ddd      t        d      t        d      t        d      t        ddd      g} t        |  }|j                         | k(  sJ t        dd      \  }}||z  j                         ||gk(  sJ ||z  j                         ||gk(  sJ y )Nr   rI  r%  zA,BFr  )
rZ   as_ordered_factorsrW   r7   r8   r   r}  r  r   r)   )r   r  r  r  s       rk   test_as_ordered_factorsr    s   !aS(((aC1HSVOCF"668AJ1a4QQ01 1 1 aD!A$!a1aj!A$!adAaAJGD:D""$,,,5e,DAqaC##%!Q///aC##%!Q///rn   c                     t        j                         t         gk(  sJ t        t               dz  t        t               z  t        t               t        t               dz  z  z   dz   j                         t        t               dz  t        t               z  t        t               t        t               dz  z  dgk(  sJ t	        d      t	        d      t	        d      t	        ddd      t        d      t        d      t        d      t        ddd      g} t        |  }|j                         | k(  sJ ddt        d      z  t        z  t         z  z   j                         dt        z  t         z  t        d      z  dgk(  sJ ddt        z  z   j                         ddt        z  gk(  sJ ddt        z  z   j                         ddt        z  gk(  sJ ddt        z  z
  j                         ddt        z  gk(  sJ ddt        z  z
  j                         ddt        z  gk(  sJ ddt        z  z   j                         ddt        z  gk(  sJ ddt        z  z   j                         ddt        z  gk(  sJ ddt        z  z
  j                         ddt        z  gk(  sJ ddt        z  z
  j                         ddt        z  gk(  sJ t         dz  t        dz  z  t         t        dz  z  z   t        z   dz   }|j                  d	      t         dz  t        dz  z  t         t        dz  z  t        dgk(  sJ |j                  d
	      t         t        dz  z  t         dz  t        dz  z  t        dgk(  sJ |j                  d	      dt        t         t        dz  z  t         dz  t        dz  z  gk(  sJ |j                  d	      dt        t         dz  t        dz  z  t         t        dz  z  gk(  sJ t        d      }|j                  d      |dfg|gfk(  sJ y )Nr   rI  r%  rl  rN  rW  rg  lex)ordergrlexzrev-lexz	rev-grlexr  T)data))r  r  )rI  r   )rZ   as_ordered_termsr7   r8   r}  r  r   r3   r   r   r[   r)   )r   r  r   r  s       rk   test_as_ordered_termsr    s   A3&&&FAIc!fs1vc!fai//!3EEGFAIc!fc!fSVQY.23 3 3 aD!A$!a1aj!A$!adAaAJGD:D  "d***$q'	"Q002qtAvd1g~q6IIII1W&&(Q!H4441H&&(R1I5551W&&(Q1I5551H&&(RAJ6661W&&(Q!H4441H&&(R1I5551W&&(Q1I5551H&&(RAJ666	1QT	AadFQ"AE*q!tAqDy!AqD&!Q.GGGGG,1a4AadAq0IIIII.1a1a4Aad2KKKKK0Q1a419a1f4MMMMA4(q2H.I-JQC,PPPPrn   c                  F    ddl m} m} t        |  |gd       |  |gk(  sJ y )Nr   r?  c                 "    | j                         S rb   )sort_key)args    rk   r   z+test_sort_key_atomic_expr.<locals>.<lambda>  s    3<<> rn   r  )r@  r  r   r  r?  s     rk   test_sort_key_atomic_exprr    s'    (A2q'9:r1gEEErn   c                  >     t        t              j                  t        t        dd       t        d      t        d      z
  k(  sJ t        t        z   t        t         fd       t        t         fd       t        t        z
   t        t         fd       t        t        d        t         t        t        t        z
        z     j                  t        t         t              t         k(  sJ   j                  t        t        t               t        k(  sJ y )Nr   rI  c                        j                   t        t        j                  t              j                  t
        t        t        j                        S rb   _eval_intervalrZ   r&   r  r   r[   r  s   rk   r   z$test_eval_interval.<locals>.<lambda>  s5    (8(8(8AFFB(G(V(VWXZ\^_^d^d(e rn   c                        j                   t        t        j                  t              j                  t
        t        j                  t              S rb   r  r  s   rk   r   z$test_eval_interval.<locals>.<lambda>  s5    (8(8(8AFFB(G(V(VWXZ[Z`Z`bd(e rn   c                        j                   t        t        j                  t              j                  t
        t        t        j                        S rb   )r  rZ   r&   r  r   r[   r  s   rk   r   z$test_eval_interval.<locals>.<lambda>  s5    (8(8(8AEE2(F(U(UVWY[]^]b]b(c rn   c                  8    t        j                  t         d d       S rb   )rZ   r  r   rn   rk   r   z$test_eval_interval.<locals>.<lambda>  s    q//4> rn   )
r/   rZ   r  r   r[   rR   rv  r\  r9   r   r  s   @rk   test_eval_intervalr    s     3q6  %1a.1SVc!f_DDD 	
!A
 ef
 ef	AA
 cd
:>?	
9QUA1AsB'A2---1ArB3'1,,,rn   c                      t        dt        z        j                  t        t        j                  t        j
                        t         dz  t        d      z   k(  sJ y )NrI  r   )r;   rZ   r  r&   r  r  r   r   rn   rk   test_eval_interval_zoor  $  s=    ac7!!!QVVQUU3s1ur!u}DDDrn   c                     dt         dz   dz  z  j                         dt         dz   dz  fk(  sJ dt         z  dz   j                         ddt         z  dz   fk(  sJ t         dz  dz   j                         t        j                  t         dz   fk(  sJ dt         z  dz   t         dz  dz   z  } | j                         d   dk(  sJ ddt         z  z   dz  } | j                         d   dk(  sJ dt         z  j                         ddt         z  fk(  sJ dt         z  t        dz  z   j                         t        j                  dt         z  t        z   fk(  sJ dt         z  j                         dt          fk(  sJ t        d	t        z  d
z  dt         z  dt        z  dz  d      j                         t        j                  dz  dt         z  dt        z  z   dt        z  z   fk(  sJ t        j                  t        j                  t        j                  fD ];  }|t         dz  z   j                         t        j                  dz  |t         z   fk(  r;J  t        j                  dt         z  dz  z   dt        z  d
z  z   j                         t        j                  dz  dt         z  dt        z  z   t        z   fk(  sJ t        j                  j                         t        j                  t        j                  fk(  sJ y )Nr%  rI  r   r  r   r  g       @rN  r   r  r   Fr     g      @   r  rl  r  )rZ   	primitiver&   r  r[   r   r\   r  r  r  r  r   r  )r  r  s     rk   test_primitiver  )  s   q1uqjL##%!a!eaZ888aC!G Q!aL000aC!G QVVQUO333
A#'AaC!G	B<<>!!!!
ac'AB<<>!!!!E1c!e*,,,EAaCK""$Q(;;;;qD!aR(((qs1uc!eQqSUU3==?	
r3q52a4<"Q$&'( ( (jj!,,a.?.?@ AaC""$UU1Wa!e 	  JJ1Q1Q&113	
r2a4"Q$;#$% % %66!%%000rn   c                      dt         z   } d| z  j                  |       dk(  sJ d| z  j                  d| z        dk(  sJ d| z  d| z  z  j                  |       d| z  k(  sJ y )NrI  r   rl  r%  r  )rZ   rp  r  s    rk   test_issue_5843r  >  sr    	AAaC))!,111aC))!A#.!333qS1Q3K11!4!;;;rn   c            
      d   ddl m}  t        t        t        ddf      j	                         du sJ t        t        t        dt
        f      j	                         du sJ t        t        t        dt
        f      j	                  t              du sJ t        t        t        dt
        f      j	                  t
              du sJ t        t        t        dt
        f      j	                  t              du sJ t        t        t              dz  z  t        t        t              dz  z  z   t        z
  }|j	                         du sJ |j                  t        t        t        di      |j                  t        t        t        di      cxk(  rdk(  sJ  J t        j                         du sJ t        j                  t              du sJ t        t        t        z        j	                         du sJ  | t        t        t        t        t        dt
        f            du sJ  | t        t        t        t        t        dt
        f            du sJ t        d      j                  sJ  | t        t        t        t                    du sJ t        t        t        j                   d	      j	                         du sJ t        t        j                   t        d	      j	                         du sJ dt        z  j	                         du sJ t        t        d      t        d      d	      j	                         du sJ t#        d
d      \  }}|d|z  z   j	                         du sJ t%        j                         du sJ dt$        z  j	                         du sJ t        t$        z  j	                         du sJ y )Nr   )checksolrI  r  TFr   r%  r  zz1 z2)zero)sympy.solvers.solversr  r   rZ   is_constantrW   r[   rT   r8   r7   r^  r   r0   r}  r!   r&   r  r)   rQ   )r  r  z1z2s       rk   test_is_constantr  E  s   .q1a*))+t333q1a)((*e333q1a)((+t333q1a)((+u444q1a)((+t333	
3q619qQ{	"Q	&B>>t###77Ar1a=!RWWaQ]%;@q@@@@@==?e###==t###qs8!U***Aq#a!Q+,555Aq#a!Q+,555Q4Aq!A$5(((q!&&5)5574???qvvq5)5575@@@qD5(((qtQqTE*668D@@@W4(FB2I""$,,,$&&&eG  "d***eG  "e+++rn   c                     dt        d      z
  t        d       dz  t        d      dz  z
  dz  z   j                  d      sJ t        dz  dz
  j                  t        dz   t        dz
  z        sJ t        t              dz  t	        t              dz  z   j                  d      sJ t
        t        t              dz  z  t
        t	        t              dz  z  z   j                  t
              sJ t        d      } d| | t        z  z   z  d| z  dt        z   z  z   j                  d      sJ t        t        dz         j                  t        dz   t        t              z        sJ t        d      j                  dt        d      z        d	u sJ t        d      t        d      z  j                  t        d            d	u sJ t        d      t        d      z   j                  d      d	u sJ t        d      t        z   j                  d      d	u sJ t        j                  d      d	u sJ dt        dz  z  j                  d      d	u sJ dt        d      d
z  z   dt        j                  d
z  z  z  dt        j                  d
z  z  t        z  z   }|dk7  r|j                  d      sJ t        t              j                  d      d	u sJ dt        d      z  t        t        d      dz  z  z  dddt        z  z  z   t        d      dz  z  z  dz  dt        d      z  t        t        d      dz  z  z  dddt        z  z  z   t        d      dz  z  z  ddt        z  z
  z  z   }t        dt        z  dz         dt        dz  z  t        z   dz
  z  dz  }||z
  } |j                  d      J  |j                  t        t        dd      dz        dt        d      z  dz  k(  sJ t        dd      } |j                  t        |      j                  d      du sJ  |j                  t        d      j                  d      du sJ t        dt        d      z         t        ddt        d      z  z         z   t        ddt        d      z  z         z
  }|j                  d      sJ dt        dd      z  dz   }t        |dz        t        dd      z  }||z
  j                  d      sJ t!        d      }|t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
         dz  t        d|z  t        d      d
z  z
  t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
        z  d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  z   t        d      dz  z
        dz  z
  t        j                  d
z  z
  z  |d
z  z   t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
         dz  t        d|z  t        d      d
z  z
  t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
        z  d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  z   t        d      dz  z
        dz  z
  t        j                  d
z  z
  d
z  z   t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
         dz  t        d|z  t        d      d
z  z
  t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
        z  d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  z   t        d      dz  z
        dz  z
  t        j                  d
z  z
  dz  z   dt        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
         dz  t        d|z  t        d      d
z  z
  t        d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  t        d      dz  z
        z  d|t        d      dz  z
  t        d      z   dz  t        d      dz  z
  t        j                  dz  z  z  z   t        d      dz  z
        dz  z
  t        j                  d
z  z
  dz  z  z   t        dd      z
  } |j                  d      sJ y )NrW  r   r  r   r   rI  rO  r%  Frl  r  r  rn  r  x   r  Tr2  r  rN  rY  i  i 6     r  )r3   equalsrZ   r8   r7   rT   r-   r   rQ   r&   r  r   r^  r   r(   r   r)   )r&  r  r  ansr   r  r  r\   s           rk   test_equalsr   e  sc
   aLT"XIaK$q'!)3a77??BBBqD1Ha!ea!e_---FAIA	!))!,,,c!faiK!CFAI+%--a000QAAaCL1Q3A;&..q111QU""AE9Q<#78887>>!DG)$---GDGO##DG,555Gd1g%%a(E111GbL  #u,,,<<?e###eQhJq!U***1a.QUU1W	%quuQw(9	9B	Qwyy||7>>!%%% 	
$q'	!ad1f+q1ac7{ad1f55a7	$q'	!ad1f+q1ac7{ad1f55rAaCx@	AA
qsQw-1a4!a
(
+Cs7D4;;q>!!!499QQ)*aQim;;; 	sT"A499Q?!!!$,,,499Q""1%--- 
a$q'k	T!aQi-0	04QtAwY3G	GB99Q<<	8Aq>AAq!thq!n$AE>>!
 	A	
T"AaDF
QqT))!+agem;quuQwGGbE"H  !ad1fd2QqT!Vad0B/B1/DdGEM0UU1W/ , !"b,) '* *,-QqT!Vad0B/B1/DdGEM0UU1W/ - !"a( ))*++ ./UU1W5 
6 9:!
< AER1d1fLtK JJ$J&)*qI2 F245bE"HF= A> @>>?@@BF!d1fI2QqT!Vad**1,qwu}<aHHbE"H HQ1aZ!A$&&q(1T75=8AEE!GDDHE bE!GH C C@ q	@ 	?
 "&bA!QJ1+=*=a*?dGEM+UU1W* ' !"b') "* !**+!,.2AaCaDF5q1Q46zAaD((*QtWU]:aeeAgFFbE"H 4Q1aZ!A$&&q(1T75=8AEE!GDD4E bE!G4 / /! q	! 	 
  !4a!A$q&j1Q4-?,?,AdGEM-UU1W, ) !"b)) $* #**+#,.2AaCaDF5q1Q46zAaD((*QtWU]:aeeAgFFbE"H 4Q1aZ!A$&&q(1T75=8AEE!GDD4E bE!G4 / /# q	# 	"  
  (1~
.A  188A;;rn   c                     ddl m}  ddlm}  |t              d   j                         J  | t              j                  ddddd      J t        t        t        t              t        f      j                         J y )Nr   )lucas)posifyr   rN  rO  rI  )%sympy.functions.combinatorial.numbersr  sympy.simplify.simplifyr  rZ   _randomrW   r5   r4   r[   r\   )r  r  s     rk   test_randomr    sn    ;.!9Q<!---8Ar1b!,444 c!Qi^$,,.666rn   c            
         t        t        d      j                  d            dk(  sJ d} t        |       j                  d      }|j                  r|| k(  sJ t        |       j                  d      }|j                  r|dk(  sJ t        t        d      j                  d            d	k(  sJ t        t        d
      j                  d            dk(  sJ t        t        d      j                  d            dk(  sJ t        d      } |j                         }|j                  sJ ||k(  sJ  |j                  d      }|j                  sJ ||k(  sJ  |j                  d      }|j                  sJ ||k(  sJ  |j                  d      dk(  sJ t        t        |            j                  d      }|dk(  sJ  |j                  d      dk(  sJ t        t
        t        d      z   j                  d            dk(  sJ dt
        t        d      z   z  j                  d      dk(  sJ t        t        d        t        t        d      j                  d            dk(  sJ t        dd      D ]  t        t                    }t        |      }d|z  }|dz   }dk  r
|dz  }d|z   }t        t        |      j                  |            d | }|j                  d       rst        |d         }|dz  dk(  rJ |d!|f        t        d"d#      dt
        z  z   j                         d$k(  sJ t        d"d#      dt
        z  dz  z   j                         d%k(  sJ t
        dt        z  t        z  z   j                         d#d&t        z  z   k(  sJ t        t        d'd#      dt
        z  dz  z   j                  d&            d(k(  sJ t        t        d'd#      dt
        z  dz  z   j                  d            d(k(  sJ t        j                   j                         dk(  sJ t#        dt        d)d*      d+,      }	 |	j                  d      t        d-d*      k(  sJ  |	j                  d.      t        d-d*      k(  sJ  |	j                  d/      t        d-d*      k(  sJ  |	j                  d0      t        d1d*      k(  sJ  |	j                  d2      t        d1d*      k(  sJ t        t        d3        t        t        d4        t        t        j$                  j                               d5k(  sJ t        t        d      j                               d6k(  sJ dt
        z  t        t        z  z   j                         d7d#t        z  z   k(  sJ dt
        z  t        dz  z   j                         d7k(  sJ t
        dz  dt        z  z   j                         dt        z  k(  sJ t        t
        dz  t        t        z  z   j                  d            d8k(  sJ t        t
        dz  t        t        z  z   j                  d      j'                               d9k(  sJ t        t
        dz  t        t        z  z   j                  d            d8k(  sJ t        t        d#z   z  j                  d#      t        d:d*      t        z  k(  sJ t        d;      j                         d<k(  sJ t        d=      j                         dk(  sJ t        d>      j                         d?k(  sJ t        d=d@t        z  z
        j                         ddt        z  z
  k(  sJ t        t        dA      j                  d            dBk(  sJ t        t        dC      j                  d            dDk(  sJ t        j(                  j                         t        j(                  u sJ t        j*                  j                         t        j*                  u sJ t        j,                  j                         t        j,                  u sJ t        j.                  j                         t        j.                  u sJ t        d      D ]  t1              t3        fdEdFD              sJ t3        fdGdFD              sJ t3        fdHdFD              sJ t3        fdIdFD              sJ t5        t                    t        u sJ t              j                         j                  sJ t5        t                    t        u sJ t              j                         j                  sJ dJ}t        |t7        |      t7        t7        |            z   z        dKk(  sJ t9        d      dz  t;        d      dz  z   }
t=        |
t        z  t
        z        }|j'                         \  }}|j                  d      dLk(  sJ |j                  d      dMk(  sJ |
dt        ddNz        z  z
  }t        j>                  |dkD  |dk  fvsJ t        |      t        dO      cxk(  rdk(  sJ  J t        |       t        dP      cxk(  rdk(  rJ  J  y )QNz	0.1249999r   z0.12l   
>V3&Z
 rN  l   
>V3&Z
 z1/7rl  z0.1429z.[12345]z0.1235z.1349z0.13i90  rI  rO  i40  rg  g     @r  r   z4.56r  g      I@c                  (    t        t        dz   d      S rh  )roundrZ   r   rn   rk   r   ztest_round.<locals>.<lambda>  s    eAE1o rn   gffffff@z2.3irZ  z0.%s5r   .z->g333333?r%  r  iu  r   gQ?z0.0928z1.999999999999999999999999999 Fr  z3.000000000000000000000000000         z2.999999999999999999999999999   c                  *    t        j                         S rb   )rZ   r
  r   rn   rk   r   ztest_round.<locals>.<lambda>   s    aggi rn   c                  4    t        d      j                         S rT  )r}  r
  r   rn   rk   r   ztest_round.<locals>.<lambda>  s    adjjl rn   r=  100r  z0.31 + 2.72*Iz(0.31, 2.72)z-0.208gfffff^ig      g      Yig      %@g~jtx?z0.01gR\U]Q?z0.0011c              3   T   K   | ]  }t        t        |            t        u  ! y wrb   )r  r
  re   .0r  r  s     rk   	<genexpr>ztest_round.<locals>.<genexpr>+  s!     @4a$+@   %()rO  r   rI  c              3   f   K   | ](  }t              j                  |      j                   * y wrb   )r&   r
  r  r  s     rk   r  ztest_round.<locals>.<genexpr>,  s#     @1Q4::a=++@   .1c              3   T   K   | ]  }t        t        |            t        u  ! y wrb   )r  r
  rf   r  r  fis     rk   r  ztest_round.<locals>.<genexpr>-  s!     C14b!%.Cr  c              3   f   K   | ](  }t              j                  |      j                   * y wrb   )r&   r
  is_Floatr  s     rk   r  ztest_round.<locals>.<genexpr>.  s#     ?q1R5;;q>**?r  i[ isr  r  r  g?g) strr   r
  r&   r  r   r3   rR   r  r  absr  endswithre   r   r   r  r   r  as_real_imagNaNr  r  r  rf   r  r  r0   r8   r7   r/   r+  )d20r  rW   r&  r   r  r   vLrT   oner  qrqir  r  s                 @@rk   
test_roundr+    s	   u[!''*+v555
C
C&,,q/C>>cSj((
C&,,r
C>>c%9999qx~~a !X---q}""1%&(222qz"#v---	%A
!'')C>>>!8O8
!''!*C>>>!8O8
!''!*C>>>!8O81772;%c!fBA<<1772;!T!W##A&'6111T!W$$R(D000
9-.qv||A5(((
 3_ (AKFaKEq5FAaAaq!"2A&::c?"J1uz'AtQ<'z( "aL1R4&&(A---"aL1R48#**,3331QJ1qs7*** c1"S(//23x???c1"S(//23x???66<<>Q	QmR(5	9A1772;% ?DDDD1772;% ?DDDD1772;% ?DDDD1772;% ?DDDD1772;% ?DDDD" 9'(
9*+ quu{{}$$$qv||~%''' bD1Q3J1qs7***bD1R4K A%%%rEAaCK AaC''' 2!""1%&/9992!""1%2245GGG2!""1%&/999 AJa E(B$7$9999 V9??$$$T7==?b   V9??$$$TDF]!!#rBqDy000 qx~~a !V+++qz"#x/// 55;;=AEE!!!::+++##%););;;;""$(9(9999 1X )1X@Z@@@@@Z@@@@C
CCCC?J????E!H~$$$tzz|&&&&E"I#%%%u{{}'''' 1c!fs3q6{*+,	999!fai#a&!)#Qr]"Bxx{c!!!xx{d"""1Qr3wZ<vvb1fb1f----2w#b'&Q&&&&&B3x3s8(q(((((1)rn   c                     t        d      } t        d| z        }| |z  }t        |t              sJ |j                  | |fk(  sJ |j                         dk(  sJ t        t        | |             j                  d      t        | |       k(  sJ t        t        | |             j                         dk(  sJ t        | | d      }|| dz  k7  sJ t        |      }t        |t              sJ |j                  |fk(  sJ |j                         | dz  k(  sJ |j                  d      |k(  sJ t        d      dz  }t        |      t        u sJ |j                  dt        d      fk(  sJ y )NrZ   rI  Fr  r  r   )r)   r   rd   r   r   r  r   r  )rZ   hee1xxue2x2s         rk   $test_held_expression_UnevaluatedExprr2  C  sm   A	1	B	
2Bb#77q"g779>>:a+,11u1 
1  :a+,113q888	QE	"BA::
"
Cc?+++88u88:A8882%%%		A	B8s??77q/!,----rn   c                      t        d      } 	 | j                          t        d      # t        $ r}dt	        |      vsJ Y d }~y d }~ww xY w)NbadzDid not raise)r(   r
  AssertionErrorr  r   )r   r   s     rk   test_round_exception_nostrr6  \  sL     	uA.		
 _--	  #CF"""#s   ( 	A
AA
c                  \    t        dt        z  t        z        j                         dk(  sJ y )Nrh  )rI  rI  )r.   r   r   extract_branch_factorr   rn   rk   test_extract_branch_factorr9  i  s&    SU2X446&@@@rn   c                      t        j                  t        dz         t        fk(  sJ t        j                  t        dz        t        fk(  sJ y )Nr   rI  )r   	make_argsrZ   r   r   rn   rk   test_identity_removalr<  m  s<    ==QA4'''==1!%%%rn   c                  <    t        d      dz   t        d      k(  sJ y )Nr  rI  r  )r   r   rn   rk   test_float_0r>  r  s    :>U3Z'''rn   c                      t        d      t        z  t        d      k(  sJ t        t        d      z   j                  sJ y )Nr  )r   rZ   r  r   rn   rk   test_float_0_failr@  v  s3    :a<5:%%%c
N""""rn   c                  t   t         dz  t        dz  z   t         t        t         t        z  z   z  t        t        t        t        z  z   z  z   dz  t        t         t        z  z   dz  t        t        t        z  z   dz  z   z  z
  t        t        t         t        z  z   dz  t        t        t        z  z   dz  z         z  } t        t        t         t        z  z   dz  t        t        t        z  z   dz  z         }t        |t        d      | k(  sJ |j                  t        d      | k(  sJ t        |t        dd      | k7  sJ y )Nr   F)rM   )rU   r\   rT   rX   rV   r3   r   )r  r   s     rk   test_issue_6325rB  |  s    a4!Q$;!Q1W+1qs73a7	
QqS1AaC!|#% %&*A!Ga<1qs7Q,+F&GHCa!A#g\Q1WqL()A1a=C66!Q<31a%(C///rn   c                  ^    t         t        z  } t        t        z  }| j	                  |      J y rb   )rT   rV   rZ   r\   r  )f1f2s     rk   test_issue_7426rF    s(    	
QB	
QB99R=   rn   c                      t        dd      } t        t        | d      sJ t        ddd      } | dkD  t        j                  u sJ y )NrZ   F)extended_positiver   Tr8  )r(   r	   r$   r&   r*  r  s    rk   test_issue_11122rI    sF    se,ARA 	sU.AEaggrn   c                  `   t        dd      } d| z   d| z
  z  }d| dz  z  dz
  d| z
  d| z   z  z  }dt        |       dz  z  t        |       dz  z
  }t        dd      } d| z   | z  }|j                         J |j                         J |j                         J |j                         d	u sJ y )
NrZ   Tr'  rO  rI  rl  r   r2  F)r(   r8   r6   r  )rZ   r.  e3e4e5s        rk   test_issue_10651rN    s    sA
q&1q5	B
AqD&1*AA	'B	
CFAI#a&1	$BsT"A
a%B>>###>>###>>###>>u$$$rn   c                  b    t        dd      } | t        |       z  t        |       z  | dz  k(  sJ y )NrZ   Tr'  r%  )r)   r!  r  s    rk   test_issue_10161rP    s0    $ASV8CF?ad"""rn   c                  h     t        d       t        t         fd       t        t         fd       y )NrZ   c                  ,    t        t                     S rb   )re   r0   r  s   rk   r   z"test_issue_10755.<locals>.<lambda>  s    c#a&k rn   c                  8    t               j                  d      S rh  )r0   r
  r  s   rk   r   z"test_issue_10755.<locals>.<lambda>  s    c!fll1o rn   r)   rR   r  r  s   @rk   test_issue_10755rU    s"    A
9)*
9-.rn   c                      t        d      } t        t        t        j                  | z
        | dt        j                  f      t        dd      t        d      dz  z
  k(  sJ y )NrZ   r   rO  r   )r)   r=   r0   r&   r  r   r  s    rk   test_issue_11877rW    sJ    AS!_q!QVVn5"a#a&QR(9RRRRrn   c                      t        d      } t        t        j                  d| z   d      }|j	                         |k(  sJ y )NrZ   rI  Fr  )r)   r   r&   r  normal)rZ   r   s     rk   test_normalrZ    s3    AAFFAEE*A88:??rn   c                  B     t        d       t        t         fd       y )NrZ   c                  F    t               j                   dt        d      S )Nr   r   )r6   rJ  r   r  s   rk   r   ztest_expr.<locals>.<lambda>  s    c!fmmAq"c: rn   rT  r  s   @rk   	test_exprr]    s    A
9:;rn   c                      t        t              } | j                  j                  t        t        g       | j                         t        dz  k(  sJ y rh  )r   r   r   extendrZ   build)ebs    rk   test_ExprBuilderrb    s8    	S	BGGNNAq688:Arn   c                  \    ddl m}   | d      } | d      } |j                  |      du sJ y )Nr   )
parse_exprzlog((2*V/3-V)/C)/-(R+r)*Czlog((2*V/3-V)/C)/-(R+r)*2F)sympy.parsing.sympy_parserrd  r  )rd  rZ   r[   s      rk   test_issue_22020rf    s3    5./A./A188A;%rn   c                      t        d      } t        d      }| dk(  du sJ | dk7  du sJ |dk(  du sJ |dk7  du sJ | dz   dk(  du sJ | dz   dk7  du sJ  G d d      }|  |       k(  du sJ |  |       k7  du sJ y )	NrZ   rI  FTr=  zx + 1c                       e Zd Zd Zy))test_non_string_equality.<locals>.BadReprc                     t         rb   )RuntimeErrorr   s    rk   __repr__z2test_non_string_equality.<locals>.BadRepr.__repr__  s    rn   N)r   r   r   rl  r   rn   rk   BadReprri    s    	rn   rm  )r)   r,   )rZ   r(  rm  s      rk   test_non_string_equalityrn    s    A
!*CHH3J5   3J4EW&&&EW%%%
  Nu$$$Nt###rn   c                     ddl m}   |        5  t        j                  t        hk(  sJ 	 d d d         |        5  t	               j                  t               k(  sJ 	 d d d         |        5  t        d      j                  t        d      hk(  sJ 	 d d d         |        5  t        dt              j                  t        dt              hk(  sJ 	 d d d         |        5  t        t        t        d      j                  t               k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   warns_deprecated_sympyr   r  )	sympy.testing.pytestrq  rZ   expr_free_symbolsr   r|  r&   rP   r   rp  s    rk   
test_21494rt    s*   ;		! *""qc)))* 
 	! 2w((CE1112 
 	! 0t%%!A$///0 
 	! FsA00WS!_4EEEEF 
 	! 8Aq!}..#%7778 8* *2 20 0F F8 8s:   D"D"+%D. /D:-ED"D+.D7:EEc                  ,    t         t        d      k7  sJ y )Nr%  )rZ   r  r   rn   rk    test_Expr__eq__iterable_handlingrv    s    a==rn   c                     dj                  t        j                        dk(  sJ dj                  t        d            dk(  sJ dj                  t              dk(  sJ dj                  t	        t        d	                  d
k(  sJ y )Nz{:1.2f}z0.00z{:+3.0f}r%  z +3z	{:23.20f}z 3.14159265358979323846z	{:50.48f}rI  z22.319776824715853173956590377503266813254904772376)formatr&   r  r   r/   r7   r   rn   rk   test_formatry    sx    AFF#v---QqT"e+++b!%>>>>c#a&k*.bbbbrn   c                      t        t        t              t        t        z  t        t        z  z
  t        d      t        z  t        z  t        d      t        z  t        z  z
  z  z        sJ y )Nr  )rI   r/   rT   rV   rU   r   r   rn   rk   test_issue_24045r{    sG    3q6AaC!A#Ic
1QsAa(GHIJJJrn   c                      t        dd      \  } }t        t        | |t        d      |       j                  dt        | || fk(  sJ t        t         | z  |z  t        d      |       j                  dt        | || fk(  sJ y )NzA BFr  r   rN  )r)   r   rZ   r&   r   )r  r  s     rk   test__unevaluated_Mulr}  	  sw    5e,DAqAq!QqT1-22q!Q1oEEEQBqDFAaD!,11b!Q15EEEErn   c                  T    t        d      j                  d      t        d      k(  sJ y )Nz1.7567e-1417rn  r   )r   r
  r   rn   rk   test_Float_zero_division_errorr  	  s$     &&r*eAh666rn   N(  sympy.assumptions.refiner   sympy.concrete.summationsr   sympy.core.addr   sympy.core.basicr   sympy.core.containersr   sympy.core.exprr   r	   r
   r   sympy.core.functionr   r   r   r   r   r   r   sympy.core.mulr   r   sympy.core.numbersr   r   r   r   r   r   r   r   r   r   r   r    sympy.core.powerr!   r)  r"   r#   r$   r%   sympy.core.singletonr&   sympy.core.sortingr'   sympy.core.symbolr(   r)   r*   r+   sympy.core.sympifyr,   (sympy.functions.combinatorial.factorialsr-   &sympy.functions.elementary.exponentialr.   r/   r0   %sympy.functions.elementary.hyperbolicr1   r2   (sympy.functions.elementary.miscellaneousr3   r4   $sympy.functions.elementary.piecewiser5   (sympy.functions.elementary.trigonometricr6   r7   r8   'sympy.functions.special.delta_functionsr9   r:   'sympy.functions.special.error_functionsr;   'sympy.functions.special.gamma_functionsr<   sympy.integrals.integralsr=   r>   sympy.physics.secondquantr?   sympy.polys.partfracr@   sympy.polys.polytoolsrA   rB   rC   sympy.polys.rationaltoolsrD   sympy.series.orderrE   sympy.sets.setsrF   sympy.simplify.combsimprG   sympy.simplify.gammasimprH   sympy.simplify.powsimprI   sympy.simplify.radsimprJ   rK   sympy.simplify.ratsimprL   r  rM   rN   sympy.simplify.trigsimprO   sympy.tensor.indexedrP   r@  rQ   rr  rR   rS   	sympy.abcrT   rU   rV   rW   rX   rY   rZ   r[   r\   r}  r  r5  r`   r   r   i5f1_1powrE  r   r   r   r   r   r   r   r   r#  r-  r9  rF  rK  rQ  r`  rb  rd  rf  ri  rm  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r.  r1  r3  r7  r9  r;  r=  rA  rD  rF  rM  rP  rU  r[  r`  re  rt  rv  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+  r2  r6  r9  r<  r>  r@  rB  rF  rI  rN  rP  rU  rW  rZ  r]  rb  rf  rn  rt  rv  ry  r{  r}  r  r   rn   rk   <module>r     s   + )  " ' * * * 02 2 2 2   0 0 " / : : & > F F < > : B B 6 9 9 / & 6 6 .   % , . * 3 * 7 , ( % . / / / 'x
(1aC CL ;  Tv QK	%L1IaK
 	 
E, E,P	eX 	
 	E 	
X0v+  Z	.A	&I8 
1
@
0C	P*Z.5b4:4:=$	11-,A1h."7<r  
<9~*E<&*<"."," & $C( B*@*1(Y-x7O5d*+9,
;+S.,2$4**(-*1,0,
"
=&1$(9V0"QDF
-E
1*<,@<~7R)j.2
.A&
( # #
0!
%#
/S
<
 $,8&cKF7rn   