o
    *Î®cmÊ  ã                   @   s
  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d"\ZdZeZfd#d$ egd%D \ZhZiZjd&d' Zkd(d) Zld*d+ Zmd,d- Znd.d/ Zod0d1 Zpd2d3 Zqd4d5 Zrd6d7 Zsd8d9 Ztd:d; Zud<d= Zvd>d? Zwd@dA ZxdBdC ZydDdE ZzdFdG Z{dHdI Z|dJdK Z}dLdM Z~dNdO ZeZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Ze]ddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z¡dd Z¢dd Z£dd Z€dd Z¥dd ZŠdd Z§d d¡ Zšd¢d£ Z©d€d¥ ZªdŠd§ Z«dšd© Z¬dªd« Z­d¬d­ Z®d®d¯ Z¯d°d± Z°d²d³ Z±dŽdµ Z²d¶d· Z³džd¹ ZŽdºd» ZµdŒdœ Z¶dŸd¿ Z·dÀdÁ ZždÂdÃ Z¹dÄdÅ ZºdÆdÇ Z»dÈdÉ ZŒdÊdË ZœdÌdÍ ZŸdÎdÏ Z¿dÐdÑ ZÀdÒdÓ ZÁdÔdÕ ZÂdÖS )×é    )Ú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©Úclsc                 C   s   g | ]}t  qS © )r   ©Ú.0ÚirJ   rJ   úE/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_function.pyÚ
<listcomp>%   ó    rO   é   c                  C   sÐ   t ddd} t| jddttt|  tt|  ksJ t| jddt| ks,J tt|  jddt| tt|   ksBJ tt	jddttt	ttt	 tttt	 ttt	  ksfJ d S )NrE   T©Úreal©Úcomplex)
r   Úfr   r   r   r    r"   r&   r%   rG   ©rE   rJ   rJ   rN   Útest_f_expand_complex'   s   0,$ÿrX   c                  C   sb   t tt } |  ttt ¡t tksJ t dtt } |  ttt ¡t dt ks/J d S )Néûÿÿÿé   )r#   r!   rD   ÚsubsrE   ©ÚerJ   rJ   rN   Ú	test_bug11   s   &r^   c                  C   s²   t d} | t}| t¡}| t¡}| t¡ t¡}| t¡ t¡}|| tks*J || tks2J |t| ttks=J |dksCJ |tt| tttksQJ |dksWJ d S ©NÚnur   )r   rE   r   rF   )r`   r]   ÚedxÚedyÚedxdxÚedxdyrJ   rJ   rN   Útest_general_function9   s   

re   c                  C   s`   t d} |  }| t¡}| t¡ t¡}||  ksJ ||  ks"J |dks(J |dks.J d S r_   )r   r   rE   )r`   r]   ra   rc   rJ   rJ   rN   Útest_general_function_nullaryH   s   
rf   c                  C   s   t ttt} |  tttt¡| ksJ |  tttt¡ttttks(J |  tttt ¡ttt tks=J |  tt¡ttttksLJ d S ©N)r   ÚgrE   r[   rV   r   rF   r\   rJ   rJ   rN   Útest_derivative_subs_bugT   s
   &*"ri   c                  C   s&   t ttt} |  | t¡tksJ d S rg   )r   rV   rE   r[   rF   )ÚdrJ   rJ   rN   Útest_derivative_subs_self_bug]   s   rk   c                   C   s   t tt tt ttt ksJ t dtt tdt ttt ks&J t dtt tdt ttt ks:J t dtt t tdtt dt t ttt  ksXJ t dtt t t t ¡ dt tt dt t t ttt  ks~J d S )Né   é   )r   rV   rE   rF   r   rJ   rJ   rJ   rN   Útest_derivative_linearityc   s
   $((<Prn   c                   C   s²   t tttttttksJ t ttt ¡ ttttks"J t t tttttttttks6J t tttdttksDJ t ttttftt fttksWJ d S ©Nr   )r   r%   rE   r   ÚdoitrV   rF   rJ   rJ   rJ   rN   Útest_derivative_evaluatek   s
    $(*rq   c                   C   s  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  kr>ttttttdfksAJ  J t tttttdttttttdksWJ dd tttfD ddt t td  gksoJ 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d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ttksÁJ tttttttt t¡ttttttttksÝJ ttd	d
  t	t  ttf¡j
tgksóJ td  d¡tdksJ d S )NrQ   c                 S   s    g | ]}t t tt  |qS rJ   )r   rG   rE   rF   )rL   ÚsymrJ   rJ   rN   rO   z   s     z%test_diff_symbols.<locals>.<listcomp>éÿÿÿÿé   é   F©Úevaluatec                   S   s   t t ttf¡jS rg   )r&   rE   r   rF   Ú	variablesrJ   rJ   rJ   rN   Ú<lambda>   ó    z#test_diff_symbols.<locals>.<lambda>za*x+brE   Úa)r   rV   rE   rF   rG   r   Ú_eval_derivativer@   Ú	TypeErrorr&   Ú_wrt_variablesr6   rJ   rJ   rJ   rN   Útest_diff_symbolst   s"   0R,04ÿÿÿ r   c                      sÊ   G dd dt   jtdksJ   jtdksJ tt fdd G dd dt   jtdks5J  tjtdks@J tt fdd G d	d dt   jtjksYJ  tjtjkscJ d S )
Nc                   @   ó   e Zd Zedd ZdS )útest_Function.<locals>.myfuncc                 S   ó   d S rg   rJ   rH   rJ   rJ   rN   Úeval   ó   ú"test_Function.<locals>.myfunc.evalN©Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   rJ   rJ   rJ   rN   Úmyfunc   ó    r   r   c                      s
    t jS rg   )rE   ÚnargsrJ   ©r   rJ   rN   ry      ó   
 ztest_Function.<locals>.<lambda>c                   @   r   )r   c                 S   r   rg   rJ   ©rI   rE   rJ   rJ   rN   r      r   r   Nr   rJ   rJ   rJ   rN   r      r   rt   c                      s    t tjS rg   )rE   rF   r   rJ   r   rJ   rN   ry      ó    c                   @   r   )r   c                 W   r   rg   rJ   r   rJ   rJ   rN   r      r   r   Nr   rJ   rJ   rJ   rN   r      r   )r   r   r:   r@   r}   rE   r   Ú	Naturals0rJ   rJ   r   rN   Útest_Function   s   r   c                  C   s  t d} | jtjksJ | djtjksJ t d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sDJ tdjtddksPJ t dddjtdks]J t dddjtdksjJ t dddjtddksxJ t dd djtjksJ ttdd  d S )	NrV   rt   ru   ©r   r   ©r   rt   c                   S   s   t dddS )NrV   rJ   r   ©r   rJ   rJ   rJ   rN   ry   ²   r   ztest_nargs.<locals>.<lambda>)	r   r   r   r   r:   r%   r!   r@   Ú
ValueError©rV   rJ   rJ   rN   Ú
test_nargs¥   s    r   c                  C   sz  G dd dt } G dd d| }G dd d|}G dd d|}G d	d
 d
