o
    *ήc                     @   s  d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZ 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  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,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZLmMZMmNZNmOZOmPZPmQZQ d dlRmSZS d dlTmUZUmVZV d dlWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^m_Z_m`Z`maZambZbmcZc d dldmeZemfZf d d lgmhZh d d!lmiZimjZjmkZk d d"llmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZu d d#lvmwZwmxZxmyZy d d$lzm{Z{ d d%l|m}Z} d d&lYm~Z~mZ d d'lmZ d d(lmZ d d)lmZ d d*lmZ d d+lEmZmZ d dlZewZed,Zed-d.d/gid0Zed1Zed2Zed3Zed4Zed5Zerd dlZd6ejd7< ed8\ZZZZd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZedMdN ZedOdP ZedQdR ZedSdT ZedUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| 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 Zdd Zdd  Zdd Zdd Zdd Zdd Zd	d
 Z dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z	dd Z
dd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, ZdS (-      )productN)raiseswarns_deprecated_sympy)Sum)FunctionLambdadiff)EFloatIRationaloopi)Eq)S)Dummysymbols)RisingFactorial	factorial)Abs)explog)acosh)floor)MaxMinsqrt)	Piecewise)acoscoscotsinsinctan)besselibesseljbesselkbessely)betabetaincbetainc_regularized)	Heaviside)erferfcfresnelcfresnels)digammagammaloggamma)Integral)AndfalseITENotOrtrue)
DotProduct)derive_by_arrayArray)IndexedBaselambdify)UnevaluatedExpr)expm1log1pexp2log2log10hypot)	logaddexp
logaddexp2)cosm1)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)import_kwargsnumexpr
tensorflowcupyjaxnumba2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                          dS )N rr   frr   J/tmp/pip-target-vg8gfxp4/lib/python/sympy/utilities/tests/test_lambdify.py<lambda>L       ztest_no_args.<locals>.<lambda>r?   r   	TypeErrorrr   rr   rs   ru   test_no_argsJ   s   
rz   c                  C   s"   t tdt } | ddksJ d S N   ro   r?   xrs   rr   rr   ru   test_single_argP   s   r   c                  C   s(   t ttgtt } | dddksJ d S Nro   r|      )r?   r~   yrs   rr   rr   ru   test_list_argsU   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s9J 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sbJ d S )N[   r|   c                      
    ddS Nro   r|   rr   rr   )f1rr   ru   rv   ]      
 z"test_nested_args.<locals>.<lambda>)      )I      )r   r   r   r   c                      r   )Nr   r   rr   rr   )f2rr   ru   rv   a   r   
   4      ,   )r   r   r   r   )r?   wr~   r   ry   r   z)f3rr   )r   r   ru   test_nested_argsZ   s    $r   c                      sH   t dd  ddddksJ  ddd	d
ksJ tt fdd d S )Nzx,y,zzz,y,xr   r|   ro   ro   r|   r         ?       @      @r   r   r   c                      rp   Nr   rr   rr   rs   rr   ru   rv   l   rw   ztest_str_args.<locals>.<lambda>rx   rr   rr   rs   ru   test_str_argsg   s   
r   c                  C   @   dd } t tttd| i}|ddksJ |ddksJ d S )Nc                 S      dS Nro   rr   r~   rr   rr   ru   rv   p       z&test_own_namespace_1.<locals>.<lambda>r!   皙?ro   d   r?   r~   r!   myfuncrt   rr   rr   ru   test_own_namespace_1o   s   r   c                  C   r   )Nc                 S   r   r   rr   r   rr   rr   ru   r   w   s   z$test_own_namespace_2.<locals>.myfuncr!   r   ro   r   r   r   rr   rr   ru   test_own_namespace_2v   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 sTJ qDd S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr|   V瞯<)	r?   r~   r!   mathr   absr   r@   zip)	rt   pqraeresultsrefvalsresrefrr   rr   ru   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   r>   rr   rr   rr   ru   rv      rw   ztest_bad_args.<locals>.<lambda>c                   S   s   t ddgS r   r>   rr   rr   rr   ru   rv          )r   ry   rr   rr   rr   ru   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s$J d S )Nr   gQ	@r   r                 ?ro   y      ?      ?)r?   r~   r   r   rs   rr   rr   ru   
test_atoms   s   r   c                  C   sv   dt j_t d} ttttd}|tttksJ d}| |tdd t	t
|    k r6|k s9J  J d S )N2   40.19866933079506121545941262711838975037020672954020sympyr   ro      )mpmathmpdpsmpfr?   r~   r!   r   evalfr
   strsin02rt   precrr   rr   ru   test_sympy_lambda   s   
