U
    	-e                     @   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*td S )N   c                      s    dS )N rv   frv   d/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>P       ztest_no_args.<locals>.<lambda>)rE   r   	TypeErrorAssertionErrorrv   rv   rw   ry   test_no_argsN   s    
r~   c                  C   s"   t tdt } | ddkstd S N   rt   rE   xr}   rw   rv   rv   ry   test_single_argT   s    r   c                  C   s(   t ttgtt } | dddks$td S Nrt   r      )rE   r   yr}   rw   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,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st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      ,   )rE   wr   r}   r   r|   r   z)f3rv   )r   r   ry   test_nested_args^   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   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>)rE   r}   r   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,t|ddks<t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#   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,t|ddks<t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 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 stqd S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)
rE   r   r#   mathr}   r   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$tt ttt ddi} | ddksHtd S )Nr   gQ	@r   r                 ?rt   y      ?      ?)rE   r   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s6td}| |tdd	 t
t|    k rj|k spn td S )N2   40.19866933079506121545941262711838975037020672954020sympyr   rt      )mpmathmpdpsmpfrE   r   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 t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   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 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 st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|   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 td S )Nr   r   r   r   r   )r   r   r   r   rE   r   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s2td S )Nr   rv   r   )r   r   r   r   rE   r   r   r}   rv   rv   rv   ry   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matrv   rv   ry   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_TRANSLATIONSr]   )r   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ks6t|t jks tq d S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)rj   rd   r   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ks6t|t jks |t jjks tq d S )Nscipy not installed.r   )SCIPY_TRANSLATIONS)	rk   rd   r   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,t| ddks<td S )Nr   rj   ru   rt   )rj   rd   rE   r   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}||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_nargsrt   rn   r   rt   )rn   rd   sympy.printing.lambdareprr   r   r   r   Z_numexpr_functionskeysr   hasattrr   rE   r}   )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   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   ru   rt      *   nan)rn   rd   rE   r   r   r   r   rf   RuntimeWarningr}   r   )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sNt|dddks`td S )Nzx yr   r      r   rE   r}   )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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   ru   rt   r   r         @      @r   rw   rv   rv   ry   test_exponentiationH  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   rt   r   r   r   r   g9v?gMbP?r
  r	  )rE   r   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 t| |d   k rd|k sjn t| d}d}| |d d   k r|k sn t| |d   k r|k sn td S )Nr   gdy=r   rt   n!	@gh㈵>)rE   r   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 t
d S )Nr   r   giv[?gm[?)rj   rk   rd   r   r   r   rE   r   r9   r   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 td S )Nr   rt   r   r   gX<?g<?)	rj   rk   rd   r9   r   r   r   rE   r}   )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*t ddddks>t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   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s8t ddksHt dd	ksXt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   ZeroDivisionErrorr}   rv   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:tt|d d dk sRtd S )Nr   r   rt   -C6?)rE   r   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 s8tt|d d dk sPtd S )Nr  r   rt   r  )rE   r   r!   r#   r   r}   r  rv   rv   ry   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std S )Nr   r   rt   r   r   r   r   )rE   r   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(td S )Nr   r   r   r   )rE   r   r   r#   r}   rw   rv   rv   ry   	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   )rE   r   r#   
isinstancefloatr}   rw   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shtttttf| | gfdd}|ddd||gfkst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stt|j|dddd|kstd S )Nr   rt   r   r   r   r   r   )	r]   r   r   r#   r   rE   r}   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stG dd dt}|ttdgdgd	ggtt}t d
 t | d	kst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   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-  rE   r   rv   Z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}   r   Z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"  r2  assert_array_equalr1  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 t
d S )Nnumpy not installedrj   r   rt   r   r      )rj   rd   r]   r   r   r   rE   r@   r"  r1  r}   r#  r   r   r   Zf4rv   rv   ry   test_numpy_dotproduct  s     




rA  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   r2  r;  r1  r<  rv   rv   ry   test_numpy_inverse  s
    rB  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	stW 5 Q R X d S )Nr   r   rt   r   r   ZImmutableDenseMatrixrj   )rj   rd   r]   r   r   r#   r   r1  rE   matrixrf   PendingDeprecationWarningr2  r3  r  r}   )r#  r8  rx   rv   rv   ry   test_numpy_old_matrix  s    $ 
rE  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   rk   r   rt   r   )
rk   rd   r_   r   r   rE   r  rm   Z
coo_matrixr}   )r#  rx   Brv   rv   ry   test_scipy_sparse_matrix  s    
rG  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sxt	t
t|t d	gt dgdkst	t jdd d S )Nr   rt   ru   Trj   r   ignore)divider   r  infwarn)rj   rd   r   r   r   rE   Zseterrr   r1  r}   r   )r   rx   rv   rv   ry    test_python_div_zero_issue_11306  s    (&*rL  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st|d	d	kst|d
dkstqd S )Nr   rj   r   r   r   r  r   ru   rt   y      @      @r   )rj   appendr   rE   r   r   ZOner}   r   r   r   r   )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   r2  r3  )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 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   Trj   r   r   r   rt   $   1   @   Q   ru   )
rj   rd   r   r   rE   r2  r;  Zaranger1  r  )piecesrx   Z
nodef_funcrv   rv   ry   test_numpy_piecewiseB  s     "rZ  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=   r1  r2  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   r2  r;  r1  )ZxmatZymatZmat_funcrx   rv   rv   ry   test_numpy_matmula  s    $$ra  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 || |||| ||st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   allcloser}   )r   r   cr   ZnpfuncZnefuncrv   rv   ry   test_numpy_numexpro  s    6rf  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	 st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   ri  rv   rv   ry   rz     r{   )rj   rd   rn   r   rc  typer   classmethodrE   r   rd  r}   rb   r   )r   r   rg  funcrv   rv   ry   test_numexpr_userfunctions}  s    rm  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.rt   r   ro   r   r   Zdtypesessionr  )ro   rd   r   r#   r   r   rE   compatv1Sessionconstantfloat32rh  r}   r   rl  r   r   rv   rv   ry   test_tensorflow_basic_math  s    rx  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 )
Nrn  rt   r   ro   r   ro  r   rq  Z	feed_dictr  )ro   rd   r   r#   r   r   rE   rr  rs  rt  placeholderrv  rh  r}   rw  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	 @}t j
dt jd}||j ||j||didd	ks|tW 5 Q R X d S )
Nrn  rt   r   ro   r   r   ro  ry  r  )ro   rd   r   r#   r   r   rE   rr  rs  rt  Variablerv  runZinitializerrh  r}   rw  rv   rv   ry   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 )Nrn  ro   r   FTrp  )ro   rd   r=   r:   r>   r   r   rE   rr  rs  rt  rh  r}   r   rl  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 N}|dj	|ddksft
|dj	|ddks~t
|dj	|ddkst
W 5 Q R X d S )Nrn  r   ru   rt   ro   r   rp  )ro   rd   r   r   r   rE   rr  rs  rt  rh  r}   r  rv   rv   ry   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 )Nrn  r   ro   r   r  rp  r   )
ro   rd   r   r   rE   rr  rs  rt  rh  r}   r  rv   rv   ry   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 )Nrn  r   ro   r   r  rp  )
ro   rd   r   r   rE   rr  rs  rt  rh  r}   r  rv   rv   ry   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 )Nrn  r   ro   r   rt   rp  T)	ro   rd   r   rE   rr  rs  rt  rh  r}   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st||j|ddkst||j|d}td }t|| dk st||j|d}td }t|| dk stW 5 Q R X d S )	Nztensorflow not installedro   r   y      ?       @rp  rt   r   gư>)ro   rd   rE   r   rQ   rR   r   rS   rr  rs  rt  ru  rh  r}   r   r   )func1func2Zfunc3Zfunc4r   r   Ztensorflow_resultsympy_resultrv   rv   ry   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 )Nrn  ro   r   r   rp  g      @)ro   rd   rE   r   r   rr  rs  rt  ru  rh  r}   )rx   r   Zfcallrv   rv   ry   test_tensorflow_array_arg  s    r  c                  C   s&   t ttt } | ttt ks"td S r   rE   r   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,t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\t|t t	t
ksttd S )Nr   r   r   )r   r   r   rE   r9   r   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sXttt|t|dfd	}|d
dks~t|d
dkst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   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sTt|ddksdt|dtdkszttd}t	|drtt |d	d }t	|dst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   r   
ValueError)r  l1l2rl  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t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   r}   )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 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stttd| t ddksttttft| t dddksttt| ttf}|d	d
kst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stttt| ti}|d	d	dikstddd i}tt| t|}|d	dksttt| t|dd}|d	dkst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}   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`tttdtd  }| d d  kstt| fd|   }|ddd	kst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#   r   SyntaxError)alphaZ	some_exprr  rv   r  ry   test_dummification  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   rt   Tr   )r   r^   rE   r}   )Zcurlyvr  rv   rv   ry   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   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sDtt	d}t |t
|} d }| j d t| |kst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}   r   sum)rl  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	| |st
t	| |st
t	| |st
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  rv   ry   intervalrepr  s    z+test_special_printers.<locals>.intervalreprr   r   rv   r   )r   r.  rt   r   g?   )r   r  r   r   HalfrE   rj  r   mpir  r}   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kstt g t dks(td S )NTF)rE   r?   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$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 )	Nrt   r   r   )r   )r   r   r   Fr  r   )rE   r   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*t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
   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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   )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   Symbolr`   r  replacer}   )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(tt tttfttttddddksPtd S )NTr   r   F)rE   r   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(tt tttfttttddddksPtd S r   )rE   r   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sht	d S )
Nr>  r   zi jrt   r   r   r   r   r   )
rj   rd   rC   r   r1  rE   r   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sNt|tdd ksdtd S )Nr   rt   r   )rE   r   r   rh   ri   r   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:td S )Nr>  rt   r   )rj   rd   rE   r   r$   r   nr}   rw   rv   rv   ry   test_issue_13642  s    r  c                  C   s4   t tttd} t| dtd  dk s0td S )Nr   rt   r   )rE   r   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(tt| | d }|ddksFtt d}t||d }|ddksltt|gg|d }|dgdkstd S )Nrt   Fr  r   r   r   r   rE   r}   )Z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s6td S )Nr   rt   r   )r   r   r   rE   r}   )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@td S )Nr>  rj   r   r   r   )rj   rd   rE   r   r   r1  r}   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 sVtt||| ddt|  k st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kr2t|}|t!krHtt(|}||| }t|||| ddt|  k s~tt|||||| ddt|  k st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&   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  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rt|
}
|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 qX 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   &.>)rl  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}   r|   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| ks td S )Nr   zx**2)rE   r   inspect	getsourcer}   rw   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>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st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s4ttt f  dddksXttt fdd tt f  dd	dddksttt f  dd	t	ddt	j
ksttd
 ddkstttd
 dd	ddkstd S )Nrx   r   r   r  r   c                      s   t t f  ddS )NFr  )rh  rc   rv   rx   Zfxrv   ry   rz     s    z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>Tr  rt   )   r   )r   r   r   rE   r}   rh  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(tt tgtt}|||jksLtd S )Ny      @       @)rE   r   r   rQ   r   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sbtt| | d }t ||t ddgddggstd S )Nr>  r#  r   rt   r   r   ru   g       r         ?r  %   6   rX  v   )rj   rd   r^   r1  rE   rd  r}   )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 st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  r  nvlvrvZZvZsympy_valuerx   Zscipy_valuerv   rv   ry   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st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st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std S )Nr>  r#  r   rF  r   Cr   Dr   krt   r   ro  x      ih  i  iX  )	rj   rd   r^   r   rE   array_equalr1  objectr}   )	r#  rF  r  r  r  rx   r  hr  rv   rv   ry   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   rv   rv   ry   rz   #  r{   z"test_issue_16930.<locals>.<lambda>rk   r   rt   )rk   rd   r   rE   	constantsZgolden_ratior}   )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sDtd S )Nr  r   ru   rk   r   r   )	rk   rd   r   rE   r   ZLambertWr   Zlambertwr}   )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}| 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 stt|d  dk stt|d d  dk stt|d d  dk std S )Nr>  rt   ru   r   r   r  r   )	rj   rd   rE   r   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td S )N   r   )rE   r   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sPtt| t}t| tf|dd}ttdd|dd dkstd S )Nr  r   rk   r   rt   r   rR  )	rk   rd   r   ri   r   rE   r   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|td S Nr>  zx1 x2rj   r   rt   r   rR  )rj   rd   r   r   r   Zeror   rA   rE   r   subsvaluesr5  r}   )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sft	d S r  )
rj   rd   r   r-   r   rE   r   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srt
t| |g|}t||||	   dkst
d S )Nr>  za tr   rj   r   rR  )rj   rd   r   r   r"   r!   rE   r   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<td S )Nr>  r   rj   rt   )rj   rd   rB   r   rE   	__class__r4  r}   )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s2td S )Nznumba not installedrj   rt   g	T?)rr   rd   rE   r   r#   Zjitr}   rw   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sTtttd|d dksptd S )Nr  rk   r   ?rR  )rk   rd   r1   r   r2   rE   r   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sHtd S )Nr  rk   r   r"  ffffff@rR  )rk   rd   r*   r   r   rE   r   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<td S )Nr   r   r"  r$  rR  )r*   r   r   rE   r   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sXt	d S )	Nr  rk   r   gffffff?g@r   r  rR  )
rk   rd   r+   r   r   r   r   rE   r   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sXt	d S )	Nr  rk   r   r   r^  r   rt   rR  )
rk   rd   r,   r   r   r   r   rE   r   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
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 st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  r6  r   r   rd  r   r}   r   )	funcsrl  r   r   num_argsrx   result	referenceZlae2rv   rv   ry   test_numpy_special_math  s&    



r0  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}|rtttftttdd}t|d
dd dk st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}   r  mapr  versionsplitr   rP   )Zcm1Zhave_scipy_1_10plusZcm2rv   rv   ry   test_scipy_special_math  s    $r5  c                  C   s4   t std ttfttdd} | ddks0td S )Nr  rk   r   rt   r  )rk   rd   rE   r   r   r}   )Zbernrv   rv   ry   test_scipy_bernoulli  s    r6  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  rk   r   r   r  g      ?)rk   rd   rE   r   r   r}   r   )ZhnZhnmrv   rv   ry   test_scipy_harmonic  s    r7  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 installedrp   r   r   r   	rp   rd   rE   r   r   r1  r}   r   rj  rx   r.  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sDtdtt|ksXtd S )Nr8  rj   r   r   r   rp   r9  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 t
d S )Nr8  rp   r   rt   r   r   r?  )rp   rd   r]   r   r   r   rE   r@   r"  r1  r}   r@  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sFtdtt	|ksZtd S )NJAX not installedrq   r   r   r   
rq   rd   rE   r   r   rj   r1  r}   r   rj  r:  rv   rv   ry   test_jax_array_arg  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sFtdtt	|ksZtd S )Nr>  rj   r   r   r   rq   r?  r:  rv   rv   ry   test_jax_array_arg_using_numpy$  s    rA  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 td S )Nr>  rq   r   rt   r   r   r?  )rq   rd   r]   r   r   r   rE   r@   r"  rj   r1  r}   r@  rv   rv   ry   test_jax_dotproduct.  s     



rB  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_mainrE  rF  )rC  rE  rF  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  s     z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r   rC  r-  r6  r   r   rI  )r  r   rC  r-  rI  rv   rL  ry   __init__H  s    z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|dS )NrF  )rE   r   rC  )r  rF  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*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 )ro  )rS  r  N)rj   rd  Zasarrayr   )rJ  r  r   rP  rQ  r.  rv   ry   	<genexpr>U  s
    zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )rI  r5  	enumerater   r}   r   )r  r.  rP  rQ  r  r   Zabs_errrv   rR  ry   assertAllCloseS  s    z.test_lambdify_cse.<locals>.Case.assertAllCloseN)r'  r(  r)  rN  rE   rU  rv   rv   rv   ry   CaseG  s   rV  r   )r   r   r  )r   rC  r-  rt   )r   r   r  )r   r   r*  r   )r   r   r   T)r   rC  r-  rI  )rt   r   FrO  )r   r   r   r   r-   r$   r]   r#   rj   rI  rE   r-  rU  )rD  rH  rV  ZcasescaserF  rx   r.  rv   rv   ry   test_lambdify_cse?  sl    






	"
" /
rX  c                	   C   s(   t   ttthtt  W 5 Q R X d S r   )r   rE   r   r   rv   rv   rv   ry   test_deprecated_set  s    rY  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st|t dddgdkst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   rt   rj   r   r?     r   )rj   rd   r^   rE   r"  r1  r}   r	  )rZ  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sttd S )Nr   r   r   r   r   TrO  )r   r   r   g     r@)r   r   r   expandrE   r}   )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  ra  rb  rv   rv   ry   rN    s    z"LambdifyDocstringTestCase.__init__c                 C   s   d}| j s| jS |S )Nz!EXPRESSION REDACTED DUE TO LENGTH)rb  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)rb  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:

)	SIGNATURErd  rf  )r  expected_docstringrv   rv   ry   rh    s    	z,LambdifyDocstringTestCase.expected_docstringc                 C   s
   t | jS r   )r  rh  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'  ra  rb  ri  rv   rv   ry   __repr__  s    z"LambdifyDocstringTestCase.__repr__)r'  r(  r)  rg  rc  re  rN  propertyrd  rf  rh  rj  rl  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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r'  r(  r)  rg  rc  re  rv   rv   rv   ry   SimpleSymbolTestCase  s   ro  r   Fr`  r   rt   r   Tru   r   ra  )r_  r   rE   ra  r  rh  r}   )ro  r   
