o
    *ήc&                    @   s  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$ d d
l%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlBmCZCmDZDmEZE d dlFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZNmOZO d dlPmQZQ d dlRmSZS d dlTmUZUmVZVmWZW d dlXmYZY d dlZm[Z[ d dl\m]Z] d dl^m_Z_ d d l`maZa d d!lbmcZcmdZd d d"lemfZf d d#lgmhZhmiZi d d$ljmkZk d d%llmmZm d d&lnmoZo d d'lpmqZqmrZr d d(lsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z| e2d)ed*\Z}Z~ZG d+d, d,ZG d-d. d.eZG d/d0 d0eZe Ze Ze d1ed2eze{eeze{e{ gZed3d4eeg Zd5d6 Zd7d8 Zd9d: ZG d;d< d<ZG d=d> d>eeZG d?d@ d@ZG dAdB dBeZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ Zerdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zerdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd ZdS (      )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)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)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                   @   sp   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )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                 C   s   t |ttfr|| j S tS N
isinstanceintfloatnumberNotImplementedselfrN    rb   A/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_expr.py__radd__A      
zDummyNumber.__radd__c                 C   s   t |tttfr| j| S tS rY   r[   r\   r]   rX   r^   r_   r`   rb   rb   rc   __add__F      
zDummyNumber.__add__c                 C   s   t |ttfr|| j S tS rY   rZ   r`   rb   rb   rc   __rsub__K   re   zDummyNumber.__rsub__c                 C   s   t |tttfr| j| S tS rY   rf   r`   rb   rb   rc   __sub__P   rh   zDummyNumber.__sub__c                 C   s   t |ttfr|| j S tS rY   rZ   r`   rb   rb   rc   __rmul__U   re   zDummyNumber.__rmul__c                 C   s   t |tttfr| j| S tS rY   rf   r`   rb   rb   rc   __mul__Z   rh   zDummyNumber.__mul__c                 C   s   t |ttfr|| j S tS rY   rZ   r`   rb   rb   rc   __rtruediv___   re   zDummyNumber.__rtruediv__c                 C   s   t |tttfr| j| S tS rY   rf   r`   rb   rb   rc   __truediv__d   rh   zDummyNumber.__truediv__c                 C   s   t |ttfr|| j S tS rY   rZ   r`   rb   rb   rc   __rpow__i   re   zDummyNumber.__rpow__c                 C   s   t |tttfr| j| S tS rY   rf   r`   rb   rb   rc   __pow__n   rh   zDummyNumber.__pow__c                 C      | j S rY   r^   ra   rb   rb   rc   __pos__s      zDummyNumber.__pos__c                 C   s   | j  S rY   rr   rs   rb   rb   rc   __neg__v      zDummyNumber.__neg__N)__name__
__module____qualname____doc__rd   rg   ri   rj   rk   rl   rm   rn   ro   rp   rt   rv   rb   rb   rb   rc   rX   4   s    rX   c                   @      e Zd ZdZdd ZdS )I5   c                 C   rq   rY   rr   rs   rb   rb   rc   __int__}   ru   z
I5.__int__N)rx   ry   rz   r^   r   rb   rb   rb   rc   r}   z       r}   c                   @   r|   )F1_1皙?c                 C   rq   rY   rr   rs   rb   rb   rc   	__float__   ru   zF1_1.__float__N)rx   ry   rz   r^   r   rb   rb   rb   rc   r      r   r      z1.3r~   g      @c                 C   s"   t D ]}t D ]}| || qqdS )NT)all_objs)sxoyorb   rb   rc   dotest   s
   r   c                  C      dd } t | s
J d S )Nc                 S   s>   | }| 
 }|  }| | }| | }| | }| | }| | }~d S rY   rb   rN   rO   rT   rb   rb   rc   j   s   ztest_basic.<locals>.jr   )r   rb   rb   rc   
test_basic   s   
r   c                  C   r   )Nc                 S   s4   | }||7 }| }||8 }| }||9 }| }|| }d S rY   rb   r   rb   rb   rc   r      s   ztest_ibasic.<locals>.sr   )r   rb   rb   rc   test_ibasic   s   	r   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+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                 C      t d| |S N+	SpecialOpra   otherrb   rb   rc   rg         zNonBasic.__add__c                 C      t d|| S r   r   r   rb   rb   rc   rd      r   zNonBasic.__radd__c                 C   r   N-r   r   rb   rb   rc   rj      r   zNonBasic.__sub__c                 C   r   r   r   r   rb   rb   rc   ri      r   zNonBasic.__rsub__c                 C   r   N*r   r   rb   rb   rc   rl      r   zNonBasic.__mul__c                 C   r   r   r   r   rb   rb   rc   rk      r   zNonBasic.__rmul__c                 C   r   N/r   r   rb   rb   rc   rn      r   zNonBasic.__truediv__c                 C   r   r   r   r   rb   rb   rc   rm      r   zNonBasic.__rtruediv__c                 C   r   N//r   r   rb   rb   rc   __floordiv__   r   zNonBasic.__floordiv__c                 C   r   r   r   r   rb   rb   rc   __rfloordiv__   r   zNonBasic.__rfloordiv__c                 C   r   N%r   r   rb   rb   rc   __mod__   r   zNonBasic.__mod__c                 C   r   r   r   r   rb   rb   rc   __rmod__   r   zNonBasic.__rmod__c                 C   r   Ndivmodr   r   rb   rb   rc   
__divmod__   r   zNonBasic.__divmod__c                 C   r   r   r   r   rb   rb   rc   __rdivmod__   r   zNonBasic.__rdivmod__c                 C   r   N**r   r   rb   rb   rc   rp      r   zNonBasic.__pow__c                 C   r   r   r   r   rb   rb   rc   ro      r   zNonBasic.__rpow__c                 C   r   )N<r   r   rb   rb   rc   __lt__   r   zNonBasic.__lt__c                 C   r   )N>r   r   rb   rb   rc   __gt__   r   zNonBasic.__gt__c                 C   r   )N<=r   r   rb   rb   rc   __le__   r   zNonBasic.__le__c                 C   r   )N>=r   r   rb   rb   rc   __ge__  r   zNonBasic.__ge__N)rx   ry   rz   r{   rg   rd   rj   ri   rl   rk   rn   rm   r   r   r   r   r   r   rp   ro   r   r   r   r   rb   rb   rb   rc   r      s,    
r   c                   @      e Zd ZdZdS )NonExprzCLike NonBasic above except this is a subclass of Basic but not ExprNrx   ry   rz   r{   rb   rb   rb   rc   r         r   c                   @   r|   )r   z>Represents the results of operations with NonBasic and NonExprc                 C   s   t | }|||f|_|S rY   )object__new__args)rW   oparg1arg2objrb   rb   rc   r     s   
zSpecialOp.__new__N)rx   ry   rz   r{   r   rb   rb   rb   rc   r         r   c                   @   r   )NonArithmeticzGRepresents a Basic subclass that does not support arithmetic operationsNr   rb   rb   rb   rc   r     r   r   c                     s   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 ]}|  d| ff | d |ff|  d| ff | d |ff|  d| ff | d |ff|  d| ff | d |ff|  d| ff | d |ff|  d	| ff | d	 |fft| d
| fft |d
 |ff|  d| ff | d |ff |k d| ff| k d| ff |kd| ff| k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sJ qq6t t fD ]tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fd d tt fd!d tt fd"d tt fd#d tt fd$d tt fd%d tt fd&d tt fd'd tt fd(d qq-d)S )*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   rT   r   r   r   r   r   r   r   r   r   r   r   r   c                      s     S rY   rb   rb   enarb   rc   <lambda>Y      z-test_cooperative_operations.<locals>.<lambda>c                      s     S rY   rb   rb   r   rb   rc   r   Z  r   c                      s     S rY   rb   rb   r   rb   rc   r   [  r   c                      s     S rY   rb   rb   r   rb   rc   r   \  r   c                      s     S rY   rb   rb   r   rb   rc   r   ]  r   c                      s     S rY   rb   rb   r   rb   rc   r   ^  r   c                      s     S rY   rb   rb   r   rb   rc   r   _  r   c                      s     S rY   rb   rb   r   rb   rc   r   `  r   c                      s     S rY   rb   rb   r   rb   rc   r   a  r   c                      s     S rY   rb   rb   r   rb   rc   r   b  r   c                      s     S rY   rb   rb   r   rb   rc   r   c  r   c                      s     S rY   rb   rb   r   rb   rc   r   d  r   c                      s
   t  S rY   r   rb   r   rb   rc   r   e     
 c                      s
   t  S rY   r   rb   r   rb   rc   r   f  r   c                      s     S rY   rb   rb   r   rb   rc   r   g  r   c                      s     S rY   rb   rb   r   rb   rc   r   h  r   c                      s    kS rY   rb   rb   r   rb   rc   r   i  r   c                      s    kS rY   rb   rb   r   rb   rc   r   j  r   c                      s    k S rY   rb   rb   r   rb   rc   r   k  r   c                      s    k S rY   rb   rb   r   rb   rc   r   l  r   c                      s    kS rY   rb   rb   r   rb   rc   r   m  r   c                      s    kS rY   rb   rb   r   rb   rc   r   n  r   c                      s    kS rY   rb   rb   r   rb   rc   r   o  r   c                      s    kS rY   rb   rb   r   rb   rc   r   p  r   N)r	   r#   ZeroOneInfinityNegativeInfinityComplexInfinityHalfr   r   r%   r   r   r   r   r   r   typer   r   r   r   rL   	TypeError)exprsneresultsresr   rb   r   rc   test_cooperative_operations  s   
 r   c                  C   s   ddl m}  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ktju s*J t dk tju s4J t dktju s>J t dktju sHJ t dktju sRJ tddd}|d |d k tju seJ | tt tt d j	| ksuJ d S )Nr   )r       rTrealr   )
