a
    {d                     @   sd  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 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l/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZHmIZImJZJ d dlKmLZLmMZMmNZNmOZO d dlPmQZQ d dlRmSZSmTZTmUZUmVZVmWZWmXZX d dlYmZZZ d dl[m\Z\m]Z] d dl^m_Z_ d dl`maZa d dlbmcZc d dldmeZemfZfmgZgmhZhmiZimjZj d d lkmlZlmmZm d d!lnmoZompZp d d"l"mqZqmrZrmsZs d d#ltmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z} d d$l~mZmZmZ d d%lmZ d d&lmZ d d'l`mZmZ d d(lmZ d d)lmZ d d*lmZ d d+lmZ d d,lKmZmZ d dlZeZed-Zed.d/d0gid1Zed2Zed3Zed4Zed5Zed6Zerrd dlZd7ejd8< ed9\ZZZZd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZedNdO ZedPdQ ZedRdS ZedTdU ZedVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Zdd 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d0d1 Zd2d3 ZG d4d5 d5Zd6d7 Zd8d9 Zd:d; Z dS (<      )productN)raiseswarns_deprecated_sympy)Sum)FunctionLambdadiff)EFloatIRational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)betabetaincbetainc_regularized)	Heaviside)EierferfcfresnelcfresnelsSiCi)digammagammaloggamma	polygamma)Integral)AndfalseITENotOrtrue)
DotProduct)derive_by_arrayArray)IndexedBaselambdify)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*J d S )N   c                      s    dS )N rv   frv   l/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>P       ztest_no_args.<locals>.<lambda>rE   r   	TypeErrorrv   rv   rw   ry   test_no_argsN   s    
r~   c                  C   s"   t tdt } | ddksJ d S N   rt   rE   xrw   rv   rv   ry   test_single_argT   s    r   c                  C   s(   t ttgtt } | dddks$J d S Nrt   r      )rE   r   yrw   rv   rv   ry   test_list_argsY   s    r   c                     s   t ttggttg  ddgddgks,J tt fdd t ttfttfgttttgddg dksrJ 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g dksJ d S )N[   r   c                      s
    ddS Nrt   r   rv   rv   )f1rv   ry   rz   a   r{   z"test_nested_args.<locals>.<lambda>)      )I      )r   r   r   r   c                      s
    ddS )Nr   r   rv   rv   )f2rv   ry   rz   e   r{   
   4      ,   )r   r   r   r   )rE   wr   r   r}   r   z)f3rv   )r   r   ry   test_nested_args^   s     r   c                      sH   t dd  ddddksJ  ddd	d
ks2J tt fdd d S )Nzx,y,zzz,y,xr   r   rt   rt   r   r         ?       @      @r   r   r   c                      s    dS Nr   rv   rv   rw   rv   ry   rz   p   r{   ztest_str_args.<locals>.<lambda>r|   rv   rv   rw   ry   test_str_argsk   s    
r   c                  C   s@   dd } t tttd| i}|ddks,J |ddks<J d S )Nc                 S   s   dS Nrt   rv   r   rv   rv   ry   rz   t   r{   z&test_own_namespace_1.<locals>.<lambda>r#   皙?rt   d   rE   r   r#   myfuncrx   rv   rv   ry   test_own_namespace_1s   s    r   c                  C   s@   dd } t tttd| i}|ddks,J |ddks<J d S )Nc                 S   s   dS r   rv   r   rv   rv   ry   r   {   s    z$test_own_namespace_2.<locals>.myfuncr#   r   rt   r   r   r   rv   rv   ry   test_own_namespace_2z   s    r   c            	      C   s   t tttt} | ddks J tddd\}}}tt|t||  }t |||g||gtd} | ddd	}tdgd
 }t||D ] \}}t|| | dk sJ qd S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)	rE   r   r#   mathr   absr   rF   zip)	rx   pqrZaeresultsZrefvalsresrefrv   rv   ry   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   rD   rv   rv   rv   ry   rz      r{   ztest_bad_args.<locals>.<lambda>c                   S   s   t ddgS r   rD   rv   rv   rv   ry   rz      r{   )r   r}   rv   rv   rv   ry   test_bad_args   s    r   c                  C   sL   t ttt ddi} | ddks$J t ttt ddi} | ddksHJ d S )Nr   gQ	@r   r                 ?rt   y      ?      ?)rE   r   r   r   rw   rv   rv   ry   
test_atoms   s    r   c                  C   st   dt j_t d} ttttd}|tttks6J d}| |tdd t	t
|    k rj|k spn J d S )N2   40.19866933079506121545941262711838975037020672954020sympyr   rt      )mpmathmpdpsmpfrE   r   r#   r   evalfr
   strsin02rx   precrv   rv   ry   test_sympy_lambda   s    
