U
    ZÊ¹jõï  ã                   @   sò  d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	l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l%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZE d dlFmGZGmHZHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZPmQZQmRZR d dlSmTZT d dlUmVZVmWZWmXZXmYZYmZZZm[Z[ d dl\m]Z] d dl^m_Z_ d dl`maZambZb d dlcmdZd d dlemfZf d dlgmhZh d d limjZj d d!lkmlZl d d"lmmnZnmoZompZpmqZqmrZrmsZs d d#ltmuZumvZv d d$lwmxZxmyZy d d%l#mzZzm{Z{m|Z| d d&l}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z† d d'l‡mˆZˆm‰Z‰mŠZŠ d d(l‹mŒZŒ d d)l�mŽZŽ d d*lem�Z�m�Z� d d+lm‘Z‘ d d,l’m“Z“ d d-l”m•Z• d d.l–m—Z— d d/lNm˜Z˜m™Z™ d dlšZšeˆZ›e—d0ƒZœe—d1d2d3gid4�Z�e—d5ƒZže—d6ƒZŸe—d7ƒZ e—d8ƒZ¡e—d9ƒZ¢eŸ�r¢d dl£Z£d:e£j¤d;< ed<ƒ\Z¥Z¦Z§Z¨d=d>„ Z©d?d@„ ZªdAdB„ Z«dCdD„ Z¬dEdF„ Z­dGdH„ Z®dIdJ„ Z¯dKdL„ Z°dMdN„ Z±dOdP„ Z²e“dQdR„ ƒZ³e“dSdT„ ƒZ´e“dUdV„ ƒZµe“dWdX„ ƒZ¶e“dYdZ„ ƒZ·d[d\„ Z¸d]d^„ Z¹d_d`„ Zºdadb„ Z»dcdd„ Z¼dedf„ Z½dgdh„ Z¾didj„ Z¿dkdl„ ZÀdmdn„ ZÁdodp„ ZÂdqdr„ ZÃdsdt„ ZÄdudv„ ZÅdwdx„ ZÆdydz„ 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Õ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/�d0„ �Z"�d1�d2„ �Z#�d3�d4„ �Z$�d5�d6„ �Z%�d7�d8„ �Z&�d9�d:„ �Z'�d;�d<„ �Z(G �d=�d>„ �d>ƒ�Z)�d?�d@„ �Z*�dA�dB„ �Z+�dC�dD„ �Z,�dE�dF„ �Z-�dG�dH„ �Z.dS (I  é    )ÚproductN)ÚraisesÚwarns_deprecated_sympy)ÚSum)ÚFunctionÚLambdaÚdiff)ÚEÚFloatÚIÚRationalÚ	all_closeÚooÚpi)ÚEq)ÚS)ÚDummyÚsymbols)ÚRisingFactorialÚ	factorial)Ú	bernoulliÚharmonic)ÚAbs)ÚexpÚlog)Úacosh)Úfloor)ÚMaxÚMinÚsqrt)Ú	Piecewise)ÚacosÚcosÚcotÚsinÚsincÚtan)ÚbesseliÚbesseljÚbesselkÚbesselyÚjnÚyn)ÚbetaÚbetaincÚbetainc_regularized)Ú	Heaviside)ÚEiÚerfÚerfcÚfresnelcÚfresnelsÚSiÚCi)ÚdigammaÚgammaÚloggammaÚ	polygamma)ÚIntegral)ÚAndÚfalseÚITEÚNotÚOrÚtrue)Ú
DotProduct©Úcse)Úderive_by_arrayÚArray)ÚIndexedBase©Úlambdify)Únumbered_symbols)Ú
CoordSys3D)ÚUnevaluatedExpr)Úexpm1Úlog1pÚexp2Úlog2Úlog10Úhypot)Ú	logaddexpÚ
logaddexp2)Úcosm1Úpowm1)ÚreÚimÚarg)	Ú
chebyshevtÚ
chebyshevuÚlegendreÚhermiteÚlaguerreÚ
gegenbauerÚassoc_legendreÚassoc_laguerreÚjacobi)ÚMatrixÚMatrixSymbolÚSparseMatrix)ÚLambdaPrinter)ÚNumPyPrinter)Úimplemented_functionÚ	lambdastr)Úskip)Úconserve_mpmath_dps)Úignore_warnings)Úimport_module)Ú
uppergammaÚ
lowergammaÚnumpyÚscipyÚfromlistÚsparse)Zimport_kwargsÚnumexprÚ
tensorflowÚcupyÚjaxÚnumbaÚ2ZTF_CPP_MIN_LOG_LEVELzw,x,y,zc                      s.   t g dƒ‰ tt‡ fdd„ƒ ˆ ƒ dks*t‚d S )Né   c                      s   ˆ dƒS )Néÿÿÿÿ© r}   ©Úfr}   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/utilities/tests/test_lambdify.pyÚ<lambda>S   ó    ztest_no_args.<locals>.<lambda>)rJ   r   Ú	TypeErrorÚAssertionErrorr}   r}   r~   r€   Útest_no_argsQ   s    
r…   c                  C   s"   t tdt ƒ} | dƒdkst‚d S ©Né   r{   ©rJ   Úxr„   r~   r}   r}   r€   Útest_single_argW   s    rŠ   c                  C   s(   t ttgtt ƒ} | ddƒdks$t‚d S ©Nr{   r‡   é   )rJ   r‰   Úyr„   r~   r}   r}   r€   Útest_list_args\   s    rŽ   c                     sÐ   t ttggttgƒ‰ ˆ ddgƒddgks,t‚tt‡ fdd„ƒ t ttfttfgttttgƒ‰ˆddƒddd	d
gksvt‚tt‡fdd„ƒ t ttggtgtgttttgƒ} | ddggdgdƒddddgksÌt‚d S )Né[   r‡   c                      s
   ˆ ddƒS ©Nr{   r‡   r}   r}   )Úf1r}   r€   r�   d   r‚   z"test_nested_args.<locals>.<lambda>)é   é   )éI   é   r’   r“   r”   r•   c                      s
   ˆ ddƒS )NrŒ   r•   r}   r}   )Úf2r}   r€   r�   h   r‚   é
   é4   é   é,   )rJ   Úwr‰   r„   r   rƒ   r�   Úz)Úf3r}   )r‘   r–   r€   Útest_nested_argsa   s     rž   c                      sH   t ddƒ‰ ˆ dddƒdkst‚ˆ ddd	ƒd
ks2t‚tt‡ fdd„ƒ d S )Nzx,y,zzz,y,xrŒ   r‡   r{   ©r{   r‡   rŒ   ç      ð?ç       @ç      @©r¢   r¡   r    c                      s   ˆ dƒS ©Nr   r}   r}   r~   r}   r€   r�   s   r‚   ztest_str_args.<locals>.<lambda>)rJ   r„   r   rƒ   r}   r}   r~   r€   Útest_str_argsn   s    
r¥   c                  C   s@   dd„ } t tttƒd| iƒ}|dƒdks,t‚|dƒdks<t‚d S )Nc                 S   s   dS ©Nr{   r}   ©r‰   r}   r}   r€   r�   w   r‚   z&test_own_namespace_1.<locals>.<lambda>r$   çš™™™™™¹?r{   éd   ©rJ   r‰   r$   r„   ©Úmyfuncr   r}   r}   r€   Útest_own_namespace_1v   s    r­   c                  C   s@   dd„ } t tttƒd| iƒ}|dƒdks,t‚|dƒdks<t‚d S )Nc                 S   s   dS r¦   r}   r§   r}   r}   r€   r¬   ~   s    z$test_own_namespace_2.<locals>.myfuncr$   r¨   r{   r©   rª   r«   r}   r}   r€   Útest_own_namespace_2}   s    r®   c            	      C   s®   t tttƒtƒ} | dƒdks t‚tddd�\}}}tt|t|| ƒ ƒƒ}t |||g||gtd�} | ddd	ƒ}t d¡gd
 }t	||ƒD ] \}}t|| | ƒdk sˆt‚qˆd S )Nr   ç        zp q rT)Úreal©Úmodulesr    g ÈNgmÁ«Cg ÈNgmÁ«Ãr‡   çVçž¯Ò<)
rJ   r‰   r$   Úmathr„   r   Úabsr   rM   Úzip)	r   ÚpÚqÚrZaeÚresultsZrefvalsÚresÚrefr}   r}   r€   Útest_own_module…   s    r½   c                   C   s    t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s   t dƒS r¦   rI   r}   r}   r}   r€   r�   ”   r‚   ztest_bad_args.<locals>.<lambda>c                   S   s   t ddgƒS r�   rI   r}   r}   r}   r€   r�   –   r‚   )r   rƒ   r}   r}   r}   r€   Útest_bad_args’   s    r¾   c                  C   sL   t ttt ddiƒ} | dƒdks$t‚t ttt ddiƒ} | dƒdksHt‚d S )Nr   g…ëQ¸	@r   r   ù              ð?r{   y      ð?      ð?)rJ   r‰   r   r„   r   r~   r}   r}   r€   Ú
test_atoms™   s    rÀ   c                  C   st   dt j_t  d¡} ttttƒdƒ}|tƒttƒks6t‚d}| |tddƒƒ 	¡ t
t| ƒƒ   k rj|k spn t‚d S )Né2   ú40.19866933079506121545941262711838975037020672954020Úsympyr³   r{   é   )ÚmpmathÚmpÚdpsÚmpfrJ   r‰   r$   r„   r   Úevalfr
   Ústr©Úsin02r   Úprecr}   r}   r€   Útest_sympy_lambda¥   s    
