
    MZd*                    X   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 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l/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZF d dlGmHZHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZVmWZWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^ d dl_m`Z` d d lambZb d d!lcmdZd d d"lemfZfmgZg d d#lhmiZi d d$ljmkZkmlZl d d%lmmnZn d d&lompZp d d'lqmrZr d d(lsmtZtmuZu d d)lvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZ  e3d*e+      \  ZZZ G d, d-      Z G d. d/e      Z G d0 d1e      Z e       Z e       Z e d2       ed3      e}e~ ee}e~      e~z  gZed4d5eegz   Zd6 Zd7 Zd8 Z G d9 d:      Z G d; d<ee      Z G d= d>      Z G d? d@e      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^ Zeud_        Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zeud        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)    )refine)Sum)Add)Basic)Tuple)ExprBuilder	unchangedExprUnevaluatedExpr)FunctionexpandWildFunctionAppliedUndef
DerivativediffSubs)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)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selfrQ   s     </usr/lib/python3/dist-packages/sympy/core/tests/test_expr.py__radd__zDummyNumber.__radd__B   $    a#u&t{{?"    c                 b    t        |t        t        t        f      r| j                  |z   S t
        S r^   r`   ra   rb   r\   rc   rd   re   s     rg   __add__zDummyNumber.__add__G   '    a#uk23;;?"rj   c                 X    t        |t        t        f      r|| j                  z
  S t        S r^   r_   re   s     rg   __rsub__zDummyNumber.__rsub__L   ri   rj   c                 b    t        |t        t        t        f      r| j                  |z
  S t
        S r^   rl   re   s     rg   __sub__zDummyNumber.__sub__Q   rn   rj   c                 X    t        |t        t        f      r|| j                  z  S t        S r^   r_   re   s     rg   __rmul__zDummyNumber.__rmul__V   ri   rj   c                 b    t        |t        t        t        f      r| j                  |z  S t
        S r^   rl   re   s     rg   __mul__zDummyNumber.__mul__[   rn   rj   c                 X    t        |t        t        f      r|| j                  z  S t        S r^   r_   re   s     rg   __rtruediv__zDummyNumber.__rtruediv__`   ri   rj   c                 b    t        |t        t        t        f      r| j                  |z  S t
        S r^   rl   re   s     rg   __truediv__zDummyNumber.__truediv__e   rn   rj   c                 X    t        |t        t        f      r|| j                  z  S t        S r^   r_   re   s     rg   __rpow__zDummyNumber.__rpow__j   s%    a#u&##rj   c                 b    t        |t        t        t        f      r| j                  |z  S t
        S r^   rl   re   s     rg   __pow__zDummyNumber.__pow__o   s(    a#uk23;;!##rj   c                     | j                   S r^   rc   rf   s    rg   __pos__zDummyNumber.__pos__t       {{rj   c                     | j                    S r^   r   r   s    rg   __neg__zDummyNumber.__neg__w   s    }rj   N)__name__
__module____qualname____doc__rh   rm   rp   rr   rt   rv   rx   rz   r|   r~   r   r    rj   rg   r\   r\   5   sC    










rj   r\   c                       e Zd ZdZd Zy)I5   c                     | j                   S r^   r   r   s    rg   __int__z
I5.__int__~   r   rj   N)r   r   r   rc   r   r   rj   rg   r   r   {   s    Frj   r   c                       e Zd ZdZd Zy)F1_1皙?c                     | j                   S r^   r   r   s    rg   	__float__zF1_1.__float__   r   rj   N)r   r   r   rc   r   r   rj   rg   r   r      s    Frj   r      z1.3r   g      @c                 B    t         D ]  }t         D ]  } | ||         y)NT)all_objs)sxoyos      rg   dotestr      s.      	Bb"I	 rj   c                  $    d } t        |       sJ y )Nc                 H    | }| }|  }| |z   }| |z
  }| |z  }| |z  }| |z  }~y r^   r   rQ   rR   rW   s      rg   jztest_basic.<locals>.j   sE    BBEEaCaCqDrj   r   )r   s    rg   