|}G dd d|}G dd d|}G dd d|}G dd d|}G dd d|}	G dd d|	}
| jtdksaJ |jtdksjJ |jtdkssJ |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 d S )Nc                   @   ó   e Zd ZdZdS )z"test_nargs_inheritance.<locals>.f1ru   N©r   r   r   r   rJ   rJ   rJ   rN   Úf1µ   ó    r   c                   @   ó   e Zd ZdS )z"test_nargs_inheritance.<locals>.f2N©r   r   r   rJ   rJ   rJ   rN   Úf2·   ó    r    c                   @   r   )z"test_nargs_inheritance.<locals>.f3Nr   rJ   rJ   rJ   rN   Úf3¹   r¡   r¢   c                   @   r   )z"test_nargs_inheritance.<locals>.f4©rt   ru   Nr   rJ   rJ   rJ   rN   Úf4»   r   r€   c                   @   r   )z"test_nargs_inheritance.<locals>.f5Nr   rJ   rJ   rJ   rN   Úf5œ   r¡   r¥   c                   @   r   )z"test_nargs_inheritance.<locals>.f6Nr   rJ   rJ   rJ   rN   Úf6¿   r¡   rŠ   c                   @   s   e Zd ZdZdS )z"test_nargs_inheritance.<locals>.f7Nr   rJ   rJ   rJ   rN   Úf7Á   r   r§   c                   @   r   )z"test_nargs_inheritance.<locals>.f8Nr   rJ   rJ   rJ   rN   Úf8Ã   r¡   rš   c                   @   r   )z"test_nargs_inheritance.<locals>.f9Nr   rJ   rJ   rJ   rN   Úf9Å   r¡   r©   c                   @   r   )z#test_nargs_inheritance.<locals>.f10rt   Nr   rJ   rJ   rJ   rN   Úf10Ç   r   rª   c                   @   r   )z#test_nargs_inheritance.<locals>.f11Nr   rJ   rJ   rJ   rN   Úf11É   r¡   r«   ru   rt   )r   r   r:   r   r   )r   r    r¢   r€   r¥   rŠ   r§   rš   r©   rª   r«   rJ   rJ   rN   Útest_nargs_inheritanceŽ   s,   r¬   c                  C   sZ   dd } t | dksJ d	dd} t | dksJ t dd d u s#J t tdks+J d S )
Nc                 S   ó   dS ©Nrt   rJ   )rE   rF   rJ   rJ   rN   ry   Ø   ó    ztest_arity.<locals>.<lambda>ru   c                 S   r   rg   rJ   ©rE   rF   rG   rJ   rJ   rN   rV   Ú   ó   ztest_arity.<locals>.f©ru   rQ   c                  W   s   | S rg   rJ   rW   rJ   rJ   rN   ry   Ý   r¯   r£   rg   )r2   r!   r   rJ   rJ   rN   Ú
test_arity×   s   
r³   c                     sR  t ttd } | ddksJ | ttd ksJ | ttd ks#J t dd dks-J tt dds5J t ddt ddksAJ t dtt ttksOJ t ddjtdks[J tt tftd sfJ t ttd t tftd kswJ t ttd t ttd d ksJ t ttftt t ttftt ksJ t ttftt t ttftt ks±J t ttftt tttt ksÃJ t ttftt d	d	d
ksÓJ t ttftt td	td	 ksåJ t ttftt d	td	t ks÷J t ttttttksJ t ttd | ttd ksJ | | ttd ks&J dd dD \}}t ||f|| tttt ksBJ t ttftt jtdksSJ ttttf}t |ttt t  | ttt t  ksqJ t tdt t tdt  }|dt tdt  ksJ | 	¡ dt tdt  	¡  ksJ t tdt t ttfvs¯J t
tdd  t tddtju sÃJ t
tdd  t
tdd  t
tdd  t
tdd  t  t ttgtt t ttftt ksøJ W d    n	1 sw   Y  t ttfftt   ddksJ t ttftftt t   dddks2J t ttftfftt t   ddksIJ t
t fdd t tfttf  ddkscJ  ddkslJ t tffttf t
t fdd  ddksJ tttsJ tttsJ tt tdt  tt tt d S )Nru   é   é   rJ   é*   é+   r   rt   rQ   é   c                 s   s    | ]}t d |V  qdS )rE   Nr.   rK   rJ   rJ   rN   Ú	<genexpr>û   s    ztest_Lambda.<locals>.<genexpr>r£   c                   S   s
   t dtS r®   ©r   rE   rJ   rJ   rJ   rN   ry     r   ztest_Lambda.<locals>.<lambda>c                   S   s   t ttftd S ©Nru   rº   rJ   rJ   rJ   rN   ry   
  rP   c                   S   s   t ttftftS rg   ©r   rE   rF   rJ   rJ   rJ   rN   ry     rP   c                   S   s   t ttftftS rg   ©r   rF   rE   rJ   rJ   rJ   rN   ry     rP   c                   S   s   t tdfdftS ©Nrt   ru   rœ   rJ   rJ   rJ   rN   ry     rP   r²   rZ   é   )r²   rt   c                      s    dddS )Nrt   ru   rQ   rJ   rJ   ©ÚflamrJ   rN   ry     r   ©rt   rt   ©rt   )rÃ   rÃ   c                      ó    dS r®   rJ   rJ   rÀ   rJ   rN   ry     ó    )r   rE   rF   r	   rV   r   r:   rG   rC   Úas_dummyr@   r3   r   ÚOnerA   r4   Ú
issubclassr}   Úhash)r]   Úx1Úx2ÚpÚeqrJ   rÀ   rN   Útest_Lambdaá   sp   "$(($ $$ $&"0$ ,ÿrÎ   c                   C   s^   t ttt tt  u rtju sJ  J t tdt tjus!J t ttfttjus-J d S r»   )r   rE   rF   r   ÚIdentityFunctionrJ   rJ   rJ   rN   Útest_IdentityFunction*  s   *rÐ   c                   C   sj   t tdt jt ksJ t ttt jthksJ t ddjt ks%J t dtt jtthks3J d S )Nru   rJ   r¶   )r   rE   Úfree_symbolsÚsetrF   rJ   rJ   rJ   rN   Útest_Lambda_symbols0  s    rÓ   c                   C   s   t jt ksJ d S rg   )rV   rÑ   rÒ   rJ   rJ   rJ   rN   Útest_functionclas_symbols7  ó   rÔ   c                   C   s.   t tdd  t tdd  t tdd  d S )Nc                   S   s   t tdt ttS r»   rŒ   rJ   rJ   rJ   rN   ry   <  rz   z'test_Lambda_arguments.<locals>.<lambda>c                   S   s   t ttftt tS rg   rŒ   rJ   rJ   rJ   rN   ry   =  ó    c                   S   s   t ddtS )NrJ   r¶   rº   rJ   rJ   rJ   rN   ry   >  ó    )r@   r}   rJ   rJ   rJ   rN   Útest_Lambda_arguments;  ó   rØ   c                   C   s   t ttfdt t ttfdt ksJ t tdt t ttfdt ks&J t tdt dt ks3J t tdt t tdt ksCJ d S r»   rŒ   rJ   rJ   rJ   rN   Útest_Lambda_equalityA  s   ($$	rÚ   c                  C   s,	  t dddtju sJ t tttt ttdksJ t ttd tt¡ t¡s(J t tt	ttdftt 
¡ t	t tt¡ksAJ t ttd t¡sLJ t ttdjrUJ t t tt tdtdt tt ttfdksmJ 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 td¡t ttdksJ t ttd td¡t dtdks®J t t	ttd 
¡ t	dksŸJ t t	td td d 
¡ 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ksîJ t ttd tt¡ 
¡ dksþJ t t	tttttfdt t	ttt tttfd	ksJ t t	ttttfd
 