rÎ   c                     s`   dt j_t  d¡} ttttƒdƒ‰ d}| ˆ dƒ|    k rD|k sJn t‚tt	‡ fdd„ƒ d S )NrÁ   rÂ   r´   r³   çš™™™™™É?c                      s   ˆ t ƒS ©Nr§   r}   r~   r}   r€   r�   ¹   r‚   z"test_math_lambda.<locals>.<lambda>)
rÅ   rÆ   rÇ   rÈ   rJ   r‰   r$   r„   r   rƒ   )rÌ   rÍ   r}   r~   r€   Útest_math_lambda²   s    
$rÑ   c            	         sŒ  dt j_t  d¡} ttttƒdƒ‰ d}| ˆ t  d¡ƒ|    k rJ|k sPn t‚tt	‡ fdd„ƒ t  d¡t  d	¡d
  dt  d¡ d  dt  d¡ d  dt  d¡ d  }ttt
ftt
 d dƒ}ttt
fttt
ƒdƒ}ttfttttƒ ƒdƒ}|t  d¡t  d¡ t  d¡ƒ}|t  d¡t  d¡ t  d¡ƒ}|t  d¡ƒ}t|| ƒdk �s\t‚t|| ƒdk �srt‚t|| ƒdk �sˆt‚d S )NrÁ   rÂ   rÅ   çóÄnµÂ5z0.2c                      s   ˆ t ƒS rÐ   r§   r}   r~   r}   r€   r�   Ä   r‚   z$test_mpmath_lambda.<locals>.<lambda>z1e-30z1e-45r‡   rÄ   z1e-60é   rŒ   z1e-75r•   é!   z1e-90é(   r{   Ú1z1e-15gL“oûñW5g[ÚÝ¦e‘2g#aM¬øR/)rÅ   rÆ   rÇ   rÈ   rJ   r‰   r$   r„   r   rƒ   r�   rW   rN   rO   rµ   )	rÌ   rÍ   Zref2Zf2aÚf2bZf2cZans2aZans2bZans2cr}   r~   r€   Útest_mpmath_lambda½   s0    
*ÿþýü  rØ   c                  C   sJ   dt j_t  d¡} tt| dƒ}d}| |dƒ|    k r@|k sFn t‚d S )NrÁ   rÂ   rÅ   rÒ   r   )rÅ   rÆ   rÇ   rÈ   rJ   r‰   r„   rË   r}   r}   r€   Útest_number_precisionØ   s
    
rÙ   c                   C   s6   dt j_ttdt d¡dƒƒ ƒtt d¡ƒks2t‚d S )Nr©   r}   rÅ   )rÅ   rÆ   rÇ   rÊ   rJ   r   rÉ   r„   r}   r}   r}   r€   Útest_mpmath_precisionà   s    rÚ   c                  C   s>   ddl m}  |  ¡ D ]$\}}|tjks*t‚|tjkst‚qd S )Nr   )ÚMATH_TRANSLATIONS)Úsympy.utilities.lambdifyrÛ   ÚitemsrÃ   Ú__dict__r„   r´   )rÛ   ÚsymÚmatr}   r}   r€   Útest_math_translê   s    rá   c                  C   sF   ddl m}  |  ¡ D ],\}}|tjks2|dks2t‚|tjkst‚qd S )Nr   )ÚMPMATH_TRANSLATIONSrd   )rÜ   râ   rÝ   rÃ   rÞ   r„   rÅ   )râ   rß   rà   r}   r}   r€   Útest_mpmath_translñ   s    rã   c                  C   sJ   t stdƒ ddlm}  |  ¡ D ]$\}}|tjks6t‚|t jks t‚q d S )Núnumpy not installed.r   )ÚNUMPY_TRANSLATIONS)rq   rk   rÜ   rå   rÝ   rÃ   rÞ   r„   )rå   rß   Znumpr}   r}   r€   Útest_numpy_translø   s    ræ   c                  C   sV   t stdƒ ddlm}  |  ¡ D ]0\}}|tjks6t‚|t jks |t jjks t‚q d S )Núscipy not installed.r   )ÚSCIPY_TRANSLATIONS)	rr   rk   rÜ   rè   rÝ   rÃ   rÞ   r„   Úspecial)rè   rß   Zscipr}   r}   r€   Útest_scipy_transl  s    rê   c                  C   s@   t stdƒ ttttƒdƒ} | dƒdks,t‚| dƒdks<t‚d S )Nrä   rq   r|   r{   )rq   rk   rJ   r‰   r   r„   r~   r}   r}   r€   Útest_numpy_translation_abs  s
    rë   c                  C   s˜   t stdƒ ddlm}  d}tttf}| j ¡ D ]b}||kr>q0t	|ƒ}t
|dƒr\|jd }nd}|d |… }t|||Ž dd�}|d	| Ž d k	s0t‚q0d S )
Núnumexpr not installed.r   )ÚNumExprPrinter)ÚwhereÚcomplexÚcontainsÚ_nargsr{   ru   r±   ©r{   )ru   rk   Úsympy.printing.lambdareprrí   r‰   r�   rœ   Z_numexpr_functionsÚkeysr   Úhasattrrñ   rJ   r„   )rí   Z	blacklistZ	arg_tuplerß   ZssymÚnargsÚargsr   r}   r}   r€   Útest_numexpr_printer  s    

rø   c                  C   sj   t stdƒ tstdƒ tdƒ} t| jdd„ d�\}}t||f| t gdd�}tj d	¡\}}|||ƒ d S )
Nrì   rä   zb*a - sqrt(a**2)c                 S   s   | j S rÐ   )Úname)Úsr}   r}   r€   r�   2  r‚   z!test_issue_9334.<locals>.<lambda>)ÚkeyF)r²   Údummify©r‡   r•   )ru   rk   rq   r   ÚsortedZfree_symbolsrJ   Úrandom)ÚexprÚaÚbÚfunc_numexprZfooÚbarr}   r}   r€   Útest_issue_9334,  s    r  c               	   C   sx   t stdƒ ttttftttdkfttdkfƒt ƒ} ttƒ�2 | dddƒdksRt	‚t
| dddƒƒdksjt	‚W 5 Q R X d S )Nrì   r   r|   r{   é   é*   Únan)ru   rk   rJ   r‰   r�   rœ   r    rm   ÚRuntimeWarningr„   rÊ   )r  r}   r}   r€   Útest_issue_129848  s    (
r
  c                  C   sd   t dƒ\} }| |  }t| |g|ƒ}t| |g|g d�}|ddƒ|ddƒksNt‚|ddƒdks`t‚d S )Nzx yr±   rŒ   é   éýÿÿÿ©r   rJ   r„   )r‰   r�   r   Z
no_modulesZempty_modulesr}   r}   r€   Útest_empty_modulesA  s    
r  c                  C   sr   t ttd ƒ} | dƒdkst‚| dƒdks.t‚| dƒdks>t‚| dƒdksNt‚| dƒdks^t‚| dƒdksnt‚d S )	Nr‡   r|   r{   r   éþÿÿÿr•   ç      @ç      @rˆ   r~   r}   r}   r€   Útest_exponentiationK  s    r  c                  C   sj   t tttƒƒ} | dƒdkst‚| dƒdks.t‚| dƒdks>t‚t| dƒd ƒd	k sVt‚| d
ƒdksft‚d S )Nr   r¯   r{   r    r•   r¡   r‡   g9´Èv¾Ÿö?gü©ñÒMbP?r  r  )rJ   r‰   r   r„   rµ   r~   r}   r}   r€   Ú	test_sqrtU  s    r  c                  C   s¾   t tgttƒttƒgdƒ} | tƒ}d}| |d d   k rD|k sJn t‚| |d   k rd|k sjn t‚| dƒ}d}| |d d   k r”|k sšn t‚| |d   k r´|k sºn t‚d S )Nr´   g•dyáý¥=r   r{   çn†ðù!	@gñhãˆµøä>)rJ   r‰   r"   r$   r   r„   )r   ÚdrÍ   r}   r}   r€   Ú	test_trig^  s    $ $r  c                  C   sf   t rtstdƒ ttttd  ƒƒ} ttt| tƒttt	fƒƒ}|t	 ƒ}d|  k r\dk sbn t
‚d S )Nrç   r‡   giµv‘ø[ü?g™m»‘ø[ü?)rq   rr   rk   r   r‰   r   rJ   r�   r<   r   r„   )r   Úlr  r}   r}   r€   Útest_integralj  s    
r  c                  C   sn   t rtstdƒ tddtd td    tddftdtfƒ} ttg| ƒ}|dƒ}d|  k rddk sjn t‚d S )Nrç   r{   r‡   r   gXê´É<½ó?gˆ¢ùÉ<½ó?)	rq   rr   rk   r<   r‰   r�   rœ   rJ   r„   )Úir  r  r}   r}   r€   Útest_double_integrals  s    ,r  c                  C   sˆ   t rtstdƒ d} tdƒ}td|ƒ}tt||ƒ| ƒ| || ¡ ¡  ƒdk sPt	‚t
d|ƒ}tt||ƒ| ƒ| || ¡ ¡  ƒdk s„t	‚d S )Nrç   gÍÌÌÌÌÌ@r‰   r‡   g:Œ0âŽyE>)rq   rr   rk   r   r+   rµ   rJ   ÚsubsrÉ   r„   r,   )Z
test_pointr‰   ZjtestZytestr}   r}   r€   Útest_spherical_bessel|  s     
ÿÿ
ÿÿr  c                      sT   t tttftttfƒ‰ ˆ dddƒdks*t‚ˆ dddƒdks>t‚tt‡ fd	d
„ƒ d S )NrŒ   r‡   r{   rŸ   r    r¡   r¢   r£   c                      s   ˆ dƒS r¤   r}   r}   r~   r}   r€   r�   ‘  r‚   z$test_vector_simple.<locals>.<lambda>)rJ   r‰   r�   rœ   r„   r   rƒ   r}   r}   r~   r€   Útest_vector_simpleŒ  s    r  c                      s\   t tdt dt fƒ‰ tt‡ fdd„ƒ ˆ dƒdks8t‚ˆ dƒdksHt‚ˆ dƒd	ksXt‚d S )
Nr|   r{   c                      s   ˆ dƒS r¤   r}   r}   r~   r}   r€   r�   –  r‚   z+test_vector_discontinuous.<locals>.<lambda>)g      ð¿r    r‡   )ç      à¿ç      à?r  )r  r  )rJ   r‰   r   ÚZeroDivisionErrorr„   r}   r}   r~   r€   Útest_vector_discontinuous”  s
    r!  c                  C   sV   t tgttƒttƒgdƒ} | tƒ}t|d d ƒdk s:t‚t|d d ƒdk sRt‚d S )Nr´   r   r{   ç-Cëâ6?)rJ   r‰   r"   r$   r   rµ   r„   ©r   r  r}   r}   r€   Útest_trig_symbolicœ  s    r$  c                  C   sT   t tgttƒttƒgƒ} | dƒ}t|d d ƒdk s8t‚t|d d ƒdk sPt‚d S )Nr  r   r{   r"  )rJ   r‰   r"   r$   rµ   r„   r#  r}   r}   r€   Útest_trig_float£  s    r%  c                  C   sœ   t ttd ƒ} | dƒdkst‚t tttgtttgƒ} | dddƒdddgksNt‚t tttƒƒ} | dƒdkslt‚t ttfttt ƒd ƒ} | ddƒdks˜t‚d S )Nr‡   r•   r{   rŒ   r¡   r   rÄ   )rJ   r‰   r„   r�   rœ   r   r$   r~   r}   r}   r€   Ú	test_docsª  s    r&  c                  C   s,   t ttfttƒdd�} | ddƒdks(t‚d S )Nr´   r±   r   rÄ   )rJ   r‰   r�   r$   r„   r~   r}   r}   r€   Ú	test_mathµ  s    r'  c                  C   sP   t tttƒd ƒ} t| dƒtƒs$t‚t tttƒd dd�} t| dƒtƒsLt‚d S )Nr‡   r´   r±   )rJ   r‰   r$   Ú