sympy.core.relationalr    r   r#   falsetruer%   rT   r   func)r    r   rb   rb   rc   test_relationals  s   $r   c                  C   s  t ddd} t ddd}t ddd}t ddd	}| d
k t| d
ks#J |d
kt|d
ks.J |d
kt|d
ks9J |d
kt|d
ksDJ t dddd} t dddd}t dddd}t dddd}| d
k tju siJ |d
ktju srJ |d
ktju s{J |d
ktju sJ t ddd	} t ddd}t ddd}t ddd}| d
k tju sJ |d
ktju sJ |d
ktju sJ |d
ktju sJ t dddd} t dddd}t dddd}t dddd}| d
k tju sJ |d
ktju sJ |d
ktju sJ |d
ktju sJ d S )Nm1F)nonnegativem2positivem3)nonpositivem4)negativer   T)r   r   r   r   )r   r   )r   r   )r%   r    r"   r!   r   r#   r   r   )r   r   r   r   rb   rb   rc   test_relational_assumptions  s@   r   c                      s   t D ]< tt fdd tt fdd  dkr# d dks"J n	tt fdd tt fdd tt fd	d qd S )
Nc                      s    d S N1rb   rb   r   rb   rc   r     r   z"test_basic_nostr.<locals>.<lambda>c                      s    d S r   rb   rb   r   rb   rc   r     r   r   r   11c                      s    d S r   rb   rb   r   rb   rc   r     r   c                      s    d S r   rb   rb   r   rb   rc   r     r   c                      s    d S r   rb   rb   r   rb   rc   r     r   )
basic_objsrL   r   rb   rb   r   rc   test_basic_nostr  s   r   c                   C   sf  dt  t t  t dddt  tdt  ksJ dt  t t  t dddt  t tt  ks1J dt  d t  t dddt  tdt  ksIJ dt  d t  t dddt  d tt  ksbJ dt  t  t dddt  tdt  ksxJ dt  t tt   t  t dddt  tdt  ksJ dt  t tt   t  t dddt  t tt  ksJ d S N   r   )rT   rU   seriesr@   rb   rb   rb   rc   'test_series_expansion_for_uniform_order  s   0202,8>r   c                   C   s  ddt tdtd d    t dksJ dt d  d t  t d  t d dks.J dt  d t  t d  t d dksCJ t d dt   t d dksTJ dt d  t d dkscJ t d t d dkspJ t t d  t d dksJ t d t d dksJ d S )Nr   r   r   r   r   r   )rT   r-   leadtermrb   rb   rb   rc   test_leadterm  s   ..*"r   c                  C   s.  ddt tdtd d    t dksJ dt d  d t  t d  t dt d  ks0J dt  d t  t d  t dt  ksEJ t d dt   t dt  ksVJ dt d  t dkscJ t d t dksnJ t t d  t t ks{J t d t t d ksJ t t t tu sJ ttdd  dt  t tdd tdtj	 d  d  tdd dtd tj	 d  } | t dtd t  dtj	 t   dtd dtj	   ksJ dt  t d  } dtd	 d }| 
t td|  td
td	 t dt  dtd	 d  ksJ d S )Nr   r   r   c                   S   s   t d dS Nr   rT   as_leading_termrb   rb   rb   rc   r         z&test_as_leading_term.<locals>.<lambda>      r~   ii      i@  )rT   r-   r   r   rL   
ValueErrorr   r.   r#   ImaginaryUnitsubsrU   )r   drb   rb   rc   test_as_leading_term  s.   .2*"*2&r  c                   C   sN   t td tdtd  tdtd  t tdtd dfks%J d S r   )rT   r3   r2   r   rb   rb   rb   rc   test_leadterm2  s   0r  c                   C   s&   t t t tt t dfksJ d S )Nr   )rU   rV   rT   r   rb   rb   rb   rc   test_leadterm3  s   &r	  c                   C   sJ   t td tdtd  tdtd  t tdtd ks#J d S r   )rT   r3   r2   r   rb   rb   rb   rc   test_as_leading_term2  s   0r
  c                   C   sT   dt  t tdt  ksJ dt t t  td  tdt t t  ks(J d S Nr   )r   rT   r   rb   rb   rb   rc   test_as_leading_term3  s   6r  c                  C   s   t dddd} | d  d| d  d|   d  | d | d d|   d   | d | d   | d| d  d|   d   | | t t   d|  | d   d d| t t   d| d   dt  }|t | d ksmJ d S )NrQ   T)integerr   r   r   r  r   )r%   rT   r   r=   )rQ   r   rb   rb   rc   test_as_leading_term4  s&   <
r  c                      sb   G dd dt   dt t dt ksJ  dt dks&J tt fdd d S )Nc                   @      e Zd ZdS )z&test_as_leading_term_stub.<locals>.fooNrx   ry   rz   rb   rb   rb   rc   foo      r  r   c                      s    t t S rY   r   rb   r  rb   rc   r     r   z+test_as_leading_term_stub.<locals>.<lambda>)r   rT   r   rL   NotImplementedErrorrb   rb   r  rc   test_as_leading_term_stub  s   "r  c                   C   s   t td ttdtd  ksJ t td ttdks J ttd tttd d ks2J ttd ttttd  ksDJ t ttttdksRJ t ttttdt tkseJ d S )Nr   r   r   r  r   )r   rT   r   rU   r9   r,   r-   rb   rb   rb   rc   #test_as_leading_term_deriv_integral  s   $$$*r  c                  C   sL  t  t hks	J dt   t tjhksJ ddtt   tt hks&J ddtt   tttjtdt hks<J dt tt     tdt thksOJ tj tjhksZJ tjtt	 kseJ t
ttt	 ksqJ tdt  tjt hksJ tdt  tjt hksJ tt t  t hksJ tt t t t thksJ tt t t t t thksJ tt t t tt t tthksJ tt tt  t tt tt tthksJ tt tthksJ tt tttt tt  krtthksJ  J ttt tttt tt hksJ dt dt   tdt  tdt dt   tdt  dt dt hksGJ tt t
t  d } | ttt hks^J | tttt t
t hksoJ | ttt t
t hksJ | tttt tdhksJ | tttdt
t tt hksJ d S )Nr   r   r   r   )rT   atomsr#   r   r3   r%   r   rU   r   setr2   r   r>   r   rV   rR   r   r   r   r,   r   fr   r   r   rb   rb   rc   
test_atoms  sR    ,& $*
, (







r  c                  C   s  t dddd} tdtttdu sJ tjtttdu s J ttdu s)J ttdu s2J td tdu s=J td tdu sHJ td tdu sSJ td tdu s^J dt tdu siJ dt tdu stJ t|  tdu sJ t|  | du sJ tt tdu sJ | |  | du sJ | t | du sJ t|   tdu sJ dt |  tdu sJ td dt  d tdu sJ td dt  d tdu sJ td dt  d  du sJ tttdu sJ ttd tdu sJ td dt tt  d tdu s&J td dt tt  d tdu s<J td td  ttd   tt  t	d  du sYJ td td  ttd   tt  t	t  du svJ td td  ttd   tt  t	d ttdu sJ td td  ttd   tt  t	t ttdu sJ d	t
t d	 t
tdu sJ d S )
NkT)r   r  r   r   Fr      r   )r%   r   is_polynomialrT   rU   rV   r#   Pir.   r,   r  )r  rb   rb   rc   test_is_polynomialH  s@   "" ,,::4
4
(r   c                   C   s  t d du s
J t dtdu sJ tdd du s J tddtdu s,J dt  du s6J dt tdu sAJ tt  du sKJ tt tdu sVJ tt ttdu sbJ td dt t   du srJ td dt t  tdu sJ td dt t  ttdu sJ ttt  du sJ ttt tdu sJ ttt tdu sJ ttt ttdu sJ tj du sJ tj du sJ tj	 du sJ tj
 du sJ d S )Nr   T   6   r   r   F)r   is_rational_functionrT   r   rU   r2   r#   NaNr   r   r   rb   rb   rb   rc   test_is_rational_functiony  s(    "$r%  c                  C   s   t td  t t ttd   } | tddu sJ | tddu s$J | ttdu s.J ddttdtd d    }|tddu sHJ |tddu sRJ |ttdu s\J tddd}tdt | t }|tddu svJ |tddu sJ |ttdu sJ ttt	 }|tddu sJ |tddu sJ |tddu sJ |ttdu sJ ttt  tddu sJ ttt  tddu sJ t tt tdd u sJ dtt tddu sJ dtt tddu sJ d S )	Nr   r   Tr   r   FrQ   r  )