<r   c                     sb   dt j_t d} ttttd d}|  d|    k r#|k s&J  J tt fdd d S )Nr   r   r   r   皙?c                          t S Nr   rr   rs   rr   ru   rv      rw   z"test_math_lambda.<locals>.<lambda>	r   r   r   r   r?   r~   r!   r   ry   r   r   rr   rs   ru   test_math_lambda   s   
&r   c                     sh   dt j_t d} ttttd d}|  t d|    k r&|k s)J  J tt fdd d S )Nr   r   r   n5z0.2c                      r   r   r   rr   rs   rr   ru   rv      rw   z$test_mpmath_lambda.<locals>.<lambda>r   r   rr   rs   ru   test_mpmath_lambda   s   
,r   c                  C   sL   dt j_t d} tt| d}d}| |d|    k r!|k s$J  J d S )Nr   r   r   r   r   )r   r   r   r   r?   r~   r   rr   rr   ru   test_number_precision   s
   
*r   c                   C   s6   dt j_ttdtdd ttdksJ d S )Nr   rr   r   )r   r   r   r   r?   r   r   rr   rr   rr   ru   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matrr   rr   ru   test_math_transl   s
   r   c                  C   sF   ddl m}  |  D ]\}}|tjv s|dksJ |tjv s J q
d S )Nr   )MPMATH_TRANSLATIONSrV   )r   r   r   r   r   r   )r   r   r   rr   rr   ru   test_mpmath_transl   s
   r   c                  C   sJ   t std ddlm}  |  D ]\}}|tjv sJ |t jv s"J qd S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)rc   r]   r   r   r   r   r   )r   r   numprr   rr   ru   test_numpy_transl   s   r   c                  C   sV   t std ddlm}  |  D ]\}}|tjv sJ |t jv s(|t jjv s(J qd S )Nscipy not installed.r   )SCIPY_TRANSLATIONS)rd   r]   r   r   r   r   r   special)r   r   sciprr   rr   ru   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   rc   rq   ro   )rc   r]   r?   r~   r   rs   rr   rr   ru   test_numpy_translation_abs   s
   r   c                  C   s   t std ddlm}  d}tttf}| j D ]1}||v rqt	|}t
|dr.|jd }nd}|d | }t||| dd}|d	|  d usIJ qd S )
Nnumexpr not installed.r   )NumExprPrinter)wherecomplexcontains_nargsro   rh   r   ro   )rh   r]   sympy.printing.lambdareprr   r~   r   r   _numexpr_functionskeysr   hasattrr   r?   )r   	blacklist	arg_tupler   ssymnargsargsrt   rr   rr   ru   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)srr   rr   ru   rv     s    z!test_issue_9334.<locals>.<lambda>)keyF)r   dummifyr|   r   )rh   r]   rc   r   sortedfree_symbolsr?   random)exprabfunc_numexprfoobarrr   rr   ru   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s)J t	| ddddks5J W d    d S 1 s@w   Y  d S )Nr   r   rq   ro      *   nan)
rh   r]   r?   r~   r   r   r   r_   RuntimeWarningr   )r  rr   rr   ru   test_issue_12984!  s   (
"r  c                  C   sd   t d\} }| |  }t| |g|}t| |g|g d}|dd|ddks'J |dddks0J d S )Nzx yr   r      r   r?   )r~   r   r  
no_modulesempty_modulesrr   rr   ru   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s'J | ddks/J | ddks7J d S )	Nr|   rq   ro   r   r         @      @r}   rs   rr   rr   ru   test_exponentiation4  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 s+J | d
dks3J d S )Nr   r   ro   r   r   r   r|   g9v?gMbP?r  r  )r?   r~   r   r   rs   rr   rr   ru   	test_sqrt>  s   r  c                  C   s   t tgttttgd} | t}d}| |d d   k r#|k s&J  J | |d   k r4|k s7J  J | d}d}| |d d   k rM|k sPJ  J | |d   k r^|k saJ  J d S )Nr   gdy=r   ro   n!	@gh㈵>)r?   r~   r   r!   r   )rt   dr   rr   rr   ru   	test_trigG  s   &"&&r  c                  C   sh   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 s2J  J d S )Nr   r|   giv[?gm[?)
rc   rd   r]   r   r~   r   r?   r   r3   r   )rt   lr  rr   rr   ru   test_integralS  s   
 r  c                  C   sp   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 r3dk s6J  J d S )Nr   ro   r|   r   gX<?g<?)rc   rd   r]   r3   r~   r   r   r?   )ir  r  rr   rr   ru   test_double_integral\  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|   ro   r   r   r   r   r   c                      rp   r   rr   rr   rs   rr   ru   rv   n  rw   z$test_vector_simple.<locals>.<lambda>)r?   r~   r   r   r   ry   rr   rr   rs   ru   test_vector_simplei  s   r   c                      s\   t tdt dt f tt fdd  ddksJ  ddks$J  dd	ks,J d S )