isinstanceÚfloatr„   r~   r}   r}   r€   Útest_sinº  s    r*  c                  C   s  t ttt gttƒd tt ggƒ} t ddgtdƒd dggƒ}ttttf| dd�}|dddƒ|ksht‚ttttf| | gfdd�}|dddƒ||gfksœt‚t ttt fƒ ttf¡}t ttfƒ}t ddgddggƒ}t||dd�ddƒ|ksòt‚t|j|dd�ddƒ|k�st‚d S )Nr•   r{   r‡   rŒ   rÃ   r±   r   )	rd   r‰   r�   r$   rœ   rJ   r„   ZjacobianÚT)ÚAZsolr   ÚJÚvr}   r}   r€   Útest_matrixÁ  s    $r/  c                     sT  t stdƒ tttt gttƒd tt ggƒ} t  ddgt  d¡d dgg¡}ttttf| dgƒ}t j	 
|dddƒ|¡ t|dddƒt jƒs’t‚G dd„ dtƒ}|ttdgdgd	ggƒƒ‰ttˆƒ}t  d
¡‰ t  |ˆ ƒd	k¡sæt‚ddddœ}ttf dddii|—Žƒ}ttˆ|d�}t  |ˆ ƒd	k¡�s2t‚t|ƒ‰tt‡ ‡‡fdd„ƒ d S )Nrä   r•   r{   r‡   rŒ   rq   c                   @   s   e Zd ZdS )ztest_numpy_matrix.<locals>.dotN)Ú__name__Ú
__module__Ú__qualname__r}   r}   r}   r€   ÚdotÛ  s   r3  r   )é   rŒ   FT)Zallow_unknown_functionsÚinlineZfully_qualified_modulesZuser_functions©Úprinterc                      s   t tˆˆd�ˆ ƒS )Nr6  ©rJ   r‰   r}   ©ZinpZp3Z	x_dot_mtxr}   r€   r�   é  r‚   z#test_numpy_matrix.<locals>.<lambda>)rq   rk   rd   r‰   r�   r$   rœ   ÚarrayrJ   ÚtestingÚassert_allcloser(  Úndarrayr„   r   ZzerosÚallrh   Údictr   Ú	Exception)r,  Úsol_arrr   r3  Zf_dot1Z	strict_kwZp2Zf_dot2r}   r9  r€   Útest_numpy_matrixÏ  s$    $ 

rB  c                  C   sX   t stdƒ tdtgddggƒ} tt| jdd�}t j |dƒt  ddgddgg¡¡ d S )Nrä   r{   r   rq   r±   r‡   )	rq   rk   rd   r‰   rJ   r+  r;  Úassert_array_equalr:  ©r,  r   r}   r}   r€   Útest_numpy_transposeì  s
    rE  c                  C   sâ   t stdƒ ttttgƒ} ttttgt| | ƒdd�}ttttgt| | jƒdd�}ttttgt| j| ƒdd�}ttttgt| | jƒdd�}|dddƒ|dddƒ  krØ|dddƒ  krØ|dddƒ  krØt  	dg¡ksÞn t
‚d S )Núnumpy not installedrq   r±   r{   r‡   rŒ   é   )rq   rk   rd   r‰   r�   rœ   rJ   rC   r+  r:  r„   ©r,  r‘   r–   r�   Zf4r}   r}   r€   Útest_numpy_dotproductô  s     

ÿ
þ
ý
ürI  c                  C   sZ   t stdƒ tdtgddggƒ} tt| d dd�}t j |dƒt  ddgddgg¡¡ d S )	Nrä   r{   r   r|   rq   r±   r‡   r  )rq   rk   rd   r‰   rJ   r;  rC  r:  rD  r}   r}   r€   Útest_numpy_inverse  s
    rJ  c               	   C   s²   t stdƒ tttt gttƒd tt ggƒ} t  ddgt  d¡d dgg¡}ttttf| dt j	idgƒ}t
tƒ�4 t j |dddƒ|¡ t|dddƒt j	ƒs¤t‚W 5 Q R X d S )Nrä   r•   r{   r‡   rŒ   ZImmutableDenseMatrixrq   )rq   rk   rd   r‰   r�   r$   rœ   r:  rJ   Úmatrixrm   ÚPendingDeprecationWarningr;  r<  r(  r„   )r,  rA  r   r}   r}   r€   Útest_numpy_old_matrix  s    $ 
rM  c                  C   sR   t stdƒ ttdgdtggƒ} tttf| dd�}|ddƒ}t|t jjƒsNt	‚d S )Nrç   r   rr   r±   r{   r‡   )
rr   rk   rf   r‰   r�   rJ   r(  rt   Z
coo_matrixr„   )r,  r   ÚBr}   r}   r€   Útest_scipy_sparse_matrix  s    
rO  c               	   C   sª   t stdƒ tdt tdk fttdk fdt dfƒ} tttg| dd�}t jdd��N t|t  d	¡t  d
¡ƒƒd	ksvt	‚t|t  d	¡t  d¡ƒƒtdƒksœt	‚W 5 Q R X d S )Nrä   r{   r|   Trq   r±   Úignore)Údivider   r  Úinf)
rq   rk   r    r‰   r�   rJ   Zerrstater)  r:  r„   )r·   r   r}   r}   r€   Ú test_python_div_zero_issue_11306   s    ("rS  c                  C   sØ   d dg} t r|  d¡ tr$|  d¡ | D ]P}tttjt |d�}|dƒdksPt‚ttttjt ƒ|d�}|dƒdks(t‚q(t	t
tg| ƒD ]J\}}tt|tƒ|d�}|dƒd	ks²t‚|d	ƒd	ksÂt‚|d
ƒdksˆt‚qˆd S )Nr´   rq   rÅ   r±   r‡   r  r   r|   r{   y      @      @rÄ   )rq   ÚappendrÅ   rJ   r‰   r   ZOner„   r   r   r   rµ   )ZmodsÚmodr   Zabsfuncr²   r}   r}   r€   Útest_issue9474*  s    

rV  c                  C   s¼   t stdƒ tstdƒ ttd td  ƒ} td|  tƒ}t ddd¡ }}t d¡d  |d	  }tttf|d
d�||ƒ}tttf|dd�||ƒ}tj	j
||dd� tj	j
||dd� d S )Nrì   rä   r‡   r{   r—   é   r¡   r  r  rq   r±   ru   ç»½×Ùß|Û=)Úrtol)ru   rk   rq   r   r‰   r�   r   ZlinspacerJ   r;  r<  )r¹   r   Úxnr,   Zfv_exactZfv_numpyZ
fv_numexprr}   r}   r€   Útest_issue_9871=  s    r[  c                  C   s¾   t stdƒ tttdk ftd tdkfdƒ} tt| dd�}t j |t  d¡ƒt  d	d
dd	d	d	ddddg
¡¡ tttttd	kft td	k fƒƒ}t j |t  dd	d
g¡ƒt  d
t j	d
g¡¡ d S )Nrä   rŒ   r‡   rÄ   )r   Trq   r±   r—   r   r{   é$   é1   é@   éQ   r|   )
rq   rk   r    r‰   rJ   r;  rC  Zaranger:  r  )Úpiecesr   Z
nodef_funcr}   r}   r€   Útest_numpy_piecewiseP  s     ÿ"ÿra  c                  C   sL  t stdƒ tttftttƒdd�} ttttfttttƒdd�}tttftttƒdd�}ttttfttttƒdd�}ttttƒdd�}t  	ddg¡}t  	ddg¡}t  	ddg¡}t j
 | ||ƒt  	ddg¡¡ t j
 ||||ƒt  	ddg¡¡ t j
 |||ƒt  	ddg¡¡ t j
 ||||ƒt  	ddg¡¡ t j
 ||ƒt  	ddg¡¡ d S )Nrä   rq   r±   TF)rq   rk   rJ   r‰   r�   r=   rœ   rA   r@   r:  r;  rC  )Zand_funcZ
and_func_3Zor_funcZ	or_func_3Znot_funcÚarr1Úarr2Zarr3r}   r}   r€   Útest_numpy_logical_ops]  s      rd  c                  C   sä   t stdƒ tttgtdt ggƒ} ttd gttƒggƒ}ttttf| | dd�}t j 	|dddƒt  
d	gd
gg¡¡ t j 	|dddƒt  
dgd
gg¡¡ ttttf| |  |  dd�}t j 	|dddƒt  
ddgddgg¡¡ d S )Nrä   r{   r‡   rq   r±   r  rŒ   r•   g      ú?ç      @r  g      ö?g     R@g     Ð]@éŸ   éû   )rq   rk   rd   r‰   r�   rœ   r   rJ   r;  rC  r:  )ZxmatZymatZmat_funcr   r}   r}   r€   Útest_numpy_matmulo  s    $$ÿrh  c                  C   sê   t stdƒ tstdƒ t j ddd¡\} }}ttƒttƒ t	t
ƒd  tt
t ƒtttt
 ƒƒ  ttt
 ƒtdttt ƒ ƒ  ttd ttd   ƒ }tttt