test_cases	test_caselambdified_exprrv   rv   ry   0test_lambdify_docstring_size_limit_simple_symbol  s     




rt  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 +...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]
Nrn  rv   rv   rv   ry   ExprListTestCase  s
   rv  ru  r   Fr`     r   Tr   ru   r   rp  )r_  r   r]  rE   ra  r  rh  r}   )rv  r   r   r   r   rq  rr  rs  rv   rv   ry   .test_lambdify_docstring_size_limit_nested_expr  s"    




rx  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st
qd S )Nc                   @   s   e Zd ZdZdZdZdS )zAtest_lambdify_docstring_size_limit_matrix.<locals>.MatrixTestCaseru  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]])
Nrn  rv   rv   rv   ry   MatrixTestCase(  s
   ry  ru  r   Fr`  rw  r   Tr   ru   r   rp  )r_  r   r]   r   r  r]  rE   ra  r  rh  r}   )ry  r   r   r   r   rq  rr  rs  rv   rv   ry   )test_lambdify_docstring_size_limit_matrix&  s"    .




rz  (!  	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=  rA  rB  rE  rG  rL  rP  rT  rZ  r]  ra  rf  rm  rx  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)  r0  r5  r6  r7  r;  r<  r=  r@  rA  rB  rX  rY  r\  r^  r_  rt  rx  rz  rv   rv   rv   ry   <module>   s    $  ,



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