rN   rT   rO   rP   is_meromorphicr   r-   r%   r2   r   )r  grQ   r   rb   rb   rc   test_is_meromorphic  s.      r)  c                  C   s\  t dtdu sJ t d du sJ dtd  dtd   tjd  } | tdu s/J | tdu s8J t tttdd   tdu sKJ t tttdd   tdu s^J t tttdd    du spJ ttt t  du s~J ttt t tdu sJ ttt t tdu sJ ttt t ttdu sJ d S )Nr   Tr   r   F)r.   is_algebraic_exprrT   rU   r#   r   r3   )eqrb   rb   rc   test_is_algebraic_expr  s   "&&$$r,  c                     sB   G dd d   } t d|  }|dksJ tt fdd d S )Nc                   @      e Zd Zdd ZdS )ztest_SAGE1.<locals>.MyIntc                 S   s   t dS Nr~   )r   rs   rb   rb   rc   _sympy_  rw   z!test_SAGE1.<locals>.MyInt._sympy_N)rx   ry   rz   r/  rb   rb   rb   rc   MyInt      r0  r   
   c                         t d  S r  r   rb   r0  rb   rc   r         ztest_SAGE1.<locals>.<lambda>)r   rL   r   )mr   rb   r5  rc   
test_SAGE1  s
   r8  c                     sP   G dd d t   dksJ td   } | dksJ tt fdd d S )Nc                   @   r-  )ztest_SAGE2.<locals>.MyIntc                 S   s   dS r.  rb   rs   rb   rb   rc   r        z!test_SAGE2.<locals>.MyInt.__int__N)rx   ry   rz   r   rb   rb   rb   rc   r0    r1  r0  r~   r   r2  c                      r3  r  r4  rb   r5  rb   rc   r     r6  ztest_SAGE2.<locals>.<lambda>)r)   r   rL   r   r  rb   r5  rc   
test_SAGE2  s
   r:  c                  C   s2   G dd d} |  }t | }|dt |fksJ d S )Nc                   @   r-  )ztest_SAGE3.<locals>.MySymbolc                 S   s
   d|| fS )Nmysrb   r   rb   rb   rc   rk     s   
z%test_SAGE3.<locals>.MySymbol.__rmul__N)rx   ry   rz   rk   rb   rb   rb   rc   MySymbol  r1  r<  r;  rT   )r<  or   rb   rb   rc   
test_SAGE3  s   r?  c                  C   s<   t t } t| jdksJ t t t } t| jdksJ d S )Nr   r   )rT   rU   lenr   rV   r  rb   rb   rc   test_len  s   rA  c                  C   sz   t td t} t|  t du sJ t| jddt du sJ t| jddt du s,J dt tt  td ks;J d S )Nr   FT)	integrals)r9   rT   r[   doitrN   rb   rb   rc   	test_doit  s
   "rE  c                   C   s.   t tdd  t tdd  t tdd  d S )Nc                   S      t  S rY   )rT   r3   rb   rb   rb   rc   r     r   z&test_attribute_error.<locals>.<lambda>c                   S   rF  rY   )rT   r2   rb   rb   rb   rc   r     r   c                   S   rF  rY   )rT   r,   rb   rb   rb   rc   r     r   )rL   AttributeErrorrb   rb   rb   rc   test_attribute_error  s   rH  c                   C   s   t t jt tftt ffv sJ t t jt tftt ffv sJ t t d jt t dfdt t ffv s3J tt t jt t fksAJ tt t jd t t ksPJ t t jt tfks[J t t jd t ksfJ t t jd tksqJ d S r   )rT   rU   r   r2   rb   rb   rb   rc   	test_args  s   *rI  c                  C   s   t ddd\} }}| | ||   dksJ | | |  |  | d | | |d   ks-J | | | |  |  | d | | |d   | | |  ksMJ d S )NA,B,CFcommutativer   r   )r&   r   )ABCrb   rb   rc   %test_noncommutative_expand_issue_3757
  s   0DrP  c                  C   s
  t d\} }}t tdfksJ t tdfksJ t  t dfks'J t tdfks1J t  tdfks<J t tdfksFJ dt  dtfksRJ tt  ttfks^J td  tdfksjJ tt t  tt tfkszJ ttt   ttt fksJ tj	 dksJ dtd   dtd fksJ ttd   ttd fksJ td d t  td d tfksJ ttd  td   ttd  td fksJ td  dtd fksJ | t |d t  |d t   d|  d|  d|  dt fksJ | t |d t  |d t   d| t td|  d|    dt t fks=J | t |d t  |d	 t   d|  | d
|  dt fks`J t
ttdd tddD   d t ddks~J tjtjtjfD ]}|td   t| dfksJ qtjtd  td   dt dt  tj dfksJ tt tt   tt tt  dfksJ t ddd\}}}|| |d   || |d  dfksJ || |d  t  || |d  tfksJ |d | |  |d | | dfksJ |d | | t  |d | | tfks8J || | d  || | d dfksOJ || | d t  || | d tfkshJ tdtt t d dd t t dt fksJ d S )Nza, b, cr   r   )r   r      r   r      r         @c                 S   s   g | ]	}t  | t qS rb   )r'   rT   .0irb   rb   rc   
<listcomp>-  s    z'test_as_numer_denom.<locals>.<listcomp>i  r  r   rJ  FrK  r   r   evaluate)r&   r   as_numer_denomr   r   rT   rU   rV   r#   r   r\   r-   r   rangerQ   r   r   r   )rN   rO   rP   rV  rM  rN  rO  rb   rb   rc   test_as_numer_denom  sp       (0"
"*
"




.2.2.2r\  c                      s   dd l  td\ ddksJ  ddksJ  ddks%J  tdks.J  td	d
ks9J  tddksDJ  ttdksOJ  tddksZJ tt	 fdd tt	 fdd tt	 fdd d S )Nr   zx yr   gHzG@r  g)\(r   rQ  r   r~      r   c                      s
     S rY   truncrb   )mathrT   rb   rc   r   Q  r   ztest_trunc.<locals>.<lambda>c                      s     d  S r  r_  rb   ra  rT   rU   rb   rc   r   R  s    c                      s
     tS rY   )r`  r   rb   )ra  rb   rc   r   S  r   )