f|dd�}tttt
f|dd�}t  || ||ƒ|| ||ƒ¡sæt‚d S )	Nrä   rì   rŒ   é€   r‡   rq   r±   ru   )rq   rk   ru   rÿ   Úrandnr$   r‰   r"   r�   r&   rœ   r   r!   r   r   r   r   rJ   Úallcloser„   )r  r  Úcr   ZnpfuncZnefuncr}   r}   r€   Útest_numpy_numexpr}  s    6ÿÿrm  c                  C   sÄ   t stdƒ tstdƒ t j dd¡\} }tdtfdtdd„ ƒiƒ}tt	d	|t	ƒ d
d�}t  
|| ƒ| d  ¡stt‚ttdƒdd„ ƒ}tt	tf|t	tƒd
d�}t  
|| |ƒd|  | d	 ¡sÀt‚d S )Nrä   rì   r‡   r—   ÚufÚevalc                 S   s   |d d S r†   r}   ©r‰   r�   r}   r}   r€   r�   ’  r‚   z,test_numexpr_userfunctions.<locals>.<lambda>r{   ru   r±   c                 S   s   d|  | d S r†   r}   rp  r}   r}   r€   r�   –  r‚   )rq   rk   ru   rÿ   rj  Útyper   ÚclassmethodrJ   r‰   rk  r„   ri   r�   )r  r  rn  Úfuncr}   r}   r€   Útest_numexpr_userfunctions‹  s    ÿrt  c               	   C   sx   t stdƒ tttƒtdtd  ƒƒ} tt| dd�}t jj 	¡ �.}t j
dt jd�}||ƒj|d�d	ksjt‚W 5 Q R X d S )
Nútensorflow not installed.r{   r‡   rv   r±   r   ©Zdtype©Úsessionr  )rv   rk   r   r$   r‰   r   rJ   ÚcompatÚv1ÚSessionÚconstantÚfloat32ro  r„   ©r   rs  rú   r  r}   r}   r€   Útest_tensorflow_basic_math›  s    r  c               	   C   s€   t stdƒ tttƒtdtd  ƒƒ} tt| dd�}t jj 	¡ �6}t jjj
t jd�}||ƒj||did�d	ksrt‚W 5 Q R X d S )
Nru  r{   r‡   rv   r±   rv  r   ©rx  Z	feed_dictr  )rv   rk   r   r$   r‰   r   rJ   ry  rz  r{  Úplaceholderr}  ro  r„   r~  r}   r}   r€   Útest_tensorflow_placeholders¦  s    r‚  c               	   C   sŠ   t stdƒ tttƒtdtd  ƒƒ} tt| dd�}t jj 	¡ �@}t j
dt jd�}| |j¡ ||ƒj||did�d	ks|t‚W 5 Q R X d S )
Nru  r{   r‡   rv   r±   r   rv  r€  r  )rv   rk   r   r$   r‰   r   rJ   ry  rz  r{  ÚVariabler}  ÚrunZinitializerro  r„   r~  r}   r}   r€   Útest_tensorflow_variables±  s    r…  c               	   C   sh   t stdƒ tttttƒtƒƒ} tttg| dd�}t jj	 
¡ � }|ddƒj|d�dksZt‚W 5 Q R X d S )Nru  rv   r±   FTrw  )rv   rk   r@   r=   rA   r‰   r�   rJ   ry  rz  r{  ro  r„   ©r   rs  rú   r}   r}   r€   Ú"test_tensorflow_logical_operations½  s    r‡  c               	   C   s¤   t stdƒ tdttdƒfdtdk fdtdkfƒ} tt| dd�}t jj ¡ �N}|dƒj	|d�dksft
‚|dƒj	|d�dks~t
‚|dƒj	|d�dks–t
‚W 5 Q R X d S )Nru  r   r|   r{   rv   r±   rw  )rv   rk   r    r   r‰   rJ   ry  rz  r{  ro  r„   r†  r}   r}   r€   Útest_tensorflow_piecewiseÇ  s    &rˆ  c               	   C   s`   t stdƒ ttt td ƒ} tt| dd�}t jj ¡ �}|dƒj|d�dksRt	‚W 5 Q R X d S )Nru  r‡   rv   r±   r  rw  r•   )
rv   rk   r   r‰   rJ   ry  rz  r{  ro  r„   r†  r}   r}   r€   Útest_tensorflow_multi_maxÓ  s    r‰  c               	   C   s`   t stdƒ ttt td ƒ} tt| dd�}t jj ¡ �}|dƒj|d�dksRt	‚W 5 Q R X d S )Nru  r‡   rv   r±   r  rw  )
rv   rk   r   r‰   rJ   ry  rz  r{  ro  r„   r†  r}   r}   r€   Útest_tensorflow_multi_minÝ  s    rŠ  c               	   C   sV   t stdƒ tdk} tt| dd�}t jj ¡ �}|dƒj|d�dksHt‚W 5 Q R X d S )Nru  r   rv   r±   r{   rw  T)	rv   rk   r‰   rJ   ry  rz  r{  ro  r„   r†  r}   r}   r€   Útest_tensorflow_relationalç  s    r‹  c               	   C   s
  t stdƒ ttttƒdd�} ttttƒdd�}ttttƒdd�}ttttƒdd�}t jj	 
¡ � }t  d¡}| |ƒj|d�dks„t‚||ƒj|d�dksœt‚||ƒj|d�}tdƒ ¡ }t|| ƒdk sÌt‚||ƒj|d�}tdƒ ¡ }t|| ƒdk süt‚W 5 Q R X d S )	Nztensorflow not installedrv   r±   y      ð?       @rw  r{   r‡   g�íµ ÷Æ°>)rv   rk   rJ   r‰   rX   rY   r   rZ   ry  rz  r{  r|  ro  r„   rÉ   rµ   )Úfunc1Úfunc2Zfunc3Zfunc4rú   r  Ztensorflow_resultÚsympy_resultr}   r}   r€   Útest_tensorflow_complexesñ  s     
r�  c               	   C   sh   t stdƒ tttggtt t dƒ} t jj ¡ �,}| t  ddg¡ƒ}|j	|d�dksZt
‚W 5 Q R X d S )Nru  rv   r¡   r    rw  g      @)rv   rk   rJ   r‰   r�   ry  rz  r{  r|  ro  r„   )r   rú   Zfcallr}   r}   r€   Útest_tensorflow_array_arg  s    r�  c                  C   s&   t ttt ƒ} | tƒtt ks"t‚d S rÐ   ©rJ   r‰   r�   rœ   r„   r~   r}   r}   r€   Útest_sym_single_arg  s    r’  c                  C   s0   t ttgtt t ƒ} | ddƒdt ks,t‚d S r‹   r‘  r~   r}   r}   r€   Útest_sym_list_args  s    r“  c                  C   sx   t tttd  ƒƒ} ttt| tƒtt tfƒdd�}|tƒtttd  ƒtt tfƒks\t‚|tƒ ¡ t	t
ƒkstt‚d S )Nr‡   rÃ   r±   )r   r‰   r   rJ   r<   r   r�   r„   Zdoitr   r   )r   r  r}   r}   r€   Útest_sym_integral$  s     (r”  c                  C   s’   ddd„ i} dd„ dd„ dœ}t  d¡}t  d¡}tt|tƒ| dfd	�}|d
ƒdksXt‚tt|tƒ|dfd	�}|d
ƒdks~t‚|d
ƒdksŽt‚d S )Nr   c                 S   s   dS )Núfirst fr}   r§   r}   r}   r€   r�   2  r‚   z&test_namespace_order.<locals>.<lambda>c                 S   s   dS )Nzsecond fr}   r§   r}   r}   r€   r�   3  r‚   c                 S   s   dS )Nú
function gr}   r§   r}   r}   r€   r�   4  r‚   )r   Úgr—  rÃ   r±   r{   r•  r–  )rÃ   r   rJ   r‰   r„   )Zn1Zn2r   r—  Zif1Zif2r}   r}   r€   Útest_namespace_order+  s    ÿ

r˜  c                     sÔ   t ddd„ ƒ‰ t ddd„ ƒ} ttˆ tƒƒ}tt| tƒƒ}tˆ tƒƒt| tƒƒksTt‚|dƒdksdt‚|dƒt d¡kszt‚t d¡}t	|dƒr’t‚t |d	d„ ƒ}t	|dƒs®t‚t dd
d„ ƒ‰t
t‡ ‡fdd„ƒ d S )Nr   c                 S   s   d|  S ©Nr‡   r}   r§   r}   r}   r€   r�   C  r‚   ztest_imps.<locals>.<lambda>c                 S   s
   t  | ¡S rÐ   )r´   r   r§   r}   r}   r€   r�   D  r‚   rŒ   rÓ   r¬   Z_imp_c                 S   s   d|  S r™  r}   r§   r}   r}   r€   r�   M  r‚   c                 S   s   | d S )Née   r}   r§   r}   r}   r€   r�   P  r‚   c                      s   t tˆ ˆtƒƒƒS rÐ   r8  r}   ©r   r–   r}   r€   r�   Q  r‚   )ri   rJ   r‰   rÊ   r„   r´   r   rÃ   r   rõ   r   Ú
ValueError)r—  Úl1Úl2rs  Zmy_fr}   r›  r€   Ú	test_imps@  s    
rŸ  c                     sJ   t dttfƒD ]6\} ‰ ‡ fdd„}td|ƒ}|| ƒ}||| ƒkst‚qd S )N)r   r¯   r‡   r¡   c                    s   | dkrˆ ‚dS )Nr   r{   r}   )r  ©Zerror_classr}   r€   r¬   ^  s    z test_imps_errors.<locals>.myfuncr   )r   rƒ   rœ  ri   r„   )Úvalr¬   r   r   r}   r   r€   Útest_imps_errorsT  s
    
r¢  c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t tdd„ ƒS )Nc                 S   s   | S rÐ   r}   r§   r}   r}   r€   r�   i  r‚   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>)ri   r$   r}   r}   r}   r€   r�   i  r‚   z&test_imps_wrong_args.<locals>.<lambda>)r   rœ  r}   r}   r}   r€   Útest_imps_wrong_argsh  s    r£  c                  C   s  t j} tt| tƒƒdƒdks t‚ttd| tƒ ƒdƒdks>t‚tttft| tƒ ƒddƒdksbt‚tddd„ ƒ} tt| tƒƒdƒdksŠt‚ttd| tƒ ƒdƒdks¨t‚tttft| tƒ ƒddƒdksÌt‚tt| tƒtfƒ}|d	ƒd
ksît‚tt| tƒtgƒ}|d	ƒdd	gk�st‚tt| tƒ| tƒtfgƒ}|d	ƒdd
gk�sFt‚tt| tƒtiƒ}|d	ƒdd	ik�snt‚tt| tƒtiƒ}|d	ƒdd	ik�s–t‚ttt| tƒiƒ}|d	ƒd	dik�s¾t‚ddd„ i}tt| tƒ|ƒ}|d	ƒdk�sìt‚tt| tƒ|dd�}|d	ƒdk�st‚d S )Nr   r{   r‡   r   c                 S   s   | d S )Nr©   r}   r§   r}   r}   r€   r�   t  r‚   z$test_lambdify_imps.<locals>.<lambda>r©   rš  rŒ   )ég   rŒ   r¤  c                 S   s   | d S )Néc   r}   r§   r}   r}   r€   r�   †  r‚   F)Zuse_impséf   )rÃ   r"   rJ   r‰   r„   r�   ri   )r   Úlamr  r}   r}   r€   Útest_lambdify_impsl  s2    $$r¨  c                     s  t dƒ‰tdƒ‰ tdƒ‰t dƒ} dˆ ˆƒd  ˆˆƒ }tˆ ˆƒˆˆƒf|ƒ}|ddƒdks`t‚ttˆƒdtˆƒd  ƒ}|ˆ ˆƒƒdˆ ˆƒd  ksšt‚t| ˆfd|  ˆ ƒ}|ddƒd	ksÂt‚tt‡ ‡‡fd
d„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )NÚtÚFÚGz\alphar‡   rŒ   é	   r{   rÄ   c                      s&   t ˆ ˆƒˆˆƒ ˆ ˆƒˆˆƒ d ƒS )NrÄ   rI   r}   ©rª  r«  r©  r}   r€   r�   ž  r‚   z$test_dummification.<locals>.<lambda>c                      s   t dˆ ˆƒ dˆ ˆƒ d ƒS )Nr‡   rÄ   rI   r}   ©rª  r©  r}   r€   r�   Ÿ  r‚   c                      s   t dˆ ˆƒ dˆ ˆƒ d ƒS )Nr‡   r•   rÄ   rI   r}   r®  r}   r€   r�      r‚   )r   r   rJ   r„   r$   r   ÚSyntaxError)ÚalphaZ	some_exprr§  r}   r­  r€   Útest_dummificationŽ  s     r±  c                  C   sR   t dƒ} |  ¡ \}}}|| }t||g|ƒ}|ddƒ}d}t|| ƒdk sNt‚d S )NÚNrÏ   ç333333Ó?r  r³   )rL   Zbase_scalarsrJ   rµ   r„   )r²  rZ  r,   Zznr   r   r»   r¼   r}   r}   r€   Ú8test_lambdify__arguments_with_invalid_python_identifiers£  s    
r´  c                  C   sJ   t  ddd¡} t| | ƒ}|dƒdks(t‚t| | dd�}|dƒdksFt‚d S )Nz{v}r‡   r{   T©rü   )rÃ   re   rJ   r„   )Zcurlyvr§  r}   r}   r€   Útest_curly_matrix_symbol®  s
    