r   c                     s`   dt j_t d} ttttd d}|  d|    k rD|k sJn J tt fdd d S )Nr   r   r   r   皙?c                      s    t S Nr   rv   rw   rv   ry   rz      r{   z"test_math_lambda.<locals>.<lambda>)	r   r   r   r   rE   r   r#   r   r}   )r   r   rv   rw   ry   test_math_lambda   s    
$r   c            	         s  dt j_t d} ttttd d}|  t d|    k rJ|k sPn J 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\J t|| dk srJ t|| dk sJ d S )Nr   r   r   n5z0.2c                      s    t S r   r   rv   rw   rv   ry   rz      r{   z$test_mpmath_lambda.<locals>.<lambda>z1e-30z1e-45r   r   z1e-60   r   z1e-75r   !   z1e-90(   rt   1z1e-15gLoW5g[ݦe2g#aMR/)r   r   r   r   rE   r   r#   r   r}   r   rP   rG   rH   r   )	r   r   Zref2Zf2af2bZf2cZans2aZans2bZans2crv   rw   ry   test_mpmath_lambda   s0    
*  r   c                  C   sJ   dt j_t d} tt| d}d}| |d|    k r@|k sFn J d S )Nr   r   r   r   r   )r   r   r   r   rE   r   r   rv   rv   ry   test_number_precision   s
    
r   c                   C   s6   dt j_ttdtdd ttdks2J d S )Nr   rv   r   )r   r   r   r   rE   r   r   rv   rv   rv   ry   test_mpmath_precision   s    r   c                  C   s>   ddl m}  |  D ]$\}}|tjv s*J |tjv sJ qd S )Nr   )MATH_TRANSLATIONS)sympy.utilities.lambdifyr   itemsr   __dict__r   )r   symmatrv   rv   ry   test_math_transl   s    r   c                  C   sF   ddl m}  |  D ],\}}|tjv s2|dks2J |tjv sJ qd S )Nr   )MPMATH_TRANSLATIONSr]   )r   r   r   r   r   r   )r   r   r   rv   rv   ry   test_mpmath_transl   s    r   c                  C   sJ   t std ddlm}  |  D ]$\}}|tjv s6J |t jv s J q d S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)rj   rd   r   r   r   r   r   )r   r   Znumprv   rv   ry   test_numpy_transl   s    r   c                  C   sV   t std ddlm}  |  D ]0\}}|tjv s6J |t jv s |t jjv s J q d S )Nscipy not installed.r   )SCIPY_TRANSLATIONS)rk   rd   r   r   r   r   r   special)r   r   Zsciprv   rv   ry   test_scipy_transl   s    r   c                  C   s@   t std ttttd} | ddks,J | ddks<J d S )Nr   rj   ru   rt   )rj   rd   rE   r   r   rw   rv   rv   ry   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}||v r>q0t	|}t
|dr\|jd }nd}|d | }t||| dd}|d	|  d us0J q0d S )
Nnumexpr not installed.r   )NumExprPrinter)wherecomplexcontains_nargsrt   rn   r   rt   )rn   rd   sympy.printing.lambdareprr   r   r   r   Z_numexpr_functionskeysr   hasattrr   rE   )r   Z	blacklistZ	arg_tupler   Zssymnargsargsrx   rv   rv   ry   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)srv   rv   ry   rz   /  r{   z!test_issue_9334.<locals>.<lambda>)keyF)r   dummifyr   r   )rn   rd   rj   r   sortedZfree_symbolsrE   random)exprabfunc_numexprZfoobarrv   rv   ry   test_issue_9334)  s    r   c                  C   s   t std ttttftttdkfttdkft } tt< | ddddksRJ t	| ddddksjJ W d    n1 s~0    Y  d S )Nr   r   ru   rt      *   nan)
rn   rd   rE   r   r   r   r   rf   RuntimeWarningr   )r   rv   rv   ry   test_issue_129845  s    (
r  c                  C   sd   t d\} }| |  }t| |g|}t| |g|g d}|dd|ddksNJ |dddks`J d S )Nzx yr   r      r   rE   )r   r   r   Z
no_modulesZempty_modulesrv   rv   ry   test_empty_modules>  s    
r  c                  C   sr   t ttd } | ddksJ | ddks.J | ddks>J | ddksNJ | ddks^J | ddksnJ d S )	Nr   ru   rt   r   r         @      @r   rw   rv   rv   ry   test_exponentiationH  s    r  c                  C   sj   t ttt} | ddksJ | ddks.J | ddks>J t| dd d	k sVJ | d
dksfJ d S )Nr   r   rt   r   r   r   r   g9v?gMbP?r
  r	  )rE   r   r   r   rw   rv   rv   ry   	test_sqrtR  s    r  c                  C   s   t tgttttgd} | t}d}| |d d   k rD|k sJn J | |d   k rd|k sjn J | d}d}| |d d   k r|k sn J | |d   k r|k sn J d S )Nr   gdy=r   rt   n!	@gh㈵>)rE   r   r!   r#   r   )rx   dr   rv   rv   ry   	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 J d S )Nr   r   giv[?gm[?)
rj   rk   rd   r   r   r   rE   r   r9   r   )rx   lr  rv   rv   ry   test_integralg  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 J d S )Nr   rt   r   r   gX<?g<?)rj   rk   rd   r9   r   r   r   rE   )ir  r  rv   rv   ry   test_double_integralp  s    ,r  c                      sT   t tttftttf  ddddks*J  ddddks>J tt fd	d
 d S )Nr   r   rt   r   r   r   r   r   c                      s    dS r   rv   rv   rw   rv   ry   rz     r{   z$test_vector_simple.<locals>.<lambda>)rE   r   r   r   r   r}   rv   rv   rw   ry   test_vector_simple}  s    r  c                      s\   t tdt dt f tt fdd  ddks8J  ddksHJ  dd	ksXJ d S )
Nru   rt   c                      s    dS r   rv   rv   rw   rv   ry   rz     r{   z+test_vector_discontinuous.<locals>.<lambda>)g      r   r   )            ?r  )r  r  )rE   r   r   ZeroDivisionErrorrv   rv   rw   ry   test_vector_discontinuous  s
    r  c                  C   sV   t tgttttgd} | t}t|d d dk s:J t|d d dk sRJ d S )Nr   r   rt   -C6?)rE   r   r!   r#   r   r   rx   r  rv   rv   ry   test_trig_symbolic  s    r  c                  C   sT   t tgttttg} | d}t|d d dk s8J t|d d dk sPJ d S )Nr  r   rt   r  )rE   r   r!   r#   r   r  rv   rv   ry   test_trig_float  s    r  c                  C   s   t ttd } | ddksJ t tttgtttg} | dddg dksLJ t ttt} | ddksjJ t ttfttt d } | dddksJ d S )	Nr   r   rt   r   r   r   rt   r   r   r   )rE   r   r   r   r   r#   rw   rv   rv   ry   	test_docs  s    r  c                  C   s,   t ttfttdd} | dddks(J d S )Nr   r   r   r   )rE   r   r   r#   rw   rv   rv   ry   	test_math  s    r  c                  C   sP   t tttd } t| dts$J t tttd dd} t| dtsLJ d S )Nr   r   r   )rE   r   r#   