Nrq   ro   c                      rp   r   rr   rr   rs   rr   ru   rv   s  rw   z+test_vector_discontinuous.<locals>.<lambda>)g      r   r|   )            ?r  )r"  r!  )r?   r~   r   ZeroDivisionErrorrr   rr   rs   ru   test_vector_discontinuousq  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 s)J d S )Nr   r   ro   -C6?)r?   r~   r   r!   r   r   rt   r  rr   rr   ru   test_trig_symbolicy  s   r'  c                  C   sT   t tgttttg} | d}t|d d dk sJ t|d d dk s(J d S )Nr  r   ro   r%  )r?   r~   r   r!   r   r&  rr   rr   ru   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s&J t ttt} | ddks5J t ttfttt d } | dddksKJ d S )	Nr|   r   ro   r   )r   r|   ro   r   r   r   )r?   r~   r   r   r   r!   rs   rr   rr   ru   	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   )r?   r~   r   r!   rs   rr   rr   ru   	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s&J d S )Nr|   r   r   )r?   r~   r!   
isinstancefloatrs   rr   rr   ru   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s4J ttttf| | gfdd}|ddd||gfksNJ 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syJ t|j|dddd|ksJ d S )Nr   ro   r|   r   r   r   r   )rV   r~   r   r!   r   r?   jacobianT)Asolrt   Jvrr   rr   ru   test_matrix  s   $"r4  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sIJ G dd dt}|ttdgdgd	ggtt}t d
 t | d	kssJ tdddd}ttddddii|}tt|d}t | d	ksJ t|tt fdd d S )Nr   r   ro   r|   r   rc   c                   @   s   e Zd ZdS )ztest_numpy_matrix.<locals>.dotN)__name__
__module____qualname__rr   rr   rr   ru   dot  s    r8  r   )   r   FT)allow_unknown_functionsinlinefully_qualified_modulesuser_functionsprinterc                      s   t td S )Nr>  r}   rr   inpp3	x_dot_mtxrr   ru   rv         z#test_numpy_matrix.<locals>.<lambda>rr   )rc   r]   rV   r~   r   r!   r   arrayr?   testingassert_allcloser+  ndarrayr   zerosalldictrZ   r   	Exception)r0  sol_arrrt   r8  f_dot1	strict_kwp2f_dot2rr   r@  ru   test_numpy_matrix  s$   $ 

rR  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   ro   r   rc   r   r|   )	rc   r]   rV   r~   r?   r/  rF  assert_array_equalrE  r0  rt   rr   rr   ru   test_numpy_transpose  s
   (rU  c                  C      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rm|ddd  krm|ddd  krmt 	dgkspJ  J d S )Nnumpy not installedrc   r   ro   r|   r      )
rc   r]   rV   r~   r   r   r?   r:   r/  rE  r0  r   r   r   f4rr   rr   ru   test_numpy_dotproduct  s    




r[  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   ro   r   rq   rc   r   r|   r  )rc   r]   rV   r~   r?   rF  rS  rE  rT  rr   rr   ru   test_numpy_inverse  s
   (r\  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	sRJ W d    d S 1 s]w   Y  d S )Nr   r   ro   r|   r   ImmutableDenseMatrixrc   )rc   r]   rV   r~   r   r!   r   rE  r?   matrixr_   PendingDeprecationWarningrF  rG  r+  )r0  rM  rt   rr   rr   ru   test_numpy_old_matrix  s   $ 
"r`  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s'J d S )Nr   r   rd   r   ro   r|   )	rd   r]   rX   r~   r   r?   r+  rf   
coo_matrix)r0  rt   Brr   rr   ru   test_scipy_sparse_matrix  s   
rc  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s<J t	t|t d	gt dgdksQJ t jdd d S )Nr   ro   rq   Trc   r   ignore)divider   r"  infwarn)
rc   r]   r   r~   r   r?   seterrr,  rE  r   )r   rt   rr   rr   ru    test_python_div_zero_issue_11306  s   (&*ri  c                  C   s   d dg} t r| d tr| d | D ](}tttjt |d}|ddks(J ttttjt |d}|ddks<J qtt	t
g| D ]%\}}tt|t|d}|dd	ksYJ |d	d	ksaJ |d
dksiJ qDd S )Nr   rc   r   r   r|   r"  r   rq   ro   y      @      @r   )rc   appendr   r?   r~   r   Oner   r   r   r   )modsmodrt   absfuncr   rr   rr   ru   test_issue9474  s    

