
    oVh                        d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZ d d	l m!Z! d d
l"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlmCZCmDZDmEZEmFZFmGZG d dlHmIZI d dlJmKZKmLZL d dlMmNZNmOZO d dlPmQZQ d dlRmSZS d dlTmUZU d dlVmWZWmXZX d dlYmZZZm[Z[m\Z\m]Z] d d l^m_Z_m`Z`maZambZbmcZc  e%d!e"      \  ZdZeZf egd#      D  cg c]	  }  e&        c} \  ZhZiZjd$ Zkd% Zld& Zmd' Znd( Zod) Zpd* Zqd+ Zrd, Zsd- Ztd. Zud/ Zvd0 Zwd1 Zxd2 Zyd3 Zzd4 Z{d5 Z|d6 Z}d7 Z~d8 ZeZd9        Zd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB Ze]dC        ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda 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| Zy}c c} w )~    )Sum)Basic_aresame)clear_cache)DictTuple)Expr	unchanged)SubsFunctiondiffLambdaexpandnfloat
Derivative)EFloatzooRationalpiIoonan)Pow)Eq)S)symbolsDummySymbol)imre)logexp)sqrt)	Piecewise)sincosacos)expint)loggamma	polygamma)Matrix)sstr)OIndexed)	PoleError_mexpandarityBadSignatureErrorBadArgumentsError)_exp_is_pow)sympifySympifyError)MutableMatrixImmutableMatrix)	FiniteSet)solveset)	NDimArray)subsets
variations)XFAILraiseswarns_deprecated_sympy_both_exp_pow)twxyzzf g hcls   c                     t        dd      } t        |       j                  d      t        t	        t        |             z  t        t        |             z   k(  sJ t        |       j                  d      t        |       k(  sJ t        t        | z        j                  d      t        |       t        t        |       z  z   k(  sJ t        t              j                  d      t        t	        t                    t        t        t                    z  t        t        t	        t                    z  t        t        t                    z  z   k(  sJ y )NrF   Trealcomplex)
r   fr   r   r    r!   r#   r'   r&   rH   rF   s    N/home/dcms/DCMS/lib/python3.12/site-packages/sympy/core/tests/test_function.pytest_f_expand_complexrT   '   s    sAQ4;;t;$"QqT(
R!X(====q6===&#a&000qs8??4?(CFQs1vX,====q6===&#be*SAZ*?	#be*SAZ+           c                  J   t        t        t                     } | j                  t        t              t               t        t              k(  sJ t        dt        t              z        } | j                  t        t              t               t        dt        z        k(  sJ y )N   )r$   r"   rE   subsrF   es    rS   	test_bug1r\   1   sl    c!fWA66#a&1"a(((RAYA66#a&1"ac***rU   c                     t        d      }  | t              }|j                  t              }|j                  t              }|j                  t              j                  t              }|j                  t              j                  t              }| | t              k(  sJ | | t              k7  sJ |t         | t              t              k(  sJ |dk(  sJ |t        t         | t              t              t              k(  sJ |dk(  sJ y Nnur   )r   rF   r   rG   )r_   r[   edxedyedxdxedxdys         rS   test_general_functionrd   9   s    	$B
1A
&&)C
&&)CFF1INN1EFF1INN1E1::"Q%<<$r!ua.   !8O8DbeQ++++A::rU   c                      t        d      }  |        }|j                  t              }|j                  t              j                  t              }| |        k(  sJ | |        k7  sJ |dk(  sJ |dk(  sJ y r^   )r   r   rF   )r_   r[   r`   rb   s       rS   test_general_function_nullaryrf   H   sh    	$B
A
&&)CFF1INN1E99"$;;!8O8A::rU   c                  H   t        t        t              t              } | j                  t        t              t	        t                    | k7  sJ | j                  t        t              t	        t                    t        t	        t              t              k(  sJ | j                  t        t              t	        t                     t        t	        t               t              k(  sJ | j                  t        t              t        t        t              t              k(  sJ y N)r   grF   rY   rQ   r   rG   rZ   s    rS   test_derivative_subs_bugrj   T   s    QqT1A66!A$!"""66!A$!AaD!!444466!A$1*adUA"666666!Q<:adA....rU   c                  |    t        t        t              t              } | j                  | t              t        k(  sJ y rh   )r   rQ   rF   rY   rG   )ds    rS   test_derivative_subs_self_bugrm   ]   s)    QqT1A66!Q<1rU   c                  d   t        t        t               t              t        t        t              t               k(  sJ t        dt        t              z  t              dt        t        t              t              z  k(  sJ t        dt        t              z  t              dt        t        t              t              z  k7  sJ t        dt        t              z  t        z  t              dt        t              z  dt        z  t        t        t              t              z  z   k(  sJ t        dt        t              z  t        z  t        z  t              j	                         dt        z  t        t              z  dt        z  t        z  t        t        t              t              z  z   k(  sJ y )N      )r   rQ   rF   rG   r    rU   rS   test_derivative_linearityrr   c   s   1q>d1Q4m^+++!A$?aQqT1o---!A$?aQqT1o---!A$q!!A$1T!A$]): ::::!A$q
A%%'1Q3qt8ac!eD1qM6I+IIIIrU   c                     t        t        t              t              t        t        t              t              k7  sJ t        t        t              t              j	                         t        t        t              t              k(  sJ t        t        t        t              t              t              t        t        t              t        t              k(  sJ t        t        t              t        d      t        t              k(  sJ t        t        t              t        t        ft        t         f      t        t              k(  sJ y Nr   )r   r&   rF   r   doitrQ   rG   rq   rU   rS   test_derivative_evaluaterv   k   s    c!fa DQO333c!fa %%'4A?:::j1q)1-adAq1AAAAc!fa#s1v---c!fq!fq1"g.#a&888rU   c            	         t        t        t        t        t              t        t        t              t        t        t        t        t              t        t        t              k(  sJ t        t        t        t        t              t        t        t              t        t        t        t        t              t        t        t              cxk(  r-t        t        t        t        t              t        df      k(  sJ  J t        t        t        t        t              t        d      t        t        t        t        t              t        d      k(  sJ t        t        t        fD  cg c]!  } t        t         t        t        z  z   |       # c} ddt        z  t         t        dz  z  gk(  sJ t        t        t        t        t              t        t        t        d      t        t        t        t        t              t        t        t        t              k(  sJ t        t        t        t        t              t        t        t        dd      t        t        t        t        t              t        t        t        t              k(  sJ t        t        t        t        t              t        t        t              j                  t              t        t        t        t        t              t        t        t        t              k(  sJ t        t        t        t        t        t              t              t              j                  t              t        t        t        t        t              t        t        t              k(  sJ t        t        d        t        t              j                  t        t        f      j                  t        gk(  sJ t        d      j                  d	      t        d
      k(  sJ y c c} w )NrK         Fevaluatec                  f    t        t              j                  t        t        f      j                  S rh   )r'   rF   r   rG   	variablesrq   rU   rS   <lambda>z#test_diff_symbols.<locals>.<lambda>   s    c!fkk1a&1;; rU   za*x+brF   a)r   rQ   rF   rG   rH   r   _eval_derivativerA   	TypeErrorr'   _wrt_variablesr7   )syms    rS   test_diff_symbolsr   t   sn   !Q