¡ t	ddks0J t t t	tttdtd 
¡ t	ddksGJ ttdd  ttdd  tt t	ttttfd
jdkshJ 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 ttfd
t t	tt ttf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d td¡ 
¡ t	dksóJ t t	ttt td¡t t	ttdks
J t tt	t tt td¡t dt	t tdks%J dt t	ttd  t t	ttdt¡dt ks@J t t	ttdjt ksOJ t t	ttttjtthks`J t t	t t¡td 
¡ s{J t t	t t¡tdt dt	t t¡ td 
¡ sJ dt t	t t¡td t tt	tt t¡ ttfd 
¡ dt tt	tdttd ksœJ t td t	t td t¡dt t	d ks×J t td t	t tt} |  t¡|  
¡  t¡  kr	td tt	tt dt t	t  ksJ  J t t	ttdt t	ttd dt t	ttd ks)J t tt	t td}t tt	t td}|| d| ksHJ | ¡ | ¡ ksSJ t tt	td  td||fvsfJ 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 ksJ t t	ttt t ttfdtd f d¡t t	ttt t ttfdtd f d¡  kràttd d¡t	d  ksãJ  J t	t t¡ td¡ tt¡t	t t¡ td¡ks J tt	t t¡ td¡  tt¡tt	t t¡ td¡ ks!J t tttd ttttttt 
¡ dtt ks@J t tttd tttttttj
dddtttt ksdJ 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 ksJ d S )Nrt   rJ   ru   r   )ru   rt   ©r   )r   rt   rt   ©r   r   rt   )r   rt   r   r   c                   S   s   t tttttfdS ©NrÜ   ©r
   rV   rE   rF   rJ   rJ   rJ   rN   ry   i  rÖ   ztest_Subs.<locals>.<lambda>c                   S   s   t ttttttfdS rÝ   rÞ   rJ   rJ   rJ   rN   ry   j  s    )rt   r   rÂ   )r   ru   rQ   z1/2F©Údeep)r
   r   rÇ   rE   rF   rG   r[   Úhasr   rV   rp   r   rÑ   r@   r   Úlenrx   Úpointr   rÒ   Ú__hash__rh   r&   r   ÚnÚevalfr   r"   )r]   Úe1Úe2rJ   rJ   rN   Ú	test_SubsQ  s    20$$ (ÿ 
ÿ*.&(&266*.66"6>"
ÿ4R:&6&ÿ,,
ÿþ:B&
ÿ&ÿ
ÿÿÿÿÿÿré   c                  C   s2   t ttttttt ¡ } | |  ¡ ksJ d S rg   )r   rV   rE   rh   rp   )ÚdonerJ   rJ   rN   Útest_doitdoit  s   rë   c                   C   s,   t tttd t ¡ tttksJ d S r»   )r
   rV   rE   rp   r#   rJ   rJ   rJ   rN   Ú
test_Subs2¡  ó   ,rì   c                   C   s   t tt tt ksJ t tt ddttt ttt  tt tt ks*J t tt d ddtd td  ks>J d S )NTrT   é   )Úmodulus)r   rE   rF   r   r   r    rJ   rJ   rJ   rN   Útest_expand_function§  s   <,rð   c                   C   sš   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 s1J ttjdu s:J t tddjdu sFJ ttddjdu sRJ d S )NFz0.1Trt   rQ   )r%   rE   Úis_comparabler&   r   r   r   rJ   rJ   rJ   rN   Útest_function_comparable­  s   rò   c                   C   sN   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 d S )NF)r%   r   rñ   r   r   rJ   rJ   rJ   rN   Ú#test_function_comparable_infinities»  s   ró   c                   C   sD  t dt  t¡dttt tttdt  ksJ t td  t¡dt td  t t t¡ ks4J t dt d  t¡dt dt d  ttt tttdt  ksXJ t dt  t¡ttt ttttd kspJ t ddt   t¡dttt tttdt d  ksJ t dtt  t¡dtt ttt tttdtt  ks°J t ttt  t¡ttt ttt tttttt tttttt  ksØJ t ttd  t¡dt ttt tttttd  ttt ttd ttt ksJ t tt	t t	t¡tt tt	tt	tks J d S )Nru   rQ   r¿   )
rV   rE   r   r
   r   r%   r&   rG   rF   rh   rJ   rJ   rJ   rN   Útest_deriv1Â  s.   44(ÿ0ÿ ÿÿÿ"ÿ
ÿ:rô   c                   C   sÌ   t d  t ¡dt d  ksJ t d jt dddt d  ks J t d jt ddtt d t ks2J tt d t dt d  ksAJ tt d t dddt d  ksRJ tt d t ddtt d t ksdJ d S )NrQ   ru   Frv   )rE   r   r   rJ   rJ   rJ   rN   Útest_deriv2Û  s   "$"(rõ   c                   C   sà   t t t¡tt ttksJ t tt tt¡t tt tt¡ 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sVJ tt tttttt tttt  ¡ dksnJ d S ©Nr   rt   )rV   rE   r   r   rF   Úargsrp   rJ   rJ   rJ   rN   Útest_func_derivå  s
    ,004rø   c                  C   s8   t ddd} | dksJ | jt u sJ | jdksJ d S )Nr   Frv   rÛ   )r%   Úfuncr÷   ©r{   rJ   rJ   rN   Útest_suppressed_evaluationî  s   rû   c                  C   s,  dd } | t d d¡tddsJ | t d d¡td	dd
s#J | t dt  d¡tdtdt  ds:J | tdt  d¡tdtdt  dsQJ | tddt   d¡tdtdt  dsjJ | tttdt   d¡tdtdt  dsJ | td d¡tddsJ d S )Nc                 S   s   t | | |k S rg   )Úabs)r{   ÚbÚepsrJ   rJ   rN   rÍ   ö  s   ztest_function_evalf.<locals>.eqrt   é   z0.841470984807897gvIhÂ%<=ru   é   z0.9092974268256816953960199gQ²@³-(;z1.29845758141598z0.634963914784736z1.46869393991588z2.28735528717884239g      à¿g      ø?z0.0429042815937374z0.605011292285002z1.23699044022052z0.422985442737893éd   z0.86231887228768)	r%   ræ   r   r   r"   r!   r   r#   r&   ©rÍ   rJ   rJ   rN   Útest_function_evalfõ  s<   ÿÿÿÿ
ÿÿÿ
ÿÿÿÿ"r  c                  C   s$   G dd dt } | ddksJ d S )Nc                   @   r   )z'test_extensibility_eval.<locals>.MyFuncc                 W   r­   )N©r   r   r   rJ   )rI   r÷   rJ   rJ   rN   r     r   z,test_extensibility_eval.<locals>.MyFunc.evalNr   rJ   rJ   rJ   rN   ÚMyFunc  r   r  r   r  r   )r  rJ   rJ   rN   Útest_extensibility_eval  s   r  c                  C   s    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du s3J t| jdu s<J t| jdu sEJ t| jdu sNJ d S )NrE   F©Úcommutative©r   rV   Úis_commutativer%   r"   r!   Ú
is_complexrW   rJ   rJ   rN   Útest_function_non_commutative  s   r  c                  C   sÀ   t ddd} t d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 s1J t| jd u s:J t| jdu sCJ t| jdu sLJ t| jd u sUJ t|jdu s^J d S )NrE   TrT   F)rU   Úzeror	  )rE   ÚxzfrJ   rJ   rN   Útest_function_complex  s   r  c                  C   sò  t d} tt tdd ¡tttd  ksJ ttd  tdd ¡ttd td ttd  ks4J ttdt   tdd ¡tt ttd  ksMJ tdtd   tdd ¡tdttd  ttd  kslJ t	| td  tdd ¡t	| dt	| d dt  ttd  ksJ t
tdd  tdt  tdd ¡tdtt tdttdd   d  ttd  ksŸJ tdt  tdd ¡tdtt  tdt tdd   d  ttd  kséJ tdt  tdd ¡ttd ttt  dt  tdt ksJ ttdt jtdtd	tt ks"J ttddt  td
d ¡ddtt tt   dt  td  td d  td d  dt ttdd   tt  d  dt ttd
d   tt  d
  dt ttdd   tt  d  ttd
  ksJ ttt tdd ¡ttttdd d  ttd
d d  ttd  ksœJ tttjtdd}dd | t ¡D h d£ksØJ t d}t|tjtdd}dd | t ¡D h d£ks÷J d S )Nrå   ru   rt   c                   S   s   t dt  tdd ¡S rŸ   )r%   rE   Ú_eval_nseriesrJ   rJ   rJ   rN   ry   2  rÖ   z-test_function__eval_nseries.<locals>.<lambda>rQ   é   r   )rå   ÚlogxrZ   rŽ   rm   é   r¿   éx   )rå   c                 S   ó   h | ]}|j qS rJ   ©ÚnamerK   rJ   rJ   rN   Ú	<setcomp>B  rP   z.test_function__eval_nseries.<locals>.<setcomp>>   rE   rF   Úxir  c                 S   r  rJ   r  rK   rJ   rJ   rN   r  E  rP   >   rF   r  Úxi0)r   r%   rE   r  r-   r&   r   r'   r#   r*   r@   r0   r   r)   r!   ÚnseriesrF   r(   r   r   rV   ÚseriesÚatoms)rå   Ús1r  Ús2rJ   rJ   rN   Útest_function__eval_nseries)  s@   &:2>&ÿRV(
ÿ,f$ÿ$ÿ
ÿ
ÿ6
ÿ"&r   c                  C   sf   t ddd} td|  t | ddf}t|t}| ¡ dksJ |jdd	td|  | ddfks1J d S )
Nrå   T©Úintegerru   rt   rQ   r  Frß   )r   r   rE   r   rp   )rå   rV   rj   rJ   rJ   rN   Ú	test_doitG  s
   
(r#  c                  C   s    ddl m}  ttdtksJ ttttd tksJ ttttd tks,J ttdtks6J t| ddtksAJ tttddtksNJ d S )Nr   ©r*   g      @ç      ð?rŽ   g       @rt   )	Ú'sympy.functions.special.gamma_functionsr*   Útyper%   r   r    r   r   r   r$  rJ   rJ   rN   Útest_evalf_defaultO  s   r(  c                     sx   t ttdtjg} dd }t d td   t| D ] }t|t|D ]|r. j  q"tt	 fdd q"qd S )Nru   c                    sz    sdS  d j du rdS  fddtt D } fddtt D }t fdd|D o<t fdd|D S )	z-Return True if the input args for diff are okFr   c                    s   g | ]	} | j r|qS rJ   ©Ú	is_SymbolrK   rú   rJ   rN   rO   b  ó    z/test_issue_5399.<locals>.ok.<locals>.<listcomp>c                    s   g | ]	} | j s|qS rJ   r)  rK   rú   rJ   rN   rO   c  r+  c                 3   s<    | ]}|d  t  k r |d   jp |d   jV  qdS ©rt   N)râ   r*  Ú
is_IntegerrK   rú   rJ   rN   r¹   f  s    &ÿz.test_issue_5399.<locals>.ok.<locals>.<genexpr>c                 3   s.    | ]}|d  t  k r |d   jV  qdS r,  )râ   r*  rK   rú   rJ   rN   r¹   h  s    ÿ)r*  Úrangerâ   Úall)r{   Ús_atÚn_atrJ   rú   rN   Úok\  s   ÿÿþztest_issue_5399.<locals>.oké
   rl   c                      s
    j  S rg   )r   rJ   ©rÍ   ÚvrJ   rN   ry   p  r   z!test_issue_5399.<locals>.<lambda>)
rE   rF   r   ÚHalfr=   r>   râ   r   r@   r   )r÷   r2  r{   rJ   r4  rN   Útest_issue_5399Y  s   üÿr7  c                  C   s4   t  ¡ } tttt t  | ¡t|  dk sJ d S )NgVç¯Ò<)rE   Ú_randomrü   r   r%   Údoit_numericallyr&   )Úz0rJ   rJ   rN   Útest_derivative_numericallys  s   ,r;  c                     sV   ddl m  G  fdddtt} |  t¡t| tks J ttfdd d S )Nr   ©ÚArgumentIndexErrorc                       s   e Zd ZdZ fddZdS )z/test_fdiff_argument_index_error.<locals>.myfuncrt   c                    s    rg   rJ   )ÚselfÚidxr<  rJ   rN   Úfdiff~  r±   z5test_fdiff_argument_index_error.<locals>.myfunc.fdiffN)r   r   r   r   r@  rJ   r<  rJ   rN   r   {  s    r   c                      s
    t t S rg   rW   rJ   r   rJ   rN   ry     r   z1test_fdiff_argument_index_error.<locals>.<lambda>)Úsympy.core.functionr=  r   rE   r   r   r@   r}   )ÚmfrJ   )r=  r   rN   Útest_fdiff_argument_index_errorx  s
   rC  c                  C   s.  t t} t| t}t|t}tt}t|t}t| t|ks J td|  d td| ks/J td|  d | td| | ksBJ td|  d ||   td| | |  ||  ks]J td|  d ||   | d| kspJ td| d  d|   | |  td| | |  ||  d|  |  ksJ td| d  d|  | |  td| | |  ||  d|  |  ksºJ td| d  d|  | |  |dksÏJ td| d  d|  | |  |dksäJ tt| t|t|  ksóJ tt| t|t|  ksJ tt| t|dt|   ksJ d S )Nru   rŽ   rQ   rl   r   )rV   rC   r   rh   r%   r&   r"   r#   )rE   ÚxdÚxddrF   ÚydrJ   rJ   rN   Útest_deriv_wrt_function  s*   


&6&6

ÿ6

ÿ** (rG  c                   C   sd   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 tjdu s0J d S )NFTru   )r   Ú	_diff_wrtrE   rV   r   rJ   rJ   rJ   rN   Útest_diff_wrt_value  s
   rI  c                  C   sN  t t} tt tt}tt ttt}tt| | d  | t| d|   ks(J tt||d  |t|d|  ks=J tt||d  |t|d|  ksRJ t| d |dks]J t| d |dkshJ t|d | dkssJ t|d |dks~J t|d |dksJ t| | | | || ksJ t| | | || | ks§J t| | | || | ks¶J tt tt t t¡dksÆJ tt tttt tt  t t¡tt tksâJ tt| | ttt| t| ksôJ 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ttt ks6J 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ttt  ksoJ 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ks¥J d S ©Nru   r   )
rV   rE   r   r%   r&   rh   r   ÚhrF   r
   )ÚfxÚdfxÚddfxrJ   rJ   rN   Útest_diff_wrt€  sD   *** 8$"
ÿ(
ÿ((ÿ
ÿÿ&
ÿ6rO  c                   C   sB   t tt t¡ tttdt ¡ ¡ t dt  t¡ksJ d S r»   )rV   rh   rE   r   r[   r   rp   rJ   rJ   rJ   rN   Útest_diff_wrt_func_subsÉ  s   BrP  c            	      C   s$  t ttt } td}td}t| t | t¡tttks J t| t tt¡ ¡ t| t ¡  tt¡ks8J ttttt tt¡t	tttttttksRJ ttttt tt¡t	tttttttkslJ ttt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t
ttks®J tt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ttttttt
tt ¡ ksJ 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ks5J t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ftt ¡t	ttt ttdt ksJ 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 ksŒJ t|tt|tt t¡ t¡ t¡tsÔJ tttftdt dt  }ttttt td¡}|t|tt td¡}| t|¡ ¡ |  ¡ dksJ ttt t¡ td¡ ¡ v sJ tttttttt tt
t¡t	tttttttttt
tksEJ ttttt td¡t	ttttttdks`J tttt
tttf tt¡tttt
tttfksJ tt t¡}| |d¡tju sJ | |¡tju sJ tttttt}tttttt}| ttttttd¡tju sÂJ | |¡tju sÍJ tttttdtd |t
tt¡tt
tttdtdksíJ ttttt t ttt ¡t	ttttt tttt ksJ d S )NÚur5  ru   rQ   r   rt   )r%   rE   r"   rF   r   r   r[   rp   rV   r
   rh   rK  rG   r   r&   Ú