r¶  c                  C   s.   t dƒ} | d }t| |ƒ}|dƒdks*t‚d S )NÚifr‡   ç      @r¡   r  )Z	python_ifr   r   r}   r}   r€   Útest_python_keywords·  s    
r¹  c                  C   s„   t ttttftt t t ƒ} d ¡ }| j ¡ d t|ƒ… |ksDt‚t	dƒ}t |t
|ƒƒ} d ¡ }| j ¡ d t|ƒ… |ks€t‚d S )NzOCreated with lambdify. Signature:

func(w, x, y, z)

Expression:

w + x + y + zza1:26a   Created with lambdify. Signature:

func(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15,
        a16, a17, a18, a19, a20, a21, a22, a23, a24, a25)

Expression:

a1 + a10 + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a2 + a20 +...)rJ   r›   r‰   r�   rœ   Ú
splitlinesÚ__doc__Úlenr„   r   Úsum)rs  r¼   Úsymsr}   r}   r€   Útest_lambdify_docstringÁ  s    ÿÿr¿  c                     s$  ddl m‰  ‡ fdd„} ttdƒtdƒ ƒtj }td|d| d	�}td|dˆ d	�}td|dˆ ƒ d	�}tt d
d¡ƒ}t	|ƒ |ƒs„t
‚t	|ƒ |ƒs”t
‚t	|ƒ |ƒs¤t
‚ttttƒdƒdƒ}ttttƒdƒdƒ}ttttƒdƒdƒ}|||g}	t d¡}
t d¡}t d¡}|
||g}|	|k�s t
‚d S )Nr   ©ÚIntervalPrinterc                    s   ˆ ƒ   | ¡S rÐ   )Údoprint)r   rÀ  r}   r€   ÚintervalreprÜ  s    z+test_special_printers.<locals>.intervalreprr‡   rŒ   r}   rÅ   )r²   r7  r{   rÄ   gÍÌÌÌÌÌü?é   )ró   rÁ  r   r   ÚHalfrJ   rq  rÅ   Úmpir(  r„   r‰   r:   )rÃ  r   Zfunc0rŒ  r�  rÆ  Zexp1rP   Zexp3Zexp_lsZsol1Zsol2Zsol3Zsol_lsr}   rÀ  r€   Útest_special_printersÙ  s&    




rÇ  c                   C   s,   t g tƒƒ dkst‚t g tƒƒ dks(t‚d S )NTF)rJ   rB   r„   r>   r}   r}   r}   r€   Útest_true_falseù  s    rÈ  c                   C   sv   t tttfftt ƒddƒdks$t‚t ttttffftt t t ƒddƒdksTt‚t ttd dd�dƒdksrt‚d S )	Nr{   rý   rŒ   )r‡   )rŒ   r•   r—   Frµ  r‡   )rJ   r‰   r�   rœ   r„   r›   r}   r}   r}   r€   Útest_issue_2790ÿ  s    $0rÉ  c                  C   s.   t ddd„ ƒ} | | dƒƒ ¡ tdƒks*t‚d S )Nr   c                 S   s   | d S r™  r}   r§   r}   r}   r€   r�     r‚   z"test_issue_12092.<locals>.<lambda>r‡   rW  )ri   rÉ   r
   r„   r~   r}   r}   r€   Útest_issue_12092  s    rÊ  c                  C   sF   G dd„ dt jƒ} | dƒ}d| }tƒ  |¡}| dd¡dksBt‚d S )Nc                   @   s   e Zd Zdd„ ZeZeZdS )z"test_issue_14911.<locals>.Variablec                 S   s   |  | j¡S rÐ   )rÂ  rù   )Úselfr7  r}   r}   r€   Ú	_sympystr  s    z,test_issue_14911.<locals>.Variable._sympystrN)r0  r1  r2  rÌ  Z_lambdacodeZ
_numpycoder}   r}   r}   r€   rƒ    s   rƒ  r‰   r‡   ú Ú z2*x)rÃ   ÚSymbolrg   rÂ  Úreplacer„   )rƒ  r‰   r�   Úcoder}   r}   r€   Útest_issue_14911
  s
    rÒ  c                   C   sT   t tttfttttƒƒdddƒdks(t‚t tttfttttƒƒdddƒdksPt‚d S )NTrÄ   rŒ   F)rJ   r‰   r�   rœ   r?   r„   r}   r}   r}   r€   Útest_ITE  s    (rÓ  c                   C   sT   t tttfttttƒƒdddƒdks(t‚t tttfttttƒƒdddƒdksPt‚d S r‹   )rJ   r‰   r�   rœ   r   r„   r   r}   r}   r}   r€   Útest_Min_Max  s    (rÔ  c                  C   sl   t stdƒ tdƒ} tdƒ\}}t  ddgddgg¡}t| t| ttf tddftddfƒƒ|ƒd	ksht	‚d S )