isinstancefloatrw   rv   rv   ry   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shJ ttttf| | gfdd}|ddd||gfksJ 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sJ t|j|dddd|ksJ d S )Nr   rt   r   r   r   r   r   )r]   r   r   r#   r   rE   ZjacobianT)AZsolrx   Jvrv   rv   ry   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sJ G dd dt}|ttdgdgd	ggtt}t d
 t | d	ksJ dddd}ttf dddii|}tt|d}t | d	ks2J t|tt fdd d S )Nr   r   rt   r   r   rj   c                   @   s   e Zd ZdS )ztest_numpy_matrix.<locals>.dotN)__name__
__module____qualname__rv   rv   rv   ry   dot  s   r+  r   )   r   FT)Zallow_unknown_functionsinlineZfully_qualified_modulesZuser_functionsprinterc                      s   t td S )Nr.  r   rv   inpZp3Z	x_dot_mtxrv   ry   rz     r{   z#test_numpy_matrix.<locals>.<lambda>)rj   rd   r]   r   r   r#   r   arrayrE   testingassert_allcloser   ndarrayr   zerosallra   dictr   	Exception)r$  sol_arrrx   r+  Zf_dot1Z	strict_kwp2Zf_dot2rv   r0  ry   test_numpy_matrix  s$    $ 

r<  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   rt   r   rj   r   r   )	rj   rd   r]   r   rE   r#  r3  assert_array_equalr2  r$  rx   rv   rv   ry   test_numpy_transpose  s
    r?  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rt 	dgksn J d S )Nnumpy not installedrj   r   rt   r   r      )
rj   rd   r]   r   r   r   rE   r@   r#  r2  r$  r   r   r   Zf4rv   rv   ry   test_numpy_dotproduct  s     




rC  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   rt   r   ru   rj   r   r   r  )rj   rd   r]   r   rE   r3  r=  r2  r>  rv   rv   ry   test_numpy_inverse  s
    rD  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> t j|ddd| t|dddt j	sJ W d    n1 s0    Y  d S )Nr   r   rt   r   r   ZImmutableDenseMatrixrj   )rj   rd   r]   r   r   r#   r   r2  rE   Zmatrixrf   PendingDeprecationWarningr3  r4  r   )r$  r:  rx   rv   rv   ry   test_numpy_old_matrix  s    $ 
rF  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sNJ d S )Nr   r   rk   r   rt   r   )	rk   rd   r_   r   r   rE   r   rm   Z
coo_matrix)r$  rx   Brv   rv   ry   test_scipy_sparse_matrix  s    
rH  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 t|t d	gt d
gd	ksxJ t	t|t d	gt dgdksJ t jdd d S )Nr   rt   ru   Trj   r   ignore)divider   r  infwarn)
rj   rd   r   r   r   rE   Zseterrr!  r2  r   )r   rx   rv   rv   ry    test_python_div_zero_issue_11306  s    (&*rM  c                  C   s   d dg} t r| d tr$| d | D ]P}tttjt |d}|ddksPJ ttttjt |d}|ddks(J q(tt	t
g| D ]J\}}tt|t|d}|dd	ksJ |d	d	ksJ |d
dksJ qd S )Nr   rj   r   r   r   r  r   ru   rt   y      @      @r   )rj   appendr   rE   r   r   ZOner   r   r   r   )Zmodsmodrx   Zabsfuncr   rv   rv   ry   test_issue9474  s    