isinstancer   r   Úsimplifyr  r   rÇ   )	ÚexprrQ  r5  ÚFÚabstractÚconcreteÚdfÚdxyÚdyxrJ   rJ   rN   Útest_subs_in_derivativeÍ  sv    ÿ44D@@,0
ÿ.:*
ÿÿÿ
ÿ860"$""
ÿ
ÿ
ÿ&
ÿ
ÿ ÿr[  c                
      s   t ttttd tt dt tt tttttttfD ] tt fdd qtt	tt tt dt	tt ks?J d S )Nru   rt   c                      ó   t tt S rg   ©r   rV   rE   rJ   ©ÚwrtrJ   rN   ry   	  r×   z+test_diff_wrt_not_allowed.<locals>.<lambda>r   )
r&   rE   r    rF   r   rV   r@   r   r   r"   rJ   rJ   r^  rN   Útest_diff_wrt_not_allowed  s
   þ,r`  c                  C   s2   G dd d} t t t|  ¡t t ksJ d S )Nc                   @   ó   e Zd Zdd ZdS )z"test_diff_wrt_intlike.<locals>.Twoc                 S   r­   r»   rJ   )r>  rJ   rJ   rN   Ú__int__  r±   z*test_diff_wrt_intlike.<locals>.Two.__int__N)r   r   r   rb  rJ   rJ   rJ   rN   ÚTwo  ó    rc  )r&   rE   r   )rc  rJ   rJ   rN   Útest_diff_wrt_intlike  s   $re  c                  C   s²   t d} ttt}t|td t|td  | d |d    d }tt||t|t|tt t|t|tt d}tt|ttt|tt | d |  d}||ksWJ d S )NÚmru   r   )r   rV   rE   rC   r   r   )rf  ÚphiÚLÚeqnaÚeqnbrJ   rJ   rN   Útest_klein_gordon_lagrangian  s   
2.ÿ*rk  c                  C   sú   t d} t d}tt}| t|td  d ||d  d  }tt||t|t|tt}t| | | t|tt }||ksBJ t||tt|t|ksPJ t|t|tt| t|td kscJ t|tt|t| | | t|td  ks{J d S )Nrf  Úkru   )r   rV   rC   r   r   )rf  rl  rE   rh  ri  rj  rJ   rJ   rN   Útest_sho_lagrangian!  s   &&4rm  c                  C   sZ   t t} |  t¡}td|d  }t|| dksJ t|||td|d   ks+J d S )Nrt   ru   r   )rV   rE   r   r#   )rU  ÚFdrh  rJ   rJ   rN   Útest_straight_line0  s
   
&ro  c            	         sž  t j dd fdd
} tdD ]b}| tt|dttgks J | ttt|dtttgks1J | tttt|dttttgksFJ | tttt|dttttgks[J | ttttt|dtttttgksrJ tt t¡}| |t|dt|gksJ tt t¡}| |||d||gksJ | t¡}| |||d||gks¬J | tttt|dttttgksÁJ | tttt|dttttgksÖJ | ttt	tt|dttttt	gksíJ |rý| |t|dt|gksJ |tgsJ |r| ttt|dtttgks"J tttgs"J |r?| ttttt|dtttttgksLJ tttttgsLJ |rg| ttt	tt|dttttt	gkssJ ttt	ttgssJ q 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	 fgks¢J  tdftdt fgtdt 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s6J  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sBJ  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syJ  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 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 t¡} |df|dfg|df|dfgks@J | t¡} |df|dfg|df|dfgksZJ d S )
NF)Úreversec                    s(   dd  dd | rt |n|D D S )Nc                 S   s   g | ]}|d  qS rÛ   rJ   rK   rJ   rJ   rN   rO   ;  rz   z6test_sort_variable.<locals>.vsort0.<locals>.<listcomp>c                 S   s   g | ]}|d fqS rÛ   rJ   rK   rJ   rJ   rN   rO   ;  rz   )Úreversed)rp  r5  ©ÚvsortrJ   rN   Úvsort0:  s   ÿz"test_sort_variable.<locals>.vsort0ru   rt   rQ   rŽ   r   )r   Ú_sort_variable_countr.  rF   rE   rV   rh   r   r   rG   r   r   rK  rR  )	rt  ÚRrL  ÚfyÚfxxrM  r>  ÚdfyÚd2fxrJ   rr  rN   Útest_sort_variable8  sÒ   "**.
**
ÿÿÿÿÿÿ
ÿÿÿÿÿÿÿ"(26$ÿ(
ÿ&
ÿ
ÿ,ÿ(ÿÿ
ÿ(
ÿ(
ÿ("ÿÿ
ÿ6*86$ÿ0$ÿ,ÿ&ÿ
ÿ*
.r{  c                   C   s:   t tt ttttt¡tt tttdftdfksJ d S )Nru   rQ   )rV   rE   rF   r   r   rJ   rJ   rJ   rN   Útest_multiple_derivative  s   ÿr|  c                  C   sÆ   G d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s4J ttt tttf¡tttttttfksLJ ttt ttdf¡tttttksaJ d S )Nc                   @   ra  )ztest_unhandled.<locals>.MyExprc                 S   s   |j  d¡s| S d S )Nr  )r  Ú
startswith)r>  ÚsrJ   rJ   rN   r|     s   z/test_unhandled.<locals>.MyExpr._eval_derivativeN)r   r   r   r|   rJ   rJ   rJ   rN   ÚMyExpr  rd  r  r   )r   rV   rE   rF   rG   r   r   )r  rÍ   rJ   rJ   rN   Útest_unhandled  s   &"0.r  c                  C   s  ddl m}  ddlm} td}|tdd d|tjd   d  }| t||tdd d|tjd    s9J | t|dd	|d d|d
   sLJ |tdd d||d   d  }| t||tdd d||d    ssJ d}t	|d}| t||sJ | t|| || sJ | t|| dd	|| sJ tt
|td t
|ttd ksµJ td}tdd t| |d¡D rÊJ tdtd d dksØJ t
d|d  t ||d d|d   d d }tt|ddddksþJ ttfD ]*}|tjtji}t|}	t|	|sJ | t|	 ¡  ¡ tjt	dfs+J qttfD ]-}|tjtji}t|dd}	t|	|sIJ | t|	 ¡  ¡ t	dt	dfs]J q1tjg}t|}	t|	tu spJ | |	d t	ds|J | tt|tjjt	dsJ | ttdtdsJ | tttjd t	ds¬J ttdt d d t dtjksÁJ ttj|igddt	d|igksÕJ tddgddgg}
tt	dddt	d ddgt	d!ddt	d"ddgg}| t|
|sJ tddgddgg}
tt	dddt	d ddgt	d!ddt	d"ddgg}| t|
|s1J t d#}t|d !t	¡rAJ d S )$Nr   )r   )ÚrootofrE   rŽ   rQ   gUUUUUUõ?T)ÚexponentgUUUUUUÕ?l   Ò
>V3&¥Z
 rÿ   ru   z/x*lamda + lamda**3*(x/2 + 1/2) + lamda**2 + 1/4c                 s   s    | ]}|j V  qd S rg   )rÑ   )rL   r{   rJ   rJ   rN   r¹   ©  s    ztest_nfloat.<locals>.<genexpr>gnÀÊÁ¿i`yþÿl   y* l   rT g!ÀÙß|Û=rZ   rt   F)r  rå   z-0.7*cos(3.0*x**4 + y)g      à?)Údkeysz1.0é5   )Ú	precisionz2.0z3.0z4.0rV   )"Úsympy.core.basicr   Úsympy.polys.rootoftoolsr  r   r   r   rÇ   r   r   r&   r#   Úanyr;   r[   rF   ÚstrÚdictr   r6  rR  ÚlistÚitemsÚpopr'  r   Úrhsr   r   Úfalser8   r9   r   r  )r   r  rE   rÍ   ÚbigÚ	Float_bigrV   Útirj   rå   ÚAÚBrJ   rJ   rN   Útest_nfloat  sp   $.&",