test_basicr      s    	 !99rj   c                  $    d } t        |       sJ y )Nc                 <    | }||z  }| }||z  }| }||z  }| }||z  }y r^   r   r   s      rg   r   ztest_ibasic.<locals>.s   s:    	Q	Q	Q	Qrj   r   r   s    rg   test_ibasicr      s     !99rj   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rf   others     rg   rm   zNonBasic.__add__       dE**rj   c                     t        d||       S r   r   r   s     rg   rh   zNonBasic.__radd__       eT**rj   c                     t        d| |      S N-r   r   s     rg   rr   zNonBasic.__sub__   r   rj   c                     t        d||       S r   r   r   s     rg   rp   zNonBasic.__rsub__   r   rj   c                     t        d| |      S N*r   r   s     rg   rv   zNonBasic.__mul__   r   rj   c                     t        d||       S r   r   r   s     rg   rt   zNonBasic.__rmul__   r   rj   c                     t        d| |      S N/r   r   s     rg   rz   zNonBasic.__truediv__   r   rj   c                     t        d||       S r   r   r   s     rg   rx   zNonBasic.__rtruediv__   r   rj   c                     t        d| |      S N//r   r   s     rg   __floordiv__zNonBasic.__floordiv__       tU++rj   c                     t        d||       S r   r   r   s     rg   __rfloordiv__zNonBasic.__rfloordiv__       ud++rj   c                     t        d| |      S N%r   r   s     rg   __mod__zNonBasic.__mod__   r   rj   c                     t        d||       S r   r   r   s     rg   __rmod__zNonBasic.__rmod__   r   rj   c                     t        d| |      S Ndivmodr   r   s     rg   
__divmod__zNonBasic.__divmod__   s    4//rj   c                     t        d||       S r   r   r   s     rg   __rdivmod__zNonBasic.__rdivmod__   s    5$//rj   c                     t        d| |      S N**r   r   s     rg   r~   zNonBasic.__pow__   r   rj   c                     t        d||       S r   r   r   s     rg   r|   zNonBasic.__rpow__   r   rj   c                     t        d| |      S )N<r   r   s     rg   __lt__zNonBasic.__lt__   r   rj   c                     t        d| |      S )N>r   r   s     rg   __gt__zNonBasic.__gt__   r   rj   c                     t        d| |      S )N<=r   r   s     rg   __le__zNonBasic.__le__   r   rj   c                     t        d| |      S )N>=r   r   s     rg   __ge__zNonBasic.__ge__  r   rj   N)r   r   r   r   rm   rh   rr   rp   rv   rt   rz   rx   r   r   r   r   r   r   r~   r|   r   r   r   r   r   rj   rg   r   r      sk    	++++++++,,++00,,++,,rj   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   rj   rg   r   r     s    Mrj   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 r^   )object__new__args)rZ   oparg1arg2objs        rg   r   zSpecialOp.__new__  s#    nnS!d#
rj   N)r   r   r   r   r   r   rj   rg   r   r     s
    Hrj   r   c                       e Zd ZdZy)NonArithmeticzGRepresents a Basic subclass that does not support arithmetic operationsNr   r   rj   rg   r   r     s    Qrj   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   rW   r   r   r   r   r   r   r   r   r   r   r   r   c                       z   S r^   r   enas   rg   <lambda>z-test_cooperative_operations.<locals>.<lambda>Z      q2v rj   c                       z   S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>[      rAv rj   c                       z
  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>\  r   rj   c                       z
  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>]  r   rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>^  r   rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>_  r   rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>`  r   rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>a  r   rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>b      qBw rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>c      rQw rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>d  r   rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>e  r   rj   c                      t               S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>f  s    va} rj   c                      t               S r^   r  r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>g  s    vb!} rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>h  r  rj   c                       z  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>i  r  rj   c                       kD  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>j  r   rj   c                       kD  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>k  r   rj   c                       k  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>l  r   rj   c                       k  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>m  r   rj   c                       k\  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>n  r  rj   c                       k\  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>o  r  rj   c                       k  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>p  r  rj   c                       k  S r^   r   r   s   rg   r   z-test_cooperative_operations.<locals>.<lambda>q  r  rj   N)r
   r%   ZeroOneInfinityNegativeInfinityComplexInfinityHalfr   r   r'   r   r   r    r   r   r   typer   r   r   r   rO   	TypeError)exprsneresultsresr   r   r   s        @@rg   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>0rj   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'   rW   r   func)r"   r"  s     rg   test_relationalr)  t  s   (Fqww!GFqvv!GC!GC1HC!GC1H   sAEAEMagg%%%a!eQUQY$$***rj   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)r,  r$  r/  r$  )r1  r$  )r3  r$  )r'   r"   r$   r#   r!   r%   r'  r&  )r+  r-  r0  r2  s       rg   test_relational_assumptionsr5    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rj   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   rg   r   z"test_basic_nostr.<locals>.<lambda>      #) rj   c                       dz
  S r8  r   r:  s   rg   r   z"test_basic_nostr.<locals>.<lambda>  r;  rj   r   r9  11c                       dz  S r8  r   r:  s   rg   r   z"test_basic_nostr.<locals>.<lambda>  s    cCi rj   c                       dz  S r8  r   r:  s   rg   r   z"test_basic_nostr.<locals>.<lambda>  r;  rj   c                       dz  S r8  r   r:  s   rg   r   z"test_basic_nostr.<locals>.<lambda>  s    #* rj   )
basic_objsrO   r  r:  s   @rg   test_basic_nostrrB    sb     .y+,y+,!89$$$9/0y+,y,-.rj   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   )rW   rX   seriesrB   r   rj   rg   'test_series_expansion_for_uniform_orderrG    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.@@@rj   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   rE  r!  r   r   )rW   r/   leadtermr   rj   rg   test_leadtermrM    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%%%rj   c                  R   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               dt        d      z  t         z  dt        j                  z  t         z  z
  dt        d      z  dt        j                  z  z   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        d      z  t        z  d
t        z  z
  dt        d      z  dz   z  k(  sJ y )Nr!  r   rE  c                  2    t         dz   j                  d      S NrE  rW   as_leading_termr   rj   rg   r   z&test_as_leading_term.<locals>.<lambda>  s    A66q9 rj         r   ii      i@  )rW   r/   rR  r   rO   
ValueErrorr   r0   r%   ImaginaryUnitsubsrX   )r   ds     rg   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GA1??*1,	,qay2aoo;M/MNO O O 	
A1A	
T!WaA66!Q1W--a0	d1ga$q&	 3tAw;#456 6 6rj   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 rD  )rW   r5   r4   rL  r   rj   rg   test_leadterm2r]    s]    c!fHSSV_$s1s1v:6@@CCF
OQ     rj   c                  v    t         t        z   t        z   j                  t              t         t        z   dfk(  sJ y )Nr   )rX   rY   rW   rL  r   rj   rg   test_leadterm3r_    s+    EAI"q1uaj000rj   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 rP  )rW   r5   r4   rR  r   rj   rg   test_as_leading_term2ra    sX    c!fHSSV_$s1s1v:6GGJAAJ  rj   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   rW   rR  r   rj   rg   test_as_leading_term3rd    sa    FQJ''*a"f444aC"Q$JA..q1QqS2a4Z???rj   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 )NrT   T)integerr/  r!  r   rU  rE  )r'   rW   rR  r?   )rT   r"  s     rg   test_as_leading_term4rg    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///rj   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   rj   rg   foorj  	      rj   rl  rE  c                  B      t               j                  t               S r^   rQ  rl  s   rg   r   z+test_as_leading_term_stub.<locals>.<lambda>  s    A(>(>q(A rj   )r   rW   rR  rO   NotImplementedErrorro  s   @rg   test_as_leading_term_stubrq    se    h qs8##A&#ac(222q6!!!$A...
 ABrj   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   rU  rE  )r   rW   rR  rX   r;   r.   r/   r   rj   rg   #test_as_leading_term_deriv_integralrs    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Orj   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 )NrE  r   r   r!  )rW   atomsr%   r  r5   r'   r   rX   r  setr4   r   r@   r  rY   rU   r   r   r   r.   r   fr   r   r   s    rg   
test_atomsry    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  rj   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)r,  rf  r   rJ  Fr!     rE  )r'   r   is_polynomialrW   rX   rY   r%   Pir0   r.   rw  )r{  s    rg   test_is_polynomialr  I  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4rj   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 )NrE  T   6   rT  r   F)r   is_rational_functionrW   r   rX   r4   r   )irZ  s     rg   test_is_rational_functionr  z  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4rj   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   TrE  r!  FrT   rf  )
rQ   rW   rR   rS   is_meromorphicr   r/   r'   r4   r   )rw  grT   r   s       rg   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3rj   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!  TrE  r   F)r0   is_algebraic_exprrW   rX   r%   r  r5   )eqs    rg   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<<<rj   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    rg   _sympy_z!test_SAGE1.<locals>.MyInt._sympy_  s    1:rj   N)r   r   r   r  r   rj   rg   MyIntr    s    	rj   r  r   
   c                       t        d       z  S rc  r   r  s   rg   r   ztest_SAGE1.<locals>.<lambda>      hqk%/ rj   )r   rO   r  )mr   r  s     @rg   
test_SAGE1r    s9      	AAA7N7
9/0rj   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    rg   r   z!test_SAGE2.<locals>.MyInt.__int__  s    rj   N)r   r   r   r   r   rj   rg   r  r    s    	rj   r  r   r   r  c                       t        d       z  S rc  r  r  s   rg   r   ztest_SAGE2.<locals>.<lambda>  r  rj   )r+   r   rO   r  )r   r  s    @rg   
test_SAGE2r    sJ      57q   EGA7N7
9/0rj   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     rg   rt   z%test_SAGE3.<locals>.MySymbol.__rmul__  s    5$''rj   N)r   r   r   rt   r   rj   rg   MySymbolr    s    	(rj   r  r  rW   )r  or   s      rg   
test_SAGE3r    s2    ( ( 	
A	!A1rj   c                      t         t        z  } t        | j                        dk(  sJ t         t        z   t        z   } t        | j                        dk(  sJ y )Nr   r!  )rW   rX   lenr   rY   rx  s    rg   test_lenr    sD    	!Aqvv;!	A	Aqvv;!rj   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;   rW   r`   doitrQ   s    rg   	test_doitr    s    AqAfaffh)U222fafft,h75@@@faffu-x8D@@@hq!n""$1,,,rj   c                  j    t        t        d        t        t        d        t        t        d        y )Nc                  *    t        j                         S r^   )rW   r5   r   rj   rg   r   z&test_attribute_error.<locals>.<lambda>      1557 rj   c                  *    t        j                         S r^   )rW   r4   r   rj   rg   r   z&test_attribute_error.<locals>.<lambda>  r  rj   c                  *    t        j                         S r^   )rW   r.   r   rj   rg   r   z&test_attribute_error.<locals>.<lambda>  r  rj   )rO   AttributeErrorr   rj   rg   test_attribute_errorr    s     
>?+
>?+
>?+rj   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 rD  )rW   rX   r   r4   r   rj   rg   	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rj   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      rg   %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)@@@@rj   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, crE  r   )rE  r      rJ  r!     r         @i  rU  rT  r  Fr  rK  r   evaluate)r(   r   as_numer_denomr   r   rW   rX   rY   r%   r  ra   r/   r   ranger)   rT   r  r  r  )rQ   rR   rS   r  r  r  r  s          rg   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@rU  g)\(r!  r  rE  r      rK  c                  &     j                        S r^   trunc)mathrW   s   rg   r   ztest_trunc.<locals>.<lambda>R  s    djjm rj   c                  2     j                  dz  z         S rc  r  r  rW   rX   s   rg   r   ztest_trunc.<locals>.<lambda>S  s    djjQT2 rj   c                  .     j                  t              S r^   )r  r   )r  s   rg   r   ztest_trunc.<locals>.<lambda>T  s    djjn rj   )
r  r(   r  r   r/   r.   r5   r4   rO   r  r  s   @@@rg   
test_truncr  F  s    5>DAq::a=A::dq   ::e"""::b>Q::c!f"""::c!f$$$::c"g"$$$::c!f"""
9+,
923
9,-rj   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   rE  zn1 n2 n3r  r!  )strictrS  r  rK  )r%   r  as_independentrW   r4   rX   r5   r(   r'   r7   r;   r   r   rY   )n1n2n3r  s       rg   test_as_independentr  W  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;;;rj   c                  T     dt         z  t              dt        t              z  k(  sJ y rc  )rw  rW   r   rj   rg   test_call_2r    s$     AaC8q1vrj   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 rc  r4   r  s    rg   r   ztest_replace.<locals>.<lambda>  s    s1Q3x rj   rQ   rR   c                     t        d| z        S rc  r  r  s    rg   r   ztest_replace.<locals>.<lambda>  s    #ac( rj   T)exactFc                     || z
  S r^   r   rQ   rR   s     rg   r   ztest_replace.<locals>.<lambda>  
    q1u rj   c                     || z
  S r^   r   r  s     rg   r   ztest_replace.<locals>.<lambda>  r  rj   c                     || z
  S r^   r   r  s     rg   r   ztest_replace.<locals>.<lambda>  r  rj   r!  c                     | j                   S r^   )	is_Numberexprs    rg   r   ztest_replace.<locals>.<lambda>  s
    T^^ rj   c                     | dz  S rc  r   r  s    rg   r   ztest_replace.<locals>.<lambda>  s
    $' rj   rU  	   )mapc                     | j                   S r^   is_Mulr  s    rg   r   ztest_replace.<locals>.<lambda>  s
    188 rj   c                     d| z  S rc  r   r  s    rg   r   ztest_replace.<locals>.<lambda>  s
    qs rj   rE  c                 &    t        |       t        z  S r^   r4   rX   r  s    rg   r   ztest_replace.<locals>.<lambda>      D	! rj   c                 &    t        |       t        z  S r^   r  r  s    rg   r   ztest_replace.<locals>.<lambda>  r  rj   )simultaneousc                     | |z  |z  S r^   r   rR   r   s     rg   r   ztest_replace.<locals>.<lambda>      ad1f rj   c                     | |z  |z  S r^   r   r   s     rg   r   ztest_replace.<locals>.<lambda>  r  rj   c                     | j                   S r^   r  r  s    rg   r   ztest_replace.<locals>.<lambda>  s
    188 rj   c                     d| z   S rc  r   r  s    rg   r   ztest_replace.<locals>.<lambda>  s
    q1u rj   r   zn1:4r  c                     | S r^   r   r  s    rg   r   ztest_replace.<locals>.<lambda>      1 rj   c                     | S r^   r   r  s    rg   r   ztest_replace.<locals>.<lambda>  r  rj   rW   r   )r/   r4   rW   r3   replacer5   r*   rX   rB   r    r(   rw  r%   r  )	r   rQ   rR   r  condr(  r  r  r  s	            rg   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8rj   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 r^   
is_IntegerrV   s    rg   r   ztest_find.<locals>.<lambda>  
    q|| rj   c                     | j                   S r^   	is_Symbolr  s    rg   r   ztest_find.<locals>.<lambda>  
    q{{ rj   c                     | j                   S r^   r  r  s    rg   r   ztest_find.<locals>.<lambda>  r  rj   T)grouprE  c                     | j                   S r^   r  r  s    rg   r   ztest_find.<locals>.<lambda>  r  rj   rQ   c                 $    t        |       t        u S r^   r  r4   r  s    rg   r   ztest_find.<locals>.<lambda>  s    tAw#~ rj   c                 $    t        |       t        u S r^   r  r  s    rg   r   ztest_find.<locals>.<lambda>  s    $q'S. rj   )	rW   rX   r4   findr%   r   r'   r*   r5   r  rQ   s     rg   	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Drj   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 r^   r  r  s    rg   r   ztest_count.<locals>.<lambda>  s
     rj   c                     | j                   S r^   r  r  s    rg   r   ztest_count.<locals>.<lambda>  s
     rj   rE  rQ   c                 $    t        |       t        u S r^   r  r  s    rg   r   ztest_count.<locals>.<lambda>  s    Q3 rj   )	rW   rX   r4   countr   r'   r*   rw  r   r  s     rg   
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%%%rj   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 y )Npr   )r*   r4   rW   hasrX   r5   rw  r  r   r   r'   )r%  s    rg   test_has_basicsr'    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;wrj   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  )	rW   rX   r4   rU   r/   rY   r&  rV   r   )rw  r  s     rg   test_has_multipler)  "  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!!!!rj   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   rK  rE  TrU  )rW   rX   r2   r  r&  rY   hrw  r%  s     rg   test_has_piecewiser-  9  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<xrj   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(   rW   r9   r4   r.   rX   r5   r&  rY   )r  r  r  rw  s       rg   test_has_iterativer/  H  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!!!rj   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;   rW   r4   rX   rY   r&  )rw  s    rg   test_has_integralsr1  ^  s    AAaCE
"Q1q519$56A55Q<<55Q<<55Q<<551::551::551::uuQqS1W~uuQqSU||rj   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 )NTrE  )	r   rW   rX   r&  rY   rw  r  r%   r'  r   rj   rg   test_has_tupler3  m  s   A;??1Q{q!!!1qt  ###QqT1Q4 $$Q'''1qt  ###1qt  1&&&
 ;??4   ;??166"""T{q!!!!rj   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   rW   r&  rX   rY   r5  s     rg   test_has_unitsr7  }  s>    (aCE;;q>>aCE;;q!%%%rj   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 rc  )r@   rW   rX   r4   rY   rU   r&  )polys    rg   test_has_polysr:    se    1qs3q6z!1a+D88A;;88Aq!88Aq!Qrj   c                  X    t        t        t        f      j                  t              sJ y r^   )r<   rW   rX   r&  r   rj   rg   test_has_physicsr<    s    aV  ###rj   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 r^   )r   rW   as_polyr   rj   rg   r   z&test_as_poly_as_expr.<locals>.<lambda>  s    5A;#6#6q#9 rj   c                  `    t        t        dz  t        t              j                  t              S rc  )r   rW   rX   r@  r   rj   rg   r   z&test_as_poly_as_expr.<locals>.<lambda>  s    5aA#6#>#>q#A rj   )