ra  r&   r`  r   r-   r,   r3   r2   rL   r   rb   rb   rb  rc   
test_truncE  s   rc  c                  C   s  t jjtdddksJ t jjtdddksJ dt tt t t tttdt tt  fks5J dt tt t t ttdt tt  tfksRJ dt tt t t ttdtt dt tt  fksrJ ttt tt tttttt fksJ ttt tt tttt ttfksJ ttt tt ttdttt tt fksJ tttdttfksJ tttttdfksJ dtt tdttfksJ dtt tdtt dfksJ tddd	\} }}| | |  || | | fksJ ||  | |  |d| | ||   fks6J | | |  || ||  fksHJ | | |  | d| | |  fks\J d
t jtdddd
t fksnJ d
t jtddd
tfks~J d
t jtddd
tfksJ d
t jtdddd
t fksJ d
t td
tfksJ | t t t| t tfksJ t|  tt  tdt|  tt  fksJ t|  tt  tt|  tt fksJ t	t|  t	tt  tdt	t|  t	tt  fksJ tt |  | | |tt |  || fks(J tt |  | | | tt | | | fksBJ tt |  | | |tt |  | |fks\J t	t|  t	t|   t	t|  tt	t|  t	t|  t	t|  fksJ tt
ttddf jtddt
ttddftfksJ ttt dddd}|tdttt ddfksJ ttdt dddd}|tdttdt ddfksJ tt jtddtt dfksJ d S )NT)as_Addr   r   Fr   r   r   zn1 n2 n3rK  r   )strictr   rX  r   )r#   r   as_independentrT   r2   rU   r3   r&   r%   r5   r9   r   r   rV   )n1n2n3r+  rb   rb   rc   test_as_independentV  sT   ::@228"($0$($  $$0,
444("

$&(rl  c                   C   s    dt  tdt t ksJ d S r  )r  rT   rb   rb   rb   rc   test_call_2  s    rm  c            	      C   s  t tttttd  } | ttt tttttd  ks$J | tdd t tdt ttdtd   ks@J td}td}| t|t|t tttttd  ksbJ | t|dd t tdt ttdtd   ksJ dt j|t | || dddt ksJ dt |t | || dt ksJ dt j|t | || d	ddt ksJ dt j|t | d
d dddt ksJ dt |t | dd dt ksJ dt j|t | dd d	ddt ksJ dttd  }|dd dd dttd  ksJ ttjttddttttttifks7J ttttttksFJ dd dd }}tt j||dddt t tt dt t ifkslJ tdtt   j||dddt dt t d  tdt t d  dt dt t d  tt dt t ifksJ ttt jtdd ddttttttt ifksJ ttt jtdd d	dttt ksJ td ttd  t	dd td d ttd  ksJ td ttd  jt	dd d	dtd d ttd  ksJ ttt d  dd dd ttt d  d ks:J tt d dt t d  d } | j||ddddt t d dt t d   d dt t dt t tt dt t dt t d dt t d  ddt t d dt t d   ifksJ ttttksJ td ddtd ksJ t
dd	d\}}}|t| td d || ksJ |t| td!d || ksJ tjtd"ddksJ tjjtd"dddd#ksJ d S )$Nr   c                 S      t d|  S r  r2   rD  rb   rb   rc   r     r6  ztest_replace.<locals>.<lambda>rN   rO   c                 S   rn  r  ro  rD  rb   rb   rc   r     r6  T)exactFc                 S      ||  S rY   rb   rN   rO   rb   rb   rc   r     r   c                 S   rq  rY   rb   rr  rb   rb   rc   r     r   c                 S   rq  rY   rb   rr  rb   rb   rc   r     r   r   c                 S   rq   rY   )	is_Numberexprrb   rb   rc   r         c                 S   s   | d S r  rb   rt  rb   rb   rc   r     r   r  	   )mapc                 S   rq   rY   is_Mulr=  rb   rb   rc   r     rv  c                 S   s   d|  S r  rb   r=  rb   rb   rc   r     r   r   c                 S      t | t S rY   r2   rU   rt  rb   rb   rc   r     r6  c                 S   r{  rY   r|  rt  rb   rb   rc   r     r6  )simultaneousc                 S      | | | S rY   rb   rO   r   rb   rb   rc   r     r6  c                 S   r~  rY   rb   r  rb   rb   rc   r     r6  c                 S   rq   rY   ry  r=  rb   rb   rc   r     rv  c                 S   s   d|  S r  rb   r=  rb   rb   rc   r     r   r~   zn1:4rK  c                 S      | S rY   rb   r=  rb   rb   rc   r         c                 S   r  rY   rb   r=  rb   rb   rc   r     r  rT   r   )r-   r2   rT   r1   replacer3   r(   rU   r@   r   r&   r  r#   r   )	r   rN   rO   r(  condr   ri  rj  rk  rb   rb   rc   test_replace  s   ,"4",(,,(.
2:R






 &B"&&$r  c                  C   s<  t t d tdt   } | dd tdtdhksJ | dd t thks*J | jdd ddtdd	tdd	iks?J | jd
d ddt dtd	iksPJ | ttdtdhks_J | tt thksjJ | jtddtdd	tdd	iks}J | jtddt dtd	iksJ td}ttt tt  tt  t  } | dd tt ttt hksJ | jdd ddtt dttt d	iksJ | t|tt ttt hksJ | jt|ddtt dttt d	iksJ | ttt ttt hksJ | jtddtt dttt d	iksJ d S )Nr   r   c                 S   rq   rY   
is_IntegerrS   rb   rb   rc   r     rv  ztest_find.<locals>.<lambda>c                 S   rq   rY   	is_Symbolr  rb   rb   rc   r     rv  c                 S   rq   rY   r  r  rb   rb   rc   r     rv  T)groupr   c                 S   rq   rY   r  r  rb   rb   rc   r     rv  rN   c                 S      t | tu S rY   r   r2   r  rb   rb   rc   r     r6  c                 S   r  rY   r  r  rb   rb   rc   r     r6  )	rT   rU   r2   findr#   r   r%   r(   r3   ru  rN   rb   rb   rc   	test_find  s*   "*"& &&.$0r  c                  C   s  t t d tdt   } | dd dksJ | dd dks"J | tdks+J | tdks4J | ddks=J td}| tdksJJ | t|dksUJ | dd dks`J tt tt dksmJ tt t tt dks}J tt t t dksJ d S )	Nr   r   c                 S   rq   rY   r  r  rb   rb   rc   r     rv  ztest_count.<locals>.<lambda>c                 S   rq   rY   r  r  rb   rb   rc   r     rv  r   rN   c                 S   r  rY   r  r  rb   rb   rc   r      r6  )	rT   rU   r2   countr   r%   r(   r  r   r  rb   rb   rc   
test_count  s     r  c                  C   sn  t d} tttsJ tttsJ tttrJ tttr(J ttts1J ttts:J tttrCJ tttrLJ ttttsXJ ttttsdJ tttt	spJ ttttr|J ttttrJ ttttrJ td t
sJ td t rJ d|  t sJ t rJ d S )Npr   )r(   r2   rT   hasrU   r3   r  r(  r   r   r%   )r  rb   rb   rc   test_has_basics  s&   r  c                  C   s  t d t tdt tt  } | t sJ | tsJ | ts%J | ts,J | tr3J | t ttts=J | t ttttsHJ td}|t rSJ |t |  t s^J |t|  t riJ |t|  t tsuJ |t|  t trJ d S )Nr   i0  )	rT   rU   r2   rR   r-   rV   r  rS   r   )r  rV  rb   rb   rc   test_has_multiple!  s    r  c                  C   s   t t dt  d } ttt t dk fdt dkf| df}|t s#J |ts*J |tr1J |ds8J |ds?J |drFJ || sMJ |tsTJ |tr[J d S )Nr   r~   r   r   Tr  )rT   rU   r0   r(  r  rV   hr  r  rb   rb   rc   test_has_piecewise8  s   $r  c                  C   s  t ddd\} }}ttt tt ttt  |  | | tt|  |  }|ts.J |tt s7J |ttt sBJ |ttt rMJ |t|  sVJ |t|  | saJ |t|  | rlJ |t|  | | syJ |t|  | | rJ |ttt |  | | sJ |ttt |  | | rJ |ttt |  | | rJ |ttt sJ |ttt rJ tt@ t@ tt@ sJ d S )NrJ  FrK  )	r&   rT   r7   r2   r,   rU   r3   r  rV   )rM  rN  rO  r  rb   rb   rc   test_has_iterativeG  s"   <"""r  c                  C   s   t td ttt t  tdtt t f} | tt sJ | tt s(J | tt s1J | tt s:J | tt sCJ | tt sLJ | dt t rWJ | dt t rbJ d S )Nr   r   )r9   rT   r2   rU   rV   r  )r  rb   rb   rc   test_has_integrals]  s   ,r  c                   C   s   t ttts
J t tttrJ t ttttts"J t tttttr0J t ttttts>J t ttttttsNJ t ddsWJ t dtjsaJ t ddrjJ d S )NTr   )	r   rT   rU   r  rV   r  r(  r#   r   rb   rb   rb   rc   test_has_tuplel  s    r  c                  C   sF   ddl m} m} t|  | tsJ t|  | ttdu s!J d S )Nr   r7  r   F)sympy.physics.unitsr7  r   rT   r  rU   rV   r  rb   rb   rc   test_has_units|  s    r  c                  C   sZ   t td tt tt  ttt} | tsJ | ttts!J | tttts+J d S r  )r>   rT   rU   r2   rV   rR   r  )polyrb   rb   rc   test_has_polys  s   "r  c                   C   s   t ttftsJ d S rY   )r:   rT   rU   r  rb   rb   rb   rc   test_has_physics  s   r  c                  C   s   t d dt  t  } |   | ksJ | t t | ks J | tt  t td u s.J t| t t}| |ks<J td d u sFJ tdjddd u sRJ tt	dd  tt	dd  d S )Nr   T)	extensionc                   S   s   t tttS rY   )r   rT   as_polyrb   rb   rb   rc   r     s    z&test_as_poly_as_expr.<locals>.<lambda>c                   S   s   t td tttS r  )r   rT   rU   r  rb   rb   rb   rc   r         )
rT   rU   r  as_exprr2   r>   r#   r.   rL   rG  r  rb   rb   rc   test_as_poly_as_expr  s   r  c                   C   s   t tjdu s	J t tjdu sJ t tdu sJ t tt du s$J t tt du s.J t tt du s8J t td du sBJ t td du sLJ d S )NFTr   r   )boolr#   r   r   rT   rU   rb   rb   rb   rc   test_nonzero  s   r  c                  C   s  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 jdu s5J tt jdu s>J tdjdu sGJ ttjdu sPJ dtd jdu s[J dtd jdu sfJ dtt jdu sqJ dtd t jdu s~J dtd t  t jdu sJ ttdjdu sJ tdtjdu sJ t	dd	jdu sJ t
tddjdu sJ tjdu sJ td
} | jdu sJ d|  jdu sJ td tdjdu sJ G dd dt}| }|jdu sJ d S )NgQ	@Ti  r   r   r  Fr   r  r(  c                   @   r  )ztest_is_number.<locals>.ANr  rb   rb   rb   rc   rM    r  rM  )r   	is_numberr   r   rT   rU   r-   r   r   r   r   r   r   r  r   )r(  rM  rN   rb   rb   rc   test_is_number  s4   r  c                  C   s  t d dks
J t d dt dffksJ t d dt dffks(J t dtffks3J td  dtffks@J td  dtffksMJ td  dtffksZJ tt tttffkshJ dt tdt d	fkswJ tt d } | td| ffksJ d S )
Nr   r   rb         @r         r   r   r   rb   )r#   as_coeff_addrT   rU   r  rb   rb   rc   test_as_coeff_add  s   r  c                  C   s  t d dks
J t d dt dffksJ t d dt dffks(J t djddt d d	fks9J t dtffksDJ t  dtffksPJ dt  dtffks]J tt tttffkskJ d
t  dd
t ffkszJ d
t td
t d	fksJ ttt } | td| ffksJ dtt  } | td| ffksJ dt jdddtffksJ dt  ddtffksJ t t jdddttffksJ d S )Nr   r  r  r   r  r   Frationalrb   r   r   T)r#   as_coeff_mulrT   rU   r,   r   r  rb   rb   rc   test_as_coeff_mul  s"   "&r  c                  C   s  dt d  t dksJ dt d  t dksJ dt d  t dks'J dt d  t d	ks4J dt d
  t dksAJ dt d
  t dksNJ dt d
  t dks[J d
t d
  t dkshJ dt d
  t dksuJ dt d
  t dksJ dt d  tt d   t dt dfksJ t td dt  tt    t tddt  d
fksJ t} | tt t }|tt |d
fksJ d S )Nr   r  )r   r  r   )r   r   )r  r   rR  r   )rR  r   r   r   )r   r   )r   r   re  r   )r   r   r   )r   r   )rT   as_coeff_exponentr   r-   r   r  )Dfxrb   rb   rc   test_as_coeff_exponent  s"   . r  c                  C   s  dt jfD ]-} t| t ddd| t | dt  ksJ | dt  | dt  | dt  ks2J qtt d td t ttd  ksHJ tt d td t d u sYJ dt dtksdJ dt dd u soJ dt dd u szJ t jt dtd ksJ tttd u sJ ttd	t d u sJ tt d u sJ d
dt  d
d	dt  ksJ d
dt  dd u sJ d
t dt  d d
tdt  d ksJ d
t t dtd  t  d
t dtd  t ksJ dt t dtd  t  dt dtd  t ksJ dtd  t dt d u s,J dt d	dt ks:J t	 dt	 u sFJ t	dt	u sPJ tt d 
d	d u s^J td	 
td	ksjJ td	 
dt d u sxJ td	 
t d u sJ t d	 
dt d u sJ dt d 
ttd ksJ dt d 
ddt d	 ksJ dt d 
ddt ksJ dt d 
d
d u sJ dt d 
dt d u sJ dt d 
dt dksJ t
dtksJ t d
td u s
J t d
dt ju sJ t dt d 
td	 td ks+J t dt d 
td	 d u s=J t dt d 
td	 d u sOJ t dt d 
tt d u saJ td	 t d t 
t dt t dt  t ksJ td	 t d dt  
tdt   dt t dt  t ksJ ttd	  
td	 d u sJ td	 td	  d 
td	 ttd	  d ksJ tt td	  t t d 
tt ttt  d ksJ tt dtt td	    d 
tt td	  tt td	 tt   d ksJ td	 tdt  d	  d 
td	 tdt  td	  d ks7J t tt  
t t t ksJJ dt td	  t 
ttdt d  t ksdJ tddd}td du suJ | t t  |t t  ksJ tt  t t  ksJ d	t t  du sJ d	t t  du sJ t tt  t  du sJ ttt  t   du sJ ttt  t  du sJ t t tt   du sJ G dd dtt}|t}|| ksJ | du sJ tt  du sJ t t  du s'J td	  du s2J d	t  du s=J tdd	  du sJJ d	td  du sWJ dt dt  d}|j|j|j jksoJ d S )Nr   r   FrX  r~   r  r   rR  r   r   r  r   r          @rQ   Tr&  c                   @   r|   )z(test_extractions.<locals>.sign_invariantr   c                 S   r  rY   rb   rs   rb   rb   rc   rv   R  r9  z0test_extractions.<locals>.sign_invariant.__neg__N)rx   ry   rz   nargsrv   rb   rb   rb   rc   sign_invariantP  r   r     )r#   Exp1r   rT   extract_multiplicativelyrU   r   r.   r   r   extract_additivelyr   rV   rN   r   r%   r   could_extract_minus_signr   r	   r   r   )baserQ   r  r  r+  rb   rb   rc   test_extractions  s   