,"ÿ2*,""*(ÿÿÿÿr  c                  C   s   ddl m} m} td}td}td}|| ||  }|| ||  }| |¡}| |¡}||ks4J t|| | |}	t|| | |}
|	|
ksJJ d S )Nr   )r{   rý   rV   rF   )Ú	sympy.abcr{   rý   r   r   r   r
   )r{   rý   rV   Úy1Úy2Úfunc1Úfunc2Úfunc1_yÚfunc2_yÚz1Úz2rJ   rJ   rN   Útest_issue_7068Ú  s   

r  c               
   C   s<  ddl m}  tt t| ¡}t| |  t tttttt|   |  t d ttttttt|  d  |  t d tttttttt|  d  |  t d ttttttttt|  d  |  t d tttttttttt|  d	  t|  t d t| f }||ksJ tt t| ¡}||ksJ d S )
Nr   rú   ru   rQ   r¿   rŽ   é   rZ   r  )	r  r{   rV   rE   r  r
   r   rF   r-   )r{   Úans1ÚresÚans2rJ   rJ   rN   Útest_issue_7231é  s8   &(ÿÿÿþ ÿÿü"ÿÿúùr€  c                  C   s   ddl m}  ddlm} | d|}| d|}| |¡}t|t|s&J t  | d|}t|t|s8J || |¡ksAJ d S )Nr   r   rW   rV   )rA  r   r  rE   ÚmatchesrR  r'  r   )r   rE   rV   ÚffÚmatch_with_cacherJ   rJ   rN   Útest_issue_7687ù  s   
rš  c                  C   sL   ddl m} m} | d}t  G dd d|}|d}t|t|s$J d S )Nr   )r   ÚUndefinedFunctionrV   c                   @   r   )ztest_issue_7688.<locals>.ANr   rJ   rJ   rJ   rN   r    r¡   r  )rA  r   r©  r   rR  r'  )r   r©  rV   r  r{   rJ   rJ   rN   Útest_issue_7688  s   rª  c                  C   s^   ddl m}  td d u sJ tdtju sJ t| | d d  | | d d   ¡ ks-J d S )Nr   rW   rt   ru   )r  rE   r1   r   rÇ   r   rW   rJ   rJ   rN   Útest_mexpand  s   0r«  c                  C   sH   d} dd }t dd t| D }dd l}| ||¡}t|ts"J d S )Né(   c                 S   s   ddt | |   S r®   )r"   )rD   ÚthetarJ   rJ   rN   rh     rÕ   ztest_issue_8469.<locals>.gc                 S   s   g | ]}d | qS )zw%irJ   rK   rJ   rJ   rN   rO     rz   z#test_issue_8469.<locals>.<listcomp>r   )r   r.  Ú	functoolsÚreducerR  r   )ÚNrh   Úwsr®  rT  rJ   rJ   rN   Útest_issue_8469  s   r²  c                   C   s,   t tttjddt tttksJ d S )NT)Úfoo)r   r   rE   rp   rJ   rJ   rJ   rN   Útest_issue_12996$  rí   rŽ  c                   C   s&   t tddt  d d tsJ d S )Nr%  i'  rt   )rR  r%   r   rJ   rJ   rJ   rN   Útest_should_evalf*  s   &rµ  c                  C   sv	  t ddd\} }t|  | ¡}| | d | d | | d | d g¡tjd t| d t| d   tddt| d t| d      ¡ dksIJ | ¡ t| tj t| tj    ¡ dksaJ | |¡t| |td  t| |td   |   ¡ dksJ | | d|  | | | | | d|  g¡td	d
|  t| | t| |   tjd|  t| d|  t| d|       ¡ dksÈJ | g d¢d¡tddtd dtd  tdd    ¡ dksëJ | | | | g| ¡t| | t|  |   ¡ dksJ | | | | | | g| | ¡td d|  t| |  d| t|   tjd|  t| |     ¡ dksBJ | | | | | | d|  | d|  | d|  g¡dd|  td d t| |  tdd t| |   tddt| d|    tddt| d|    tjd t| d|       ¡ dks©J t|  | d¡}| | | | | | g¡|d t| | t| |  dt|      ¡ dksÚJ | | d|  | | | | | | d|  g¡|d tddt| d|  t| d|    tddt| | t| |    tddt|      ¡ dks*J | | d|  | | | | | d|  g¡d| d tjt| d|  t| d|    tjt| | t| |       ¡ dksnJ | | | | | d|  | d|  g¡|d dt|  dt| |   dt| d|    t| d|      ¡ dks¬J | | | | | | d|  | d|  g¡d| d tddt| |  tddt| |   tddt| d|    tjt| d|       ¡ dksüJ t|  | d¡}| ¡ t| tdd  dt| tj   dt| tj   t| tdd    ¡ dks4J | | d|  | d|  | | | | | | d|  | d|  g¡|d tjd t| d|  t| d|    t| d|   t| d|   tddt| | t| |       ¡ dksJ | | d|  | | | | | d|  g¡d| d t| d|  t| d|   dt| | t| |       ¡ dksÕJ | | | | | d|  | d|  g¡|d t| d|  t|  dt| | t| d|        ¡ dksJ | | | | | | d|  | d|  g¡d| d t| d|  t| |  dt| | t| d|        ¡ dksOJ t	ddd}t| | | |¡}t
t| tj ||t
t| tj || }|j| d|  ¡ dksJ tj}| | | | || || f\}	}
}}t|	|t|
| t|
| t|	| }| ¡ |  ¡ dks¹J d S )Nzx hTrR   ru   rt   r  rQ   r   é	   rµ   é0   )r   rt   ru   éýÿÿÿrZ   rm   rî   é   r   rl   éþÿÿÿrs   rŽ   é   rF   r^  )r   rV   r   Úas_finite_differencer   rÇ   r   rS  r6  r   r   )rE   rK  ÚdfdxÚd2fdx2Úd3fdx3rF   Úd2fdxdyÚref0ÚhalfÚxmÚxpÚymÚypÚref2rJ   rJ   rN   Ú$test_Derivative_as_finite_difference/  s  "Bÿÿÿÿ*ÿÿ(&,ÿÿþ(ÿÿÿ
ÿ,ÿÿ
þ2:ÿÿþÿ
ý*ÿ
ÿ*. ÿÿÿ
þ(.ÿÿ
þ$ ÿÿÿ
þ(Nÿÿ
þ$ÿÿÿ
þ8ÿ>ÿ ÿþ
ý((ÿÿ
þ$>ÿ
ÿ($ÿÿ
þ,$(rÈ  c                  C   s¢   t d t} | |  }| | |¡} || ksJ W d    n1 s!w   Y  t d t} | |  }| | |¡}|td ks?J W d    d S 1 sJw   Y  d S )NFTrŽ   )r5   r   r[   )Úexpr1Úexpr0Úexpr2rJ   rJ   rN   Útest_issue_11159  s   
ü
"ürÌ  c                  C   sr  t tttttt} |  t¡tttttksJ t ttttttd d }| t¡dt t tttttttd d  ksDJ t ttttd  t tttd }| t¡dt ksbJ t tttt tttd }| t¡tju s{J t ttttttfttf}| t¡tttttksJ tt	t t	tt	t¡ttt	tt	tt	tks·J d S )Nru   rt   rŽ   )
r
   r   rV   rE   r   rF   r   ÚZerorG   rh   )rç   rè   Úe3Úe4Úe5rJ   rJ   rN   Útest_issue_12005  s   6&@rÑ  c                  C   sÈ   t d} td}t ddd\}}tt|| | |f| |ft|| | || fks+J tt|| | |d f| |d ft|| | || d fksLJ t|| | |f ¡ t|| | |fksbJ d S )	NrE   rV   zm nTr!  rZ   rQ   rl   )r   r   r   rp   )rE   rV   rf  rå   rJ   rJ   rN   Útest_issue_13843š  s   6B0rÒ  c                  C   s   t d\} }t dddd}t dddd}t|| |ft|t|dfdks'J t|| |d	 ftju s5J t|| |ftju sAJ d S )