ro  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|   ro   r      r   r  r  rc   r   rh   绽|=)rtol)rh   r]   rc   r   r~   r   r   linspacer?   rF  rG  )r   r  xnynfv_exactfv_numpy
fv_numexprrr   rr   ru   test_issue_9871  s   ry  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   Trc   r   r   )
r   ro   r|   r   r   r   $   1   @   Q   r   rq   r   ro   ro   )
rc   r]   r   r~   r?   rF  rS  arangerE  r  )piecesrt   
nodef_funcrr   rr   ru   test_numpy_piecewise.  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   rc   r   TF)rc   r]   r?   r~   r   r4   r   r8   r7   rE  rF  rS  )and_func
and_func_3or_func	or_func_3not_funcarr1arr2arr3rr   rr   ru   test_numpy_logical_ops;  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   ro   r|   rc   r   r"  r   r   g      ?      @r!  g      ?g     R@g     ]@      )rc   r]   rV   r~   r   r   r   r?   rF  rS  rE  )xmatymatmat_funcrt   rr   rr   ru   test_numpy_matmulM  s   $$r  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 || |||| ||ssJ d S )	Nr   r   r      r|   rc   r   rh   )rc   r]   rh   r  randnr!   r~   r   r   r#   r   r   r   r   r   r   r   r?   allclose)r  r  cr  npfuncnefuncrr   rr   ru   test_numpy_numexpr[  s   6$r  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  s:J ttddd }tt	tf|t	td
d}t 
|| |d|  | d	 s`J d S )Nr   r   r|   r   ufevalc                 S   s   |d d S r{   rr   r~   r   rr   rr   ru   rv   p  r   z,test_numexpr_userfunctions.<locals>.<lambda>ro   rh   r   c                 S   s   d|  | d S r{   rr   r  rr   rr   ru   rv   t  s    )rc   r]   rh   r  r  typer   classmethodr?   r~   r  r[   r   )r  r  r  funcrr   rr   ru   test_numexpr_userfunctionsi  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|dd	ks5J W d    d S 1 s@w   Y  d S )
Ntensorflow not installed.ro   r|   ri   r   r   dtypesessionr"  )ri   r]   r   r!   r~   r   r?   compatv1Sessionconstantfloat32r  r  r  r   r  rr   rr   ru   test_tensorflow_basic_mathy  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jj
t jd}||j||didd	ks9J W d    d S 1 sDw   Y  d S )
Nr  ro   r|   ri   r   r  r   r  	feed_dictr"  )ri   r]   r   r!   r~   r   r?   r  r  r  placeholderr  r  r  rr   rr   ru   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>J W d    d S 1 sIw   Y  d S )
Nr  ro   r|   ri   r   r   r  r  r"  )ri   r]   r   r!   r~   r   r?   r  r  r  Variabler  runinitializerr  r  rr   rr   ru   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s-J W d    d S 1 s8w   Y  d S )Nr  ri   r   FTr  )ri   r]   r7   r4   r8   r~   r   r?   r  r  r  r  r  r  r   rr   rr   ru   "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 -}|dj	|ddks3J |dj	|ddks?J |dj	|ddksKJ W d    d S 1 sVw   Y  d S )Nr  r   rq   ro   ri   r   r  )
ri   r]   r   r   r~   r?   r  r  r  r  r  rr   rr   ru   test_tensorflow_piecewise  s   &"r  c                  C   sv   t std ttt td } tt| dd}t jj }|dj|ddks)J W d    d S 1 s4w   Y  d S )Nr  r|   ri   r   r  r  r   )	ri   r]   r   r~   r?   r  r  r  r  r  rr   rr   ru   test_tensorflow_multi_max     "r  c                  C   sv   t std ttt td } tt| dd}t jj }|dj|ddks)J W d    d S 1 s4w   Y  d S )Nr  r|   ri   r   r  r  )	ri   r]   r   r~   r?   r  r  r  r  r  rr   rr   ru   test_tensorflow_multi_min  r  r  c                  C   sl   t std tdk} tt| dd}t jj }|dj|ddks$J W d    d S 1 s/w   Y  d S )Nr  r   ri   r   ro   r  T)ri   r]   r~   r?   r  r  r  r  r  rr   rr   ru   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	
 V}t d}| |j|ddksBJ ||j|ddksNJ ||j|d}td }t|| dk sfJ ||j|d}td }t|| dk s~J W d    d S 1 sw   Y  d S )	Nztensorflow not installedri   r   y      ?       @r  ro   r|   gư>)ri   r]   r?   r~   rJ   rK   r   rL   r  r  r  r  r  r   r   )func1func2func3func4r   r  tensorflow_resultsympy_resultrr   rr   ru   test_tensorflow_complexes  s"   
"r  c                  C   s~   t std tttggtt t d} t jj }| t ddg}|j	|ddks-J W d    d S 1 s8w   Y  d S )Nr  ri   r   r   r  g      @)
ri   r]   r?   r~   r   r  r  r  r  r  )rt   r   fcallrr   rr   ru   test_tensorflow_array_arg  s   "r  c                  C   s&   t ttt } | ttt ksJ d S r   r?   r~   r   r   rs   rr   rr   ru   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  rs   rr   rr   ru   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s:J d S )Nr|   r   r   )
r   r~   r   r?   r3   r   r   doitr   r   )rt   r  rr   rr   ru   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s,J tt|t|dfd	}|d
dks?J |d
dksGJ d S )Nrt   c                 S   r   )Nfirst frr   r   rr   rr   ru   rv     r   z&test_namespace_order.<locals>.<lambda>c                 S   r   )Nzsecond frr   r   rr   rr   ru   rv     r   c                 S   r   )N
function grr   r   rr   rr   ru   rv     r   )rt   gr  r   r   ro   r  r  )r   r   r?   r~   )n1n2rt   r  if1if2rr   rr   ru   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s*J |ddks2J |dtdks=J td}t|drIJ t |d	d }t|dsWJ t dd
d t	t
 fdd d S )Nrt   c                 S      d|  S Nr|   rr   r   rr   rr   ru   rv   !  rw   ztest_imps.<locals>.<lambda>c                 S   s
   t | S r   )r   r   r   rr   rr   ru   rv   "  r   r      r   _imp_c                 S   r  r  rr   r   rr   rr   ru   rv   +  rw   c                 S      | d S )Ne   rr   r   rr   rr   ru   rv   .  rw   c                      s   t t tS r   r}   rr   rt   r   rr   ru   rv   /  rD  )r[   r?   r~   r   r   r   r   r   r   r   
ValueError)r  l1l2r  my_frr   r  ru   	test_imps  s   
r  c                     sJ   t dttfD ]\}   fdd}td|}|| }||| ks"J qd S )N)r   r   r|   r   c                    s   | dkr dS )Nr   ro   rr   )r  error_classrr   ru   r   <  s   z test_imps_errors.<locals>.myfuncrt   )r   ry   r  r[   )valr   rt   r  rr   r  ru   test_imps_errors2  s   
r  c                   C   s   t tdd  d S )Nc                   S   s   t tdd S )Nc                 S   s   | S r   rr   r   rr   rr   ru   rv   G  r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>)r[   r!   rr   rr   rr   ru   rv   G      z&test_imps_wrong_args.<locals>.<lambda>)r   r  rr   rr   rr   ru   test_imps_wrong_argsF     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s1J tddd } tt| tddksEJ ttd| t ddksTJ tttft| t dddksfJ tt| ttf}|d	d
kswJ tt| ttg}|d	dd	gksJ tt| t| ttfg}|d	dd
gksJ tt| tti}|d	dd	iksJ 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   ro   r|   rt   c                 S   r  )Nr   rr   r   rr   rr   ru   rv   R  rw   z$test_lambdify_imps.<locals>.<lambda>r   r  r   )g   r   r  c                 S   r  )Nc   rr   r   rr   rr   ru   rv   d  rw   F)use_impsf   )r   r   r?   r~   r   r[   )rt   lamr  rr   rr   ru   test_lambdify_impsJ  s2   $$r  c                     s  t dtd tdt d} d d   }t f|}|dddks0J ttdtd  }| d d  ksMJ t| fd|   }|ddd	ksaJ tt fd
d tt fdd tt fdd d S )NtFGz\alphar|   r   	   ro   r   c                      s&   t     d S )Nr   r>   rr   r  r  r  rr   ru   rv   |  s   & z$test_dummification.<locals>.<lambda>c                      s   t d  d  d S )Nr|   r   r>   rr   r  r  rr   ru   rv   }      c                      s   t d  d  d S )Nr|   r   r   r>   rr   r  rr   ru   rv   ~  r  )r   r   r?   r!   r   SyntaxError)alpha	some_exprr  rr   r  ru   test_dummificationl  s    r  c                  C   sJ   t ddd} t| | }|ddksJ t| | dd}|ddks#J d S )Nz{v}r|   ro   Tr   )r   rW   r?   )curlyvr  rr   rr   ru   test_curly_matrix_symbol  s
   
r  c                  C   s.   t d} | d }t| |}|ddksJ d S )Nifr|         @r   r  )	python_ifr  rt   rr   rr   ru   test_python_keywords  s   
r  c                  C   s   t ttttftt t t } d }| j d t| |ks"J td}t |t	|} d }| j d t| |ks@J 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 +...)
r?   r   r~   r   r   
splitlines__doc__lenr   sum)r  r   symsrr   rr   ru   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	| |sBJ t	| |sJJ t	| |sRJ 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sJ d S )Nr   IntervalPrinterc                    s      | S r   )doprint)r  r  rr   ru   intervalrepr     z+test_special_printers.<locals>.intervalreprr|   r   rr   r   )r   r?  ro   r   g?   )r   r  r   r   Halfr?   r  r   mpir+  r~   r2   )r  r  func0r  r  r
  exp1rC   exp3exp_lssol1sol2sol3sol_lsrr   r  ru   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)r?   r9   r5   rr   rr   rr   ru   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s*J t ttd ddddks9J d S )	Nro   r   r   )r|   )r   r   r   Fr  r|   )r?   r~   r   r   r   rr   rr   rr   ru   test_issue_2790  s   $0"r  c                  C   s.   t ddd } | | d tdksJ d S )Nrt   c                 S   s   | d S r  rr   r   rr   rr   ru   rv     rw   z"test_issue_12092.<locals>.<lambda>r|   rp  )r[   r   r
   rs   rr   rr   ru   test_issue_12092  s    r  c                  C   sF   G dd dt j} | d}d| }t |}|dddks!J 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?  rr   rr   ru   	_sympystr  r  z,test_issue_14911.<locals>.Variable._sympystrN)r5  r6  r7  r  _lambdacode
_numpycoderr   rr   rr   ru   r    s    r  r~   r|     z2*x)r   SymbolrY   r  replace)r  r~   r   coderr   rr   ru   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s(J d S )NTr   r   F)r?   r~   r   r   r6   rr   rr   rr   ru   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s(J d S r   )r?   r~   r   r   r   r   rr   rr   rr   ru   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s4J d S )
NrW  r  zi jro   r|   r   r   r   r   )	rc   r]   r=   r   rE  r?   r   r~   r   )r  r  jr  rr   rr   ru   test_Indexed  s   6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s'J |tdd ks2J d S )Nr   ro   r|   )r?   r~   r   ra   rb   r   )expr1expr2rr   rr   ru   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 )NrW  ro   r   )rc   r]   r?   r~   r"   r   nrs   rr   rr   ru   test_issue_13642	  s   $r)  c                  C   s4   t tttd} t| dtd  dk sJ d S )Nr   ro   r   )r?   r~   r"   r   r(  rs   rr   rr   ru   test_sinc_mpmath  s   $r*  c                  C   s   t  } t| | d dd}|ddksJ t| | d }|ddks#J t d}t||d }|ddks6J t|gg|d }|dgdksHJ d S )Nro   Fr  r|   r   r~   r   r?   )d1r   f1bd2r   r   rr   rr   ru   test_lambdify_dummy_arg  s   r/  c                  C   s:   t  } tt| }t| |g| | }|dddksJ d S )Nr   ro   r   )r   r   r   r?   )r  dsymrt   rr   rr   ru   %test_lambdify_mixed_symbol_dummy_args"  s   r1  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 )NrW  rc   r   r   r   )rc   r]   r?   r~   r   rE  rs   rr   rr   ru   test_numpy_array_arg*  s   r2  c                  C   sD  t std 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
g}tjd t| |D ]k\}}tt|tdd}tdD ]Y}tjdddtjd	d
  }|tkrYt|}|tkrbt|}|tkrkt|}|| }t||| ddt|  k sJ t|||| ddt|  k sJ q>q-tttttg}t jjt jjt jjt jjt jjg}	t||	D ]i\}}ttt f|tt dd}tdD ]T}tjdd}
tjdddtjd	d
  }|tkrt|}||
| }t||
|| ddt|  k sJ t||
|||
| ddt|  k sJ qqd S )Nscipy not installedr   rd   r      r   r   r   gvIh%<=ro   )!rd   r]   r,   r-   r   r1   r2   r0   r   gammalnpsirc   r  seedr   r?   r~   rangeuniformr   r   r   r   r%   r'   r$   r&   pochjvyvivkvr   )single_arg_sympy_fnssingle_arg_scipy_fnssympy_fnscipy_fnrt   r  tvr  double_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2rr   rr   ru   test_scipy_fns4  sP    


$* 
(0rJ  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 ]\}}| 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rxt|
}
|tkrtjdd}
ttjjd|dd
}	|f|	 |
f }|| }||  }ddt|  }t|| }z||k sJ W qI ty   t|jt|t|t|t|||dw q1d S )Nr3  r   zn k a bro   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   )sizer5  r   r6  rq   g&.>)r  r   r  scipy_resultr   tol)rd   r]   rc   r  r9  r   rM   rN   rO   rP   rQ   rR   rS   rT   rU   r~   r?   r:  randinttupler;  r   r   r   ry   AssertionErrorformatrepr)paramspolysmsgrC  
num_paramsr   rt   _tntparamsrE  valsrL  r  atolr   rr   rr   ru   test_scipy_polysd  sb    
r\  c                  C   s$   t ttd } dt| v sJ d S )Nr|   zx**2)r?   r~   inspect	getsourcers   rr   rr   ru   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s2J tg d}| dks>J t| |g|| gd}|ddddgksSJ d S )Nr   r   r|   )r|   r   )r   r|   r   r+  )r~   r   r   r   f2br   rr   rr   ru   test_issue_14941  s   
ra  c                      s  t dt   t f  dddksJ tt f  dddks,J tt fdd tt f  dd	dddksJJ tt f  dd	tddtj	ksaJ td
 ddksnJ ttd
 dd	ddksJ d S )Nrt   r   r   r  r|   c                      s   t t f  ddS )NFr  )r  r\   rr   rt   fxrr   ru   rv     s   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>Tr  ro   )   r
  )
r   r~   r   r?   r  r\   r   r  r   r	  rr   rr   rb  ru   (test_lambdify_Derivative_arg_issue_16468  s    $(.&re  c                  C   sP   t tgtt} d}| ||jksJ t tgtt}|||jks&J d S )Ny      @       @)r?   r   r   rJ   r   rK   imag)f_rer  f_imrr   rr   ru   test_imag_real  s
   ri  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s1J t| | d }t ||t ddgddggsKJ d S )NrW  r0  r|   ro   r   r   rq   g       r   g      ?r!  %   6   r}  v   )rc   r]   rW   rE  r?   r  )r0  A0rt   r  rr   rr   ru   test_MatrixSymbol_issue_15578  s   &*rn  c                  C   s   t std ddlm} m}m}m} ddlm} d\}}}}|	||||
 }	t| |||f|	| |||}
|
||||}t|	| dk sHJ d S )Nr3  r   )r(  r  r   Z)hydrogen)ro   r   r   ro   r   )rd   r]   	sympy.abcr(  r  r   ro  sympy.physicsrp  R_nlr   r?   r   )r(  r  r   ro  rp  nvlvrvZvsympy_valuert   scipy_valuerr   rr   ru   test_issue_15654  s   rz  c            	      C   sJ  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sJ 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s#J d S )NrW  r0  r   rb  r|   Cr   Dr   kr   r  r  )r|   r   r  )ro   r|   r   r   )ro   r|   r   r   r   )x      ih  i  iX  )rc   r]   rW   r   r?   array_equalrE  object)	r0  rb  r{  r|  r}  rt   r  hr  rr   rr   ru   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s!J d S )Nr3  r~   c                 S   s   t j| d  S r  )r   GoldenRatior   rr   rr   ru   rv     r  z"test_issue_16930.<locals>.<lambda>rd   r   ro   )rd   r]   r   r?   	constantsgolden_ratio)r~   rt   f_rr   rr   ru   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s"J d S )Nr3  r~   rq   rd   r   r   )rd   r]   r   r?   r   LambertWr   lambertw)r~   r  rr   rr   ru   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 s=J t|d d  dk sKJ t|d  dk sWJ t|d d  dk seJ t|d d  dk ssJ d S )NrW  ro   r~  r   r   r"  r|   )rc   r]   r?   r~   r   r+   r   r(  )r   r   res1res2rr   rr   ru   test_issue_13167_21411  s    r  c                  C   s"   t tt} | dtdksJ d S )N   r   )r?   r~   r	   r   rs   rr   rr   ru   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s(J t| t}t| tf|dd}ttdd|dd dksFJ d S )Nr3  r  rd   r   ro   r   rq  )rd   r]   r   rb   r~   r?   r   ra   )r  r   r  r   rr   rr   ru   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 NrW  zx1 x2rc   r   ro   r|   rq  )rc   r]   r   r   r   Zeror   r;   r?   r   subsvaluesrJ  )x1x2rt   r  r  pointrr   rr   ru   test_issue_227262  s   *r  c                  C   sj   t std td\} }tt| |}t| |f|dd}| d|di}t||||   dks3J d S r  )	rc   r]   r   r+   r   r?   r   r  r  )r  r  rt   r  r  rr   rr   ru   test_issue_22739>  s   &r  c                  C   s   t std td\} }| tt|d t|  }t| |g|d}| d|di}t||||	   dks9J t| |g|}t||||	   dksQJ d S )NrW  za tr|   rc   r   rq  )
rc   r]   r   r   r    r   r?   r   r  r  )r  r  r  r  r  rr   rr   ru   test_issue_22992I  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 )NrW  r|   rc   ro   )rc   r]   r<   r~   r?   	__class__rH  )r  rt   rr   rr   ru   test_issue_19764[  s
   r  c                  C   s6   t std ttttd} t | ddksJ d S )Nznumba not installedrc   ro   g	T?)rl   r]   r?   r~   r!   jitrs   rr   rr   ru   test_issue_20070d  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s*J ttd|d dks8J d S )Nr3  rd   r   ?rq  )rd   r]   r.   r~   r/   r?   r   )r   r   F1F2rr   rr   ru   test_fresnel_integrals_scipyl  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s$J d S )Nr3  rd   r   r  ffffff@rq  )rd   r]   r(   r~   r   r?   r   rt   r  rr   rr   ru   test_beta_scipyy  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  rq  )r(   r~   r   r?   r   r  rr   rr   ru   test_beta_math  s   
$r  c                  C   \   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s,J d S )	Nr3  rd   r   gffffff?g@r   r"  rq  )	rd   r]   r)   r   r~   r   r   r?   r   r  rr   rr   ru   test_betainc_scipy  
   ,r  c                  C   r  )	Nr3  rd   r   r   r  r   ro   rq  )	rd   r]   r*   r   r~   r   r   r?   r   r  rr   rr   ru   test_betainc_regularized_scipy  r  r  c            	      C   s   t std tttttttt	g} | D ]E}d|j
v r%|tt}ttf}d}nd|j
v r4|t}tf}d}ntdt||}|| }|tt|| }t |t|sWJ qtttft	tttt}td|dd	 d
 dk suJ d S )NrW  r|   )333333?g?ro   )r  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)rc   r]   rA   rB   rC   rD   rE   rF   rG   rH   r   r~   r   NotImplementedErrorr?   r  rK  r   r   r  r,  r   )	funcsr  r  r   num_argsrt   result	referencelae2rr   rr   ru   test_numpy_special_math  s&   



"r  c                  C   s<   t std ttfttdd} t| dd dk sJ d S )Nr3  rd   r   g#B;gWw'&l7gN~h)rd   r]   r?   r~   rI   r   )cm1rr   rr   ru   test_scipy_special_math  s   r  c                  C   s\   t std tttggtt t d} | t ddg}|dks"J dtt|v s,J d S )NCuPy not installedrj   r   r   r   rj   r]   r?   r~   r   rE  r   r  rt   r  rr   rr   ru   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s"J dtt|v s,J d S )Nr  rc   r   r   r   rj   r  r  rr   rr   ru   test_cupy_array_arg_using_numpy  s   r  c                  C   rV  )Nr  rj   r   ro   r|   r   rX  )
rj   r]   rV   r~   r   r   r?   r:   r/  rE  rY  rr   rr   ru   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s#J dtt|v s-J d S )NJAX not installedrk   r   r   r   	rk   r]   r?   r~   r   rc   rE  r   r  r  rr   rr   ru   test_jax_array_arg     r  c                  C   s^   t std tttggtt t d} | t jddg}|dks#J dtt|v s-J d S )Nr  rc   r   r   r   rk   r  r  rr   rr   ru   test_jax_array_arg_using_numpy  r  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rn|ddd  krn|ddd  krnt j	
dgksqJ  J d S )Nr  rk   r   ro   r|   r   rX  )rk   r]   rV   r~   r   r   r?   r:   r/  rc   rE  rY  rr   rr   ru   test_jax_dotproduct  s    



r  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 ]!}ts|j	rqdd|| fD ]}|j
|d}||j }|| qqd S )Nc                 S   s   d| fS )Nrr   rr   )exprsrr   rr   ru   	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)sympy.simplify.cse_mainr  r  )r  r  r  rr   rr   ru   minmem  s   z!test_lambdify_cse.<locals>.minmemc                   @   s2   e Zd ZddddZdd Zdddd	d
ZdS )ztest_lambdify_cse.<locals>.CaseF)requires_numpyc                   sB   || _ || _|| _tt| j | j  fdd|D | _|| _d S )Nc                    s   g | ]	}|   qS rr   )r  r   ).0e	subs_dictrr   ru   
<listcomp>  s    z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r   r  r  rK  r   r   r  )r  r   r  r  r  rr   r  ru   __init__  s   
z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|dS )Nr  )r?   r   r  )r  r  rr   rr   ru   r?     r  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 ]!\}}t| | }|dkr3| k s2J q|t| k s=J qd S )Nc                 3   s4    | ]\}}t j| t j|td  dV  qdS )r  )rr  r[  N)rc   r  asarrayr,  )r  r  r   r  r  r  rr   ru   	<genexpr>!  s    zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )r  rJ  	enumerater   r   )r  r  r  r  r  r   abs_errrr   r  ru   assertAllClose  s   z.test_lambdify_cse.<locals>.Case.assertAllCloseN)r5  r6  r7  r  r?   r  rr   rr   rr   ru   Case  s    r  r|   )r   r   r  )r   r  r  ro   )r   r   r  )r   r   r  r   )r   r   r   T)r   r  r  r  )ro   r|   Fr  )r~   r   r   r   r+   r"   rV   r!   rc   r  r?   r  r  )r  r  r  casescaser  rt   r  rr   rr   ru   test_lambdify_cse  sn   






	"
4/

r  c                   C   s>   t   ttthtt  W d    d S 1 sw   Y  d S r   )r   r?   r~   r   rr   rr   rr   ru   test_deprecated_setd  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s:J d S )Nr~   r   r   r   r   Tr  )r   r   r   g     r@)r   r   r   expandr?   )rt   r  r  	eval_expransrr   rr   ru   test_23536_lambdify_cse_dummyi  s   (
r  (  	itertoolsr   r   r]  r   sympy.testing.pytestr   r   sympy.concrete.summationsr   sympy.core.functionr   r   r   sympy.core.numbersr	   r
   r   r   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   r   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   r    r!   r"   r#   sympy.functions.special.besselr$   r%   r&   r'   &sympy.functions.special.beta_functionsr(   r)   r*   'sympy.functions.special.delta_functionsr+   'sympy.functions.special.error_functionsr,   r-   r.   r/   'sympy.functions.special.gamma_functionsr0   r1   r2   sympy.integrals.integralsr3   sympy.logic.boolalgr4   r5   r6   r7   r8   r9   %sympy.matrices.expressions.dotproductr:   sympy.tensor.arrayr;   r<   sympy.tensor.indexedr=   r   r?   sympy.core.exprr@   sympy.codegen.cfunctionsrA   rB   rC   rD   rE   rF   sympy.codegen.numpy_nodesrG   rH   sympy.codegen.scipy_nodesrI   rJ   rK   rL   #sympy.functions.special.polynomialsrM   rN   rO   rP   rQ   rR   rS   rT   rU   sympy.matricesrV   rW   rX   r   rY   sympy.printing.numpyrZ   r[   r\   r]   sympy.utilities.decoratorr^   sympy.utilities.exceptionsr_   sympy.externalr`   ra   rb   r   MutableDenseMatrixrc   rd   rh   ri   rj   rk   rl   osenvironr   r~   r   r   rz   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-  r4  rR  rU  r[  r\  r`  rc  ri  ro  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/  r1  r2  rJ  r\  r_  ra  re  ri  rn  rz  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  rr   rr   rr   ru   <module>   sr       ,







	

		

			



"	
 
0=		
	





Y