*"".:<$ $   ($$$
(
 
$
0
$
&4


   r  c                  C   s:   ddt tfD ]} t| d u sJ t| d u sJ qd S r   )r   r   r  r  )r   rb   rb   rc   test_nan_extractionsb  s   r  c                  C   s	  t d t d dksJ dt  ddksJ tdt   t d  dt  tt d  ks/J ddt  t dt     t t dt    dksHJ ddt tt    t tt  dks]J ddt   dt d   ddkspJ ddt   dt d   ddksJ ddt   dt d   t dksJ ddt   dt d   t d dksJ ddt   dt d   t d dksJ t  d t t  t tddt ksJ t  d t t  t  tjd ksJ dt  dt  dksJ dt  dt  dksJ t t  t t dksJ dt  t ddks J dt  dt  ddks/J td	d
d\} }| | | dksCJ | | || ksOJ | | t |   | dks_J ||  t |   | |t  ksqJ ||  t | d   | |ksJ | t  | dksJ | | ||   | dksJ d| |  | j| | dd|ksJ d| |  | j| | dddksJ dt	t  dt	t 
t   t	t dksJ tt t d  }tt t d  tdt  dt  d   }|tt t d ks
J |t t dksJ |tt t d dt  dt  d  ks.J t t dt  dt t ks@J t  dt  dt ksOJ t dt  ddt ks_J ddt   dt d   ddkssJ t  dt  dt ksJ t tdt   tdt ksJ ddt   dt d   t dksJ ddt   dt d   t d dksJ ddt   dt d   t d dksJ tt t d  t t d tksJ tt t d  t t dksJ ddt   t d t  t d tksJ t dt  d dt ks!J t dt  d t ddt d ks6J t d dt  dt   t d ddt dt   ksSJ t dddks^J t t ddksiJ tdd
d\}}}}||dks}J t|dksJ d| |dksJ d| t | dksJ dt  | | t d| | ksJ d| t | | t dksJ dt  | | d| dksJ || || |  |d| ksJ || || |  j|dd|ksJ || ||  |dksJ || || |  || |ks%J || || |  j|| dddks;J || || |  j|| ddd| ksSJ t t tdt t ksbJ t | t|  t|  |t t ksxJ || ||  ||  j|dd|| ksJ t | | | t| | |  t|  j|ddt | t|  ksJ t | | | t | | |  t|  j|dd|| ksJ t | | | t | | |  t|  |t | ksJ d S )Nr   r   r   r   r  r   r  r2  zn1 n2FrK  )rightzn m o lT)rT   coeffrV   rU   r   r#   r   r   r&   r  r   r.   )ri  rj  ru  expr2rQ   r7  r>  lrb   rb   rc   
test_coeffh  s   .2*&&&***( $$ ((2(0$ ( $(,,($, *:($$(( (,0,0H@@r  c                  C   s|   t d\} }td}d| d  d|  || | d | d || | d   }| }||| | d|  ks<J d S Nzr, kappapsir   r   r&   r   r   r   r  r   kappar  r(  rb   rb   rc   test_coeff2  s
   <$r  c                  C   sz   t d\} }td}d| d  d|  || | d | d || | d   }| }||| | ddks;J d S r  r  r  rb   rb   rc   test_coeff2_0  s
   <"r  c                  C   s   t tt d  } t tt d  t dt dt  d   }| t tt d ks)J |t tt d dt dt  d  ks@J d S r  )rV   rT   rU   r  )ru  r  rb   rb   rc   test_coeff_expand  s   (2r  c                   C   s8   t t t d d ksJ t t ddftjksJ d S )Nr   r   r   )rT   r8   r#   r   rb   rb   rb   rc   test_integrate  s   r  c                   C   s   t  t tjfksJ t t t  t t t tjfksJ t t t  t t t tjfks1J t t t  t t tfksAJ d S rY   )rT   as_base_expr#   r   rU   rV   rb   rb   rb   rc   test_as_base_exp  s   &&$r  c                  C   s   t tttds
J t tttdddsJ t tttds J t tttddds,J ttdddddddd } t | dsAJ d S )Nis_commutativeFrX  r   r   r   )hasattrr   rT   rU   r   rt  rb   rb   rc   test_issue_4963  s   r  c                   C   s  t dtdt t d d  dtdt t d d    ks"J tdt dt  dt dt   ks8J tttddttjddksJJ tddt	d  ddt	d   ks`J tdt
tt	t   dddt
tt	t   jddks~J ttt tt  tt  d	d
tt tt  tt  jd	d
ksJ tt tt  jddtt t ksJ ttt tt  tt  tt tt  tt   ksJ tdt dt  dt dt   ksJ tt
td  ttd   t
t  tt  t tt
td  ttd   t
t  tt  t tksJ tttd  td  tttd  td  tks:J tttd  td  ttd  td   ksUJ tttttd  ttttd   kspJ ttd dt  d td dt  d  ksJ tt	td t	td  ksJ ttd dt  d td  td dt  d td   ksJ d S )Nr   r   r~   Tdeepr   F)symbolicall)combine)forcerR  )rH   r,   r   rT   rF   rU   rI   r-   rE   r.   rN   rO   rP   rC   rV   rR   rG   r?   rD   r;   rA   rB   r7   r<   r   r=   rb   rb   rb   rc   test_action_verbs  s0   ,$,(<,00
:666&Jr  c                   C   s   t  t diks
J t t t  t ttdiksJ tdddd tdtdiks-J t t  t dks9J t t  t dksEJ d S )Nr   r   FrX  r   )rT   as_powers_dictrU   rV   r   r#   rb   rb   rb   rc   test_as_powers_dict  s
    &r  c                  C   s2  t jtttt dg} dd | D g dksJ dd | D g dks$J dd | D g dks1J dd | D g d	ks>J d