NrF  r  zi jr{   r‡   rŒ   r•   r   r—   )
rq   rk   rH   r   r:  rJ   r   r‰   r�   r„   )r  r  Újr  r}   r}   r€   Útest_Indexed#  s    rÖ  c                  C   sh   t ttftttƒdƒddƒ} t ttftttƒdƒddƒ}| tddƒ ¡ ksNt‚|tddƒ ¡ ksdt‚d S )NrÅ   r{   r‡   )rJ   r‰   r�   ro   rp   rÉ   r„   )Zexpr1Zexpr2r}   r}   r€   Útest_issue_12173.  s    r×  c                  C   s>   t stdƒ ttttƒƒ} t| dƒtdƒ ƒ ¡ dk s:t‚d S )NrF  r{   r³   )rq   rk   rJ   r‰   r%   r   Únr„   r~   r}   r}   r€   Útest_issue_136426  s    rÙ  c                  C   s4   t tttƒdƒ} t| dƒtdƒ ƒ ¡ dk s0t‚d S )NrÅ   r{   r³   )rJ   r‰   r%   r   rØ  r„   r~   r}   r}   r€   Útest_sinc_mpmath=  s    rÚ  c                  C   s”   t ƒ } t| | d dd�}|dƒdks(t‚t| | d ƒ}|dƒdksFt‚t dƒ}t||d ƒ}|dƒdkslt‚t|gg|d ƒ}|dgƒdks�t‚d S )Nr{   Frµ  r‡   rŒ   r‰   ©r   rJ   r„   )Zd1r‘   Zf1bZd2r–   r�   r}   r}   r€   Útest_lambdify_dummy_argB  s    rÜ  c                  C   s:   t ƒ } tt| ƒƒ}t| |g| | ƒ}|ddƒdks6t‚d S )Nr•   r{   rŒ   )r   r   rÊ   rJ   r„   )r  Zdsymr   r}   r}   r€   Ú%test_lambdify_mixed_symbol_dummy_argsO  s    rÝ  c                  C   sD   t stdƒ tttggtt t dƒ} | t  ddg¡ƒdks@t‚d S )NrF  rq   r¡   r    rÄ   )rq   rk   rJ   r‰   r�   r:  r„   r~   r}   r}   r€   Útest_numpy_array_argW  s    rÞ  c               	   C   s¸  t stdƒ tttttttt	t
g	} t jjt jjt jjt jjt jjt jjt jjt jjt jjg	}tj d¡ t| |ƒD �]\}}tt|tƒdd�}tdƒD ]ä}tj dd¡dtj d	d
¡  }|tkrÌt |¡}|tkrÞt |¡}|tkrðt |¡}||ƒ ¡ }||ƒ}|t	k�r||ƒd }|t
k�r0||ƒd }t||ƒ| ƒddt|ƒ  k �sVt‚t||ƒ| ƒddt|ƒ  k s–t‚q–qrttttt t!g}	t jj"t jj#t jj$t jj%t jj&t jj!g}
t|	|
ƒD ]ò\}}ttt'f|tt'ƒdd�}tdƒD ]Æ}tj dd¡}tj dd¡dtj d	d
¡  }|tt!fk�r2t |¡}|t!k�rHtt(|ƒƒ}|||ƒ ¡ }t|||ƒ| ƒddt|ƒ  k �s~t‚t|||ƒ|||ƒ ƒddt|ƒ  k �sèt‚�qè�qÀd S )Núscipy not installedr   rr   r±   é   éöÿÿÿr—   r¿   éûÿÿÿrÄ   r{   g‚vIhÂ%<=))rr   rk   r1   r2   r3   r   r9   r:   r8   r6   r7   ré   ZexpiZgammalnÚpsiZsicirq   rÿ   Úseedr¶   rJ   r‰   ÚrangeÚuniformrµ   r°   rÉ   r„   r   r(   r*   r'   r)   r;   ZpochZjvZyvZivÚkvr�   Úint)Zsingle_arg_sympy_fnsZsingle_arg_scipy_fnsÚsympy_fnZscipy_fnr   r  ÚtvrŽ  Úscipy_resultZdouble_arg_sympy_fnsZdouble_arg_scipy_fnsZtv1Ztv2r}   r}   r€   Útest_scipy_fnsa  sh        þ 




&( ÿ   ÿ 

(rì  c                  C   s¾  t stdƒ tj d¡ tdƒ} tdftdftdft	dft
dftdftdftdftdfg	}d}|D �]T\}}| d |… tf }t|||Ž ƒ}tdƒD �] }tj dd¡}ttjjdd	|d d
�ƒ}	tj dd¡dtj dd	¡  }
|t	krôt |
¡}
|tk�r"tj dd¡}
ttjjd|dd
�ƒ}	|f|	 |
f }||Ž }||Ž  ¡ }ddt|ƒ  }t|| ƒ}z||k �srt‚W q” tk
�r´   t|jt|ƒt|ƒt|ƒt|ƒ||d�ƒ‚Y q”X q”qbd S )Nrß  r   zn k a br{   r‡   rŒ   zëThe random test of the function {func} with the arguments {args} had failed because the SymPy result {sympy_result} and SciPy result {scipy_result} had failed to converge within the tolerance {tol} (Actual absolute difference : {diff})r—   rÄ   )Úsizerá  r¿   râ  r|   ç•Ö&è.>)rs  r÷   rŽ  rë  r   Útol)rr   rk   rq   rÿ   rä  r   r[   r\   r]   r^   r_   r`   ra   rb   rc   r‰   rJ   rå  ÚrandintÚtupleræ  r°   rÉ   rµ   r„   rƒ   ÚformatÚrepr)ÚparamsZpolysÚmsgré  Z
num_paramsr÷   r   Ú_ÚtnZtparamsrê  Úvalsrë  rŽ  Úatolr   r}   r}   r€   Útest_scipy_polysš  s\    ÷ÿ 

úÿrú  c                  C   s$   t ttd ƒ} dt | ¡ks t‚d S )Nr‡   zx**2)rJ   r‰   ÚinspectÚ	getsourcer„   r~   r}   r}   r€   Útest_lambdify_inspectÖ  s    rý  c                  C   sª   t ƒ t ƒ  } }t| |g| d|didƒ}|ddƒdddœks>t‚t| |g|| fdƒ}|ddƒdksdt‚tg dƒ}|ƒ dks|t‚t| |g|| gdƒ}|ddƒddgks¦t‚d S )NrŒ   rÃ   r‡   )r‡   rŒ   )rŒ   r‡   rò   rÛ  )r‰   r�   r‘   r–   r×   r�   r}   r}   r€   Útest_issue_14941Ý  s    
rþ  c                      s  t dƒtƒ‰ ˆ  ¡ ‰tˆ ˆfˆ ˆ ƒddƒdks4t‚ttˆ ˆfˆ ˆ ƒƒddƒdksXt‚tt‡ ‡fdd„ƒ ttˆ ˆfˆ ˆ dd	�ƒddƒdks”t‚ttˆˆ fˆ ˆ dd	�ƒt	dƒdƒt	j
ksÂt‚tˆd
ˆ ƒdƒdksÜt‚ttˆd
ˆ dd	�ƒdƒdksþt‚d S )Nr   r—   rÄ   rÄ  r‡   c                      s   t tˆ ˆfˆ ˆ dd�ƒS )NFrµ  )ro  rj   r}   ©r   Zfxr}   r€   r�   ô  s    z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>Trµ  r{   é)   r  )r   r‰   r   rJ   r„   ro  rj   r   r@  r   rÅ  r}   r}   rÿ  r€   Ú(test_lambdify_Derivative_arg_issue_16468ï  s     $(.r  c                  C   sP   t tgt t¡ƒ} d}| |ƒ|jks(t‚t tgt t¡ƒ}||ƒ|jksLt‚d S )Ny      @       @)rJ   rœ   rÃ   rX   r°   r„   rY   Úimag)Zf_rer¡  Zf_imr}   r}   r€   Útest_imag_realü  s
    r  c                  C   sš   t stdƒ tdddƒ} t  ddgddgg¡}t| | d ƒ}t  ||ƒt  dd	gd
dgg¡¡sbt‚t| | d ƒ}t  ||ƒt  ddgddgg¡¡s–t‚d S )NrF  r,  r‡   r{   rŒ   r•   r|   g       Àr    ç      ø?r  é%   é6   r_  év   )rq   rk   re   r:  rJ   rk  r„   )r,  ZA0r   r—  r}   r}   r€   Útest_MatrixSymbol_issue_15578  s    &r  c                  C   s”   t stdƒ ddlm} m}m}m} ddlm} d\}}}}| 	||||¡ 
¡ }	t| |||f| 	| |||¡ƒ}
|
||||ƒ}t|	| ƒdk s�t‚d S )Nrß  r   )rØ  r  r¹   ÚZ)Úhydrogen)r{   r   rŒ   r{   r³   )rr   rk   Z	sympy.abcrØ  r  r¹   r	  Zsympy.physicsr
  ZR_nlrÉ   rJ   rµ   r„   )rØ  r  r¹   r	  r
  ÚnvÚlvÚrvZZvZsympy_valuer   Zscipy_valuer}   r}   r€   Útest_issue_15654  s    r  c            	      C   sœ  t stdƒ tdddƒ} tdddƒ}tdddƒ}tddd	ƒ}td
ƒ}t| d| |  ƒ}t| d| |  ƒ}t| d|  ƒ}t|||fd| | | ƒ}t  |t  dddgdddgdddgg¡ƒt jd| d| d| gd| d| d| gd| d| d| ggtd�¡�st‚t  |t  dddgdddgdddgg¡ƒt j|d d| d d| d g|d d| d d| d g|d d| d d| d ggtd�¡�sžt‚t  |t  dddgdddgdddgg¡ƒt  dddgdddgdddgg¡¡�sðt‚t  |t  dddgdddgg¡t  ddddgddddgddddgg¡t  ddddd	gddddd	gddddd	gddddd	gg¡ƒt  dddddgdddddgg¡¡�s˜t‚d S )NrF  r,  rŒ   rN  r‡   ÚCr•   ÚDrÄ   Úkr{   rÓ   rv  éx   éð   ih  ià  iX  )	rq   rk   re   r   rJ   Úarray_equalr:  Úobjectr„   )	r,  rN  r  r  r  r   r—  Úhr  r}   r}   r€   Útest_issue_15827  s>    (Hÿ
(<ÿÿÿ
( ÿ
D8ÿÿÿr  c                  C   sF   t stdƒ tdƒ} dd„ }t| || ƒdd�}|dƒt jjksBt‚d S )Nrß  r‰   c                 S   s   t j| d  S r™  )r   ZGoldenRatior§   r}   r}   r€   r�   <  r‚   z"test_issue_16930.<locals>.<lambda>rr   r±   r{   )rr   rk   r   rJ   Ú	constantsZgolden_ratior„   )r‰   r   Úf_r}   r}   r€   Útest_issue_169307  s    r  c                  C   sH   t stdƒ tdƒ} t| gt | d¡dd�}|dƒt dd¡ksDt‚d S )Nrß  r‰   r|   rr   r±   r¨   )	rr   rk   r   rJ   rÃ   ZLambertWrÅ   Zlambertwr„   )r‰   r  r}   r}   r€   Útest_issue_17898@  s
    r  c                  C   sî   t stdƒ ttt t¡ƒ} ttt td¡ƒ}| dddgƒ}|dddgƒ}t|d ƒ ¡ dk sbt‚t|d d ƒ ¡ dk s~t‚t|d d ƒ ¡ dk sšt‚t|d ƒ ¡ dk s²t‚t|d d ƒ ¡ dk sÎt‚t|d d ƒ ¡ dk sêt‚d S )NrF  r{   r|   r   r³   r  r‡   )	rq   rk   rJ   r‰   rÃ   r0   r   rØ  r„   )r‘   r–   Zres1Zres2r}   r}   r€   Útest_issue_13167_21411G  s    r  c                  C   s"   t ttƒ} | dƒtdƒkst‚d S )Né   r    )rJ   r‰   r	   r   r„   r~   r}   r}   r€   Útest_single_eU  s    
r  c                  C   s�   t stdƒ tdƒ} t| tƒ}t| tf|dd�}ttddƒ|ddƒ ƒdksPt‚t| tƒ}t| tf|dd�}ttddƒ|ddƒ ƒdksŒt‚d S )Nrß  r  rr   r±   r{   rŒ   rX  )	rr   rk   r   rp   r‰   rJ   rµ   r„   ro   )r  r‘   rª  r–   r}   r}   r€   Útest_issue_16536Y  s    
 
r  c                  C   s€   t stdƒ tdƒ\} }ttjt| |ƒƒ}t|| |fƒ}t| |f|dd�}| d|di}t	| 
|¡|| ¡ Ž  ƒdk ¡ s|t‚d S ©NrF  zx1 x2rq   r±   r{   r‡   rX  )rq   rk   r   r   r   ÚZeror   rF   rJ   rµ   r  Úvaluesr>  r„   )Úx1Úx2r   r—  r«  Úpointr}   r}   r€   Útest_issue_22726g  s    r&  c                  C   sj   t stdƒ tdƒ\} }tt| |ƒƒ}t| |f|dd�}| d|di}t| |¡|| ¡ Ž  ƒdksft	‚d S r   )
rq   rk   r   r0   r   rJ   rµ   r  r"  r„   )r#  r$  r   rª  r%  r}   r}   r€   Útest_issue_22739s  s    r'  c                  C   s¦   t stdƒ tdƒ\} }| tt|d ƒƒt|ƒ  }t| |g|dƒ}| d|di}t| |¡|| 	¡ Ž  ƒdksrt
‚t| |g|ƒ}t| |¡|| 	¡ Ž  ƒdks¢t
‚d S )NrF  za tr‡   rq   r—   rX  )rq   rk   r   r   r#   r"   rJ   rµ   r  r"  r„   )r  r©  r   rª  r%  r}   r}   r€   Útest_issue_22992~  s    "r(  c                  C   s@   t stdƒ tttd gƒ} tt| dƒ}|dƒjt jks<t‚d S )NrF  r‡   rq   r{   )rq   rk   rG   r‰   rJ   Ú	__class__r=  r„   )r   r   r}   r}   r€   Útest_issue_19764�  s
    r*  c                  C   s:   t stdƒ ttttƒdƒ} t j| dd�dƒdks6t‚d S )Nznumba not installedrq   T)Znopythonr{   gî	�Tíê?)ry   rk   rJ   r‰   r$   Zjitr„   r~   r}   r}   r€   Útest_issue_20070™  s    r+  c                  C   st   t stdƒ ttƒ} ttƒ}tt| dd�}tt|dd�}ttdƒ|dƒ ƒdksTt‚ttdƒ|dƒ ƒdkspt‚d S )Nrß  rr   r±   çÍÌÌÌÌÌô?rX  )rr   rk   r4   r‰   r5   rJ   rµ   r„   )r‘   r–   ZF1ZF2r}   r}   r€   Útest_fresnel_integrals_scipy¡  s    r-  c                  C   sL   t stdƒ tttƒ} tttf| dd�}ttddƒ|ddƒ ƒdksHt‚d S )Nrß  rr   r±   r,  çffffff@rX  )rr   rk   r-   r‰   r�   rJ   rµ   r„   ©r   rª  r}   r}   r€   Útest_beta_scipy®  s
    
r0  c                  C   s@   t ttƒ} tttf| dd�}tt ddƒ|ddƒ ƒdks<t‚d S )Nr´   r±   r,  r.  rX  )r-   r‰   r�   rJ   rµ   r„   r/  r}   r}   r€   Útest_beta_math¸  s    
r1  c                  C   s\   t stdƒ tttttƒ} tttttf| dd�}ttddddƒ|ddddƒ ƒdksXt	‚d S )	Nrß  rr   r±   gffffffö?gÍÌÌÌÌÌ@r¨   r  rX  )
rr   rk   r.   r›   r‰   r�   rœ   rJ   rµ   r„   r/  r}   r}   r€   Útest_betainc_scipy¿  s
    r2  c                  C   s\   t stdƒ tttttƒ} tttttf| dd�}ttddddƒ|ddddƒ ƒdksXt	‚d S )	Nrß  rr   r±   rÏ   re  r¨   r{   rX  )
rr   rk   r/   r›   r‰   r�   rœ   rJ   rµ   r„   r/  r}   r}   r€   Útest_betainc_regularized_scipyÉ  s
    r3  c            	      C   sî   t stdƒ tttttttt	g} | D ]Š}d|j
krJ|ttƒ}ttf}d}n&d|j
krh|tƒ}tf}d}ntdƒ‚t||ƒ}||Ž }| tt||ƒƒ¡ ¡ }t  |t|ƒ¡s$t‚q$tttft	ttƒttƒƒƒ}td|dd	ƒ d
 ƒdk sêt‚d S )NrF  r‡   )r³  gš™™™™™Ù?r{   )r³  z:Need to handle other than unary & binary functions in testr¡   g¸ÔJzî�5góÄnµ¢5g!z«0ª5g¨"ßÝ}t3)rq   rk   rN   rO   rP   rQ   rR   rS   rT   rU   rö   r‰   r�   ÚNotImplementedErrorrJ   r  r?  r¶   rÉ   rk  r)  r„   rµ   )	Úfuncsrs  r   r÷   Únum_argsr   ÚresultÚ	referenceZlae2r}   r}   r€   Útest_numpy_special_mathÓ  s&    



r9  c                  C   s–   t stdƒ ttfttƒdd�} t| dƒd ƒdk s8t‚ttt	t j
j
 d¡d d… ƒƒd	k}|r’tttftttƒdd�}t|d
dƒd ƒdk s’t‚d S )Nrß  rr   r±   g#B’¡œÇ;gœWw'&l‘7g¬÷N’~hÚ.r‡   )r{   r—   g333333ó?rî  g-£—Þé=g—ÔFFõg<)rr   rk   rJ   r‰   rV   rµ   r„   rñ  Úmaprè  ÚversionÚsplitr�   rW   )Zcm1Zhave_scipy_1_10plusZcm2r}   r}   r€   Útest_scipy_special_mathì  s    $r>  c                  C   s4   t stdƒ ttfttƒdd�} | dƒdks0t‚d S )Nrß  rr   r±   r{   r  )rr   rk   rJ   r‰   r   r„   )Zbernr}   r}   r€   Útest_scipy_bernoulliú  s    r?  c                  C   s^   t stdƒ ttfttƒdd�} | dƒdks0t‚tttftttƒdd�}|ddƒdksZt‚d S )Nrß  rr   r±   r‡   r  g      ô?)rr   rk   rJ   r‰   r   r„   r�   )ZhnZhnmr}   r}   r€   Útest_scipy_harmonic  s    r@  c                  C   s\   t stdƒ tttggtt t dƒ} | t  ddg¡ƒ}|dksDt‚dtt|ƒƒksXt‚d S )NúCuPy not installedrw   r¡   r    rÄ   ©	rw   rk   rJ   r‰   r�   r:  r„   rÊ   rq  ©r   r7  r}   r}   r€   Útest_cupy_array_arg  s    rD  c                  C   s\   t stdƒ tttggtt t dƒ} | t  ddg¡ƒ}|dksDt‚dtt|ƒƒksXt‚d S )NrA  rq   r¡   r    rÄ   rw   rB  rC  r}   r}   r€   Útest_cupy_array_arg_using_numpy  s    rE  c                  C   sâ   t stdƒ ttttgƒ} ttttgt| | ƒdd�}ttttgt| | jƒdd�}ttttgt| j| ƒdd�}ttttgt| | jƒdd�}|dddƒ|dddƒ  krØ|dddƒ  krØ|dddƒ  krØt  	dg¡ksÞn t
‚d S )NrA  rw   r±   r{   r‡   rŒ   rG  )rw   rk   rd   r‰   r�   rœ   rJ   rC   r+  r:  r„   rH  r}   r}   r€   Útest_cupy_dotproduct"  s     

ÿ
þ
ý
ürF  c                  C   s^   t stdƒ tttggtt t dƒ} | t j ddg¡ƒ}|dksFt‚dtt	|ƒƒksZt‚d S )NúJAX not installedrx   r¡   r    rÄ   ©
rx   rk   rJ   r‰   r�   rq   r:  r„   rÊ   rq  rC  r}   r}   r€   Útest_jax_array_arg3  s    rI  c                  C   s^   t stdƒ tttggtt t dƒ} | t j ddg¡ƒ}|dksFt‚dtt	|ƒƒksZt‚d S )NrG  rq   r¡   r    rÄ   rx   rH  rC  r}   r}   r€   Útest_jax_array_arg_using_numpy=  s    rJ  c                  C   sä   t stdƒ ttttgƒ} ttttgt| | ƒdd�}ttttgt| | jƒdd�}ttttgt| j| ƒdd�}ttttgt| | jƒdd�}|dddƒ|dddƒ  krÚ|dddƒ  krÚ|dddƒ  krÚt j	 
dg¡ksàn t‚d S )NrG  rx   r±   r{   r‡   rŒ   rG  )rx   rk   rd   r‰   r�   rœ   rJ   rC   r+  rq   r:  r„   rH  r}   r}   r€   Útest_jax_dotproductG  s     

ÿ
þ
ýürK  c            	      C   s  dd„ } dd„ }dd„ }G dd„ dƒ}|t ttft t t t t t d	t  d	t  t t t d	 tt d	  gd
d�|t ttft t t ¡ tt t ¡ tt t d¡ tt t d¡ gdd�|t ttft ttƒ tttƒ tttƒ gdd�|t ttftt t t gttƒd t t ggƒt t ttƒ t t  tt t  ttƒt t gƒgddd�|t tft t d d	 t t t t t d	t  d  t t d d	  d	t  d t t  gdd�g}|D ]N}t�sÆ|j	�rÆ�q°dd|| |fD ]&}|j
|d�}||jŽ }| |¡ �qÔ�q°d S )Nc                 S   s   d| fS )Nr}   r}   )Úexprsr}   r}   r€   Ú	no_op_cseY  s    z$test_lambdify_cse.<locals>.no_op_csec                 S   s   ddl m} || ttd�d�S )Nr   rD   ©Úcls©r   )Úsympy.simplify.cse_mainrE   rK   r   )rL  rE   r}   r}   r€   Ú	dummy_cse\  s    z$test_lambdify_cse.<locals>.dummy_csec                 S   s   ddl m}m} || |d�S )Nr   )Úcse_release_variablesrE   )Úpostprocess)rQ  rS  rE   )rL  rS  rE   r}   r}   r€   Úminmem`  s    z!test_lambdify_cse.<locals>.minmemc                   @   s2   e Zd Zddœdd„Zdd„ Zdddœd	d
„ZdS )ztest_lambdify_cse.<locals>.CaseF)Úrequires_numpyc                   sB   || _ || _|| _tt| j | jƒƒ‰ ‡ fdd„|D ƒ| _|| _d S )Nc                    s   g | ]}|  ˆ ¡ ¡ ‘qS r}   )r  rÉ   )Ú.0Úe©Z	subs_dictr}   r€   Ú
<listcomp>j  s     z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r÷   rL  r6  r?  r¶   r¼   rV  )rË  r÷   rL  r6  rV  r}   rY  r€   Ú__init__e  s    z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|d�S )NrD   )rJ   r÷   rL  )rË  rE   r}   r}   r€   rJ   m  s    z(test_lambdify_cse.<locals>.Case.lambdifyr³   )ÚabstolÚreltolc                   s€   | j r.t‡ ‡‡fdd„t| jƒD ƒƒs*t‚d S t| jƒD ]B\}}tˆ| | ƒ}|dkrf|ˆ k szt‚q8|t|ƒ ˆk s8t‚q8d S )Nc                 3   s2   | ]*\}}t jˆ| t j|td �ˆˆ d�V  qdS )rv  )rY  rù  N)rq   rk  Zasarrayr)  )rW  r  r¹   ©r\  r]  r7  r}   r€   Ú	<genexpr>r  s
   þ ÿzAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )rV  r>  Ú	enumerater¼   r„   rµ   )rË  r7  r\  r]  r  r¹   Zabs_errr}   r^  r€   ÚassertAllClosep  s    þz.test_lambdify_cse.<locals>.Case.assertAllCloseN)r0  r1  r2  r[  rJ   ra  r}   r}   r}   r€   ÚCased  s   rb  r‡   )r¡   r¢   r¸  )r÷   rL  r6  r{   )r¯   r¢   r¸  )r¨   rÏ   r³  r•   )r    r¡   r¢   T)r÷   rL  r6  rV  )r{   r‡   FrD   )r‰   r�   rœ   rÃ   r0   r%   rd   r$   rq   rV  rJ   r6  ra  )	rM  rR  rU  rb  ZcasesÚcaseZ_cser   r7  r}   r}   r€   Útest_lambdify_cseX  sn    