Aq!$
1Q1:q!Q(GGGG!Q
Aq!$
1Q1:q!Q(Gi:VWXY[\^_V`cdfgbhKiiiiii!Q
Aq!Z!Q
Aq%AAAA -.q!95CD!ac35"acA2ad79KKKK!Q
Aq!Q':a1aj!Q1+MMMM!Q
Aq!Q71Q1:q!Q*+ + +a1aj!Q*;;A>1Q1:q!Q*+ + +j1aQ/3DDQG1Q1:q!Q'( ( ( 9;<q6;;1v--!444 7  %555 6s   !&O/c                  *     G d dt                 j                  t        d      k(  sJ          j                  t        d      k(  sJ t        t         fd        G d dt                 j                  t        d      k(  sJ   t
              j                  t        d      k(  sJ t        t         fd        G d dt                 j                  t        j                  k(  sJ   t
              j                  t        j                  k(  sJ y )	Nc                       e Zd Zed        Zy)test_Function.<locals>.myfuncc                      y rh   rq   rI   s    rS   evalz"test_Function.<locals>.myfunc.eval       rU   N__name__
__module____qualname__classmethodr   rq   rU   rS   myfuncr          		 
	rU   r   r   c                  0      t               j                  S rh   )rF   nargsr   s   rS   r   ztest_Function.<locals>.<lambda>   s    fQioo rU   c                       e Zd Zed        Zy)r   c                      y rh   rq   rJ   rF   s     rS   r   z"test_Function.<locals>.myfunc.eval   r   rU   Nr   rq   rU   rS   r   ztest_Function.<locals>.myfunc   r   rU   ry   c                  :      t         t              j                  S rh   )rF   rG   r   r   s   rS   r   ztest_Function.<locals>.<lambda>   s    fQl00 rU   c                       e Zd Zed        Zy)r   c                      y rh   rq   r   s     rS   r   z"test_Function.<locals>.myfunc.eval   r   rU   Nr   rq   rU   rS   r   ztest_Function.<locals>.myfunc   r   rU   )r   r   r;   rA   r   rF   r   	Naturals0r   s   @rS   test_Functionr      s     
 <<9Q<'''8>>Yq\)))
9-. 
 <<9Q<'''!9??il***
901 
 <<1;;&&&!9??akk)))rU   c                  X   t        d      } | j                  t        j                  k(  sJ  | d      j                  t        j                  k(  sJ  t        dd      dd      j                  t	        d      k(  sJ t
        j                  t	        d      k(  sJ t        d      j                  t	        d      k(  sJ t        j                  t	        dd      k(  sJ t        d      j                  t	        dd      k(  sJ t        dd      j                  t	        d      k(  sJ t        dd      j                  t	        d      k(  sJ t        dd      j                  t	        dd      k(  sJ t        dd       j                  t        j                  k(  sJ t        t        d        y )NrQ   ry   rz   r   r   r   ry   c                      t        dd      S )NrQ   rq   r   r   rq   rU   rS   r   ztest_nargs.<locals>.<lambda>   s    x26 rU   )	r   r   r   r   r;   r&   r"   rA   
ValueErrorrQ   s    rS   
test_nargsr      sP   A77akk!!!Q4::$$$!8Cq!!Q'--1===99	!$$$q6<<9Q<'''99	!Q'''q6<<9Q?***Cq!''9Q<777Cq!''9Q<777Cv&,,	!Q???Ct$**akk999
:67rU   c                  ^    G d dt               }  G d d|       } G d d|      } G d d|      } G d	 d
|      } G d d|      } G d d|      } G d d|      } G d d|      } G d d|      }	 G d d|	      }
| j                  t        d      k(  sJ |j                  t        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        dd      k(  sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ |	j                  t        d      k(  sJ |
j                  t        d      k(  sJ y )Nc                       e Zd ZdZy)"test_nargs_inheritance.<locals>.f1rz   Nr   r   r   r   rq   rU   rS   f1r          rU   r   c                       e Zd Zy)"test_nargs_inheritance.<locals>.f2Nr   r   r   rq   rU   rS   f2r          rU   r   c                       e Zd Zy)"test_nargs_inheritance.<locals>.f3Nr   rq   rU   rS   f3r      r   rU   r   c                       e Zd ZdZy)"test_nargs_inheritance.<locals>.f4ry   rz   Nr   rq   rU   rS   f4r      s    rU   r   c                       e Zd Zy)"test_nargs_inheritance.<locals>.f5Nr   rq   rU   rS   f5r      r   rU   r   c                       e Zd Zy)"test_nargs_inheritance.<locals>.f6Nr   rq   rU   rS   f6r      r   rU   r   c                       e Zd ZdZy)"test_nargs_inheritance.<locals>.f7Nr   rq   rU   rS   f7r      s    rU   r   c                       e Zd Zy)"test_nargs_inheritance.<locals>.f8Nr   rq   rU   rS   f8r      r   rU   r   c                       e Zd Zy)"test_nargs_inheritance.<locals>.f9Nr   rq   rU   rS   f9r      r   rU   r   c                       e Zd ZdZy)#test_nargs_inheritance.<locals>.f10ry   Nr   rq   rU   rS   f10r      r   rU   r   c                       e Zd Zy)#test_nargs_inheritance.<locals>.f11Nr   rq   rU   rS   f11r      r   rU   r   rz   ry   )r   r   r;   r   r   )r   r   r   r   r   r   r   r   r   r   r   s              rS   test_nargs_inheritancer      s~   X R R R R R R R R b c 88y|###88y|###88y|###88yA&&&88yA&&&88yA&&&88q{{"""88q{{"""88q{{"""99	!$$$99	!$$$rU   c                      d } t        |       dk(  sJ dd} t        |       dk(  sJ t        d       J t        t              dk(  sJ y )Nc                      yNry   rq   )rF   rG   s     rS   r   ztest_arity.<locals>.<lambda>       rU   rz   c                      y rh   rq   rF   rG   rH   s      rS   rQ   ztest_arity.<locals>.f   s    rU   rz   rK   c                      | S rh   rq   rR   s    rS   r   ztest_arity.<locals>.<lambda>   s    A rU   r   rh   )r3   r"   r   s    rS   
test_arityr      sQ    A8q==8v&&&:rU   c                     t        t        t        dz        }  | d      dk(  sJ  | t              t        dz  k(  sJ  | t              t        dz  k(  sJ  t        dd             dk(  sJ t        t         dd      sJ t        dd      t        dd      k7  sJ  t        dt	        t                           t	        t              k(  sJ t        dd      j
                  t        d      k(  sJ t        t         t        ft        dz        sJ t        t        t        dz        t        t        ft        dz        k(  sJ t        t        t        dz        t        t        t        dz  dz         k7  sJ t        t        t        ft        t        z        t        t        t        ft        t        z        k7  sJ t        t        t        ft        t        z        t        t        t        ft        t        z        k7  sJ  t        t        t        ft        t        z        t        t              t        t        z  k(  sJ  t        t        t        ft        t        z        d	d	      d
k(  sJ  t        t        t        ft        t        z        t        d	      t        d	z  k(  sJ  t        t        t        ft        t        z        d	t              d	t        z  k(  sJ  t        t        t	        t                    t              t	        t              k(  sJ  t        t        t        dz         | t                    t        dz  k(  sJ  |  | t                    t        dz  k(  sJ d dD        \  }} t        ||f||z         t        t              t        t        z   k(  sJ t        t        t        ft        t        z         j
                  t        d      k(  sJ t        t        t        t        f} t        |t        t        t        z   t        z   z        | t        t        t        z   t        z   z  k(  sJ t        t        dt        z        t        t        dt        z        z   }|dt        t        dt        z        z  k7  sJ |j                         dt        t        dt        z        j                         z  k(  sJ t        t        dt        z        t        t        t              fvsJ t        t        d         t        t        d      d      t        j                  u sJ t        t        d        t        t        d        t        t        d        t        t        d        t               5  t        t        t        gt        t        z         t        t        t        ft        t        z         k(  sJ 	 d d d        t        t        t        fft        t        z          d      dk(  sJ t        t        t        ft        ft        t        z   t        z          dd      dk(  sJ t        t        t        ft        fft        t        z   t        z          d      dk(  sJ t        t        fd       t        t        ft        t        f       d      dk(  sJ  d      dk(  sJ t        t        fft        t        f      t        t        fd        d      dk(  sJ t!        t        t"              sJ t!        t        t"              sJ t%        t        t        dt        z               t%        t        t        t                     y # 1 sw Y   xY w)Nrz         rq   *   +   r   ry   rK      c              3   4   K   | ]  }t        d |        yw)rF   Nr/   ).0is     rS   	<genexpr>ztest_Lambda.<locals>.<genexpr>   s     .!gc1o.   r   c                  "    t        dt              S r   r   rF   rq   rU   rS   r   ztest_Lambda.<locals>.<lambda>  s    fQl rU   c                  <    t        t        t        ft        dz         S Nrz   r   rq   rU   rS   r   ztest_Lambda.<locals>.<lambda>
  s    faVQU&; rU   c                  B    t        t        t        ft        ft              S rh   r   rF   rG   rq   rU   rS   r   ztest_Lambda.<locals>.<lambda>      fq!fa[!&< rU   c                  B    t        t        t        ft        ft              S rh   r   rG   rF   rq   rU   rS   r   ztest_Lambda.<locals>.<lambda>  r   rU   c                  2    t        t        dfdft              S Nry   rz   r   rq   rU   rS   r   ztest_Lambda.<locals>.<lambda>  s    fq!fa[!&< rU   r   rX      )r   ry   c                        ddd      S )Nry   rz   rK   rq   flams   rS   r   ztest_Lambda.<locals>.<lambda>  s    d1am rU   ry   ry   ry   )r   r   c                        d      S r   rq   r   s   rS   r   ztest_Lambda.<locals>.<lambda>  s    d1g rU   )r   rF   rG   r
   rQ   r   r;   rH   rD   as_dummyrA   r4   r   OnerB   r5   
issubclassr   hash)r[   x1x2peqr   s        @rS   test_Lambdar      s   q!Q$AQ42::Q41a4<<Q41a4<<6"b>r!!!VR$$$"b>VB^+++6"ad1%%%"b>9Q<///VaT1a4(((!QT?faT1a40000!QT?fQ1q11111a&!Q$61a&!Q$#77771a&!Q$61a&!Q$#777761a&!Q$1%A---61a&!Q$1%---61a&!Q$1%A---61a&!Q$1%A---6!QqT?11%%%6!QT?1Q4 AqD(((QqT7ad??.v.FB$62r(BG$Q*a!e3331a&!a% &&)A,666	1a
A#6!QA	]#Q'1A	?:::	1Q3&AaC.	(B6!QqS>!!!!;;=AfQ!n5577777!QqS>6!Q<!1111
236!Q<?aee###
;<
<=
<=
<=		! :q!fac"faVQqS&9999: Aq6)QU#D<1Aq61+q1uqy)D?aQFA;.!a%!),D!!!
34A4!Q D8v:%%%QD7QF#D
o.: '333'333 	1Q311: :s   3A]]!c                  .   t        t        t              t        t        t              cxu rt        j                  u sJ  J t        t        dt        z        t        j                  usJ t        t        t        ft              t        j                  usJ y r   )r   rF   rG   r   IdentityFunctionrq   rU   rS   test_IdentityFunctionr   *  sj    !Q<6!Q<=1+=+======!QqS>!3!33331a&!A$6$6666rU   c                  d   t        t        dt        z        j                  t               k(  sJ t        t        t        t        z        j                  t        hk(  sJ t        dd      j                  t               k(  sJ t        dt        t        z        j                  t        t        hk(  sJ y )Nrz   rq   r   )r   rF   free_symbolssetrG   rq   rU   rS   test_Lambda_symbolsr  0  s    !QqS>&&#%///!QqS>&&1#---"b>&&#%///"ac?''Aa5000rU   c                  >    t         j                  t               k(  sJ y rh   )rQ   r  r  rq   rU   rS   test_functionclas_symbolsr  7  s    >>SU"""rU   c                  j    t        t        d        t        t        d        t        t        d        y )Nc                  N     t        t        dt        z        t        t              S r   r   rq   rU   rS   r   z'test_Lambda_arguments.<locals>.<lambda><  s    nfQ!nQ2 rU   c                  X     t        t        t        ft        t        z         t              S rh   r   rq   rU   rS   r   z'test_Lambda_arguments.<locals>.<lambda>=  s    3faVQU3A6 rU   c                  .     t        dd      t              S )Nrq   r   r   rq   rU   rS   r   z'test_Lambda_arguments.<locals>.<lambda>>  s    nfRnQ/ rU   rA   r   rq   rU   rS   test_Lambda_argumentsr  ;  s#    
923
967
9/0rU   c                     t        t        t        fdt        z        t        t        t        fdt        z        k(  sJ t        t        dt        z        t        t        t        fdt        z        k7  sJ t        t        dt        z        dt        z  k7  sJ t        t        dt        z        t        t        dt        z        k7  sJ y r   r   rq   rU   rS   test_Lambda_equalityr  A  s    1a&!A#&!Q1"5555!QqS>VQFAaC0000!QqS>QqS    !QqS>VAqs^+++rU   c                      t        ddd      t        j                  u sJ t        t        t        t
              t        t        t        d      k7  sJ t        t        t        d      j                  t        t              j                  t              sJ t        t        t        t              t        df      t        t              j                         t        t              j                  t        t              k(  sJ t        t        t        d      j                  t              sJ t        t        t        d      j                  rJ t        t        t        t        z   t        d      t        d      t        t        t        z   t        t        fd      k(  sJ t        t        t        fd      t        t        t        d      k(  sJ t        t        t        d      t        t        t        d      k(  sJ t        t        t        d      j                  t        d      t        t        t        d      k(  sJ t        t        t        d      j                  t        d      t        dt        d      k(  sJ t        t        t              t        d      j                         t        d      k(  sJ t        t        t        dz        t        dz  d      j                         t        d      k(  sJ t        t        t        t        t
              t        t        t
        fd      t        t        t        t        t
              t        t        t
        fd      k7  sJ t        t        t        d      j                  t        t              j                         dk(  sJ t        t        t        t              t        t        t
        fd      t        t        t        t              t
        z   t        t        t
        fd	      k7  sJ t        t        t        t              t        t        fd
      j                         t        dd      k(  sJ t        t        t        t        t              t        d      t        d      j                         t        dd      k(  sJ t        t        d        t        t        d        t        t        t        t        t              t        t        fd
      j                         dk(  sJ t        t        t        t              t        t        fd
      j"                  t%        dd      k(  sJ t        t        t              t        d      t        t        t              t        d      k(  sJ t        t        t        t              t        t        fd
      t        t        t        t              t        t        fd      k(  sJ t        t        t              t        z  t        t        fd
      t        t        t              t        z  t        t        fd
      k(  sJ t        t        t              t        z  t        t        fd      t        t        t              t        z  t        t        fd      k(  sJ t        t        t              t        d      j                  t        d      j                         t        d      k(  sJ t        t        t              t        t              j                  t        d      t        t        t              t        d      k(  sJ t        t        t        t              z  t        t              j                  t        d      t        dt        t              z  t        d      k(  sJ dt        t        t              t        d      z  j                  t        t        t              t        d      t              dt        z  k(  sJ t        t        t              t        d      j                  t'               k(  sJ t        t        t        t              t        t
              j                  t        t
        hk(  sJ t        t        t              j                  t              t        d      j                         s6J t        t        t              j                  t              t        d             t        dt        t              j                  t              z   t        d      j                         s9J dt        t        t              j                  t              t        d      z          t        t        t        t        t              j                  t              z  t        t        fd      j                         dt        t        t        t        d      t              t        d      z  k(  sJ t        t        dz  t        t              z  t        d      j                  t              dt        z  t        d      z  k(  sJ t        t        dz  t        t              z  t        t              } | j                  t              | j                         j                  t              cxk(  rEt        dz  t        t        t              t              z  dt        z  t        t              z  z   k(  sJ  J t        t        t              t        d      t        t        t              t        d      z   dt        t        t              t        d      z  k(  sJ t        t
        t        t              z  t        d      }t        t
        t        t              z  t        d      }||z   d|z  k(  sJ |j)                         |j)                         k(  sJ t        t
        t        t        dz         z  t        d      ||fvsJ t        t        t              t              j                  t        t+        t                    t        t        t+        t                    t+        t                    k(  sJ t        t        t              t              j                  t        t        t        z         t        t        t        t              t              t        t        t        z         k(  sJ t        t        t              t-        t              z  t
        z   t        t        fdt.        dz  f      j1                  d      t        t        t              t-        t              z  t
        z   t        t        fdt.        dz  f      j3                  d      cxk(  r1t
        t5        d      j1                  d      t        d      z  z   k(  sJ  J t        t              j                  t              j                  t        d      j                  t        t              t        t              j                  t              j                  t        d      k(  sJ t        t        t              j                  t              j                  t        d      z  j                  t        t              t        t        t              j                  t              j                  t        d      z  k(  sJ t        t        t+        t              dz  t+        t              t              t+        t              t7        t                    j                         dt7        t              z  k(  sJ t        t        t+        t              dz  t+        t              t              t+        t              t7        t                    j                  d      dt        t7        t              t              z  k(  sJ t        t        t        t+        t                    t              j                         t        t        t        t+        t                    t+        t                    t        t+        t              t              z  t        t        t        t        t+        t                    t              t        t              z   k(  sJ y )Nry   rq   rz   r   )rz   ry   r   )r   ry   ry   r   r   ry   )r   ry   r   r   c                  T    t        t        t        t              t        t        fd      S Nr  r   rQ   rF   rG   rq   rU   rS   r   ztest_Subs.<locals>.<lambda>i  s    tAaGaVY? rU   c                  ^    t        t        t        t              t        t        t        fd      S r  r  rq   rU   rS   r   ztest_Subs.<locals>.<lambda>j  s    tAaGaAY	B rU   )ry   r   r   )r   rz   rK   z1/2Fdeep)r   r   r   rF   rG   rH   rY   hasr   rQ   ru   r   r  rA   r   lenr~   pointr   r  __hash__ri   r'   r   nevalfr   r#   )r[   e1e2s      rS   	test_Subsr  Q  s
   2r?aee###1a=DAqM)))1a=a#''***
1Q4!Q(!Q/446!A$))Aq/III1a=QAq!}))))QUAq!1a(DQA,GGGGA4$q!Q-///1a=DAqM)))1a=a#tAq!}4441a=a#tAq!}444!a  "ad***!Q$Aq!&&(AaD000!Q
Q1Iy1Qq!QZ!QI./ / /1a=a#((*a///!Q!QI.Qq!Wq[1a)Y/0 0 0!Q!Q(--/1Q7:::Qq!Wa#Q*//1Qq!W<<<
:?@
:BCtAaGaVV,6671<<<!Q!Q(..%1+===!atAaD!Q////!Q!Q(D1a1a&&,IIII!QA'4!QA+GGGG!QA'4!QA+GGGG!a  A&++-1555!a  A&$qtQ*::::!A$1""1a(D1Q4A,>>>>QqT1a  &&tAaD!Q'7;qsBBB!a((CE111!QA++1v555!		!a#((*DD11q!,DD*AaDIIaL !Q',,.LD11q!4L0LL.!Aq',,q/!Aq662779	$z!Aq'1%q!
,,- - -1QqT	1a %%a(AaC!H444QT!A$Y1A66!9a(OAqDAaD!1D,Dqs1Q4x,OOOOOO!ad1Q4A..!D1q!4D2DDDD	a!fa	B	a!fa	B7ad??;;=BKKM)))!AE(
Aq!2r333adA##Aqt,
1QqT7AaD0IIIIadA##Aq1u-j1q6I	1q52   !SVa!Q!RT355a8QqT#a&[1_q!fq"Q$i066q9&	HUOa 1%%& & & & & Q499Q<Q"''1-111B1B1a1HHHHadiil1%%++Aq1Qqtyy|7H7HA7N5NNNN
1Q47AaD!,adCF 

$&Ac!fH  
1Q47AaD!,adCF 

$E$
a
3q61 556 6 6a1Q4j!$))+z	!QqT
AaD0$QqT1-0.04Z	!QqT
A6110   rU   c                      t        t        t        t        t                    t        t        t                    j	                         } | | j	                         k(  sJ y rh   )r   rQ   rF   ri   ru   )dones    rS   test_doitdoitr"    s;    a1Q4j!QqT*//1D499;rU   c                      t        t        t              t        dz  t              j                         t        t	        t                    k(  sJ y r   )r   rQ   rF   ru   r$   rq   rU   rS   
test_Subs2r$    s4     !adA##%47333rU   c                     t        t        t        z         t        t        z   k(  sJ t        t        t        z   d      t        t	        t              z  t        t	        t              z  z   t        t              z   t        t              z   k(  sJ t        t        t        z   dz  d      t        dz  t        dz  z   k(  sJ y )NTrO      )modulus)r   rF   rG   r   r    r!   rq   rU   rS   test_expand_functionr(    s    !a%=AE!!!!a%&!BqE'AbeG*;be*Cbe*KKKK1q52+r*aeaem;;;rU   c                      t        t              j                  du sJ t        t              j                  du sJ t        t	        d            j                  du sJ t        t	        d            j                  du sJ t        t
              j                  du sJ t        t
              j                  du sJ t        t        dd            j                  du sJ t        t        dd            j                  du sJ y )NFz0.1Try   rK   )r&   rF   is_comparabler'   r   r   r   rq   rU   rS   test_function_comparabler+    s    q65(((q65(((uU|**d222uU|**d222q64'''q64'''x1~,,444x1~,,444rU   c                      t        t              j                  du sJ t        t               j                  du sJ t        t              j                  du sJ t        t              j                  du sJ y )NF)r&   r   r*  r   r   rq   rU   rS   #test_function_comparable_infinitiesr-    sd    r7  E)))s8!!U***s8!!U***s8!!U***rU   c                  p   t        dt        z        j                  t              dt        t	        t        t              t              t        dt        z        z  k(  sJ t        t              dz  j                  t              dt        t              dz  z  t        t              j                  t              z  k(  sJ t        dt        z        dz  j                  t              dt        dt        z        dz  z  t        t	        t        t              t              t        dt        z        z  k(  sJ t        dt        z         j                  t              t        t	        t        t              t              t        t        dz         k(  sJ t        ddt        z  z         j                  t              dt        t	        t        t              t              t        dt        z  dz         z  k(  sJ t        dt        t              z        j                  t              dt        t              z  t        t	        t        t              t              t        dt        t              z        z  k(  sJ t        t        t        t        z         j                  t              t        t	        t        t        t        t        z         t              t        t              t        t	        t        t        t              t              t        t        t        z         z   k(  sJ t        t        t        dz        j                  t              dt        z  t        t	        t        t        t              t              t        t        dz        z  t        t	        t        t        t        dz        t              t        t              z   k(  sJ t        t        t        t                    j                  t        t                    t	        t        t        t        t                    t        t                    k(  sJ y )Nrz   rK   r   )
rQ   rF   r   r   r   r&   r'   rH   rG   ri   rq   rU   rS   test_deriv1r/    s    QqS6;;q>QtJqtQ$7AaC@@@@@aD!G>>!!A$'	!A$))A, 6666acFAIA!AacFAI+d1Q4Q!/% #% % % % QU8==tJqtQ$7AEBBBBQ1W:??141Q4Q!a$) ") ) ) )Qs1vX;A!CF(41Q4Q#a&,* #* * * * QA;AZ!QUQ'A.Z!Q#QA.	/0 0 0 Q1:??1	!DAaGQ'AqD11Z!QT
A&1-	./ / / Q!:??1Q4 JqAaDz1Q4$@@@@rU   c                  &   t         dz  j                  t               dt         dz  z  k(  sJ t         dz  j                  t         d      dt         dz  z  k7  sJ t         dz  j                  t         d      t        t         dz  t               k(  sJ t        t         dz  t               dt         dz  z  k(  sJ t        t         dz  t         d      dt         dz  z  k7  sJ t        t         dz  t         d      t        t         dz  t               k(  sJ y )NrK   rz   Fr{   )rF   r   r   rq   rU   rS   test_deriv2r1    s    qD;;q>Qq!tV###qD;;q5;)Qq!tV333qD;;q5;)Z1a-@@@@1a=AadF"""1a%(AadF2221a%(Jq!tQ,????rU   c                  $   t        t              j                  t              t        t        t              t              k(  sJ t        t        t              j                  t        t              t        t        t              j                  t        t              z
  dk(  sJ t        t        t        t              t        t              j
                  dd  t        dft        dffk(  sJ t        t        t        t              t        t              j
                  dd  t        dft        dffk(  sJ t        t        t        t              t        t              t        t        t        t              t        t              z
  j                         dk(  sJ y Nr   ry   )rQ   rF   r   r   rG   argsru   rq   rU   rS   test_func_derivr5    s   Q499Q<:adA....Q7<<1!QQ 22a777a1gq!$))!"-1a&1a&1AAAAa1gq!$))!"-1a&1a&1AAAAqAw1%
1Q7Aq(AAGGIQNNNrU   c                  v    t        dd      } | dk7  sJ | j                  t         u sJ | j                  dk(  sJ y )Nr   Fr{   r  )r&   funcr4  r   s    rS   test_suppressed_evaluationr9    s9    AA6M666S==66T>>rU   c                  x   d }  | t        d      j                  d      t        d      d      sJ  | t        d      j                  d      t        dd      d	      sJ  | t        dt        z         j                  d      t        d
      t        d      t        z  z   d      sJ  | t	        dt        z         j                  d      t        d      t        d      t        z  z   d      sJ  | t	        ddt        z  z         j                  d      t        d      t        d      t        z  z   d      sJ  | t        t        t        d      t        z  z         j                  d      t        d      t        d      t        z  z   d      sJ  | t        d      j                  d      t        d      d      sJ y )Nc                 $    t        | |z
        |k  S rh   )abs)r   bepss      rS   r   ztest_function_evalf.<locals>.eq  s    1q5zCrU   ry      z0.841470984807897gvIh%<=rz      z0.9092974268256816953960199gQ@-(;z1.29845758141598z0.634963914784736z1.46869393991588z2.28735528717884239g      g      ?z0.0429042815937374z0.605011292285002z1.23699044022052z0.422985442737893d   z0.86231887228768)	r&   r  r   r   r#   r"   r   r$   r'   r   s    rS   test_function_evalfrC    s    c!fll2&9 :EBBBAR% =rBEK K Kc!a%j
%&/B)CA)EEuN N Nc!a%jr"E%#$9:1<%=>CE E Ec$Q,%%b)5, %&9 :1 <,=>CE E Ec"tAwqy.!''
%&/B)CA)EEuN N Nc#hnnR %(:";UCCCrU   c                  <     G d dt               }  | d      dk(  sJ y )Nc                       e Zd Zed        Zy)'test_extensibility_eval.<locals>.MyFuncc                      y)Nr   r   r   rq   )rJ   r4  s     rS   r   z,test_extensibility_eval.<locals>.MyFunc.eval  s    rU   Nr   rq   rU   rS   MyFuncrF    s    		 
	rU   rI  r   rH  r   )rI  s    rS   test_extensibility_evalrJ    s"      !9	!!!rU   c                     t        dd      } t        |       j                  du sJ t        |       j                  du sJ t	        |       j                  du sJ t        |       j                  du sJ t        |       j                  du sJ t        |       j                  du sJ t	        |       j                  du sJ t        |       j                  du sJ y )NrF   Fcommutativer   rQ   is_commutativer&   r#   r"   
is_complexrR   s    rS   test_function_non_commutativerQ    s    s&AQ4%'''q6  E)))q6  E)))q6  E)))Q4??e###q6%%%q6%%%q6%%%rU   c                     t        dd      } t        ddd      }t        |       j                  du sJ t        |       j                  du sJ t	        |       j                  du sJ t        |       j                  du sJ t        |       j                  J t        |       j                  du sJ t	        |       j                  du sJ t        |       j                  J t        |      j                  du sJ y )NrF   TrO   F)rP   zerorN  )rF   xzfs     rS   test_function_complexrU    s    sD!A
d
/CQ4$&&&q6  D(((q6  D(((q6  D(((Q4??"""q6$$$q6$$$q6$$$s8$&&&rU   c                  
   t        d      } t        t              j                  t        dd       t        t	        t        dz        z   k(  sJ t        t        dz         j                  t        dd       t        t        d      z  t        d      z   t	        t        dz        z   k(  sJ t        t        dt        z
  z        j                  t        dd       t        t        z  t	        t        dz        z   k(  sJ t        dt        dz  z
        j                  t        dd       t        d      t        t        dz        z  t	        t        dz        z   k(  sJ t        | t        dz         j                  t        dd       t        | d      t        | dz   d      t        z  z   t	        t        dz        z   k(  sJ t        t        d        t        dt        z
        j                  t        dd       t        d      t        t              z  t        d      t        t        d      dz  z  z  dz  z   t	        t        dz        z   k(  sJ t        dt        z         j                  t        dd       t        d      t        t               z  t        d      t         t        d      dz  z  z  dz  z   t	        t        dz        z   k(  sJ t        dt        z        j                  t        dd       t        t              dz  t        t              t        z  z
  dt        z  z
  t	        dt              z   k(  sJ t        t        dt        z              j                  t        dt               t        t                k(  sJ t#        t%        dd      t               j                  t        d	d       ddt        z  z
  t        dz  dz  z
  t        dz  d
z  z
  t        dz  dz  z
  dt&        z  t        t              z  t        t              z  z
  t	        t        d	z        z   k(  sJ t        t        t                    j                  t        dd       t        t              t        t%        dd      z  dz  z
  t        t%        d	d      z  dz  z   t	        t        dz        z   k(  sJ t)        t        t               j+                  t         d      }|j-                  t               D ch c]  }|j.                   c}h dk(  sJ t        d      }t)        |t               j+                  t         d      }|j-                  t               D ch c]  }|j.                   c}h dk(  sJ y c c}w c c}w )Nr  rz   ry   c                  P    t        dt        z        j                  t        dd       S r   )r&   rF   _eval_nseriesrq   rU   rS   r   z-test_function__eval_nseries.<locals>.<lambda>2  s    c!A#h44Q4@ rU   rK      r   )r  logxrX   r?  r   T   r   x   )r  >   rF   rG   xir]  >   rG   r]  xi0)r   r&   rF   rX  r.   r'   r   r(   r$   r+   rA   r1   r   r*   r"   nseriesrG   r)   r   r   rQ   seriesatomsname)r  s1r   r]  s2s        rS   test_function__eval_nseriesre  )  sH   sAq61d+q1QT7{:::q1u:##Aq$/1SV8c!f3DqAw3NNNNr1q5z?((At41qAwFFFAqD>''1d3tAwtAqDz7IAaQRdG7SSSSQA,,Q48!Q)AE1-a//!AqD'9: : :
9@AA;$$Q40DGDGOd1gaRSTURVWXRXkFYZ\F\4\_`abdeae_f4ffffA;$$Q40DGD!H4DtAwQRPRVWXYVZ[\V\~G]^`G`4`cdefhieicj4jjjjAaC=&&q!T2Aq3q6!8ac!AaG+, , ,C!H%%a11%51"EEE (1a.1"%33Aq$?	AaC!Q$q&1a47"QT"W,qs48|DG/CCa1gMN N NtAw<%%aD1Q!Xa^#A%%8Aq>(9#(==!Q$GH H H 
1QqA	BHHV,-qAFF-1AAAA	B	
2qa	 BHHV,-qAFF-1CCCC . .s   UU$c                      t        dd      } t        d| z  t        z  | ddf      }t        |t              }|j	                         dk(  sJ |j	                  d	      t        d| z  | ddf      k(  sJ y )
Nr  Tintegerrz   ry   rK   rY  Fr  )r   r   rF   r   ru   )r  rQ   rl   s      rS   	test_doitri  F  sp    sD!AAEAI1ay!A1aA668r>>66u6QqS1a)!4444rU   c                     ddl m}  t        t        d            t        k(  sJ t        t        t        t        dz                     t        k(  sJ t        t        t        t        dz                     t        k(  sJ t        t        d            t        k(  sJ t         | dd            t        k(  sJ t        t        t        dd                  t        k(  sJ y )Nr   r+   g      @      ?r   g       @ry   )	'sympy.functions.special.gamma_functionsr+   typer&   r   r!   r   r    r   rk  s    rS   test_evalf_defaultro  N  s    AC>U"""3q3w< !U***3q3w< !U***A<3	#s#$---HQN#$+++rU   c                  *   t         t        t        d      t        j                  g} d }t         dz  t        dz  z  t	        |       D ]H  }t        |t        |            D ].   |      r j                    t        t        fd       0 J y )Nrz   c                 Z     sy d   j                   du ryt        t                     D cg c]  } |   j                   s| }}t        t                     D cg c]  } |   j                   r| }}t         fd|D              xr t         fd|D              S c c}w c c}w )z-Return True if the input args for diff are okFr   c              3      K   | ];  }|d z   t              k  r(|d z      j                  xs |d z      j                   = ywry   N)r  	is_Symbol
is_Integerr   r   r   s     rS   r   z.test_issue_5399.<locals>.ok.<locals>.<genexpr>e  sK      -QUSV^ a!eH&&=!AE(*=*== -s   AAc              3   d   K   | ]'  }|d z   t              k  r|d z      j                   ) ywrs  )r  rt  rv  s     rS   r   z.test_issue_5399.<locals>.ok.<locals>.<genexpr>g  s5      -QUSV^ !a%"" -s   -0)rt  ranger  all)r   r   s_atn_ats   `   rS   okztest_issue_5399.<locals>.ok[  s    Q4>>U" Q=;aAaDNN;; Q=?a!??  -- - - -- -	.	 <?s   B#B#B(3B(
   ro   c                  "      j                    S rh   )r   )r   vs   rS   r   z!test_issue_5399.<locals>.<lambda>o  s    7277A; rU   )
rF   rG   r   Halfr>   r?   r  r   rA   r   )r4  r|  r   r   r  s      @@rS   test_issue_5399r  X  s}    q!A$D. 
Bq!tBT] 8As1v& 	8A!uz#67		88rU   c                      t        j                         } t        t        t	        t               t               j                  |       t        |       z
        dk  sJ y )NgV瞯<)rF   _randomr<  r   r&   doit_numericallyr'   )z0s    rS   test_derivative_numericallyr  r  s?    	