rP  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   rt   r      r   r  r  rj   r   rn   绽|=)rtol)rn   rd   rj   r   r   r   r   ZlinspacerE   r3  r4  )r   r   ZxnZynZfv_exactZfv_numpyZ
fv_numexprrv   rv   ry   test_issue_9871/  s    rT  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 g d	 tttttd
kft td
k f}t j|t g dt dt j	dg d S )Nr   r   r   r   )r   Trj   r   r   )
r   rt   r   r   r   r   $   1   @   Q   r   ru   r   rt   rt   )
rj   rd   r   r   rE   r3  r=  Zaranger2  r  )piecesrx   Z
nodef_funcrv   rv   ry   test_numpy_piecewiseB  s     "r[  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   rj   r   TF)rj   rd   rE   r   r   r:   r   r>   r=   r2  r3  r=  )Zand_funcZ
and_func_3Zor_funcZ	or_func_3Znot_funcarr1arr2Zarr3rv   rv   ry   test_numpy_logical_opsO  s      r^  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   rt   r   rj   r   r  r   r   g      ?      @r  g      ?g     R@g     ]@      )rj   rd   r]   r   r   r   r   rE   r3  r=  r2  )ZxmatZymatZmat_funcrx   rv   rv   ry   test_numpy_matmula  s    $$rb  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 || |||| ||sJ d S )	Nr   r   r      r   rj   r   rn   )rj   rd   rn   r   randnr#   r   r!   r   r%   r   r   r    r   r   r   r   rE   allclose)r   r   cr   ZnpfuncZnefuncrv   rv   ry   test_numpy_numexpro  s    6rg  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  stJ ttddd }tt	tf|t	td
d}t 
|| |d|  | d	 sJ d S )Nr   r   r   r   ufevalc                 S   s   |d d S r   rv   r   r   rv   rv   ry   rz     r{   z,test_numexpr_userfunctions.<locals>.<lambda>rt   rn   r   c                 S   s   d|  | d S r   rv   rj  rv   rv   ry   rz     r{   )rj   rd   rn   r   rd  typer   classmethodrE   r   re  rb   r   )r   r   rh  funcrv   rv   ry   test_numexpr_userfunctions}  s    rn  c                  C   s   t std ttttdtd  } tt| dd}t jj	 8}t j
dt jd}||j|dd	ksjJ W d    n1 s~0    Y  d S )
Ntensorflow not installed.rt   r   ro   r   r   Zdtypesessionr  )ro   rd   r   r#   r   r   rE   compatv1Sessionconstantfloat32ri  r   rm  r   r   rv   rv   ry   test_tensorflow_basic_math  s    ry  c                  C   s   t std ttttdtd  } tt| dd}t jj	 @}t jjj
t jd}||j||didd	ksrJ W d    n1 s0    Y  d S )
Nro  rt   r   ro   r   rp  r   rr  Z	feed_dictr  )ro   rd   r   r#   r   r   rE   rs  rt  ru  placeholderrw  ri  rx  rv   rv   ry   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	 J}t j
dt jd}||j ||j||didd	ks|J W d    n1 s0    Y  d S )
Nro  rt   r   ro   r   r   rp  rz  r  )ro   rd   r   r#   r   r   rE   rs  rt  ru  Variablerw  runZinitializerri  rx  rv   rv   ry   test_tensorflow_variables  s    r  c                  C   s|   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sZJ W d    n1 sn0    Y  d S )Nro  ro   r   FTrq  )ro   rd   r=   r:   r>   r   r   rE   rs  rt  ru  ri  r   rm  r   rv   rv   ry   "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 X}|dj	|ddksfJ |dj	|ddks~J |dj	|ddksJ W d    n1 s0    Y  d S )Nro  r   ru   rt   ro   r   rq  )
ro   rd   r   r   r   rE   rs  rt  ru  ri  r  rv   rv   ry   test_tensorflow_piecewise  s    &r  c                  C   st   t std ttt td } tt| dd}t jj (}|dj|ddksRJ W d    n1 sf0    Y  d S )Nro  r   ro   r   r  rq  r   )	ro   rd   r   r   rE   rs  rt  ru  ri  r  rv   rv   ry   test_tensorflow_multi_max  s    r  c                  C   st   t std ttt td } tt| dd}t jj (}|dj|ddksRJ W d    n1 sf0    Y  d S )Nro  r   ro   r   r  rq  )	ro   rd   r   r   rE   rs  rt  ru  ri  r  rv   rv   ry   test_tensorflow_multi_min  s    r  c                  C   sj   t std tdk} tt| dd}t jj (}|dj|ddksHJ W d    n1 s\0    Y  d S )Nro  r   ro   r   rt   rq  T)ro   rd   r   rE   rs  rt  ru  ri  r  rv   rv   ry   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sJ ||j|ddksJ ||j|d}td }t|| dk sJ ||j|d}td }t|| dk sJ W d    n1 s0    Y  d S )	Nztensorflow not installedro   r   y      ?       @rq  rt   r   gư>)ro   rd   rE   r   rQ   rR   r   rS   rs  rt  ru  rv  ri  r   r   )func1func2Zfunc3Zfunc4r   r   Ztensorflow_resultsympy_resultrv   rv   ry   test_tensorflow_complexes  s     
r  c                  C   s|   t std tttggtt t d} t jj 6}| t ddg}|j	|ddksZJ W d    n1 sn0    Y  d S )Nro  ro   r   r   rq  g      @)
ro   rd   rE   r   r   rs  rt  ru  rv  ri  )rx   r   Zfcallrv   rv   ry   test_tensorflow_array_arg  s    r  c                  C   s&   t ttt } | ttt ks"J d S r   rE   r   r   r   rw   rv   rv   ry   test_sym_single_arg  s    r  c                  C   s0   t ttgtt t } | dddt ks,J d S r   r  rw   rv   rv   ry   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\J |t tt	kstJ d S )Nr   r   r   )
r   r   r   rE   r9   r   r   Zdoitr   r   )rx   r  rv   rv   ry   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sXJ tt|t|dfd	}|d
dks~J |d
dksJ d S )Nrx   c                 S   s   dS )Nfirst frv   r   rv   rv   ry   rz   $  r{   z&test_namespace_order.<locals>.<lambda>c                 S   s   dS )Nzsecond frv   r   rv   rv   ry   rz   %  r{   c                 S   s   dS )N
function grv   r   rv   rv   ry   rz   &  r{   )rx   gr  r   r   rt   r  r  )r   r   rE   r   )Zn1Zn2rx   r  Zif1Zif2rv   rv   ry   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sTJ |ddksdJ |dtdkszJ td}t|drJ t |d	d }t|dsJ t dd
d t	t
 fdd d S )Nrx   c                 S   s   d|  S Nr   rv   r   rv   rv   ry   rz   5  r{   ztest_imps.<locals>.<lambda>c                 S   s
   t | S r   )r   r   r   rv   rv   ry   rz   6  r{   r   r   r   Z_imp_c                 S   s   d|  S r  rv   r   rv   rv   ry   rz   ?  r{   c                 S   s   | d S )Ne   rv   r   rv   rv   ry   rz   B  r{   c                      s   t t tS r   r   rv   rx   r   rv   ry   rz   C  r{   )rb   rE   r   r   r   r   r   r   r   r   
ValueError)r  l1l2rm  Zmy_frv   r  ry   	test_imps2  s    
r  c                     sJ   t dttfD ]6\}   fdd}td|}|| }||| ksJ qd S )N)r   r   r   r   c                    s   | dkr dS )Nr   rt   rv   )r   Zerror_classrv   ry   r   P  s    z test_imps_errors.<locals>.myfuncrx   )r   r}   r  rb   )valr   rx   r   rv   r  ry   test_imps_errorsF  s
    