t t  d
t t  dksPJ ttd  t tt  tt  }|tttdt tttd  tiksuJ | ttd tttt dt tiksJ t tt jiksJ d S )Nr   c                 S   s*   g | ]}t d t dt td  | qS )r   r   r   rT   rU   as_coefficients_dictrT  rb   rb   rc   rW    s   * z-test_as_coefficients_dict.<locals>.<listcomp>)r   r~   r   r   r   c              	   S   s.   g | ]}t d t dt td dd | qS )r   r   FrX  r  rT  rb   rb   rc   rW  
  s    &c                 S       g | ]}d t  t  | qS )r   rT   rU   r  rT  rb   rb   rc   rW         )r   r   r   r   r   c                 S   r  )r  r  rT  rb   rb   rc   rW    r  )r   r   r   r  r   r  r   r   )	r#   r   rT   rU   r  rN   rO   rP   r   )checkr+  rb   rb   rc   test_as_coefficients_dict  s,   $ 
.r  c                  C   sD  t ddd} t|   g t|  ggksJ tt  tt gg gks$J tt  ttgg gks2J tt |  | d  jddtth| d|  ggksLJ tttddjdddthg gks_J tttd	 ddjdddttd	 hg gkswJ ttd
d  ttttdd tttgg gksJ dt  ddtgg gksJ d S )NrM  FrK  r   TcsetrX  )r  warnr   c                   S   s   t ttddjddS )NFrX  Tr  )r   rT   args_cncrb   rb   rb   rc   r   &  r  ztest_args_cnc.<locals>.<lambda>g      r         ?)r&   rT   r  rN   rU   r   rL   r  )rM  rb   rb   rc   test_args_cnc  s0   



"r  c                  C   s   t ddd} t|  }|jdu sJ |tjsJ |ttjs"J |t| jdu s-J |tt| jdu s9J t|  }|jdu sDJ |tjsLJ || jdu sVJ |ttjs_J |t| jdu sjJ |tt| jdu svJ |jt| ddjdu sJ |tjtju sJ d S )NrQ   FrK  )reeval)r%   rT   r  _new_rawargsrU   r#   r   )rQ   rN   r7  rb   rb   rc   test_new_rawargs-  s    r  c                   C   s>   t dddks	J tdddksJ ttt ddjsJ d S )NFrX  r   r   )r   r   rT   rU   is_Addrb   rb   rb   rc   test_issue_5226A  s   r  c                   C   s   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s6J tt jthks@J d S r   )r#   r   free_symbolsr  rT   r9   rU   rK   rb   rb   rb   rc   test_free_symbolsG  s   r  c                   C   s   t t sJ t trJ t t t sJ t t jt tf s"J tt t s+J tt tt s6J ttt tt dtftsGJ ttt tt dtft rXJ ttt tt dtftt rkJ d S r   )rT   has_freerU   rV   r  r9   rb   rb   rb   rc   test_has_freeQ  s   ""*r  c                  C   s8   t ddd} | td td | td d ksJ d S )NrT   FrK  r   rR  r   )r%   r.   r=  rb   rb   rc   test_issue_5300]  s   ,r  c                  C   s(   ddl m}  tt | tt ksJ d S )Nr   floor)#sympy.functions.elementary.integersr  rT   rU   r  rb   rb   rc   test_floordiva  s   r  c                   C   s  t d t dt dfksJ tdd tddt dfks"J td tdt dfks2J t dt  t dtfksBJ tddt  tddtfksTJ tdt  tdtfksdJ t dt t  t dtt fksxJ tddt t  tddtt fksJ tdt t  tdtt fksJ t tjtfksJ tt  tjtt fksJ t t jdddtt fksJ d S )Nr   r   r        @Tr  r   )	r   as_coeff_Mulr   r   rT   rU   r#   r   r   rb   rb   rb   rc   test_as_coeff_Mulf  s    $  $ (,(&r  c                   C   s  t d t dt dfksJ tdd tddt dfks"J td tdt dfks2J t dt  t dtfksBJ tddt  tddtfksTJ tdt  tdtfksdJ tdt jdddtdt fksxJ t dt t  t dtt fksJ tddt t  tddtt fksJ tdt t  tdtt fksJ t tjtfksJ tt  tjtt fksJ d S )Nr   r   r  r  Tr  )r   as_coeff_Addr   r   rT   rU   r#   r   rb   rb   rb   rc   test_as_coeff_Addx  s    $  $ ((,("r  c                  C   s  dt d  dt  ttt tt t tt d t d g} t| td| ks%J t dt  dt d  dt d  t t dt t  tt tt t tt d tt tt d tt g} t| td| ks_J t d t d t  d t d t d  t  d g} t| td| ksJ tdt dt	 d  t dt	 d  t dt	  d t dt	  d g} t| td| ksJ t
dt
dt
dt
dddtdtdtdtdddg} t| td| ksJ t
t tt tt tt tt tt g} t| td| ksJ tt ttt ttt ttg} t| td| ksJ dgddgg} t| td| ksJ ddgddgg} t| td| ks0J ddgg dg} t| td| ksCJ t t it tig} t| td| ksWJ dhddhg} t| td| ksiJ tdtdg \}}} t||gtd| ksJ d S )Nr   r   r   keyr  )r   r   r   rT   )rT   r.   sortedr$   rQ   r2   r3   r1   r#   r   r  r(  r,   r*   r   rU   rV   r'   )r   rN   rO   rb   rb   rc   test_expr_sorting  s8   6< .B<(r  c                  C   s   t  t gks	J dt  t t  tt  tt   tdt t t 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|  }| | ksVJ t	ddd\}}||  ||gksjJ ||  ||gksvJ d S )Nr   r   r   zA,BFrK  )
rT   as_ordered_factorsrQ   r2   r3   r   r  r(  r   r&   )r   ru  rM  rN  rb   rb   rc   test_as_ordered_factors  s   "<r  c                  C   s  t  t gks	J tt d tt  tt tt d   d  tt d tt  tt tt d  dgks8J tdtdtdtdddtdtdtdtdddg} t|  }| | ksbJ ddtd t t    dt t  td dgks~J ddt	   ddt	 gksJ ddt	   ddt	 gksJ ddt	   ddt	 gksJ ddt	   ddt	 gksJ ddt	   ddt	 gksJ ddt	   ddt	 gksJ ddt	   ddt	 gksJ ddt	   ddt	 gksJ t d t
d  t t
d   t
 d }|jdd	t d t