üø
üø



ýù	"ýø
" ÿüØ/
rd  c                     s@   t td�‰ tttd ttd ƒg‡ fdd„d�dƒ} | s<t‚d S )NrN  r‡   c                    s   t | ˆ d�S )NrP  rD   )rX  ©r¾  r}   r€   r�   ·  r‚   z"test_issue_25288.<locals>.<lambda>rD   )rK   r   rJ   r‰   r$   r„   )Úokr}   re  r€   Útest_issue_25288µ  s    
*rg  c                	   C   s(   t ƒ � ttthtt ƒ W 5 Q R X d S rÐ   )r   rJ   r‰   r�   r}   r}   r}   r€   Útest_deprecated_set»  s    rh  c                  C   s  t stdƒ tdddƒ} t| | j|  dƒ}|t  dddg¡ƒdksFt‚|t  dddg¡ƒdksbt‚t| | | j dƒ}|t  dddg¡ƒdks�t‚|t  dddg¡ƒdks¬t‚t| | | j |  dƒ}t  dgdgdgg¡}t  dgdgd	gg¡}t  ||ƒ|¡�st‚d S )
Nrä   ÚXrŒ   r{   rq   r‡   rG  é   r  )rq   rk   re   rJ   r+  r:  r„   r  )ri  r   rb  rc  r}   r}   r€   Útest_issue_13881¿  s    rk  c                  C   sx   t dƒtƒ} t dƒtƒ}t| d |d  | d ||  d    }| ¡ }t| |ftf|dd�}|dd	ƒ}|d
kstt‚d S )Nr‰   r›   r•   rÄ   rŒ   TrD   )r    r¡   r¢   g     Àr@)r   r�   rœ   ÚexpandrJ   r„   )r   r—  r   Z	eval_exprZansr}   r}   r€   Útest_23536_lambdify_cse_dummyÔ  s    (
rm  c                   @   sT   e Zd ZdZdZdZdd„ Zedd„ ƒZedd„ ƒZ	edd	„ ƒZ
d
d„ Zdd„ ZdS )ÚLambdifyDocstringTestCaseNc                 C   s   || _ || _d S rÐ   ©Údocstring_limitÚexpected_redacted)rË  rp  rq  r}   r}   r€   r[  ä  s    z"LambdifyDocstringTestCase.__init__c                 C   s   d}| j s| jS |S )NzEEXPRESSION REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))rq  ÚEXPR)rË  Zexpr_redacted_msgr}   r}   r€   Úexpected_exprè  s    z'LambdifyDocstringTestCase.expected_exprc                 C   s   d}| j s| jS |S )NzFSOURCE CODE REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))rq  ÚSRC)rË  Zsrc_redacted_msgr}   r}   r€   Úexpected_srcí  s    z&LambdifyDocstringTestCase.expected_srcc                 C   s"   d| j › d| j› d| j› d�}|S )Nz(Created with lambdify. Signature:

func(z)

Expression:

z

Source code:

z

Imported modules:

)Ú	SIGNATURErs  ru  )rË  Úexpected_docstringr}   r}   r€   rw  ò  s    ÿ	z,LambdifyDocstringTestCase.expected_docstringc                 C   s
   t | jƒS rÐ   )r¼  rw  ©rË  r}   r}   r€   Ú__len__ÿ  s    z!LambdifyDocstringTestCase.__len__c                 C   s   | j j› d| j› d| j› d�S )Nz(docstring_limit=z, expected_redacted=ú))r)  r0  rp  rq  rx  r}   r}   r€   Ú__repr__  s    ÿz"LambdifyDocstringTestCase.__repr__)r0  r1  r2  rv  rr  rt  r[  Úpropertyrs  ru  rw  ry  r{  r}   r}   r}   r€   rn  ß  s   