r  c                   C   s   t tdd  d S )Nc                   S   s   t tdd S )Nc                 S   s   | S r   rv   r   rv   rv   ry   rz   [  r{   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>)rb   r#   rv   rv   rv   ry   rz   [  r{   z&test_imps_wrong_args.<locals>.<lambda>)r   r  rv   rv   rv   ry   test_imps_wrong_argsZ  s    r  c                  C   s  t j} tt| tddks J ttd| t ddks>J tttft| t dddksbJ tddd } tt| tddksJ ttd| t ddksJ tttft| t dddksJ tt| ttf}|d	d
ksJ tt| ttg}|d	dd	gksJ tt| t| ttfg}|d	dd
gksFJ tt| tti}|d	dd	iksnJ tt| tti}|d	dd	iksJ ttt| ti}|d	d	diksJ ddd i}tt| t|}|d	dksJ tt| t|dd}|d	dksJ d S )Nr   rt   r   rx   c                 S   s   | d S )Nr   rv   r   rv   rv   ry   rz   f  r{   z$test_lambdify_imps.<locals>.<lambda>r   r  r   )g   r   r  c                 S   s   | d S )Nc   rv   r   rv   rv   ry   rz   x  r{   F)Zuse_impsf   )r   r!   rE   r   r   rb   )rx   lamr  rv   rv   ry   test_lambdify_imps^  s2    $$r  c                     s  t dtd tdt d} d d   }t f|}|dddks`J ttdtd  }| d d  ksJ t| fd|   }|ddd	ksJ tt fd
d tt fdd tt fdd d S )NtFGz\alphar   r   	   rt   r   c                      s&   t     d S )Nr   rD   rv   r  r  r  rv   ry   rz     r{   z$test_dummification.<locals>.<lambda>c                      s   t d  d  d S )Nr   r   rD   rv   r  r  rv   ry   rz     r{   c                      s   t d  d  d S )Nr   r   r   rD   rv   r  rv   ry   rz     r{   )r   r   rE   r#   r   SyntaxError)alphaZ	some_exprr  rv   r  ry   test_dummification  s     r  c                  C   sJ   t ddd} t| | }|ddks(J t| | dd}|ddksFJ d S )Nz{v}r   rt   Tr   )r   r^   rE   )Zcurlyvr  rv   rv   ry   test_curly_matrix_symbol  s
    
r  c                  C   s.   t d} | d }t| |}|ddks*J d S )Nifr         @r   r  )Z	python_ifr   rx   rv   rv   ry   test_python_keywords  s    
r  c                  C   s   t ttttftt t t } d }| j d t| |ksDJ td}t |t	|} d }| j d t| |ksJ 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 +...)
rE   r   r   r   r   
splitlines__doc__lenr   sum)rm  r   Zsymsrv   rv   ry   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	| |sJ t	| |sJ t	| |sJ 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 J d S )Nr   IntervalPrinterc                    s      | S r   )doprint)r   r  rv   ry   intervalrepr  s    z+test_special_printers.<locals>.intervalreprr   r   rv   r   )r   r/  rt   r   g?   )r   r  r   r   HalfrE   rk  r   mpir   r   r7   )r  r   Zfunc0r  r  r  Zexp1rI   Zexp3Zexp_lsZsol1Zsol2Zsol3Zsol_lsrv   r  ry   test_special_printers  s&    




r  c                   C   s,   t g t du sJ t g t du s(J d S )NTF)rE   r?   r;   rv   rv   rv   ry   test_true_false  s    r  c                   C   sv   t tttfftt dddks$J t ttttffftt t t dddksTJ t ttd ddddksrJ d S )	Nrt   r   r   )r   )r   r   r   Fr  r   )rE   r   r   r   r   rv   rv   rv   ry   test_issue_2790  s    $0r  c                  C   s.   t ddd } | | d tdks*J d S )Nrx   c                 S   s   | d S r  rv   r   rv   rv   ry   rz     r{   z"test_issue_12092.<locals>.<lambda>r   rQ  )rb   r   r
   rw   rv   rv   ry   test_issue_12092  s    r  c                  C   sF   G dd dt j} | d}d| }t |}|dddksBJ 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   )selfr/  rv   rv   ry   	_sympystr  s    z,test_issue_14911.<locals>.Variable._sympystrN)r(  r)  r*  r  Z_lambdacodeZ
_numpycoderv   rv   rv   ry   r}    s   r}  r   r     z2*x)r   ZSymbolr`   r  replace)r}  r   r   coderv   rv   ry   test_issue_14911  s
    r  c                   C   sT   t tttfttttddddks(J t tttfttttddddksPJ d S )NTr   r   F)rE   r   r   r   r<   rv   rv   rv   ry   test_ITE  s    (r  c                   C   sT   t tttfttttddddks(J t tttfttttddddksPJ d S r   )rE   r   r   r   r   r   rv   rv   rv   ry   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shJ d S )
Nr@  r   zi jrt   r   r   r   r   r   )	rj   rd   rC   r   r2  rE   r   r   r   )r   r  jr   rv   rv   ry   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sNJ |tdd ksdJ d S )Nr   rt   r   )rE   r   r   rh   ri   r   )expr1Zexpr2rv   rv   ry   test_issue_12173  s    r  c                  C   s>   t std tttt} t| dtd  dk s:J d S )Nr@  rt   r   )rj   rd   rE   r   r$   r   nrw   rv   rv   ry   test_issue_13642  s    r  c                  C   s4   t tttd} t| dtd  dk s0J d S )Nr   rt   r   )rE   r   r$   r   r  rw   rv   rv   ry   test_sinc_mpmath$  s    r  c                  C   s   t  } t| | d dd}|ddks(J t| | d }|ddksFJ t d}t||d }|ddkslJ t|gg|d }|dgdksJ d S )Nrt   Fr  r   r   r   r   rE   )d1r   Zf1bZd2r   r   rv   rv   ry   test_lambdify_dummy_arg)  s    r  c                  C   s:   t  } tt| }t| |g| | }|dddks6J d S )Nr   rt   r   )r   r   r   rE   )r  Zdsymrx   rv   rv   ry   %test_lambdify_mixed_symbol_dummy_args6  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@J d S )Nr@  rj   r   r   r   )rj   rd   rE   r   r   r2  rw   rv   rv   ry   test_numpy_array_arg>  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rt|}|tkrt|}|tkrt|}|| }||}|t	kr||d }|t
kr0||d }t||| ddt|  k sVJ t||| ddt|  k sJ qqrt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v r2t|}|t krHtt'|}||| }t|||| ddt|  k s~J t|||||| ddt|  k sJ qqd S )Nscipy not installedr   rk   r      r   r   r   rt   gvIh%<=)(rk   rd   r.   r/   r0   r   r6   r7   r5   r3   r4   r   ZexpiZgammalnpsiZsicirj   r   seedr   rE   r   rangeuniformr   r   r   r   r'   r)   r&   r(   r8   ZpochZjvZyvZivkvr   int)Zsingle_arg_sympy_fnsZsingle_arg_scipy_fnssympy_fnZscipy_fnrx   r  tvr  scipy_resultZdouble_arg_sympy_fnsZdouble_arg_scipy_fnsZtv1Ztv2rv   rv   ry   test_scipy_fnsH  sX     