d  t t
d  t
dgks)J |jd
d	t t
d  t d t
d  t
dgksBJ |jdd	dt
t t
d  t d t
d  gks[J |jdd	dt
t d t
d  t t
d  gkstJ td}|jdd|dfg|gfksJ d S )Nr   r   r   r  r   r   r  lex)ordergrlexzrev-lexz	rev-grlexr  T)data))r          )r   rb   )rT   as_ordered_termsr2   r3   r  r(  r   r.   r   r   rU   r&   )r   ru  r   r  rb   rb   rc   test_as_ordered_terms  s.   .(<8        $2222&r  c                  C   s8   ddl m} m} t|  |gdd d|  |gksJ d S )Nr   r  c                 S   s   |   S rY   )sort_key)argrb   rb   rc   r     r   z+test_sort_key_atomic_expr.<locals>.<lambda>r   )r  r7  r   r  r  rb   rb   rc   test_sort_key_atomic_expr  s   (r  c                      s   t tjttdd t dt d ksJ tt  tt fdd tt fdd tt  tt fdd ttdd  t ttt    tt	 t	t ksUJ  tt	t	 tksaJ d S )Nr   r   c                           ttjt tttjS rY   _eval_intervalrT   r#   r   r   rU   rb   rD  rb   rc   r         z$test_eval_interval.<locals>.<lambda>c                      s     ttjt ttjtS rY   r  rb   rD  rb   rc   r     r  c                      r  rY   )r  rT   r#   r   r   rU   rb   rD  rb   rc   r     r  c                   S   s   t t d d S rY   )rT   r  rb   rb   rb   rc   r     r   )
r,   rT   r  r   rU   rL   r  r  r4   r   rb   rb   rD  rc   test_eval_interval  s   *r  c                   C   s4   t dt ttjtjt d t d ksJ d S )Nr   r   )r6   rT   r  r#   r   r   r   rb   rb   rb   rc   test_eval_interval_zoo  s   4r  c                  C   s  dt d d   dt d d fksJ dt  d  ddt  d fks&J t d d  tjt d fks7J dt  d t d d  } |  d dksMJ ddt   d } |  d dks_J dt   ddt  fksmJ dt  td   tjdt  t fksJ dt   dt  fksJ td	t d
 dt  dt d dd tjd dt  dt  dt  fksJ tjtj	tj
fD ]}|t d   tjd |t  fksJ qtjdt  d  dt d
   tjd dt  dt  t fksJ tj tjtjfksJ d S )Nr   r   r   rR  r   rS  g       @r   r~   rQ  r   FrX     g      @   r2  r  r   )rT   	primitiver#   r   rU   r   rV   r   r   r   r   r   r   )r+  rV  rb   rb   rc   test_primitive  s*   ($"*& 
  r  c                  C   s^   dt  } d|  | dksJ d|  d|  dksJ d|  d|   | d|  ks-J d S )Nr   r   r  r   rR  )rT   r  rD  rb   rb   rc   test_issue_5843  s   &r  c                  C   s  ddl m}  tttddf du sJ tttdtf du s"J tttdtftdu s1J tttdtftdu s@J tttdtftdu sOJ tttd  tt	td   t }| du siJ |
tttdi|
tttdi  krdksJ  J t du sJ ttdu sJ ttt  du sJ | tttttdtfdu sJ | tttttdtfdu sJ tdjsJ | ttttdu sJ tttjdd	 du sJ ttjtdd	 du sJ dt  du sJ ttdtddd	 du sJ td
dd\}}|d|   du s"J t du s+J dt  du s6J tt  du sAJ d S )Nr   )checksolr   r2  TFr   r   rX  zz1 z2)zero)sympy.solvers.solversr  r   rT   is_constantrQ   rU   rN   r3   r2   r  r   r-   r  r   r#   r   r&   rK   )r  r+  z1z2rb   rb   rc   test_is_constant  s2   $8  $r!  c               
   C   s  dt d t d d t dd  d  dsJ td d td td  s+J ttd ttd  ds<J tttd  tttd   tsQJ t d} d| | t   d|  dt   dsjJ ttd td tt s{J t ddt d d	u sJ t dt d t dd	u sJ t dt d dd	u sJ t dt dd	u sJ tdd	u sJ dtd  dd	u sJ dt	dd
   dt	j
d
   dt	j
d
  t  }|dkr|dsJ t tdd	u sJ dt d tt	dd   dddt   t	dd   d dt d tt	dd   dddt   t	dd   ddt    }t dt d dtd  t d  d }|| }|dd u s^J |ttddd dt d d kstJ tddd}|t|ddu sJ |tdddu sJ t dt d t ddt d   t ddt d   }|dsJ dtdd d }t|d tdd }|| dsJ td}|t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d t d| t	dd
  t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d|t	dd  t	d  d t	dd  t	j
d    t	dd  d  t	j
d
   |d
  t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d t d| t	dd
  t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d|t	dd  t	d  d t	dd  t	j
d    t	dd  d  t	j
d
  d
  t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d t d| t	dd
  t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d|t	dd  t	d  d t	dd  t	j
d    t	dd  d  t	j
d
  d  dt d|t	dd  t	d  d t	dd  t	j
d   t	dd   d t d| t	dd
  t d|t	dd  t	d  d t	dd  t	j
d   t	dd   d|t	dd  t	d  d t	dd  t	j
d    t	dd  d  t	j
d
  d   tdd }|dsJ d S )Nr   r~   r2  r   r   r   r   r   Fr  rR  rg  r  rQ  x   r  Tr   qr   r  i  i 6     r   )r.   equalsrT   r3   r2   rN   r*   r   rK   r#   r   r   r  r   r%   r   r&   )r   r+  rV  ansr   r  r#  rV   rb   rb   rc   test_equals=  s2  4""**""2:B(,8:
4







8
6
 


8
6
"


8
6
r'  c                  C   sp   ddl m}  ddlm} |td  d usJ | tdddddd u s'J tttt	t
f d u s6J d S )Nr   )lucas)posifyr   r   r   r   )%sympy.functions.combinatorial.numbersr(  sympy.simplify.simplifyr)  rT   _randomrQ   r0   r/   rU   rV   )r(  r)  rb   rb   rc   test_random|  s
   "r-  c            
         s  t tdddksJ d} t| d}|jr|| ksJ t| d}|jr-|dks/J t tddd	ks<J t td
ddksIJ t tdddksVJ td}| }|jscJ ||ksiJ |d}|jssJ ||ksyJ |d}|jsJ ||ksJ |ddksJ tt |d}|dksJ |ddksJ t ttd ddksJ dttd  ddksJ ttdd  t tdddksJ t	ddD ]It t
}t|}d| }|d }dk r|d7 }d | }t t||d | }|d!rqt|d }|d dks*J |d"|fqtd#d$dt   d%ks;J td#d$dt d   d&ksMJ tdt t   d$d't  ks`J t td(d$dt d  d'd)ksuJ t td(d$dt d  dd)ksJ tj dksJ tdtd*d+dd,}	|	dtd-d+ksJ |	d.td/d+ksJ |	d0td1d+ksJ |	d2td3d+ksJ |	d4td3d+ksJ ttd5d  ttd6d  t tj d7ksJ t td d8ksJ dt tt   d9d$t  ksJ dt td   d9ks(J td dt   dt ks9J t td tt  dd:ksKJ t td tt  d d;ks_J t td tt  dd:ksqJ ttd$  d$td<d+t ksJ td= d>ksJ td? dksJ td@ dAksJ td?dBt   ddt  ksJ t tdCddDksJ t tdEddFksJ tj tju sJ tj tju sJ tj tju sJ tj tju s J t	dD ]it tfdGdHdID sJ tfdJdHdID s&J t fdKdHdID s4J t fdLdHdID sBJ tttu sMJ t jsWJ tt tu sbJ t  jslJ qd S )MNz	0.1249999r   z0.12l   
>V3&Z
 r   l   