Nzx, yrå   T)r"  Únonnegativerf  ©r"  Úpositiver   )r   Trt   )r   r   r$   r   r   rÍ  )rE   rF   rå   rf  rJ   rJ   rN   Útest_order_could_be_zero²  s   &rÖ  c                  C   sl   t d} t d}t d}t ddd}| |ksJ t| t|ks"J | | ks(J | |ks.J | |ks4J d S )NrV   rh   T©Úis_real)r   rÉ   )rV   r    rh   Úf_realrJ   rJ   rN   Útest_undefined_function_eq»  s   rÚ  c                  C   sÆ   t d} td}tddd}tddd}tt ddd}||ks"J ||ks(J || || ks2J || jd u s;J || jdu sDJ || jdu rP|jdksRJ tddd}|| jdu saJ d S )NrE   rV   TrR   rt   r×  )r   r   rØ  r  )rE   rV   rÙ  Úf_real1Úf_real_inheritÚf_real2rJ   rJ   rN   Útest_function_assumptionsË  s   rÞ  c                  C   sd   t d} | djrJ t d} | djrJ | t ¡ jrJ td}| |j|didjr0J d S )NÚceilg333333Ó?r%   rE   g333333ó?)r[   )r   Ú	is_numberr   ræ   r   )rV   rE   rJ   rJ   rN   Útest_undef_fcn_float_issue_6938á  s   rá  c                  C   s|   d	dd} t dd }t dd }td| ||d}|t}t||ks%J tt|jjdks1J | t¡ttks<J d S )
Nrt   c                 S   s   t | j|d  S r®   )r&   r÷   )r>  ÚargindexrJ   rJ   rN   ry   ô  rP   z.test_undefined_function_eval.<locals>.<lambda>c                 S   r   rg   rJ   ©rI   rC   rJ   rJ   rN   ry   õ  r¯   c                 S   s   t |S rg   )r%   rã  rJ   rJ   rN   ry   ö  rÅ   Útemp)r@  r   Ú_imp_z<lambda>rÃ   )	r   r   rC   r6   r'  r@  r   r   r&   )r@  r   rå  rä  rT  rJ   rJ   rN   Útest_undefined_function_evalë  s   
	ræ  c                  C   sx  t t} |  t¡}| t|   t|¡dksJ | t|   |t¡dks%J t|  t| |    | t¡t| t¡ | d ks@J t|  t| |    t| ¡t| t¡ | d ks[J t t}t |}| |¡}|||   ||¡dksvJ |||   ||¡dksJ || || |   ||¡|| |¡ | d ksJ || || |   ||¡|| |¡ | d ksºJ d S )Nru   rt   ©rV   rE   r   )rU  ÚFxrF   ÚGÚGyrJ   rJ   rN   Útest_issue_15241   s   