&( 

(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 ]R\}}| 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rt|
}
|tkr"tjdd}
ttjjd|dd
}	|f|	 |
f }|| }||  }ddt|  }t|| }z||k srJ W q ty   t|jt|t|t|t|||dY q0 qqbd S )Nr  r   zn k a brt   r   r   zThe 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  ru   &.>)rm  r   r  r  r   Ztol)rk   rd   rj   r   r  r   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r   rE   r  randinttupler  r   r   r   r}   AssertionErrorformatrepr)paramsZpolysmsgr  Z
num_paramsr   rx   _tnZtparamsr  valsr  r  atolr   rv   rv   ry   test_scipy_polys  s\     

r  c                  C   s$   t ttd } dt| v s J d S )Nr   zx**2)rE   r   inspect	getsourcerw   rv   rv   ry   test_lambdify_inspect  s    r  c                  C   s   t  t   } }t| |g| d|did}|dddddks>J t| |g|| fd}|dddksdJ tg d}| dks|J t| |g|| gd}|ddddgksJ d S )Nr   r   r   )r   r   )r   r   r   r  )r   r   r   r   r   r   rv   rv   ry   test_issue_14941  s    
r  c                      s  t dt   t f  dddks4J tt f  dddksXJ tt fdd tt f  dd	dddksJ tt f  dd	tddtj	ksJ td
 ddksJ ttd
 dd	ddksJ d S )Nrx   r   r   r  r   c                      s   t t f  ddS )NFr  )ri  rc   rv   rx   Zfxrv   ry   rz     s    z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>Tr  rt   )   r   )
r   r   r   rE   ri  rc   r   r  r   r  rv   rv   r  ry   (test_lambdify_Derivative_arg_issue_16468  s     $(.r  c                  C   sP   t tgtt} d}| ||jks(J t tgtt}|||jksLJ d S )Ny      @       @)rE   r   r   rQ   r   rR   imag)Zf_rer  Zf_imrv   rv   ry   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sbJ t| | d }t ||t ddgddggsJ d S )Nr@  r$  r   rt   r   r   ru   g       r         ?r  %   6   rX  v   )rj   rd   r^   r2  rE   re  )r$  ZA0rx   r  rv   rv   ry   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 sJ d S )Nr  r   )r  r  r   Z)hydrogen)rt   r   r   rt   r   )rk   rd   Z	sympy.abcr  r  r   r   Zsympy.physicsr  ZR_nlr   rE   r   )r  r  r   r   r  nvlvrvZZvZsympy_valuerx   Zscipy_valuerv   rv   ry   test_issue_15654  s    r  c            	      C   sP  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 g dg dg dgt jd| d| d| gd| d| d| gd| d| d| ggtdsJ t |t g dg dg dgt j|d d| d d| d g|d d| d d| d g|d d| d d| d ggtdsJ t |t g dg dg dgt g dg dg dgsJ t |t g dg dgt g dg dg dgt g dg dg dg dgt g dg dgsLJ d S )Nr@  r$  r   rG  r   Cr   Dr   kr   r   rp  )r   r   r   )rt   r   r   r   )rt   r   r   r   r   )x      ih  i  iX  )rj   rd   r^   r   rE   array_equalr2  object)	r$  rG  r  r  r  rx   r  hr  rv   rv   ry   test_issue_15827  s>    "H
"<
"
4 
r  c                  C   sF   t std td} dd }t| || dd}|dt jjksBJ d S )Nr  r   c                 S   s   t j| d  S r  )r   ZGoldenRatior   rv   rv   ry   rz   #  r{   z"test_issue_16930.<locals>.<lambda>rk   r   rt   )rk   rd   r   rE   	constantsZgolden_ratio)r   rx   f_rv   rv   ry   test_issue_16930  s    r  c                  C   sH   t std td} t| gt| ddd}|dtddksDJ d S )Nr  r   ru   rk   r   r   )rk   rd   r   rE   r   ZLambertWr   Zlambertw)r   r  rv   rv   ry   test_issue_17898'  s
    r  c                  C   s   t std tttt} ttttd}| g d}|g d}t|d  dk s^J t|d d  dk szJ t|d d  dk sJ t|d  dk sJ t|d d  dk sJ t|d d  dk sJ d S )Nr@  rt   rY  r   r   r  r   )rj   rd   rE   r   r   r-   r   r  )r   r   Zres1Zres2rv   rv   ry   test_issue_13167_21411.  s    r  c                  C   s"   t tt} | dtdksJ d S )N   r   )rE   r   r	   r   rw   rv   rv   ry   test_single_e<  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sPJ t| t}t| tf|dd}ttdd|dd dksJ d S )Nr  r   rk   r   rt   r   rR  )rk   rd   r   ri   r   rE   r   rh   )r   r   r  r   rv   rv   ry   test_issue_16536@  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|J d S Nr@  zx1 x2rj   r   rt   r   rR  )rj   rd   r   r   r   Zeror   rA   rE   r   subsvaluesr7  )x1x2rx   r  r  pointrv   rv   ry   test_issue_22726N  s    r  c                  C   sj   t std td\} }tt| |}t| |f|dd}| d|di}t||||   dksfJ d S r  )	rj   rd   r   r-   r   rE   r   r  r  )r  r  rx   r  r  rv   rv   ry   test_issue_22739Z  s    r  c                  C   s   t std td\} }| tt|d t|  }t| |g|d}| d|di}t||||	   dksrJ t| |g|}t||||	   dksJ d S )Nr@  za tr   rj   r   rR  )