rW   rX   r@  as_exprr4   r@   r%   r0   rO   r  r,  s     rg   test_as_poly_as_exprrC    s    	1qs1uA99; A%%%99Q?""$)))AJ1%---Q1A99;! Q4<<>!!!7??T?*222
>9:
>ABrj   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 )NFTrE  r   )boolr%   r  r  rW   rX   r   rj   rg   test_nonzerorF    s    <5   ;$7d??A;$A;%!9!9!9rj   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   r|  FrE  rU  r  c                       e Zd Zy)test_is_number.<locals>.ANrk  r   rj   rg   r  rI    rm  rj   r  )r   	is_numberr   r   rW   rX   r/   r   r   r   r    r   r   rY  r   )r  r  rQ   s      rg   test_is_numberrK    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;;%rj   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         rE  rK  r!  r   )r%   as_coeff_addrW   rX   rx  s    rg   test_as_coeff_addrQ    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	)))rj   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   rM  rN  rE  rO  rK  Frationalr   r!  r   T)r%   as_coeff_mulrW   rX   r.   r   rx  s    rg   test_as_coeff_mulrV    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-???rj   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!  rU  )r!  rU  r   )r   r!  )rU  r   r  rE  )r  rE  r   rI  )r   r   )rE  r   r  rK  )rK  r   rJ  )rJ  r   )rW   as_coeff_exponentr   r/   r   rw  )Dfxs     rg   test_as_coeff_exponentr[    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0rj   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   rU  rK  r  rE  rJ  r|  rS  r          @rT   Tr  c                       e Zd ZdZd Zy)(test_extractions.<locals>.sign_invariantrE  c                     | S r^   r   r   s    rg   r   z0test_extractions.<locals>.sign_invariant.__neg__T  s    Krj   N)r   r   r   nargsr   r   rj   rg   sign_invariantr`  R  s    	rj   rc     )r%   Exp1r    rW   extract_multiplicativelyrX   r  r0   r   r   extract_additivelyr  rY   rQ   r   r'   r   could_extract_minus_signr   r
   r   r(  )baserT   rc  rl  r  s        rg   test_extractionsrj    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',,,,,rj   c                      ddt         t        fD ]0  } t        j                  |       J t        j                  |       0J  y rD  )r   r   rg  rf  )r"  s    rg   test_nan_extractionsrl  d  sG    As^ 7%%a(000++A.6667rj   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 )NrE  r!  r   r   rU  rK  r|  r  zn1 n2Fr  )rightzn m o lT)rW   coeffrY   rX   r   r%   r  r   r(   rw  r   r0   )r  r  r  expr2rT   r  r  ls           rg   
test_coeffrr  j  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4rj   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psirE  r   r(   r   r   r   ro  r"  kapparu  r  s       rg   test_coeff2ry    s    z"HAu
5/C	!Q$!A#c!fkk!Q''!Q$QQ1B*BBCA	
A773q6;;q>"ac)))rj   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 rt  rv  rw  s       rg   test_coeff2_0r{    s    z"HAu
5/C	!Q$!A#c!fkk!Q''!Q$QQ1B*BBCA	
A773q6;;q!$%***rj   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 rc  )rY   rW   rX   ro  )r  rp  s     rg   test_coeff_expandr}    s    a!eaZ<Dq1uqjL1acAaCi!^++E::a=QUQJ&&&;;q>a!eaZ1Q319q.8888rj   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   rE  )rW   r:   r%   r  r   rj   rg   test_integrater    sA    ;;q>QT!V###;;1ay!QVV+++rj   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 y r^   )rW   as_base_expr%   r  rX   rY   r   rj   rg   test_as_base_expr    s    ==?q!%%j(((aCE QqSUAEEN222EAI""$QAEE(::::UQJ##%!a%333rj   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!  rE  )hasattrr   rW   rX   r    r  s    rg   test_issue_4963r    s    3q!9.///3q!e,.>???3q!9.///3q!e,.>???s1a%(!e<q@D4)***rj   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 )NrE  r!  r   Tdeepr   F)symbolicall)combine)forcer  )rK   r.   r   rW   rI   rX   rL   r/   rH   r0   rQ   rR   rS   rF   rY   rU   rJ   rA   rG   r=   rD   rE   r9   r>   r   r?   r   rj   rg   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Rrj   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 )NrE  r   Fr  r   )rW   as_powers_dictrX   rY   r   r%   r   rj   rg   test_as_powers_dictr     s    !Q'''qDF""$Aq!444q!e$335!A$!EEEaC!!$)))E!!#A&!+++rj   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 )NrE  r!  r   )r!  r   rE  r   r!  Fr  )r   r   r   r!  r   rN  )r   r   r   rN  r   r   )
r%   r  rW   rX   r   as_coefficients_dictrQ   rR   rS   r   )checkr  r  s      rg   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  rE  Tcsetr  )r  warnr   c                  N    t        t        t        d      j                  d      S )NFr  Tr  )r   rW   args_cncr   rj   rg   r   ztest_args_cnc.<locals>.<lambda>(  s    s1a%8AAtAL rj   g      rK        ?)r(   rW   r  rQ   rX   r   rO   rW  )r  s    rg   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3rj   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 )NrT   Fr  )reeval)r'   rW   r  _new_rawargsrX   r%   r  )rT   rQ   r  s      rg   test_new_rawargsr  /  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)))rj   c                      t        d      dk(  sJ t        d      dk(  sJ t        t        t        z   d      j                  sJ y )NFr  r   rE  )r   r   rW   rX   is_Addr   rj   rg   test_issue_5226r  C  sB    !###!###q1uu%,,,,rj   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 rP  )r%   r  free_symbolsrv  rW   r;   rX   rN   r   rj   rg   test_free_symbolsr  I  s    55&&&>>aS   A1ay!..1#555a!Q##11aS888&&&1H""qc)))rj   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 )NrE  r   r!  c                  @    t        j                  t         t        h      S r^   rW   has_freerX   r   rj   rg   r   ztest_has_free.<locals>.<lambda>a  s    ajj!Q0 rj   )rU  Tc                  6    t        j                  t        g       S r^   r  r   rj   rg   r   ztest_has_free.<locals>.<lambda>f  s    ajjB/ rj   )
rW   r  rX   rY   rw  r;   rO   r  rC   r2   r   s    rg   test_has_freer  S  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/0rj   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 )NrE  r   c                  4    t        j                  t               S r^   rW   	has_xfreer   rj   rg   r   z test_has_xfree.<locals>.<lambda>m  s    akk!n rj   c                  6    t        j                  t         g      S r^   r  r   rj   rg   r   z test_has_xfree.<locals>.<lambda>n  s    akk1#. rj   )rW   r  rX   rO   r  r   rj   rg   test_has_xfreer  i  sv    EaS!!!UQJ!!1q5'***A	$$a!eW---
9,-
9./rj   c                  z    t        dd      } | t        d      z  t        d      z  | t        d      z  dz  k(  sJ y )NrW   Fr  r   r  r!  )r'   r0   r  s    rg   test_issue_5300r  q  s9    s&AT!W9T!W$q'	!+++rj   c                  V    ddl m}  t        t        z   | t        t        z        k(  sJ y )Nr   floor)#sympy.functions.elementary.integersr  rW   rX   r  s    rg   test_floordivr  v  s    96U1q5\!!!rj   c                  0   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  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!  rE  rU        @TrS  rK  )	r   as_coeff_Mulr   r   rW   rX   r%   r  r   r   rj   rg   test_as_coeff_Mulr  {  s   1:""$WQZ(@@@@Aq>&&(Xa^WQZ,HHHH:""$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*<<<rj   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   rU  r  TrS  )r   as_coeff_Addr   r   rW   rX   r%   r  r   rj   rg   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0rj   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 )NrE  r   r!  keyrU  )rE  r   r!  rW   )rW   r0   sortedr&   rT   r4   r5   r3   r%   r   rw  r  r.   r,   r   rX   rY   r)   )r  rQ   rR   s      rg   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8rj   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   rE  r!  zA,BFr  )
rW   as_ordered_factorsrT   r4   r5   r   rw  r  r   r(   )r   r  r  r  s       rg   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///rj   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   rE  r!  rU  rJ  rS  r]  lex)ordergrlexzrev-lexz	rev-grlexr{  T)data))r          )rE  r   )rW   as_ordered_termsr4   r5   rw  r  r   r0   r   r   rX   r(   )r   r  r   r{  s       rg   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Prj   c                  F    ddl m} m} t        |  |gd       |  |gk(  sJ y )Nr   r5  c                 "    | j                         S r^   )sort_key)args    rg   r   z+test_sort_key_atomic_expr.<locals>.<lambda>  s    3<<> rj   r  )r6  r  r   r  r5  s     rg   test_sort_key_atomic_exprr    s'    (A2q'9:r1gEEErj   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   rE  c                        j                   t        t        j                  t              j                  t
        t        t        j                        S r^   _eval_intervalrW   r%   r  r   rX   r  s   rg   r   z$test_eval_interval.<locals>.<lambda>  s5    (8(8(8AFFB(G(V(VWXZ\^_^d^d(e rj   c                        j                   t        t        j                  t              j                  t
        t        j                  t              S r^   r  r  s   rg   r   z$test_eval_interval.<locals>.<lambda>  s5    (8(8(8AFFB(G(V(VWXZ[Z`Z`bd(e rj   c                        j                   t        t        j                  t              j                  t
        t        t        j                        S r^   )r  rW   r%   r  r   rX   r  s   rg   r   z$test_eval_interval.<locals>.<lambda>
  s5    (8(8(8AEE2(F(U(UVWY[]^]b]b(c rj   c                  8    t        j                  t         d d       S r^   )rW   r  r   rj   rg   r   z$test_eval_interval.<locals>.<lambda>  s    q//4> rj   )
r.   rW   r  r   rX   rO   rp  rW  r6   r   r  s   @rg   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,,,rj   c                      t        dt        z        j                  t        t        j                  t        j
                        t         dz  t        d      z   k(  sJ y )NrE  r   )r8   rW   r  r%   r  r  r   r   rj   rg   test_eval_interval_zoor    s=    ac7!!!QVVQUU3s1ur!u}DDDrj   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!  rE  r   r  r   r  g       @rJ  r   r  r   Fr     g      @   r  rU  rT  )rW   	primitiver%   r  rX   r   rY   r  r  r  r  r   r  )r  r  s     rg   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0rj   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 )NrE  r   rU  r!  r  )rW   rf  r  s    rg   test_issue_5843r  +  sr    	AAaC))!,111aC))!A#.!333qS1Q3K11!4!;;;rj   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   )checksolrE  r  TFr   r!  r  zz1 z2)zero)sympy.solvers.solversr  r   rW   is_constantrT   rX   rQ   r5   r4   rY  r   r/   rw  r    r%   r  r(   rN   )r  r  z1z2s       rg   test_is_constantr  2  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+++rj   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 )NrS  r   r  r   r   rE  rK  r!  FrU  r  r  rd  r  x   r%  Tr.  qrJ  r|  i  i 6     rT  )r0   equalsrW   r5   r4   rQ   r,   r   rN   r%   r  r   rY  r   r'   r   r(   )r"  r  r  ansr   r%  r  rY   s           rg   test_equalsr  R  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;;rj   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   rJ  rK  rE  )%sympy.functions.combinatorial.numbersr  sympy.simplify.simplifyr  rW   _randomrT   r2   r1   rX   rY   )r  r  s     rg   test_randomr    sn    ;.!9Q<!---8Ar1b!,444 c!Qi^$,,.666rj   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                  d/      t        d0d*      k(  sJ  |	j                  d1      t        d0d*      k(  sJ t        t        d2        t        t        d3        t        t        j$                  j                               d4k(  sJ t        t        d      j                               d5k(  sJ dt
        z  t        t        z  z   j                         d6d#t        z  z   k(  sJ dt
        z  t        dz  z   j                         d6k(  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            d7k(  sJ t        t
        dz  t        t        z  z   j                  d      j'                               d8k(  sJ t        t
        dz  t        t        z  z   j                  d            d7k(  sJ t        t        d#z   z  j                  d#      t        d9d*      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        d@      j                  d            dAk(  sJ t        t        dB      j                  d            dCk(  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dDdED              sJ t3        fdFdED              sJ t3        
fdGdED              sJ t3        
fdHdED              sJ t5        t                    t        u sJ t              j                         j                  sJ t5        t        
            t        u sJ t        
      j                         j                  rJ  y )INz	0.1249999r   z0.12l   
>V3&Z
 rJ  l   
>V3&Z
 z1/7rU  z0.1429z.[12345]z0.1235z.1349z0.13i90  rE  rK  i40  r]  g     @r  r   z4.56r  g      I@c                  (    t        t        dz   d      S rc  )roundrW   r   rj   rg   r   ztest_round.<locals>.<lambda>  s    eAE1o rj   gffffff@z2.3id   z0.%s5r   .z->g333333?r!  r  iu  r   gQ?z0.0928z1.999999999999999999999999999 r  z3.000000000000000000000000000         z2.999999999999999999999999999   c                  *    t        j                         S r^   )rW   r   r   rj   rg   r   ztest_round.<locals>.<lambda>  s    aggi rj   c                  4    t        d      j                         S rP  )rw  r   r   rj   rg   r   ztest_round.<locals>.<lambda>  s    adjjl rj   r9  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r^   )r  r   ra   .0r%  r  s     rg   	<genexpr>ztest_round.<locals>.<genexpr>  s!     @4a$+@   %()rK  r   rE  c              3   f   K   | ](  }t              j                  |      j                   * y wr^   )r%   r   r  r  s     rg   r  ztest_round.<locals>.<genexpr>  s#     @1Q4::a=++@   .1c              3   T   K   | ]  }t        t        |            t        u  ! y wr^   )r  r   rb   r  r%  fis     rg   r  ztest_round.<locals>.<genexpr>  s!     C14b!%.Cr  c              3   f   K   | ](  }t              j                  |      j                   * y wr^   )r%   r   is_Floatr  s     rg   r  ztest_round.<locals>.<genexpr>  s#     ?q1R5;;q>**?r  )strr   r   r%   r  r   r0   rO   r  r  absr  endswithra   r   r   r  r   r  as_real_imagNaNr  r  r  rb   r  r  )d20r  rT   r"  r   r%  r   vLrQ   r  r  s             @@rg   
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(1	5A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{{}''''(rj   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 )NrW   rE  Fr  r  r   )r(   r   r`   r   r   r  r   r  )rW   hee1xxue2x2s         rg   $test_held_expression_UnevaluatedExprr&    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/!,----rj   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     rg   test_round_exception_nostrr*  7  sL     	uA.		
 _--	  #CF"""#s   ( 	A