66
6:rë  c                   C   s,   t tttttttt ¡ dksJ d S ro   )r
   r   rV   rF   rE   rh   rp   rJ   rJ   rJ   rN   Útest_issue_15226  s   ,rì  c                      s8   t ttttt ttfD ] tt fdd qd S )Nc                      r\  rg   r]  rJ   r^  rJ   rN   ry     r×   z!test_issue_7027.<locals>.<lambda>)r&   rE   r    r   r@   r   rJ   rJ   r^  rN   Útest_issue_7027  s    ÿrí  c                  C   s  t t t¡dksJ t t tt t¡dksJ t t tt t¡dks'J t t t tt tt t¡dks:J t t t tt tt¡dksKJ t t tt¡dksXJ t t tt t t¡¡dksiJ t t t¡} t t | ¡dks{J tt t¡}| | ¡ ¡ dksJ d S rö   )rV   rE   r   rF   rh   rp   )rX  ÚdgrJ   rJ   rN   Útest_derivative_quick_exit  s   &""rï  c               
   C   sº  t ttt} |  tttf¡tt ttttttfks J |  td¡ ¡ tt tttttd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tdf  ttttttt t	ttt	ttt	t  ttt t	ttt	dft	t ksJ 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
ttt
t	t	t ksÉJ |  ttt¡|  ttt¡ksÛJ d S r»   )rV   rE   rh   r   rF   r   rp   r
   Ú_xi_2Ú_xi_1rC   r  rJ   rJ   rN   Útest_issue_15084_13166'  s2   2(ÿÿÿ(þ&ÿýüÿ,ÿÿ(rò  c                   C   s   t tdd  d S )Nc                   S   s   t t td¡S )Nrs   )r%   rE   r   rJ   rJ   rJ   rN   ry   ;  s    z&test_negative_counts.<locals>.<lambda>)r@   r   rJ   rJ   rJ   rN   Útest_negative_counts9  s   ró  c                   C   sÔ   t tdd  ttt ttfdg¡tttksJ ttt ttfdg¡tttttttttttgks:J ttt tttftt¡ttttttd ftdfksXJ t	tg td¡t	dgkshJ d S )Nc                   S   s   t t tdfd¡S rJ  rç  rJ   rJ   rJ   rN   ry   ?  rz   z(test_Derivative__new__.<locals>.<lambda>r   rt   ru   )