Bz#a&!$55b9CGCDuLLLrU   c                      ddl m  G fddt               t              } | j	                  t              t        | t              k(  sJ t        t        fd       y )Nr   ArgumentIndexErrorc                       e Zd ZdZ fdZy)/test_fdiff_argument_index_error.<locals>.myfuncry   c                     rh   rq   )selfidxr  s     rS   fdiffz5test_fdiff_argument_index_error.<locals>.myfunc.fdiff}  s	    $$rU   N)r   r   r   r   r  r  s   rS   r   r  z  s    	%rU   r   c                  &      t         t               S rh   rR   r   s   rS   r   z1test_fdiff_argument_index_error.<locals>.<lambda>  s    fQl rU   )sympy.core.functionr  r   rF   r   r   rA   r   )mfr  r   s    @@rS   test_fdiff_argument_index_errorr  w  sE    6% %
 
B771:B****
9*+rU   c                  x   t        t              } t        | t              }t        |t              }t        t              }t        |t              }t        | t              |k(  sJ t        d| z  dz   t              d|z  k(  sJ t        d| z  dz   |z   t              d|z  |z   k(  sJ t        d| z  dz   || z  z   t              d|z  | |z  z   ||z  z   k(  sJ t        d| z  dz   || z  z   |       d|z   k(  sJ t        d| dz  z  d| z  z   | |z  z   t              d|z  | |z  z   ||z  z   d| z  |z  z   k(  sJ t        d| dz  z  d|z  z   | |z  z   t              d|z  | |z  z   ||z  z   d| z  |z  z   k(  sJ t        d| dz  z  d|z  z   | |z  z   |      dk(  sJ t        d| dz  z  d|z  z   | |z  z   |      dk(  sJ t        t	        |       t              |t        |       z  k(  sJ t        t        |       t              |t        |       z  k(  sJ t        t        |       t              |dt        |       z  z  k(  sJ y )Nrz   r   rK   ro   r   )rQ   rD   r   ri   r&   r'   r#   r$   )rF   xdxddrG   yds        rS   test_deriv_wrt_functionr    sq   	!A	aB
r1+C	!A	aB1:A	1R'''A	Aq!QVb[000A	AE!1%R!b&26)AAAAA	AE!1%Q...QTAE!AE)1-R!b&261IEBJ2   QTAF"QU*A.!c'AF2BR!V2KEBJ3   AqD1r6!AE)2.!333AqD1r6!AE)3/1444A?b3q6k)))A?b3q6k)))QrQa[1111rU   c                  6   t               j                  du sJ t        j                  du sJ t        t              j                  du sJ t	        t        t              t              j                  du sJ t	        t        dz  t              j                  du sJ y )NFTrz   )r	   	_diff_wrtrF   rQ   r   rq   rU   rS   test_diff_wrt_valuer    s~    6u$$$;;$Q4>>T!!!adA((D000adA((E111rU   c            
      
   t        t              } t        t        t              t              }t        t        t              t        t              }t        t        |       | dz  z   |       t	        |       d| z  z   k(  sJ t        t        |      |dz  z   |      t	        |      d|z  z   k(  sJ t        t        |      |dz  z   |      t	        |      d|z  z   k(  sJ t        | dz  |      dk(  sJ t        | dz  |      dk(  sJ t        |dz  |       dk(  sJ t        |dz  |      dk(  sJ t        |dz  |      dk(  sJ t        | |z  |z  |       ||z  k(  sJ t        | |z  |z  |      | |z  k(  sJ t        | |z  |z  |      | |z  k(  sJ t        t        t              t              j                  t        t                    dk(  sJ t        t        t                    t	        t        t        t              t                    z
  j                  t        t                    t	        t        t                    k(  sJ t        t        |       | t              t        t        |       t        |       k(  sJ t        t        t                    j                  t              t        t        t              t              t        t        t        t                    t        t                    z  k(  sJ t        t        t        t              t        t                    t              t        t        t              t              t        t        t        t              t        t                    t        t                    z  k(  sJ t        t        t        t              t        t                    t              t        t        t        t              t        t                    t        t                    t        t        t              t              z  t        t        t        t              t        t                    t        t                    t        t        t              t              z  z   k(  sJ t        t        t                    j                  t              t	        t              t        t        t        t              t              t        t        t                    z  k(  sJ t        t        t        t                    t        t                    t        t        t        t                    t        t                    k(  sJ y Nrz   r   )
rQ   rF   r   r&   r'   ri   r   hrG   r   )fxdfxddfxs      rS   test_diff_wrtr    s   	
1B
qtQ-C!aDB"a%$B!B$666C36!3'3s8ae+;;;;D	D!G#T*c$i!D&.@@@@Asq   At!!!Qq   Q"""a"""3tR CH,,,3tS!RW,,,3tT"bf,,,!a=ad#q(((!ID1qM**0016#ad)CCCBQ4BB#7777 QqT7<<?1Q4Jq1w!556 6 6!A$!q!1Q4Jq1qt}ad;;< < <!A$!q!1QqT1Q4=!A$'
1Q4(;;1QqT1Q4=!A$'
1Q4(;;	<= = = AQ3q6$z!A$':As1v"FFG G G !A$1*QqtWad";;;;rU   c                     t        t        t                    j                  t              j	                  t        t        t        dt        z              j                         t        dt        z        j                  t              k(  sJ y r   )rQ   ri   rF   r   rY   r   ru   rq   rU   rS   test_diff_wrt_func_subsr    sP    QqT7<<?6!QqS>2779QqsV[[^KKKrU   c                  &   t        t        t        t              z        } t	        d      }t	        d      }t        | t              j                  | t              t        t        t              k(  sJ t        | t              j                  t        t              j                         t        | t              j                         j                  t        t              k(  sJ t        t        t        t              t              j                  t        t              t        t        t        t        t              t              t        t              k(  sJ t        t        t        t              t              j                  t        t              t        t        t        t        t              t              t        t              k(  sJ t        t        t        t              t              j                  t        t        t        t                    t        t        t        t        t              t              t        t        t        t                    j                         k(  sJ t        t        t        t              t              j                  t        t        t        t                    t        t        t        t        t              t              t        t        t        t                    k(  sJ t        t        t        t              t        t                    j                  t        t        t        t                    t        t        t        t        t              t              t        t                    k(  sJ t        t         |t              t        t                    t        t                    j                  t        t              t        t        t                    t        t        t         |t              t        t                    t        t                    t        t              t        t        t                    j                         k(  sJ t        t        t        t              t              j                  t        t              t        t        t        t              t              k(  sJ t        t        t        t              t              j                  t        t        t                    t        t        t        t        t                    t        t                    k(  sJ t        t        t        t              t        t                    t        t                    j                  t        t               |t                    t        t        t        t               |t                     |t                    k(  sJ t        t        t        t        t        t                    t        t        t                    j                  t        t        t        t        ft        t        z               t        t        t        t        z   t              t        dt        z        k(  sJ t        t        t        t        t                    t              t        t              j                         t        t              t        t        t                    z  k(  sJ t        t        t        t        t                    t        t                    t        t              j                         t        t        t                     k(  sJ t         |t        t         |t        t                    j!                  t              j!                  t              j!                  t              t"              sJ t        t        t        ft        dt        z  dt        z  z               }t        t        t        t        t                    j!                  t        d      } |t         |t        t                    j!                  t        d      }|j                  t        |      j                         |z
  j%                         dk(  sJ t        t        t              j!                  t              j                  t        d      j'                         v sJ t        t        t        t        t        t                    t        t              j                  t        t        t                    t        t        t        t        t        t        t                    t        t              t        t        t                    k(  sJ t        t        t        t              t              j                  t        d      t        t        t        t        t              t              t        d      k(  sJ t        t        t        t        t                    t        t        f      j                  t        t              t        t        t        t        t                    t        t        f      k(  sJ t        t              j!                  t              }|j                  |d      t(        j*                  u sJ |j!                  |      t(        j*                  u sJ t        t        t        t              t        t              }t        t        t        t              t        t              }|j                  t        t        t        t              t        t              d      t(        j*                  u sJ |j!                  |      t(        j*                  u sJ t        t        t        t              t        dt        d      j                  |t        t        t                    t        t        t        t              t        dt        d      k(  sJ t        t        t        t        t        z
        t              j                  t        t        t        z         t        t        t        t        t        t        z
        t              t        t        t        z         k(  sJ y )Nur  rz   rK   r   ry   )r&   rF   r#   rG   r   r   rY   ru   rQ   r   ri   r  rH   r   r'   
isinstancer   r	   simplifyra  r   r   )	exprr  r  Fabstractconcretedfdxydyxs	            rS   test_subs_in_derivativer    s   qQx=DAAdA##D!,
1a0@@@@dA##Aq)..04  "''1-. . .a1gq!&&q!,Z!Q5KQPQ0RRRRa1gq!&&q!,Z!Q5KQPQ0RRRRa1gq!&&q!Aq'2d:a1gq;QSTVWXY[\V]6^6c6c6eeeea1gq!&&q!Aq'2d:a1gq;QSTVWXY[\V]6^^^^a1gqt$))!Qq!W5Aa1gqMSTUVSW9XXXXa!admQqT*//!a1g>Z!A$!qt,adAaG<AACD D Da1gq!&&q!,
1Q7A0FFFFa1gq!&&q!A$/:a1Q4j!A$3OOOOa!admQqT*//!ad;1QqT1Q4=!A$'( ( (a1Q7mQq!W-22	61a&!a% "%)1q5!a1&&& & & 
1QqT7A&3/446#a&SV:LLLL
1QqT7AaD)1c2779c#a&k\IIIa1a1g&++A.33A6;;A>EEE1vs1Q319~&AAaG}!!!Q'HAaG}!!!Q'HMM!Q$$&1;;=BBB!		!!!!Q'--////a!Aa&k1a(--a1 
*Qq!Aq']Aq11ad;< < < a1gq!&&q! 
*Qq!Wa(!Q/0 0 0 a1Q4j1a&)..q! 
!QqT
QF+, , , 
11B772q>QUU"""772;!%%
Qq!Wa
#C
Qq!Wa
#C88JqAw1-q1QUU:::88C=AEE!!!a1gq!Q*//Qq!W#AaGQ1a89 9 9a1q5k1%**1a!e41QA;"Aq1u9. . . .rU   c                      t        t              t        t              t        dz  t        t        z  dt        z   t	        t        t              t              t	        t        t        t                    t              fD ]   t        t         fd        t        t        t        t        z        t        t        z  d      t        t        t        z        k(  sJ y )Nrz   ry   c                  6    t        t        t                     S rh   r   rQ   rF   wrts   rS   r   z+test_diff_wrt_not_allowed.<locals>.<lambda>      4!c? rU   r   )
r'   rF   r!   rG   r   rQ   rA   r   r   r#   r  s   @rS   test_diff_wrt_not_allowedr    s     FBqE1a41a!es1vq!:a!gq#9; 4 	z234
 AaC!A#q!S1X---rU   c                       G d d      } t        t              j                  t         |              t        t               k(  sJ y )Nc                       e Zd Zd Zy)"test_diff_wrt_intlike.<locals>.Twoc                      yr   rq   )r  s    rS   __int__z*test_diff_wrt_intlike.<locals>.Two.__int__  s    rU   N)r   r   r   r  rq   rU   rS   Twor    s    	rU   r  )r'   rF   r   )r  s    rS   test_diff_wrt_intliker    s3      q6;;q#% SVG+++rU   c            
         t        d      } t        t        t              }t	        |t              dz  t	        |t              dz  z
  | dz  |dz  z  z
   dz  }t        t	        ||      t	        |t	        |t              t              z
  t	        |t	        |t              t              z
  d      }t        t	        |t        t              t	        |t        t              z
  | dz  |z  z   d      }||k(  sJ y )Nmrz   r   )r   rQ   rF   rD   r   r   )r  phiLeqnaeqnbs        rS   test_klein_gordon_lagrangianr    s    sA
Aq'C
sA,/DaL!O
+ad36k
9:1<AQtAtC|Q//$q$sA,2JJAODd31oS!Q/!Q$s(:A>D4<<rU   c            
         t        d      } t        d      }t        t              }| t        |t              dz  z  dz  ||dz  z  dz  z
  }t	        t        ||      t        |t        |t              t                    }t	        | |z  | t        |t        t              z        }||k(  sJ t        ||t              t        |t        |      k(  sJ t        |t        |t              t              | t        |t        d      z  k(  sJ t        |t        t        |t                    | |z  | t        |t        d      z  z   k(  sJ y )Nr  krz   )r   rQ   rD   r   r   )r  r  rF   r  r  r  s         rS   test_sho_lagrangianr     s   sAsA	!A	$q!*a-AadF1H$Ad1aj$q$q!*a01DqbdAd1amO$D4<<1a=DAqM)))41:q!QtAq!}_4441d1aj!aRTAd1amO%;;;;rU   c                      t        t              } | j                  t              }t        d|dz  z         }t        ||       dk(  sJ t        ||      |t        d|dz  z         z  k(  sJ y )Nry   rz   r   )rQ   rF   r   r$   )r  Fdr  s      rS   test_straight_liner  /  s`    	!A	
BQQYA1:??2;"T!b!e)_,,,,rU   c                    	 t         j                  	dd	fd
} t        d      D ]  } | t        t        |      t        t        gk(  sJ  | t        t              t        |      t        t        t              gk(  sJ  | t        t              t        t              |      t        t              t        t              gk(  sJ  | t        t              t        t              |      t        t              t        t              gk(  sJ  | t        t        t              t        t              |      t        t              t        t        t              gk(  sJ t        t              j                  t              } | |t        |      t        |gk(  sJ t        t              j                  t              } | |||      ||gk(  sJ |j                  t              } | |||      ||gk(  sJ  | t        t              t        t              |      t        t              t        t              gk(  sJ  | t        t              t        t              |      t        t              t        t              gk(  sJ  | t        t        t              t        t              |      t        t              t        t        t              gk(  sJ |r | |t        |      t        |gk(  sJ |t        gsJ |r4 | t        t              t        |      t        t        t              gk(  sJ t        t              t        gsJ |rX | t        t        t                    t        t              |      t        t              t        t        t                    gk(  s+J t        t        t                    t        t              gsJ |rR | t        t        t              t        t              |      t        t              t        t        t              gk(  rJ t        t        t              t        t              grJ   	g       g k(  sJ t         	t        dfg      t        t        d      g      sJ  	t        t        ft        t        fg      t        t        t        z   fgk(  sJ  	t        dft        dt        z   fg      t        dt        z   ft        dfgk(  sJ  	t        dft        dft        dfg      t        dft        dft        dfgk(  sJ  	t        t              dft        t              dft        t              dfg      t        t              dft        t              dft        t              dfgk(  sJ  	t        dft        dft        dft        t              dft        t              dft        t              dfg      t        dft        dft        dft        t              dft        t              dft        t              dfgk(  sJ  	t        dft        t              dft        dft        t              dfg      t        dft        dft        t              dft        t              dfgk(  sJ  	t        dft        dft        t              dft        t              dft        dft        t              dft        dft        dfg      t        dft        dft        dft        t              dft        t              dft        t              dfgk(  sJ  	t        dft        dft        t              dft        dft        t              dft        t              dfg      t        dft        dft        dft        t              dft        t              dfgk(  sJ  	t        dft        dft        t              dft        dft        t              dft        t              dft        dft        dft        dft        dfg
      t        dft        dft        dft        t              dft        t              dfgk(  sJ  	t        dft        dft        dft        dff      t        dft        dfgk(  sJ t         	t        dft        dft        dfg      d   t              sJ  	t        dft        t              dft        dfg      t        dft        t              dfgk(  sJ  	t        dft        dft        dfg      t        dft        dft        dfgk(  sJ  	t        t              dft        t              dft        t              dfg      t        t              dft        t              dft        t              dfgk(  sJ  	t        dft        dft        dfg      t        dft        dfgk(  sJ  	t        t              dft        t              dft        t              dfg      t        t              dft        t              dfgk(  sJ t        t              j                  t              }|dft        dfg} 	|      |k(  sJ  	|dft        dft        t              dft        dft        t              dft        dfg      t        dft        t              dft        t              df|dft        dfgk(  sJ t        t              j                  t              } 	|df|dfg      |df|dfgk(  sJ |j                  t              } 	|df|dfg      |df|dfgk(  sJ y )	NF)reversec                      | rt        |      n|D cg c]  }|df c}      D cg c]  }|d   	 c}S c c}w c c}w rt   )reversed)r  r  r   vsorts      rS   vsort0z"test_sort_variable.<locals>.vsort09  sK    #"HQK%,aV %, - .! . 	. %, .s   8=rz   ry   rK   r   r   )r   _sort_variable_countrx  rG   rF   rQ   ri   r   r   rH   r   r   r  r  )
r  Rr  fyfxxr  r  dfyd2fxr  s
            @rS   test_sort_variabler  7  s	   ++E  . 1X EaA&1a&000adAq)a1Y666adAaD!,1qt<<<adAaD!,1qt<<<a1gqtQ/AaD!Aq'?BBBqTYYq\b!Q'Ar7222qTYYq\b"a(RH444ggajc2q)b#Y666eAh!a0QqT584DDDDeAha!4q588LLLLeAqk58Q7!HeAqk<# # 	# #  b!Q'r,  	% % !W	% %  eAh1-uQx2  	1 1$)!Ha=	1 1 #$ eAaDk1Q43aD%!+8  	= =*/!+qt)<	= = '( eAqk58Q7!HeAqk<# # 	E E.3Aqk58-D	E E-E0 9??EAq6(OeAqk]3331a&1a&!"1q5zl2221a&1a!e*%&Aq1u:1v*>>>>1a&1a&1a&)*1v1v1v.FFFF1Q4)adAY1q	23	
1q	AaD!9qtQi8) ) ) )1a&1a&1a&1Q4)adAY	
1q	 AAA1q	AaD!9	
1q	   1a&1Q4)aVadAY78aV	
A1q	AaD!9=& & & &1a&1a&1Q4)adAYA	
1q	Aq6Aq6# $)*AAA	
1q	AaD!9qtQi()) ) ) 1a&1a&1Q4)aVadAY	
1q	 AAA1q	AaD!9EF F F1a&1a&1Q4)aVadAY	
1q	Aq6Aq6Aq6Aq63 49:AA	
A1q	AaD!98&& & & 1a&1a&1a&1a&121v1v6FFFFeaVaVaV45a8%@@@1a&1Q4)aV,-1a&1Q4)1DDDD1a&1a&1a&)*1v1v1v.FFFF1Q4)adAY1q	23	
1q	AaD!9qtQi8) ) ) )1a&1a&1a&)*1v1v.>>>>1Q4)adAY1q	23	
1q	AaD!98   
A$))A,C!Hq!fD;$	a1a&1Q4)aVadAYA@ A	
A1q	AaD!9sAhAE88 8 8 A$))A,C3(S!H%&C8c1X*>>>>88A;D4)c1X&'S!HtQi+@@@@rU   c                      t        t        t              j                  t        t        t        t        t              t	        t        t        t              t        dft        df      k(  sJ y )Nrz   rK   )rQ   rF   rG   r   r   rq   rU   rS   test_multiple_derivativer    sG    Q7<<1aA 
!Q!Q!Q01 1 1rU   c                      G d dt               }  | t        t              t        t              }t        |t        t        t        t              t              t        |t        t                    k(  sJ t        |t        t              t              t        |t        t                    k(  sJ t        t        t              j                  t        t        t        f      t        t        t        t              t        t        t        f      k(  sJ t        t        t              j                  t        t        df      t        t        t        t              t              k(  sJ y )Nc                       e Zd Zd Zy)test_unhandled.<locals>.MyExprc                 >    |j                   j                  d      s| S y )Nr]  )rb  
startswith)r  ss     rS   r   z/test_unhandled.<locals>.MyExpr._eval_derivative  s    66$$T*rU   N)r   r   r   r   rq   rU   rS   MyExprr    s    	rU   r  r   )r	   rQ   rF   rG   rH   r   r   )r  r   s     rS   test_unhandledr    s      
!a	BAq!A$"jQqT&::::AaD!
2qt 4444Q7<<1a&!Z!QQF%CCCCQ7<<1a&!Z!Q%;;;;rU   c            	      :   ddl m}  ddlm} t	        d      }|t        dd      z  d|t        j                  dz  z  z  dz  z   } | t        |      |t        dd      z  d|t        j                  dz  z  z  z         sJ  | t        |d	      |dz  d|d
z  z  z         sJ |t        dd      z  d||dz  z  z  dz  z   } | t        |      |t        dd      z  d||dz  z  z  z         sJ d}t        |d      } | t        |      |      sJ  | t        ||z        ||z        sJ  | t        ||z  d	      ||z        sJ t        t        |t        d      z               t        |t        t        d            z         k(  sJ t        d      }t        d t        |j                  |d            D              rJ t        dt        d      z  dz         dk(  sJ t        d|dz  z  t        z          ||dz  d|dz  z  z   dz   d      z  }t!        t        |dd            dk(  sJ t"        t$        fD ]  } |t        j&                  t        j&                  i      }t        |      }	t)        |	|      sJ  | t+        |	j-                               j/                         t        j&                  t        d      f      rJ  t"        t$        fD ]  } |t        j&                  t        j&                  i      }t        |d      }	t)        |	|      sJ  | t+        |	j-                               j/                         t        d      t        d      f      rJ  t        j&                  g}t        |      }	t1        |	      t*        u sJ  | |	d   t        d            sJ  | t        t3        |t        j&                              j4                  t        d            sJ  | t        t        d            t        d            sJ  | t        t7        t        j&                              d   t        d            sJ t        t3        dt8        z
  dz  dz  t8        z   d            t        j:                  k(  sJ t        t        j&                  |igd      t        d      |igk(  sJ t=        ddgddgg      }
t=        t        dd      t        dd      gt        d d      t        d!d      gg      } | t        |
      |      sJ t?        ddgddgg      }
t?        t        dd      t        dd      gt        d d      t        d!d      gg      } | t        |
      |      sJ tA        d"      }t         |d            jC                  t              rJ y )#Nr   )r   )rootofrF   r   rK   gUUUUUU?T)exponentgUUUUUU?l   
>V3&Z
 r?  rz   z/x*lamda + lamda**3*(x/2 + 1/2) + lamda**2 + 1/4c              3   4   K   | ]  }|j                     y wrh   )r  )r   r   s     rS   r   ztest_nfloat.<locals>.<genexpr>  s     Ga1>>Gr   gni`yl   y* l   rT g!|=rX   ry   F)r  r  z-0.7*cos(3.0*x**4 + y)g      ?)dkeysz1.05   )	precisionz2.0z3.0z4.0rQ   )"sympy.core.basicr   sympy.polys.rootoftoolsr  r   r   r   r   r   r   r'   r$   anyr<   rY   rG   strdictr   r  r  listitemspoprn  r   rhsr   r   falser9   r:   r   ra  )r   r  rF   r   big	Float_bigrQ   tirl   r  ABs               rS   test_nfloatr    s$   ).sA	
HQN	Qq1557|^A-	-BF2J8Aq> 1UAaL4H HIIIF2-q5zUAJ<N/NOOO	
HQN	Qq1Q3xZ\	)BF2J8Aq> 1UA!H4D DEEE
Cc2IF3K+++F3q5M9Q;///F1c6D11i<@@@#a$q'k"#s1vd1g+>'???? 	

;<AG8AFF1f4E+FGGGG '$z**Z78   
Qq!tVaZ1qAv 115	5Bvb5A./3KKKK Tl D 1I!R   QWWY++-b	/BCCC	D
 Tl G 1D!!R   QWWY++-b	59/EFFF	G
 
Aq	A7d??AaD%)$$$F2a=)--uRy999F1T7OQtW---F5=)!,eBi888"a!eaZ\A%q)*agg555AFFA;-t,%*a0AAAA 	1v1v&'A

$eER&@	A	u	#U5B%?@	B	CA F1Iq!!!!Q!Q()A

$eER&@	A	u	#U5B%?@	B	CA F1Iq!!! 	Aad|!!%((((rU   c                  :   ddl m} m} t        d      }t	        d      }t	        d      } || ||z  z         } || ||z  z         }|j                  |      }|j                  |      }||k7  sJ t         ||       | |      }	t         ||       | |      }
|	|
k7  sJ y )Nr   )r   r=  rQ   rG   )	sympy.abcr   r=  r   r   r   r   )r   r=  rQ   y1y2func1func2func1_yfunc2_yz1z2s              rS   test_issue_7068r    s    A	sB	sBa"q&jMEa"q&jMEjjnGjjnGg	adAr	B	adAr	B8O8rU   c                     ddl m}  t        t              j	                  t        |       }t        |       |  t        z   t        t        t        t              t              t        |       z  z   |  t        z   dz  t        t        t        t              t        t              t        |       z  dz  z   |  t        z   dz  t        t        t        t              t        t        t              t        |       z  dz  z   |  t        z   dz  t        t        t        t              t        t        t        t              t        |       z  dz  z   |  t        z   dz  t        t        t        t              t        t        t        t        t              t        |       z  d	z  z   t        |  t        z   dz  t        | f      z   }||k(  sJ t        t              j	                  t        |       }||k(  sJ y )
Nr   r8  rz   rK   r   r      rX   r\  )	r  r   rQ   rF   r`  r   r   rG   r.   )r   ans1resans2s       rS   test_issue_7231r
    s   Q4;;q!DQ4A264
1Q4 3Q:::BFQ;tJqtQ2Aq99!;<BFQ;tJqtQ15q" ""#$$ BFQ;tJqtQ1a8q" ""$%	% BFQ;tJqtQ1a;q" ""%&& )*A26A+1v(>?C $;;Q4;;q!D$;;rU   c                  .   ddl m}  ddlm}   | d      |      }  | d      |      }|j	                  |      }t        |t        |            sJ t                  | d      |      }t        |t        |            sJ ||j	                  |      k(  sJ y )Nr   r   rR   rQ   )r  r   r  rF   matchesr  rn  r   )r   rF   rQ   ffmatch_with_caches        rS   test_issue_7687r    s    ,aA	#q	Bzz!}ab"""M	#q	Bab"""rzz!},,,rU   c                      ddl m} m}  | d      }t                 G d d|      } |d      }t	        |t        |            sJ y )Nr   )r   UndefinedFunctionrQ   c                       e Zd Zy)test_issue_7688.<locals>.ANr   rq   rU   rS   r  r  
  r   rU   r  )r  r   r  r   r  rn  )r   r  rQ   r  r   s        rS   test_issue_7688r    s=    ?AM 	#Aaa!!!rU   c                      ddl m}  t        d       J t        d      t        j                  u sJ t        | | dz   dz  z        | | dz   dz  z  j                         k(  sJ y )Nr   rR   ry   rz   )r  rF   r2   r   r   r   rR   s    rS   test_mexpandr    s_    D>!!!A;!%%Aq1uqjL!aQ
l%:%:%<<<<rU   c                      d} d }t        t        |       D cg c]  }d|z  	 c}      }dd l}|j                  ||      }t	        |t
              sJ y c c}w )N(   c                 *    ddt        | |z
        z   z  S r   )r#   )rE   thetas     rS   ri   ztest_issue_8469.<locals>.g  s    !C%L.!!rU   zw%ir   )r   rx  	functoolsreducer  r   )Nri   r   wsr  r  s         rS   test_issue_8469r    sU    
A" 
58,a%',	-BAr"DdC    -s   Ac                      t        t        t              t              j                  d      t        t        t              t              k(  sJ y )NT)foo)r   r    rF   ru   rq   rU   rS   test_issue_12996r"  #  s6     beQ$$$.*RUA2FFFFrU   c                  Z    t        t        ddt        z  z   dz  dz         t              sJ y )Nrl  i'  ry   )r  r&   r   rq   rU   rS   test_should_evalfr$  )  s)    c3Q;.23S999rU   c                     t        dd      \  } }t        |       j                  |       }|j                  | dz
  | dz
  | | dz   | dz   g      t        j
                  dz  t        | dz
        t        | dz         z
  z  t        dd      t        | dz         t        | dz
        z
  z  z   z
  j                         dk(  sJ |j                         t        | t        j                  z         t        | t        j                  z
        z
  z
  j                         dk(  sJ |j                  |      t        | |t	        d      z  z         t        | |t	        d      z  z
        z
  |z  z
  j                         dk(  sJ |j                  | d|z  z
  | |z
  | |z   | d|z  z   g      t	        d	      d
|z  z  t        | |z         t        | |z
        z
  z  t        j
                  d|z  z  t        | d|z  z
        t        | d|z  z         z
  z  z   z
  j                         dk(  sJ |j                  g dd      t        dd      t        d      z  dt        d      z  z   t        d      dz  z
  z
  j                         dk(  sJ |j                  | | |z   g|       t        | |z         t        |       z
  |z  z
  j                         dk(  sJ |j                  | |z
  | | |z   g| |z
        t	        d       d|z  z  t        | |z
        z  d|z  t        |       z  z   t        j
                  d|z  z  t        | |z         z  z
  z
  j                         dk(  sJ |j                  | |z
  | |z   | d|z  z   | d|z  z   | d|z  z   g      dd|z  z  t	        d       dz  t        | |z
        z  t	        d      dz  t        | |z         z  z   t        dd      t        | d|z  z         z  z   t        dd      t        | d|z  z         z  z
  t        j
                  dz  t        | d|z  z         z  z   z  z
  j                         dk(  sJ t        |       j                  | d      }|j                  | |z
  | | |z   g      |dz  t        | |z
        t        | |z         z   dt        |       z  z
  z  z
  j                         dk(  sJ |j                  | d|z  z
  | |z
  | | |z   | d|z  z   g      |dz  t        dd      t        | d|z  z
        t        | d|z  z         z   z  t        dd      t        | |z         t        | |z
        z   z  z   t        dd      t        |       z  z
  z  z
  j                         dk(  sJ |j                  | d|z  z
  | |z
  | |z   | d|z  z   g      d|z  dz  t        j                  t        | d|z  z
        t        | d|z  z         z   z  t        j                  t        | |z         t        | |z
        z   z  z
  z  z
  j                         dk(  sJ |j                  | | |z   | d|z  z   | d|z  z   g      |dz  dt        |       z  dt        | |z         z  z
  dt        | d|z  z         z  z   t        | d|z  z         z
  z  z
  j                         dk(  sJ |j                  | |z
  | |z   | d|z  z   | d|z  z   g      d|z  dz  t        dd      t        | |z
        z  t        dd      t        | |z         z  z
  t        dd      t        | d|z  z         z  z   t        j                  t        | d|z  z         z  z
  z  z
  j                         dk(  sJ t        |       j                  | d      }|j                         t        | t        dd      z
         dt        | t        j                  z
        z  z   dt        | t        j                  z         z  z
  t        | t        dd      z         z   z
  j                         dk(  sJ |j                  | d|z  z
  | d|z  z
  | |z
  | | |z   | d|z  z   | d|z  z   g      |dz  t        j
                  dz  t        | d|z  z
        t        | d|z  z         z
  z  t        | d|z  z
        z
  t        | d|z  z         z   t        dd      t        | |z
        t        | |z         z
  z  z   z  z
  j                         dk(  sJ |j                  | d|z  z
  | |z
  | |z   | d|z  z   g      d|z  dz  t        | d|z  z         t        | d|z  z
        z
  dt        | |z
        t        | |z         z
  z  z   z  z
  j                         dk(  sJ |j                  | | |z   | d|z  z   | d|z  z   g      |dz  t        | d|z  z         t        |       z
  dt        | |z         t        | d|z  z         z
  z  z   z  z
  j                         dk(  sJ |j                  | |z
  | |z   | d|z  z   | d|z  z   g      d|z  dz  t        | d|z  z         t        | |z
        z
  dt        | |z         t        | d|z  z         z
  z  z   z  z
  j                         dk(  sJ t        dd      }t        | |      j                  | |      }t        t        | t        j                  z   |      |      t        t        | t        j                  z
  |      |      z
  }|j                  |       |z
  j                         dk(  sJ t        j                  }| |z
  | |z   ||z
  ||z   f\  }	}
}}t        |	|      t        |
|      z   t        |
|      z
  t        |	|      z
  }|j                         |z
  j                         dk(  sJ y )Nzx hTrM   rz   ry   rY  rK   r   	   r   0   )r   ry   rz   rX   rp   r&     r  ro   rx   r      rG   r  )r   rQ   r   as_finite_differencer   r   r   r  r  r   r   )rF   r  dfdxd2fdx2d3fdx3rG   d2fdxdyref0halfxmxpymypref2s                 rS   $test_Derivative_as_finite_differencer8  .  s   5t$DAqQ499Q<D%%qsAaCAaC1&=>UU2Xq1va!f}%A!A#q1v(FFHIQWXY Y Y %%'q166z]1QZ=(*+38:; ; ;%%a(q1QqT6z]1Q1Q4Z=(!+,-5XZ1= = =%%q1Q3w!QqS!ac'&BCqT3q5\1QqS6AacF?+UUDF^Qq1Q3wZ!A!G*45678@
aH H H
 %%i3b!_QqT!AadF*QqT!V356>hjAF F F%%q!A#h2qsVad]A'xzQ/ / /%%qsAqsmQqS9dUAaC[1Q3!A#ad(*UUAaC[1Q3 !"*(*2 2 2
 %%qsAaCQqS!ac'1qs7&KL1g"vr{1QqS6)AbE2Jq1v,==!!Q!ac'
235=a_Qq1Q3wZ5OPr!A!G*,- .. 08xzQ? ? ?
 qTYYq!_F''1a16rEQqsVa!f_q1v-./08
a@ @ @ ''QqS!A#q!A#q1Q3w(GHrEXb"%qQqSzAa!A#gJ'>?a^QqsVa!f_568@Aqt8KL MMNVhj\]^ ^ ^
 ''QqS!A#qsA!G(DEqS2I1qs7aAaCj!891Q3!AaC&12 334<HJ!D D D
 ''AaCQqS!ac'(BCrEQqtVa!A#h&q1Q3xZ "#AacE(+ ,,-5XZ1= = =
 ''1ac1qs7A!G(DEqS2I!Q!A#.!Q!A#1FFRSUVXYZ[^_`a^aZaXbIbb!ac'
*+ ,,-5XZ1= = = qTYYq!_F'')HQN"##a!aff*o5qQVV}_ Xa^!34567?xzQG G G ''	
QqS!ac'1Q31Q3AaCQqS9;	2q!A!G*qQqSz12Qq1Q3wZ?1qs7&r1oq1v!A#?@ 	AA CK(*PQR R R ''QqS!A#qsA!G(DEqS2I1qs7Aa!A#gJ.AacF1QqS6M*+ ,,-5XZ1= = =
 ''AaCQqS!ac'(BCrEQq1Q3wZ!_q!AaC&1qs7*;'<<=>?GxzQO O O ''1ac1qs7A!G(DEqS2I1qs7AacF*AacF1Q1W:-./ 0019qA A A
 	sA1gll1a GaAFF
A&*Z!aff*a8H!-LLD((Q(/$6@@BaGGG66DtVQtVQtVQtV3NBBR9qRy 1R9,qRy8D((*T1;;=BBBrU   c                  &   t        d      5  t        } | | z  }|j                  | |      } || k(  sJ 	 d d d        t        d      5  t        } | | z  }|j                  | |      }|t        dz  k(  sJ 	 d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)NFTr   )r6   r   rY   )expr1expr0expr2s      rS   test_issue_11159r=    s    	U	 

5'~~	
 
T	 

5%(Q	  
 s   %A;,B;BBc            	      z   t        t        t        t              t              t        t              } | j	                  t              t        t        t              t        t              k(  sJ t        t        t        t              t              t        t        dz  dz         }|j	                  t              dt        z  t        t        t        t              t        t              t        t        dz  dz         z  k(  sJ t        t        t        t              t
        dz  z   t
        z
  t
              t
        t
        dz        }|j	                  t
              dt
        z  k(  sJ t        t        t        t        t
        z         t
              t
        t        dz        }|j	                  t
              t        j                  u sJ t        t        t        t              t              t
        t        ft
        t        f      }|j	                  t              t        t        t              t        t              k(  sJ t        t        t                    j	                  t        t              t        t                    t        t        t        t                    t        t              t        t                    k(  sJ y )Nrz   ry   r   )
r   r   rQ   rF   r   rG   r   ZerorH   ri   )r  r  e3e4e5s        rS   test_issue_12005rC    s   	j1q!1a	(B771:AaD!Q////	j1q!1adQh	/B771:1T*QqT1a"8!QTAXFFFFF	j11q!,aA	6B771:1	j1q51%q1a4	1B771:	j1q!Aq6Aq6	2B771:AaD!Q////QqT7<<!ad#z!AaD'1Q41'FFFFrU   c                     t        d      } t        d      }t        dd      \  }}t        t         ||       | |f      | |f      t         ||       | ||z   f      k(  sJ t        t         ||       | |dz   f      | |dz   f      t         ||       | ||z   dz   f      k(  sJ t         ||       | |f      j                         t         ||       | |f      k(  sJ y )	NrF   rQ   zm nTrg  rX   rK   ro   )r   r   r   ru   )rF   rQ   r  r  s       rS   test_issue_13843rE    s    AA5$'DAqj11v.A7:adQPQTUPUJ;WWWWj11Q3x01ac(;z!A$QRTUXYTY\]T]P^?____adQF#((*j11v.FFFFrU   c                  0   t        d      \  } }t        ddd      }t        ddd      }t        || |f      t        |t        |d      fd      k(  sJ t        || |d	z   f      t        j
                  u sJ t        || |f      t        j
                  u sJ y )
Nzx, yr  T)rh  nonnegativer  rh  positiver   )r   Try   )r   r   r%   r   r   r?  )rF   rG   r  r  s       rS   test_order_could_be_zerorJ    s    6?DAqTt4ATD1AAq6?iBq!HyAAAAAq1u:!&&(((Aq6?aff$$$rU   c                      t        d      } t        d      }t        d      }t        dd      }| |k(  sJ t        |       t        |      k(  sJ | | k(  sJ | |k7  sJ | |k7  sJ y )NrQ   ri   Tis_real)r   r   )rQ   r   ri   f_reals       rS   test_undefined_function_eqrO    sn    A	#BAc4(F 7N77d2h6M66M6;;rU   c                     t        d      } t        d      }t        dd      }t        dd      }t        t        dd            }||k(  sJ ||k7  sJ  ||        ||       k7  sJ  ||       j                  J  ||       j                  du sJ  ||       j                  du r|j                  dk(  sJ t        dd      } ||       j                  du sJ y )NrF   rQ   TrM   ry   rL  )r   r   rM  rb  )rF   rQ   rN  f_real1f_real_inheritf_real2s         rS   test_function_assumptionsrT    s    sAAc%Fs#GfSt45NW;;Q46!9Q4<<!9$$$!$$,1D1D1KKK
 sD)G1:%%%rU   c                  .   t        d      }  | d      j                  rJ t        d      }  | d      j                  rJ  | t              j                         j                  rJ t	        d      } | |      j                  |di      j                  rJ y )Nceilg333333?r&   rF   g333333?)rY   )r   	is_numberr   r  r   )rQ   rF   s     rS   test_undef_fcn_float_issue_6938rX    s    AvAvu{{}&&&&sAtzz#wz'11111rU   c                  :   dd} t        d       }t        d       }t        d| ||      } |t              }t        |      |k(  sJ t	        t        |            j
                  j                  dk(  sJ |j                  t              t        t              k(  sJ y )Nc                 8    t        | j                  |dz
           S r   )r'   r4  )r  argindexs     rS   r   z.test_undefined_function_eval.<locals>.<lambda>  s    S8a<)@%A rU   c                      y rh   rq   rJ   rD   s     rS   r   z.test_undefined_function_eval.<locals>.<lambda>  r   rU   c                     t        |      S rh   )r&   r]  s     rS   r   z.test_undefined_function_eval.<locals>.<lambda>  s
    s1v rU   temp)r  r   _imp_z<lambda>r   )	r   r   rD   r7   rn  r  r   r   r'   )r  r   r`  r_  r  s        rS   test_undefined_function_evalra    s     BE*+D-.EF%d%@D7D4=D   $$--;;;99Q<3q6!!!rU   c                     t        t              } | j                  t              }| t        |z  z   j                  t        |      dk(  sJ | t        |z  z   j                  |t              dk(  sJ t        | z  t        |z  | z  z   j                  | t              t        |j                  t              z  |z   dz   k(  sJ t        | z  t        |z  | z  z   j                  t        |       t        |j                  t              z  |z   dz   k(  sJ t        t              }t        |      }|j                  |      }|||z  z   j                  ||      dk(  sJ |||z  z   j                  ||      dk(  sJ ||z  ||z  |z  z   j                  ||      ||j                  |      z  |z   dz   k(  sJ ||z  ||z  |z  z   j                  ||      ||j                  |      z  |z   dz   k(  sJ y )Nrz   ry   rQ   rF   r   )r  FxrG   GGys        rS   test_issue_15241rg    s   	!A	
B"H??1b!Q&&&"H??2q!Q&&&aC!B$q&Lq!$"''!*r(9A(====aC!B$q&Lq!$"''!*r(9A(====	!A	!A	
B"H??1b!Q&&&"H??2q!Q&&&aC!B$q&Lq!$"''!*r(9A(====aC!B$q&Lq!$"''!*r(9A(====rU   c                      t        t        t        t              t        t              t        t        t                    j                         dk7  sJ y rt   )r   r   rQ   rG   rF   ri   ru   rq   rU   rS   test_issue_15226ri  
  s3    
1Q4A&1Q405571<<<rU   c                       t        t              t        t              t        t        t              t              fD ]   t	        t
         fd        y )Nc                  6    t        t        t                     S rh   r  r  s   rS   r   z!test_issue_7027.<locals>.<lambda>  r  rU   )r'   rF   r!   r   rA   r   r  s   @rS   test_issue_7027rl    s7    A1z#a&!45 4z234rU   c                  J   t        t              j                  t              dk(  sJ t        t              j                  t        t        t                    dk(  sJ t        t              j                  t        t        t                    dk(  sJ t        t        t                    j                  t        t        t              t        t                    dk(  sJ t        t        t                    j                  t        t        t              t              dk(  sJ t        t              j                  t	        t                    dk(  sJ t        t              j                  t        t        t              j                  t                    dk(  sJ t        t              j                  t              } t        t              j                  |       dk(  sJ t	        t              j                  t              }|j                  |       j                         dk(  sJ y r3  )rQ   rF   r   rG   ri   ru   )r  dgs     rS   test_derivative_quick_exitro    sR   Q499Q<1Q499Q!"""Q499Q!"""QqT7<<1Q41&!+++QqT7<<1Q4#q(((Q499QqT?aQ499Q!		!%***	
11BQ499R=A	
11B772;"""rU   c                  8   t        t        t        t                    } | j                  t        t              t        f      t        t        t        t        t                    t        t              t        f      k(  sJ | j                  t        d      j                         t        t        t        t        t                    t        t              df      t        t        t              t              z  t        t        t        t        t              t        t              t        t        t                    z   t        t        t              t              z  t        t        t        t        t                    t        t                    t        t        t              t        df      z  z   t        t        t              t              t        t        t        t        t        t                    t        t        t                    t        t              z  z   t        t        t        t        t        t                    t        df      t        t              z   k(  sJ t        t        t        t        t        t        t                    t              j                         t        t        t        t        t        t        t                    t        t        t                    t        t        t        t              t              z  t        t        t        t        t        t        t        t                    t              t        t              z   k(  sJ | j                  t        t        t                    | j                  t        t              t              k(  sJ y r   )rQ   rF   ri   r   rG   r   ru   r   _xi_2_xi_1rD   rB  s    rS   test_issue_15084_13166rs  !  s.   	
1adB77AaD!9Aa1J1q	!BBBB771a=	Aa1J1q		*:adA+>	>Z!UUA.qt<
=>H1	?	!QqT
AaD)*QqTAq6*BB	C 	1Q4DAeQqTNE1Q4!Hq 		 AeQqTNUAJ?J		KL L L !Q!Q !$))+1Q1Q7#Qq!W-j1a!.DDZ%AaG,e4eQ?	@A A A 771adrwwqtQ////rU   c                  &    t        t        d        y )Nc                  H    t        t              j                  t        d      S )Nrx   )r&   rF   r   rq   rU   rS   r   z&test_negative_counts.<locals>.<lambda>5  s    s1v{{1b1 rU   )rA   r   rq   rU   rS   test_negative_countsrv  3  s    
:12rU   c            
         t        t        d        t        t        t              j                  t        t        fdg      t        t        t              k(  sJ t        t        t              j                  t        t        fdg      t        t        t        t        t              t              t        t        t        t              t              g      k(  sJ t        t        t              j                  t        t        t        ft        t              t        t        t        t              t        t        dz   ft        df      k(  sJ t        t        g      j                  t        d      t        dg      k(  sJ y )Nc                  L    t        t              j                  t        dfd      S r  rc  rq   rU   rS   r   z(test_Derivative__new__.<locals>.<lambda>9  s    adiiA2 rU   r   ry   rz   )
rA   r   rQ   rF   rG   r   r=   r   rH   r,   rq   rU   rS   test_Derivative__new__ry  8  s    
923Q7<<!Q$!Q///Q7<<!Q$	1Q7A
1Q7A 638 )9 9 9 9Qq6;;q1a&!Q':	!Q!QUaV,% % % %1#;Aq!VQC[000rU   c                      G d dt               }  |        j                   |              t         |         |              k(  sJ d |        z  j                   |              dt         |         |              z  k(  sJ  G d dt               } |       j                   |             dk(  sJ d |       z  j                   |             dk(  sJ y )Nc                       e Zd ZdZdZy)!test_issue_14719_10150.<locals>.VTFN)r   r   r   r  	is_scalarrq   rU   rS   Vr|  C  s    		rU   r~  rz   c                       e Zd ZdZy)!test_issue_14719_10150.<locals>.XTN)r   r   r   r  rq   rU   rS   Xr  H  s    	rU   r  ry   )r	   r   r   )r~  r  s     rS   test_issue_14719_10150r  B  s    D  388AC=JqsAC0000acE<<*QS!#"6 6666D 388AC=AacE<<!!!rU   c                     t        dd      } t        dd      } t        dd      |       } t        dd      |      }t        dd      }||z  |z  }|j                  |      }|j                  d   |j                  |      k(  sJ y )	NrF   FrL  rD   rd  Ftr  rx   )r   r   r   r4  )rF   rD   r  ftr  r   eqdts          rS   test_noncommutative_issue_15131r  N  s    s&As&A	*$E	*1	-B	*$E	*1	-Bs&A	a"B771:D99R=BGGAJ&&&rU   c            
      f   t        t        t        t              t	        t                    t        t              t	        t              t              } t        t        t        t        t              t	        t                    t        t              t	        t                    t              }t        t        t              t	        t                    j                  t        t              t	        t              t              }t        t        t              t	        t                    j                  t        t              t	        t                    j                  t              }t        t        t        t              t	        t                    t              }| ||||f}d dt        dz  z  t        dt        z        z  t        t        dz        z  t        dt        z        t        t        dz        z  t        dz  z  z
  t        fd|D              sJ t        fd|D              sJ y )Nc           
         | j                  t        t        t        t        ft        t        t        z                     j                  t        t              dt        z        j                  t        t              t        dz        S )Nry   rK   )rY   rQ   r   rF   rG   r#   ri   r  )args    rS   r   z&test_Subs_Derivative.<locals>.<lambda>`  sO    sxx61a&#a!e*#= 

$qtQqS/$$qtQT* rU   rK   rz   ry   c              3   l   K   | ]+  } |      j                         j                         k(   - y wrh   ru   r   r   r   ansrY   s     rS   r   z'test_Subs_Derivative.<locals>.<genexpr>c  s)     ;!tAw||~$$&#-;s   14c              3      K   | ]9  } |j                               j                         j                         k(   ; y wrh   r  r  s     rS   r   z'test_Subs_Derivative.<locals>.<genexpr>d  s2     BtAFFH~""$++-4Bs   ?A)r   rQ   ri   rF   r  r   r#   ry  )r   r=  crl   r[   eqsr  rY   s         @@rS   test_Subs_Derivativer  Y  sR   1QqT1Q4=!A$!Q/A:a!admQqT1Q48;A	!A$!1Q41q)A	!A$!1Q41&++A.A1QqT1Q4=!$AaAq/C+D
AqD&QqS/#ad)
#c!A#hs1a4y&8A&=
=C;s;;;;BcBBBBrU   c                  <    t        d      } | j                  dk(  sJ y )NrQ   )r   rb  r   s    rS   test_issue_15360r  f  s    A66S==rU   c                  p    t         j                  du sJ t        t        d        t        t        d        y )NFc                       t        t               S rh   r   rq   rU   rS   r   z"test_issue_15947.<locals>.<lambda>m  s
    ad rU   c                  F    t        t              j                  t               S rh   rc  rq   rU   rS   r   z"test_issue_15947.<locals>.<lambda>n  s    adiil rU   )rQ   r  rA   r   rq   rU   rS   test_issue_15947r  k  s)    ;;%
9l#
9*+rU   c                      t        d      } t        ddd      }t         | t              t        |f      j                  |t        hk(  sJ y )NrQ   r  TrH  )r   r   r   rF   r  )rQ   r  s     rS   test_Derivative_free_symbolsr  q  s@    AsD40A!q!f**q!f444rU   c                     t        d      } t        d      }t        d      }t        ||       j                  | d      } |j                         dk(  sJ t        d|       j                  | d      } |j                         dk(  sJ y )NrF   rG   rH   r   ro   )r   r   rY   ru   r   s      rS   test_issue_20683r  w  sw    sAsAsA1aa"A1668q==1aa"A1668q==rU   c                     t        t        dz        t        t        dz        z  } | j                  t        dd      dt        dz  z   t        dz  dz  z   t        dz  dz  z   dt        d	z  z  d
z  z
  t	        t        dz        z   k(  sJ y )NrK   r   r      ry   rz   r&  r&  rY  r  )r#   rF   r'   r`  r.   r   s    rS   test_issue_10503r    sx    AqD	#ad)A88Aq"QTAqDF!2QT!V!;bBhrk!IAaQSeH!TTTTrU   c                      dd} t        d      }t        dt        |      z  t        d|z        z  dz
  |t        j                        }d} | |      |k(  sJ y )Nc                 P    t         t        |       j                  |fi |d      S )NT)	full_prec)r-   r7   r  )r[   r  optionss      rS   NSztest_issue_17382.<locals>.NS  s&    $GAJ$$Q2'2dCCrU   rF   rz   ry   zUnion(ImageSet(Lambda(_n, 6.28318530717959*_n + 5.79812359592087), Integers), ImageSet(Lambda(_n, 6.28318530717959*_n + 0.485061711258717), Integers)))r?  )r   r<   r'   r   Reals)r  rF   r  expecteds       rS   test_issue_17382r    s[    D 	sAAAJQU+a/AGG<DZH d8xrU   c                       G d dt               }  | d      t        j                  u sJ  G d dt               t        t        fd        d       y )Nc                       e Zd Zed        Zy)test_eval_sympified.<locals>.Fc                 ,    |t         j                  u sJ yr   )r   r   r   s     rS   r   z#test_eval_sympified.<locals>.F.eval  s    ::rU   Nr   rq   rU   rS   r  r    s    		 
	rU   r  ry   c                       e Zd Zed        Zy)test_eval_sympified.<locals>.F2c                     |dk(  ryy )Nr   1rq   r   s     rS   r   z$test_eval_sympified.<locals>.F2.eval  s    Av rU   Nr   rq   rU   rS   F2r    s    		 
	rU   r  c                        d      S rt   rq   )r  s   rS   r   z%test_eval_sympified.<locals>.<lambda>  s    A rU   )r   r   r   rA   r8   )r  r  s    @rS   test_eval_sympifiedr    sD    H  Q4155==X  <'qErU   c                  j    t        t              5   G d dt              } d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)&test_eval_classmethod_check.<locals>.Fc                      y rh   rq   )r  rF   s     rS   r   z+test_eval_classmethod_check.<locals>.F.eval  s    rU   N)r   r   r   r   rq   rU   rS   r  r    s    rU   r  )rA   r   r   )r  s    rS   test_eval_classmethod_checkr    s+    			 	 	  s   )2c                  &    t        t        d        y )Nc                  *    t        t        t              S rh   )r   rQ   rD   rq   rU   rS   r   z"test_issue_27163.<locals>.<lambda>  s    jA. rU   r
  rq   rU   rS   test_issue_27163r    s    
9./rU   N)sympy.concrete.summationsr   r  r   r   sympy.core.cacher   sympy.core.containersr   r   sympy.core.exprr	   r
   r  r   r   r   r   r   r   r   sympy.core.numbersr   r   r   r   r   r   r   r   sympy.core.powerr   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   r   $sympy.functions.elementary.complexesr    r!   &sympy.functions.elementary.exponentialr"   r#   (sympy.functions.elementary.miscellaneousr$   $sympy.functions.elementary.piecewiser%   (sympy.functions.elementary.trigonometricr&   r'   r(   'sympy.functions.special.error_functionsr)   rm  r*   r+   sympy.matrices.denser,   sympy.printing.strr-   sympy.series.orderr.   sympy.tensor.indexedr0   r1   r2   r3   r4   r5   sympy.core.parametersr6   sympy.core.sympifyr7   r8   sympy.matricesr9   r:   sympy.sets.setsr;   sympy.solvers.solvesetr<   sympy.tensor.arrayr=   sympy.utilities.iterablesr>   r?   sympy.testing.pytestr@   rA   rB   rC   r  rD   rE   rF   rG   rH   rQ   ri   r  rx  rr  rq  _xi_3rT   r\   rd   rf   rj   rm   rr   rv   r   r   r   r   r   r   r   r  r  r  r  r  r"  r$  r(  r+  r-  r/  r1  r5  r9  rC  rJ  rQ  rU  re  ri  ro  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=  rC  rE  rJ  rO  rT  rX  ra  rg  ri  rl  ro  rs  rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  )r   s   0rS   <module>r     s   ) , ( - +   F F F   $ " 4 4 7 ; 9 : C C : G ' #   (. . - 4 9 % + ( 9 U U # #
'x
(1a(-a11uw1 ue +	/J96**88!%F FR71#1, IV
 4 4
<5+A2@OD"" 	& 	&'D:5,84M

,2.2"<JL4.n.,<-EAP1<B)J 
-"=	!G:
ZCzGG% &,2" > =4
#0$3
1	"'C
,5U

 
00Y, 2s   #I