>V3&Z
 z1/7r  z0.1429z.[12345]z0.1235z.1349z0.13i90  r   r   i40  r  i'  r]  r   z4.56r2  2   c                   S   s   t td dS r  )roundrT   rb   rb   rb   rc   r     r   ztest_round.<locals>.<lambda>gffffff@z2.3id   z0.%s5r   .z->g333333?r   rQ  iu  r~   gQ?z0.0928z1.999999999999999999999999999 rX  z3.0000000000   z3.0000000000000000000000000   z3.00000000000000000000000000   z2.999999999999999999999999999   c                   S   rF  rY   )rT   r/  rb   rb   rb   rc   r     r   c                   S   s   t d S r   )r  r/  rb   rb   rb   rc   r     r6  r   100rR  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 t |tu V  qd S rY   )r   r/  r\   rU  r  rV  rb   rc   	<genexpr>       ztest_round.<locals>.<genexpr>)r   r   r   c                 3        | ]}t  |jV  qd S rY   )r#   r/  r  r9  r:  rb   rc   r;        c                 3   r8  rY   )r   r/  r]   r9  firb   rc   r;    r<  c                 3   r=  rY   )r#   r/  is_Floatr9  r?  rb   rc   r;    r>  )strr   r/  r#   r  r   r.   rL   r   r[  absr@  endswithr\   r   r   r   r   r   as_real_imagr$  r   r   r   r]   r  r   )
d20r&  rQ   r   r   r  r   vLrN   rb   )r@  rV  rc   
test_round  s   





 $&**&"$($&&rI  c                  C   s,  t d} td|  }| | }t|tsJ |j| |fksJ | dks&J tt| | jddt| | ks8J tt| |  dksEJ t| | dd}|| d ksTJ t|}t|ts_J |j|fksgJ | | d ksqJ |jdd|ks{J tdd }t|tu sJ |jdtdfksJ d S )NrT   r   Fr  rX  r   )r&   r
   r[   r   r   rC  r   r   )rT   hee1xxue2x2rb   rb   rc   $test_held_expression_UnevaluatedExpr  s(   rO  c               
   C   sR   t d} z	|   W td ty( } zdt|vsJ W Y d }~d S d }~ww )NbadzDid not raise)r%   r/  r   rB  AssertionError)r   r   rb   rb   rc   test_round_exception_nostr  s   
rR  c                   C   s    t dt t  dksJ d S )Nr  )r   r   )r+   r   r   extract_branch_factorrb   rb   rb   rc   test_extract_branch_factor%  s    rT  c                   C   s4   t td tfksJ ttd tfksJ d S )Nr   r   )r   	make_argsrT   r   rb   rb   rb   rc   test_identity_removal)  s   rV  c                   C   s   t dd t dksJ d S )Nr
  r   r  )r   rb   rb   rb   rc   test_float_0.  s   rW  c                   C   s.   t dt t dksJ tt d jsJ d S )Nr
  )r   rT   r  rb   rb   rb   rc   test_float_0_fail2  s   rX  c                  C   s   t d td  t tt t   tttt    d tt t  d ttt  d    ttt t  d ttt  d   } ttt t  d ttt  d  }t|td| ksXJ |td| ksbJ t|tddd| ksnJ d S )Nr   F)rG   )rO   rV   rN   rR   rP   r.   r   )r&  r   rb   rb   rc   test_issue_63258  s   0"$rY  c                  C   s&   t t } tt }| |d u sJ d S rY   )rN   rP   rT   rV   r%  )f1f2rb   rb   rc   test_issue_7426A  s   r\  c                  C   s@   t ddd} tt| dsJ t dddd} | dktju sJ d S )NrT   F)extended_positiver   Tr   )r%   r   r!   r#   r   r=  rb   rb   rc   test_issue_11122G  s   r^  c                  C   s   t ddd} d|  d|   }d| d  d d|  d|    }dt| d  t| d  }t ddd} d|  |  }| d u s@J | d u sHJ | d u sPJ | d	u sXJ d S )
NrT   Tr   r   r   r  r   r   F)r%   r3   r1   r  )rT   rK  e3e4e5rb   rb   rc   test_issue_10651P  s    rb  c                  C   s0   t ddd} | t|  t|  | d ksJ d S )NrT   Tr   r   )r&   rC  r=  rb   rb   rc   test_issue_10161]  s   $rc  c                      s0   t d tt fdd tt fdd d S )NrT   c                      s   t t S rY   )r\   r-   rb   r=  rb   rc   r   d  r6  z"test_issue_10755.<locals>.<lambda>c                      s   t  dS r  )r-   r/  rb   r=  rb   rc   r   e  r   r&   rL   r   rb   rb   r=  rc   test_issue_10755b  s   re  c                  C   sB   t d} tttj|  | dtjftddtdd  ksJ d S )NrT   r   r   r   )r&   r8   r-   r#   r   r   r=  rb   rb   rc   test_issue_11877h  s   :rf  c                  C   s0   t d} ttjd|  dd}| |ksJ d S )NrT   r   FrX  )r&   r   r#   r   normal)rT   r   rb   rb   rc   test_normalm  s   rh  c                      s   t d tt fdd d S )NrT   c                      s   t   dtdS )Nr   r   )r1   r   r   rb   r=  rb   rc   r   u  s    ztest_expr.<locals>.<lambda>rd  rb   rb   r=  rc   	test_exprs  s   ri  c                  C   s0   t t} | jttg |  td ksJ d S r  )r   r   r   extendrT   build)ebrb   rb   rc   test_ExprBuilderx  s   rm  c                  C   s2   ddl m}  | d}| d}||du sJ d S )Nr   )
parse_exprzlog((2*V/3-V)/C)/-(R+r)*Czlog((2*V/3-V)/C)/-(R+r)*2F)sympy.parsing.sympy_parserrn  r%  )rn  rT   rU   rb   rb   rc   test_issue_22020~  s   rp  c                  C   s   t d} td}| dkdu sJ | dkdu sJ |dkdu s J |dkdu s(J | d dkdu s2J | d dkdu s<J G dd d}| | kdu sLJ | | kdu sUJ d S )	NrT   r   FTr   zx + 1c                   @   r-  )z)test_non_string_equality.<locals>.BadReprc                 S   s   t rY   )RuntimeErrorrs   rb   rb   rc   __repr__  r9  z2test_non_string_equality.<locals>.BadRepr.__repr__N)rx   ry   rz   rr  rb   rb   rb   rc   BadRepr  r1  rs  )r&   r)   )rT   oners  rb   rb   rc   test_non_string_equality  s   ru  c                  C   s>  ddl m}  |   tjthksJ W d    n1 sw   Y  |   t jt ks.J W d    n1 s8w   Y  |   tdjtdhksMJ W d    n1 sWw   Y  |   tdtjtdthksnJ W d    n1 sxw   Y  |   tttdjt ksJ W d    d S 1 sw   Y  d S )Nr   warns_deprecated_sympyr   rM  )	sympy.testing.pytestrw  rT   expr_free_symbolsr   r  r#   rJ   r   rv  rb   rb   rc   
test_21494  s    "rz  c                   C   s   t tdksJ d S )Nr   )rT   r[  rb   rb   rb   rc    test_Expr__eq__iterable_handling  s   r{  c                   C   sZ   d tjdks
J d tddksJ d tdksJ d ttd	d
ks+J d S )Nz{:1.2f}z0.00z{:+3.0f}r   z +3z	{:23.20f}z 3.14159265358979323846z	{:50.48f}r   z22.319776824715853173956590377503266813254904772376)formatr#   r   r   r,   r2   rb   rb   rb   rc   test_format  s   r}  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   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.miscellaneousr.   r/   $sympy.functions.elementary.piecewiser0   (sympy.functions.elementary.trigonometricr1   r2   r3   'sympy.functions.special.delta_functionsr4   r5   'sympy.functions.special.error_functionsr6   'sympy.functions.special.gamma_functionsr7   sympy.integrals.integralsr8   r9   sympy.physics.secondquantr:   sympy.polys.partfracr;   sympy.polys.polytoolsr<   r=   r>   sympy.polys.rationaltoolsr?   sympy.series.orderr@   sympy.simplify.combsimprA   sympy.simplify.gammasimprB   sympy.simplify.powsimprC   sympy.simplify.radsimprD   rE   sympy.simplify.ratsimprF   r+  rG   rH   sympy.simplify.trigsimprI   sympy.tensor.indexedrJ   r  rK   rx  rL   rM   	sympy.abcrN   rO   rP   rQ   rR   rS   rT   rU   rV   r  r(  r  rX   r}   r   i5f1_1powr   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,  r8  r:  r?  rA  rE  rH  rI  rP  r\  rc  rl  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r'  r-  rI  rO  rR  rT  rV  rW  rX  rY  r\  r^  rb  rc  re  rf  rh  ri  rm  rp  ru  rz  r{  r}  rb   rb   rb   rc   <module>   sT   $4,F	H[-
	-149
?![R		
+" ?
y
		