rn  c                  C   s€   G dd„ dt ƒ} tdƒ}| d dd�| ddd�| ddd�| dd	d�| d
d	d�f}|D ](}t|g|d|jd�}|j|jksRt‚qRd S )Nc                   @   s   e Zd ZdZdZdZdS )zNtest_lambdify_docstring_size_limit_simple_symbol.<locals>.SimpleSymbolTestCaser‰   z(def _lambdifygenerated(x):
    return x
N©r0  r1  r2  rv  rr  rt  r}   r}   r}   r€   ÚSimpleSymbolTestCase  s   ÿr~  r‰   Fro  r©   r{   r   Tr|   rÃ   ©rp  )rn  r   rJ   rp  r»  rw  r„   )r~  r‰   Ú
test_casesÚ	test_caseÚlambdified_exprr}   r}   r€   Ú0test_lambdify_docstring_size_limit_simple_symbol
  s     




ûürƒ  c                  C   s¨   G dd„ dt ƒ} tdƒ\}}}||g||| | d  ¡ g}| d dd�| ddd�| dd	d�| d
d	d�| dd	d�f}|D ],}t|||g|d|jd�}|j|jksvt‚qvd S )Nc                   @   s   e Zd ZdZdZdZdS )zHtest_lambdify_docstring_size_limit_nested_expr.<locals>.ExprListTestCaseúx, y, zzK[x, [y], z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 +...z˜def _lambdifygenerated(x, y, z):
    return [x, [y], z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 + y**3 + 3*y**2*z + 3*y*z**2 + z**3]
Nr}  r}   r}   r}   r€   ÚExprListTestCase)  s
   ÿÿr…  r„  rŒ   Fro  éÈ   rÁ   Tr   r|   rÃ   r  )rn  r   rl  rJ   rp  r»  rw  r„   )r…  r‰   r�   rœ   r   r€  r�  r‚  r}   r}   r€   Ú.test_lambdify_docstring_size_limit_nested_expr'  s"    




ûür‡  c                  C   s¸   G dd„ dt ƒ} tdƒ\}}}ttj|g|| | || | d  ¡ ggƒ}| d dd�| ddd�| dd	d�| d
d	d�| dd	d�f}|D ],}t|||g|d|jd�}|j|j	ks†t
‚q†d S )Nc                   @   s   e Zd ZdZdZdZdS )zAtest_lambdify_docstring_size_limit_matrix.<locals>.MatrixTestCaser„  zNMatrix([[0, x], [x + y + z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z...z¸def _lambdifygenerated(x, y, z):
    return ImmutableDenseMatrix([[0, x], [x + y + z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 + y**3 + 3*y**2*z + 3*y*z**2 + z**3]])
Nr}  r}   r}   r}   r€   ÚMatrixTestCaseK  s
   ÿÿrˆ  r„  rŒ   Fro  r†  rÁ   Tr   r|   rÃ   r  )rn  r   rd   r   r!  rl  rJ   rp  r»  rw  r„   )rˆ  r‰   r�   rœ   r   r€  r�  r‚  r}   r}   r€   Ú)test_lambdify_docstring_size_limit_matrixI  s"    .




ûür‰  c                  C   s8   t dƒ} d| ff}t| |ƒ}|dƒ}|dks4tdƒ‚d S )Nr  r}   r{   )r}   rò   z2Lambdify did not handle the empty tuple correctly.r  )r  r   r   r7  r}   r}   r€   Útest_lambdify_empty_tuplel  s
    

rŠ  c                  C   sT   d} t dddƒ ¡ }t dddƒ ¡ }d}dt }t||| ƒs@t‚t||| ƒsPt‚d S )	NrX  r{   r  r¨   r‡   rŒ   gQ@te_Þ¿gF#O3²t9À)ra   rÉ   r   r   r„   )rï  Zsympy_result_integerZsympy_result_complexZmpmath_result_integerZmpmath_result_complexr}   r}   r€   Ú(test_assoc_legendre_numerical_evaluations  s    r‹  (/  Ú	itertoolsr   r´   rû  rÅ   Zsympy.testing.pytestr   r   Zsympy.concrete.summationsr   Zsympy.core.functionr   r   r   Zsympy.core.numbersr	   r
   r   r   r   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.combinatorial.factorialsr   r   Z%sympy.functions.combinatorial.numbersr   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   r   Z%sympy.functions.elementary.hyperbolicr   Z#sympy.functions.elementary.integersr   Z(sympy.functions.elementary.miscellaneousr   r   r   Z$sympy.functions.elementary.piecewiser    Z(sympy.functions.elementary.trigonometricr!   r"   r#   r$   r%   r&   Zsympy.functions.special.besselr'   r(   r)   r*   r+   r,   Z&sympy.functions.special.beta_functionsr-   r.   r/   Z'sympy.functions.special.delta_functionsr0   Z'sympy.functions.special.error_functionsr1   r2   r3   r4   r5   r6   r7   Z'sympy.functions.special.gamma_functionsr8   r9   r:   r;   Zsympy.integrals.integralsr<   Zsympy.logic.boolalgr=   r>   r?   r@   rA   rB   Z%sympy.matrices.expressions.dotproductrC   rQ  rE   Zsympy.tensor.arrayrF   rG   Zsympy.tensor.indexedrH   rÜ   rJ   Zsympy.utilities.iterablesrK   Zsympy.vectorrL   Zsympy.core.exprrM   Zsympy.codegen.cfunctionsrN   rO   rP   rQ   rR   rS   Zsympy.codegen.numpy_nodesrT   rU   Zsympy.codegen.scipy_nodesrV   rW   rX   rY   rZ   Z#sympy.functions.special.polynomialsr[   r\   r]   r^   r_   r`   ra   rb   rc   Zsympy.matricesrd   re   rf   ró   rg   Zsympy.printing.numpyrh   ri   rj   rk   Zsympy.utilities.decoratorrl   Zsympy.utilities.exceptionsrm   Zsympy.externalrn   ro   rp   rÃ   ZMutableDenseMatrixrq   rr   ru   rv   rw   rx   ry   ÚosÚenvironr›   r‰   r�   rœ   r…   rŠ   rŽ   rž   r¥   r­   r®   r½   r¾   rÀ   rÎ   rÑ   rØ   rÙ   rÚ   rá   rã   ræ   rê   rë   rø   r  r
  r  r  r  r  r  r  r  r  r!  r$  r%  r&  r'  r*  r/  rB  rE  rI  rJ  rM  rO  rS  rV  r[  ra  rd  rh  rm  rt  r  r‚  r…  r‡  rˆ  r‰  rŠ  r‹  r�  r�  r’  r“  r”  r˜  rŸ  r¢  r£  r¨  r±  r´  r¶  r¹  r¿  rÇ  rÈ  rÉ  rÊ  rÒ  rÓ  rÔ  rÖ  r×  rÙ  rÚ  rÜ  rÝ  rÞ  rì  rú  rý  rþ  r  r  r  r  r  r  r  r  r  r  r&  r'  r(  r*  r+  r-  r0  r1  r2  r3  r9  r>  r?  r@  rD  rE  rF  rI  rJ  rK  rd  rg  rh  rk  rm  rn  rƒ  r‡  r‰  rŠ  r‹  r}   r}   r}   r€   Ú<module>   s�  $  $  ,






	

		

				




"	
 



9
<



	

		






]+"#