rj   rd   r   r   r"   r!   rE   r   r  r  )r   r  r   r  r  rv   rv   ry   test_issue_22992e  s    "r   c                  C   s@   t std tttd g} tt| d}|djt jks<J d S )Nr@  r   rj   rt   )rj   rd   rB   r   rE   	__class__r5  )r   rx   rv   rv   ry   test_issue_19764w  s
    r"  c                  C   s6   t std ttttd} t | ddks2J d S )Nznumba not installedrj   rt   g	T?)rr   rd   rE   r   r#   Zjitrw   rv   rv   ry   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sTJ ttd|d dkspJ d S )Nr  rk   r   ?rR  )rk   rd   r1   r   r2   rE   r   )r   r   ZF1ZF2rv   rv   ry   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sHJ d S )Nr  rk   r   r$  ffffff@rR  )rk   rd   r*   r   r   rE   r   rx   r  rv   rv   ry   test_beta_scipy  s
    
r(  c                  C   s@   t tt} tttf| dd}tt dd|dd dks<J d S )Nr   r   r$  r&  rR  )r*   r   r   rE   r   r'  rv   rv   ry   test_beta_math  s    
r)  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sXJ d S )	Nr  rk   r   gffffff?g@r   r  rR  )	rk   rd   r+   r   r   r   r   rE   r   r'  rv   rv   ry   test_betainc_scipy  s
    r*  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sXJ d S )	Nr  rk   r   r   r_  r   rt   rR  )	rk   rd   r,   r   r   r   r   rE   r   r'  rv   rv   ry   test_betainc_regularized_scipy  s
    r+  c            	      C   s   t std tttttttt	g} | D ]}d|j
v rJ|tt}ttf}d}n&d|j
v rh|t}tf}d}ntdt||}|| }|tt|| }t |t|s$J q$tttft	tttt}td|dd	 d
 dk sJ d S )Nr@  r   )333333?g?rt   )r,  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)rj   rd   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   r   NotImplementedErrorrE   r  r8  r   r   re  r!  r   )	funcsrm  r   r   num_argsrx   result	referenceZlae2rv   rv   ry   test_numpy_special_math  s&    



r2  c                  C   s   t std ttfttdd} t| dd dk s8J tttt j	j	
dd d d	k}|rtttftttdd}t|d
dd dk sJ d S )Nr  rk   r   g#B;gWw'&l7gN~h.r   )rt   r   g333333?r  g-=gFFg<)rk   rd   rE   r   rO   r   r  mapr  versionsplitr   rP   )Zcm1Zhave_scipy_1_10plusZcm2rv   rv   ry   test_scipy_special_math  s    $r7  c                  C   s4   t std ttfttdd} | ddks0J d S )Nr  rk   r   rt   r  )rk   rd   rE   r   r   )Zbernrv   rv   ry   test_scipy_bernoulli  s    r8  c                  C   s^   t std ttfttdd} | ddks0J tttftttdd}|dddksZJ d S )Nr  rk   r   r   r  g      ?)rk   rd   rE   r   r   r   )ZhnZhnmrv   rv   ry   test_scipy_harmonic  s    r9  c                  C   s\   t std tttggtt t d} | t ddg}|dksDJ dtt|v sXJ d S )NCuPy not installedrp   r   r   r   rp   rd   rE   r   r   r2  r   rk  rx   r0  rv   rv   ry   test_cupy_array_arg  s    r=  c                  C   s\   t std tttggtt t d} | t ddg}|dksDJ dtt|v sXJ d S )Nr:  rj   r   r   r   rp   r;  r<  rv   rv   ry   test_cupy_array_arg_using_numpy  s    r>  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rt 	dgksn J d S )Nr:  rp   r   rt   r   r   rA  )
rp   rd   r]   r   r   r   rE   r@   r#  r2  rB  rv   rv   ry   test_cupy_dotproduct	  s     




r?  c                  C   s^   t std tttggtt t d} | t jddg}|dksFJ dtt|v sZJ d S )NJAX not installedrq   r   r   r   	rq   rd   rE   r   r   rj   r2  r   rk  r<  rv   rv   ry   test_jax_array_arg  s    rB  c                  C   s^   t std tttggtt t d} | t jddg}|dksFJ dtt|v sZJ d S )Nr@  rj   r   r   r   rq   rA  r<  rv   rv   ry   test_jax_array_arg_using_numpy$  s    rC  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rt j	
dgksn J d S )Nr@  rq   r   rt   r   r   rA  )rq   rd   r]   r   r   r   rE   r@   r#  rj   r2  rB  rv   rv   ry   test_jax_dotproduct.  s     



rD  c                  C   s  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 ]L}ts|j	rqdd|| fD ]&}|j
|d}||j }|| qʐqd S )Nc                 S   s   d| fS )Nrv   rv   )exprsrv   rv   ry   	dummy_cse@  s    z$test_lambdify_cse.<locals>.dummy_csec                 S   s   ddl m}m} || |dS )Nr   )cse_release_variablescse)postprocess)Zsympy.simplify.cse_mainrG  rH  )rE  rG  rH  rv   rv   ry   minmemC  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 rv   )r  r   ).0eZ	subs_dictrv   ry   
<listcomp>M  r{   z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r   rE  r/  r8  r   r   rK  )r  r   rE  r/  rK  rv   rN  ry   __init__H  s    z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|dS )NrH  )rE   r   rE  )r  rH  rv   rv   ry   rE   P  s    z(test_lambdify_cse.<locals>.Case.lambdifyr   )abstolreltolc                   s   | j r.t fddt| jD s*J d S t| jD ]B\}}t| | }|dkrf| k szJ q8|t| k s8J q8d S )Nc                 3   s2   | ]*\}}t j| t j|td  dV  qdS )rp  )rS  r  N)rj   re  Zasarrayr!  )rL  r  r   rR  rS  r0  rv   ry   	<genexpr>U  s   zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )rK  r7  	enumerater   r   )r  r0  rR  rS  r  r   Zabs_errrv   rT  ry   assertAllCloseS  s    z.test_lambdify_cse.<locals>.Case.assertAllCloseN)r(  r)  r*  rP  rE   rW  rv   rv   rv   ry   CaseG  s   rX  r   )r   r   r  )r   rE  r/  rt   )r   r   r  )r   r   r,  r   )r   r   r   T)r   rE  r/  rK  )rt   r   FrQ  )r   r   r   r   r-   r$   r]   r#   rj   rK  rE   r/  rW  )rF  rJ  rX  ZcasesZcaserH  rx   r0  rv   rv   ry   test_lambdify_cse?  sj    






	"