AA
c                  \    t        dt        z  t        z        j                         dk(  sJ y )Nr^  )rE  rE  )r-   r   r   extract_branch_factorr   rj   rg   test_extract_branch_factorr-  D  s&    SU2X446&@@@rj   c                      t        j                  t        dz         t        fk(  sJ t        j                  t        dz        t        fk(  sJ y )Nr   rE  )r   	make_argsrW   r   r   rj   rg   test_identity_removalr0  H  s<    ==QA4'''==1!%%%rj   c                  <    t        d      dz   t        d      k(  sJ y )Nr  rE  r  )r   r   rj   rg   test_float_0r2  M  s    :>U3Z'''rj   c                      t        d      t        z  t        d      k(  sJ t        t        d      z   j                  sJ y )Nr  )r   rW   r  r   rj   rg   test_float_0_failr4  Q  s3    :a<5:%%%c
N""""rj   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)rJ   )rR   rY   rQ   rU   rS   r0   r   )r  r   s     rg   test_issue_6325r6  W  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///rj   c                  ^    t         t        z  } t        t        z  }| j	                  |      J y r^   )rQ   rS   rW   rY   r  )f1f2s     rg   test_issue_7426r:  `  s(    	
QB	
QB99R=   rj   c                      t        dd      } t        t        | d      sJ t        ddd      } | dkD  t        j                  u sJ y )NrW   F)extended_positiver   Tr4  )r'   r	   r#   r%   r&  r  s    rg   test_issue_11122r=  f  sF    se,ARA 	sU.AEaggrj   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 )
NrW   Tr#  rK  rE  rU  r   r.  F)r'   r5   r3   r  )rW   r"  e3e4e5s        rg   test_issue_10651rB  o  s    sA
q&1q5	B
AqD&1*AA	'B	
CFAI#a&1	$BsT"A
a%B>>###>>###>>###>>u$$$rj   c                  b    t        dd      } | t        |       z  t        |       z  | dz  k(  sJ y )NrW   Tr#  r!  )r(   r  r  s    rg   test_issue_10161rD  |  s0    $ASV8CF?ad"""rj   c                  h     t        d       t        t         fd       t        t         fd       y )NrW   c                  ,    t        t                     S r^   )ra   r/   r  s   rg   r   z"test_issue_10755.<locals>.<lambda>  s    c#a&k rj   c                  8    t               j                  d      S rc  )r/   r   r  s   rg   r   z"test_issue_10755.<locals>.<lambda>  s    c!fll1o rj   r(   rO   r  r  s   @rg   test_issue_10755rI    s"    A
9)*
9-.rj   c                      t        d      } t        t        t        j                  | z
        | dt        j                  f      t        dd      t        d      dz  z
  k(  sJ y )NrW   r   rK  r   )r(   r:   r/   r%   r  r   r  s    rg   test_issue_11877rK    sJ    AS!_q!QVVn5"a#a&QR(9RRRRrj   c                      t        d      } t        t        j                  d| z   d      }|j	                         |k(  sJ y )NrW   rE  Fr  )r(   r   r%   r  normal)rW   r   s     rg   test_normalrN    s3    AAFFAEE*A88:??rj   c                  B     t        d       t        t         fd       y )NrW   c                  F    t               j                   dt        d      S )Nr   r   )r3   rF  r   r  s   rg   r   ztest_expr.<locals>.<lambda>  s    c!fmmAq"c: rj   rH  r  s   @rg   	test_exprrQ    s    A
9:;rj   c                      t        t              } | j                  j                  t        t        g       | j                         t        dz  k(  sJ y rc  )r   r   r   extendrW   build)ebs    rg   test_ExprBuilderrV    s8    	S	BGGNNAq688:Arj   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_parserrX  r  )rX  rW   rX   s      rg   test_issue_22020rZ    s3    5./A./A188A;%rj   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 )	NrW   rE  FTr9  zx + 1c                       e Zd Zd Zy))test_non_string_equality.<locals>.BadReprc                     t         r^   )RuntimeErrorr   s    rg   __repr__z2test_non_string_equality.<locals>.BadRepr.__repr__  s    rj   N)r   r   r   r`  r   rj   rg   BadReprr]    s    	rj   ra  )r(   r+   )rW   onera  s      rg   test_non_string_equalityrc    s    A
!*CHH3J5   3J4EW&&&EW%%%
  Nu$$$Nt###rj   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.pytestrf  rW   expr_free_symbolsr   rv  r%   rM   r   re  s    rg   
test_21494ri    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!  )rW   r  r   rj   rg    test_Expr__eq__iterable_handlingrk    s    a==rj   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}rE  z22.319776824715853173956590377503266813254904772376)formatr%   r  r   r.   r4   r   rj   rg   test_formatrn    sx    AFF#v---QqT"e+++b!%>>>>c#a&k*.bbbbrj   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   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.   r/   (sympy.functions.elementary.miscellaneousr0   r1   $sympy.functions.elementary.piecewiser2   (sympy.functions.elementary.trigonometricr3   r4   r5   'sympy.functions.special.delta_functionsr6   r7   'sympy.functions.special.error_functionsr8   'sympy.functions.special.gamma_functionsr9   sympy.integrals.integralsr:   r;   sympy.physics.secondquantr<   sympy.polys.partfracr=   sympy.polys.polytoolsr>   r?   r@   sympy.polys.rationaltoolsrA   sympy.series.orderrB   sympy.sets.setsrC   sympy.simplify.combsimprD   sympy.simplify.gammasimprE   sympy.simplify.powsimprF   sympy.simplify.radsimprG   rH   sympy.simplify.ratsimprI   r  rJ   rK   sympy.simplify.trigsimprL   sympy.tensor.indexedrM   r6  rN   rg  rO   rP   	sympy.abcrQ   rR   rS   rT   rU   rV   rW   rX   rY   rw  r  r+  r\   r   r   i5f1_1powrA  r   r   r   r   r   r   r   r   r  r)  r5  rB  rG  rM  r[  r]  r_  ra  rd  rg  rq  rs  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r#  r'  r)  r-  r/  r1  r3  r7  r:  r<  rC  rF  rK  rQ  rV  r[  rj  rl  rr  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r*  r-  r0  r2  r4  r6  r:  r=  rB  rD  rI  rK  rN  rQ  rV  rZ  rc  ri  rk  rn  r   rj   rg   <module>r     s   + )  " ' * * * 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	&64 
1
@
0C	P*Z.5b4:4:=$	11-,A1h."7<r  
<9~E<&*4"."," & $C( B*@*1(Y-x7O5d*+9,
4+S.,2$4**(-*1,0,
"
=$1$(9V0"QDF
-E
1*<,@<~7@(F.2
.A&
( # #
0!
%#
/S
<
 $,8&crj   