r@   r}   rV   rE   rF   r   r<   r   rG   r+   rJ   rJ   rJ   rN   Útest_Derivative__new__>  s   &ÿ
ÿ$rô  c                  C   s   G dd dt } |   |  ¡t|  |  ksJ d|    |  ¡dt|  |   ks,J G dd dt }|  | ¡dks?J d|   | ¡dksLJ d S )Nc                   @   s   e Zd ZdZdZdS )z!test_issue_14719_10150.<locals>.VTFN)r   r   r   rH  Ú	is_scalarrJ   rJ   rJ   rN   ÚVI  s    rö  ru   c                   @   r   )z!test_issue_14719_10150.<locals>.XTN)r   r   r   rH  rJ   rJ   rJ   rN   ÚXN  r   r÷  rt   )r   r   r   )rö  r÷  rJ   rJ   rN   Útest_issue_14719_10150H  s    (rø  c                  C   sv   t ddd} t ddd}tddd| }tddd|}t ddd}|| | }| |¡}|jd | |¡ks9J d S )	NrE   Fr  rC   rè  ÚFtr  rs   )r   r   r   r÷   )rE   rC   rL  Úftr  rÍ   ÚeqdtrJ   rJ   rN   Útest_noncommutative_issue_15131T  s   
rü  c                     sF  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 ttttt¡}ttttt tttt¡ t¡}t tttttt}| ||||f}dd dtd  tdt  ttd  tdt ttd  td    t fdd|D sJ t fdd|D s¡J d S )	Nc                 S   s>   |   ttttfttt ¡  ttdt ¡  tttd ¡S )Nrt   rQ   )r[   rV   r   rE   rF   r"   rh   rK  )ÚargrJ   rJ   rN   ry   f  s    "z&test_Subs_Derivative.<locals>.<lambda>rQ   ru   rt   c                 3   s$    | ]}|  ¡  ¡  kV  qd S rg   ©rp   r   rK   ©Úansr[   rJ   rN   r¹   i  s   " z'test_Subs_Derivative.<locals>.<genexpr>c                 3   s(    | ]}|  ¡   ¡  ¡  kV  qd S rg   rþ  rK   rÿ  rJ   rN   r¹   j  s   & )r   rV   rh   rE   rK  r   r"   r/  )r{   rý   Úcrj   r]   ÚeqsrJ   rÿ  rN   Útest_Subs_Derivative_  s   $($(D r  c                  C   s   t d} | jdksJ d S )NrV   )r   r  r   rJ   rJ   rN   Útest_issue_15360l  s   r  c                   C   s.   t jdu sJ ttdd  ttdd  d S )NFc                   S   s   t t S rg   r   rJ   rJ   rJ   rN   ry   s  rÅ   z"test_issue_15947.<locals>.<lambda>c                   S   s   t t t ¡S rg   rç  rJ   rJ   rJ   rN   ry   t  r×   )rV   rH  r@   r}   rJ   rJ   rJ   rN   Útest_issue_15947q  rÙ   r  c                  C   s:   t d} tdddd}t| tt|fj|thksJ d S )NrV   rå   TrÔ  )r   r   r   rE   rÑ   )rV   rå   rJ   rJ   rN   Útest_Derivative_free_symbolsw  s   $r  c                  C   s`   t d} t d}t d}t||  | d¡}| ¡ dksJ td|  | d¡}| ¡ dks.J d S )NrE   rF   rG   r   rl   )r   r   r[   rp   r°   rJ   rJ   rN   Útest_issue_20683}  s   r  c                  C   sn   t td ttd  } |  tdd¡dtd  td d  td d  dtd	  d
  ttd  ks5J d S )NrQ   r¿   r   é   rt   ru   r¶  rî   r  r   )r"   rE   r&   r  r-   r   rJ   rJ   rN   Útest_issue_10503  s   Vr	  c                  C   sP   ddd} t d}tdt| td|  d |tj}d}| ||ks&J d S )	Nrÿ   c                 [   s   t t| j|fi |€ddS )NT)Ú	full_prec)r,   r6   ræ   )r]   rå   ÚoptionsrJ   rJ   rN   ÚNS  s   ztest_issue_17382.<locals>.NSrE   ru   rt   zUnion(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  rE   rT  ÚexpectedrJ   rJ   rN   Útest_issue_17382  s
   
&r  c                     sP   G dd dt } | dtju sJ G dd dt  tt fdd  d d S )Nc                   @   r   )ztest_eval_sympified.<locals>.Fc                 S   s   |t ju sJ dS r®   )r   rÇ   r   rJ   rJ   rN   r     s   z#test_eval_sympified.<locals>.F.evalNr   rJ   rJ   rJ   rN   rU    r   rU  rt   c                   @   r   )ztest_eval_sympified.<locals>.F2c                 S   s   |dkrdS d S )Nr   Ú1rJ   r   rJ   rJ   rN   r   ¥  s   ÿz$test_eval_sympified.<locals>.F2.evalNr   rJ   rJ   rJ   rN   ÚF2€  r   r  c                      rÄ   ro   rJ   rJ   ©r  rJ   rN   ry   ª  rÅ   z%test_eval_sympified.<locals>.<lambda>)r   r   rÇ   r@   r7   ©rU  rJ   r  rN   Útest_eval_sympified  s
   r  c                  C   s>   t t G dd dt} W d    d S 1 sw   Y  d S )Nc                   @   ra  )z&test_eval_classmethod_check.<locals>.Fc                 S   r   rg   rJ   )r>  rE   rJ   rJ   rN   r   ³  r±   z+test_eval_classmethod_check.<locals>.F.evalN)r   r   r   r   rJ   rJ   rJ   rN   rU  ²  rd  rU  )r@   r}   r   r  rJ   rJ   rN   Útest_eval_classmethod_check°  s   
"ÿr  N)ÃÚsympy.concrete.summationsr   r  r   r   Úsympy.core.cacher   Úsympy.core.containersr   r   Úsympy.core.exprr   r	   rA  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(   r&  r)   r*   Úsympy.matrices.denser+   Úsympy.printing.strr,   Úsympy.series.orderr-   Úsympy.tensor.indexedr/   r0   r1   r2   r3   r4   Úsympy.core.parametersr5   Úsympy.core.sympifyr6   r7   Úsympy.matricesr8   r9   Úsympy.sets.setsr:   Úsympy.solvers.solvesetr;   Úsympy.tensor.arrayr<   Úsympy.utilities.iterablesr=   r>   Úsympy.testing.pytestr?   r@   rA   rB   r  rC   rD   rE   rF   rG   rV   rh   rK  r.  rñ  rð  Ú_xi_3rX   r^   re   rf   ri   rk   rn   rq   r   r   r   r¬   r³   rÎ   rÐ   rÓ   rÔ   rØ   rÚ   ré   rë   rì   rð   rò   ró   rô   rõ   rø   rû   r  r  r  r  r   r#  r(  r7  r;  rC  rG  rI  rO  rP  r[  r`  re  rk  rm  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ï  rò  ró  rô  rø  rü  r  r  r  r  r  r	  r  r  r  rJ   rJ   rJ   rN   Ú<module>   sø    $(
		#
IK

	

%7
HE]
	