4/
rY  c                   C   s<   t  " ttthtt  W d    n1 s.0    Y  d S r   )r   rE   r   r   rv   rv   rv   ry   test_deprecated_set  s    rZ  c                  C   s   t std tddd} t| | j|  d}|t g ddksDJ |t g ddks^J t| | | j d}|t g ddksJ |t g ddksJ t| | | j |  d}t dgd	gdgg}t dgd
gdgg}t |||sJ d S )Nr   Xr   rt   rj   r   rA  r  r      r   )rj   rd   r^   rE   r#  r2  r  )r[  rx   r\  r]  rv   rv   ry   test_issue_13881  s    r]  c                  C   sx   t dt} t dt}t| d |d  | d ||  d    }| }t| |ftf|dd}|dd	}|d
kstJ d S )Nr   r   r   r   r   TrQ  )r   r   r   g     r@)r   r   r   expandrE   )rx   r  r   Z	eval_exprZansrv   rv   ry   test_23536_lambdify_cse_dummy  s    (
r_  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  rb  rc  rv   rv   ry   rP    s    z"LambdifyDocstringTestCase.__init__c                 C   s   d}| j s| jS |S )Nz!EXPRESSION REDACTED DUE TO LENGTH)rc  EXPR)r  Zexpr_redacted_msgrv   rv   ry   expected_expr  s    z'LambdifyDocstringTestCase.expected_exprc                 C   s   d}| j s| jS |S )Nz"SOURCE CODE REDACTED DUE TO LENGTH)rc  SRC)r  Zsrc_redacted_msgrv   rv   ry   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:

)	SIGNATUREre  rg  )r  expected_docstringrv   rv   ry   ri    s    	z,LambdifyDocstringTestCase.expected_docstringc                 C   s
   t | jS r   )r  ri  r  rv   rv   ry   __len__  s    z!LambdifyDocstringTestCase.__len__c                 C   s   | j j d| j d| j dS )Nz(docstring_limit=z, expected_redacted=))r!  r(  rb  rc  rj  rv   rv   ry   __repr__  s    
z"LambdifyDocstringTestCase.__repr__)r(  r)  r*  rh  rd  rf  rP  propertyre  rg  ri  rk  rm  rv   rv   rv   ry   r`    s   


r`  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sRJ 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r(  r)  r*  rh  rd  rf  rv   rv   rv   ry   SimpleSymbolTestCase  s   rp  r   Fra  r   rt   r   Tru   r   rb  )r`  r   rE   rb  r  ri  )rp  r   
test_cases	test_caselambdified_exprrv   rv   ry   0test_lambdify_docstring_size_limit_simple_symbol  s     




ru  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svJ 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 +...zdef _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]
Nro  rv   rv   rv   ry   ExprListTestCase  s
   rw  rv  r   Fra     r   Tr   ru   r   rq  )r`  r   r^  rE   rb  r  ri  )rw  r   r   r   r   rr  rs  rt  rv   rv   ry   .test_lambdify_docstring_size_limit_nested_expr  s"    




ry  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sJ qd S )Nc                   @   s   e Zd ZdZdZdZdS )zAtest_lambdify_docstring_size_limit_matrix.<locals>.MatrixTestCaserv  zNMatrix([[0, x], [x + y + z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z...zdef _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]])
Nro  rv   rv   rv   ry   MatrixTestCase(  s
   rz  rv  r   Fra  rx  r   Tr   ru   r   rq  )
r`  r   r]   r   r  r^  rE   rb  r  ri  )rz  r   r   r   r   rr  rs  rt  rv   rv   ry   )test_lambdify_docstring_size_limit_matrix&  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   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)   Z&sympy.functions.special.beta_functionsr*   r+   r,   Z'sympy.functions.special.delta_functionsr-   Z'sympy.functions.special.error_functionsr.   r/   r0   r1   r2   r3   r4   Z'sympy.functions.special.gamma_functionsr5   r6   r7   r8   Zsympy.integrals.integralsr9   Zsympy.logic.boolalgr:   r;   r<   r=   r>   r?   Z%sympy.matrices.expressions.dotproductr@   Zsympy.tensor.arrayrA   rB   Zsympy.tensor.indexedrC   r   rE   Zsympy.core.exprrF   Zsympy.codegen.cfunctionsrG   rH   rI   rJ   rK   rL   Zsympy.codegen.numpy_nodesrM   rN   Zsympy.codegen.scipy_nodesrO   rP   rQ   rR   rS   Z#sympy.functions.special.polynomialsrT   rU   rV   rW   rX   rY   rZ   r[   r\   Zsympy.matricesr]   r^   r_   r   r`   Zsympy.printing.numpyra   rb   rc   rd   Zsympy.utilities.decoratorre   Zsympy.utilities.exceptionsrf   Zsympy.externalrg   rh   ri   r   ZMutableDenseMatrixrj   rk   rn   ro   rp   rq   rr   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<  r?  rC  rD  rF  rH  rM  rP  rT  r[  r^  rb  rg  rn  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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+  r2  r7  r8  r9  r=  r>  r?  rB  rC  rD  rY  rZ  r]  r_  r`  ru  ry  r{  rv   rv   rv   ry   <module>   s    $  ,






	

		

			



"	
 
9<	
	

	






Y+"