a
    lh;                    @   s
  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
l m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZBmCZCmDZD d dlEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZO d dlPmQZQ d dlRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[m\Z\m]Z]m^Z^ d dl_m`Z` d dlambZb d dlcmdZdmeZemfZfmgZgmhZhmiZi d dljmkZk d dllmmZm d dlnmoZompZp d dlqmrZr d d lsmtZtmuZu d d!lvmwZw d d"lxmyZy d d#lzm{Z{ d d$l|m}Z} d d%l~mZmZmZmZmZmZmZmZ d d&lmZmZmZmZmZmZ d d'lmZmZ d d(l&mZmZmZ d d)lmZmZmZmZmZmZmZmZmZ d d*lmZmZmZ d d+lmZ d d,lmZ d d-lmZ d d.lvmZmZ d d/lmZ d d0lmZ d d1lmZ d d2lmZ d d3lZmZmZ d dlZeZed4Zed5d6d7gid8Zed9Zed:Zed;Zed<Zed=Zer"d dlZd>ejd?< ed@\ZZZZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZedUdV ZedWdX ZedYdZ Zed[d\ Zed]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 Z dd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Z	dd҄ Z
ddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd 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 Z0dd  Z1d!d" Z2d#d$ Z3d%d& Z4d'd( Z5d)d* Z6d+d, Z7d-d. Z8d/d0 Z9d1d2 Z:d3d4 Z;d5d6 Z<d7d8 Z=d9d: Z>d;d< Z?d=d> Z@d?d@ ZAdAdB ZBdCdD ZCdEdF ZDdGdH ZEdIdJ ZFdKdL ZGdMdN ZHdOdP ZIdQdR ZJdSdT ZKdUdV ZLdWdX ZMdYdZ ZNd[d\ ZOd]d^ ZPd_d` ZQdadb ZRdcdd ZSdedf ZTdgdh ZUdidj ZVdkdl ZWG dmdn dnZXdodp ZYdqdr ZZdsdt Z[dudv Z\dwdx Z]dydz Z^d{d| Z_dS (}      )productN)raiseswarns_deprecated_sympy)Sum)FunctionLambdadiff)EFloatIRational	all_closeoopi)Eq)S)Dummysymbols)RisingFactorial	factorial)	bernoulliharmonic)Abssign)explog)asinhacoshatanh)floor)MaxMinsqrt)	Piecewise)asinacosatancoscotsinsinctan)sinhcoshtanh)besselibesseljbesselkbesselyjnyn)betabetaincbetainc_regularized)	Heaviside)EierferfcfresnelcfresnelsSiCi)digammagammaloggamma	polygamma)zeta)Integral)AndfalseITENotOrtrue)
DotProductcse)derive_by_arrayArray)ArraySymbol)IndexedBaseIdxlambdify)numbered_symbols)
CoordSys3D)UnevaluatedExpr)expm1log1pexp2log2log10hypotisnanisinf)	logaddexp
logaddexp2aminamaxminimummaximum)cosm1powm1)reimarg)	
chebyshevt
chebyshevulegendrehermitelaguerre
gegenbauerassoc_legendreassoc_laguerrejacobi)MatrixMatrixSymbolSparseMatrix)PrintMethodNotImplementedError)LambdaPrinter)NumPyPrinter)implemented_function	lambdastr)skip)conserve_mpmath_dps)ignore_warnings)import_module)
uppergamma
lowergammanumpyscipyfromlistsparse)Zimport_kwargsnumexpr
tensorflowcupyjaxnumba2ZTF_CPP_MIN_LOG_LEVELzw,x,y,zc                      s.   t g d tt fdd   dks*J d S )N   c                      s    dS )N r   fr   Q/var/www/auris/lib/python3.9/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>Y       ztest_no_args.<locals>.<lambda>rU   r   	TypeErrorr   r   r   r   test_no_argsW   s    
r   c                  C   s"   t tdt } | ddksJ d S N   r   rU   xr   r   r   r   test_single_arg]   s    r   c                  C   s(   t ttgtt } | dddks$J d S Nr   r      )rU   r   yr   r   r   r   test_list_argsb   s    r   c                     s   t ttggttg  ddgddgks,J tt fdd t ttfttfgttttgddg dksrJ ttfdd t ttggtgtgttttg} | d	d
ggdgdg dksJ d S )N[   r   c                      s
    ddS Nr   r   r   r   )f1r   r   r   j   r   z"test_nested_args.<locals>.<lambda>)      )I      )r   r   r   r   c                      s
    ddS )Nr   r   r   r   )f2r   r   r   n   r   
   4      ,   )r   r   r   r   )rU   wr   r   r   r   z)f3r   )r   r   r   test_nested_argsg   s     r   c                      sH   t dd  ddddksJ  ddd	d
ks2J tt fdd d S )Nzx,y,zzz,y,xr   r   r   r   r   r         ?       @      @r   r   r   c                      s    dS Nr   r   r   r   r   r   r   y   r   ztest_str_args.<locals>.<lambda>r   r   r   r   r   test_str_argst   s    
r   c                  C   s@   dd } t tttd| i}|ddks,J |ddks<J d S )Nc                 S   s   dS Nr   r   r   r   r   r   r   }   r   z&test_own_namespace_1.<locals>.<lambda>r)   皙?r   d   rU   r   r)   myfuncr   r   r   r   test_own_namespace_1|   s    r   c                  C   s@   dd } t tttd| i}|ddks,J |ddks<J d S )Nc                 S   s   dS r   r   r   r   r   r   r      s    z$test_own_namespace_2.<locals>.myfuncr)   r   r   r   r   r   r   r   r   test_own_namespace_2   s    r   c            	      C   s   t tttt} | ddks J tddd\}}}tt|t||  }t |||g||gtd} | ddd	}tdgd
 }t||D ] \}}t|| | dk sJ qd S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)	rU   r   r)   mathr   absr   rX   zip)	r   pqrZaeresultsZrefvalsresrefr   r   r   test_own_module   s    r   c                   C   s    t tdd  t tdd  d S )Nc                   S   s   t dS r   rT   r   r   r   r   r      r   ztest_bad_args.<locals>.<lambda>c                   S   s   t ddgS r   rT   r   r   r   r   r      r   )r   r   r   r   r   r   test_bad_args   s    r   c                  C   sL   t ttt ddi} | ddks$J t ttt ddi} | ddksHJ d S )Nr   gQ	@r   r                 ?r   y      ?      ?)rU   r   r   r   r   r   r   r   
test_atoms   s    r   c                  C   st   dt j_t d} ttttd}|tttks6J d}| |tdd t	t
|    k rj|k spn J d S )N2   40.19866933079506121545941262711838975037020672954020sympyr   r      )mpmathmpdpsmpfrU   r   r)   r   evalfr
   strsin02r   precr   r   r   test_sympy_lambda   s    
r   c                     s`   dt j_t d} ttttd d}|  d|    k rD|k sJn J tt fdd d S )Nr   r   r   r   皙?c                      s    t S Nr   r   r   r   r   r      r   z"test_math_lambda.<locals>.<lambda>)	r   r   r   r   rU   r   r)   r   r   )r   r   r   r   r   test_math_lambda   s    
$r   c            	         s  dt j_t d} ttttd d}|  t d|    k rJ|k sPn J tt fdd t dt d	d
  dt d d  dt d d  dt d d  }ttt	ftt	 d d}ttt	ft
tt	d}ttftttt d}|t dt d t d}|t dt d t d}|t d}t|| dk s\J t|| dk srJ t|| dk sJ d S )Nr   r   r   n5z0.2c                      s    t S r   r   r   r   r   r   r      r   z$test_mpmath_lambda.<locals>.<lambda>z1e-30z1e-45r   r   z1e-60   r   z1e-75r   !   z1e-90(   r   1z1e-15gLoW5g[ݦe2g#aMR/)r   r   r   r   rU   r   r)   r   r   r   rh   rY   rZ   r   )	r   r   ref2Zf2af2bZf2cZans2aZans2bZans2cr   r   r   test_mpmath_lambda   s0    
*  r   c                  C   sJ   dt j_t d} tt| d}d}| |d|    k r@|k sFn J d S )Nr   r   r   r   r   )r   r   r   r   rU   r   r   r   r   r   test_number_precision   s
    
r   c                   C   s6   dt j_ttdtdd ttdks2J d S )Nr   r   r   )r   r   r   r   rU   r   r   r   r   r   r   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matr   r   r   test_math_transl   s    r   c                  C   sF   ddl m}  |  D ],\}}|tjv s2|dks2J |tjv sJ qd S )Nr   )MPMATH_TRANSLATIONSru   )r   r   r   r   r   r   )r   r   r   r   r   r   test_mpmath_transl   s    r   c                  C   sJ   t std ddlm}  |  D ]$\}}|tjv s6J |t jv s J q d S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)r   r}   r   r   r   r   r   )r   r   Znumpr   r   r   test_numpy_transl   s    r   c                  C   sV   t std ddlm}  |  D ]0\}}|tjv s6J |t jv s |t jjv s J q d S )Nscipy not installed.r   )SCIPY_TRANSLATIONS)r   r}   r   r   r   r   r   special)r   r   Zscipr   r   r   test_scipy_transl  s    r   c                  C   s@   t std ttttd} | ddks,J | ddks<J d S )Nr   r   r   r   )r   r}   rU   r   r   r   r   r   r   test_numpy_translation_abs  s
    r   c                  C   s   t std ddlm}  d}tttf}| j D ]b}||v r>q0t	|}t
|dr\|jd }nd}|d | }t||| dd}|d	|  d us0J q0d S )
Nnumexpr not installed.r   )NumExprPrinter)wherecomplexcontains_nargsr   r   r   r   )r   r}   sympy.printing.lambdareprr   r   r   r   Z_numexpr_functionskeysr   hasattrr  rU   )r   Z	blacklistZ	arg_tupler   Zssymnargsargsr   r   r   r   test_numexpr_printer  s    

r  c                  C   s|   t tttd} | ddks J | ddks0J | ddks@J t| dd dk sXJ | dd	kshJ | d
dksxJ d S )Ncmathr   r   r   r   9v?MbP?r   r                  @rU   r   r"   r   r   r   r   r   test_cmath_sqrt2  s    r  c                  C   sd   t tttd} t| dd dk s(J t| tjd dk sBJ t| dtd dk s`J d S )Nr  r   r   r   r   )rU   r   r   r   r  er   r   r   r   test_cmath_log<  s    r  c                  C   s   t tttd} t| dtd dk s.J t| ttt dk sLJ t| t tt  dk snJ t| dtd dk sJ d S Nr  r   r   r   )rU   r   r,   r   r  r   r   r   r   r   test_cmath_sinhC  s
    "r  c                  C   s   t tttd} t| dtd dk s.J t| ttt dk sLJ t| t tt  dk snJ t| dtd dk sJ d S r  )rU   r   r-   r   r  r   r   r   r   r   test_cmath_coshK  s
    "r  c                  C   s   t tttd} t| dtd dk s.J t| ttt dk sLJ t| t tt  dk snJ t| dtd dk sJ d S r  )rU   r   r.   r   r  r   r   r   r   r   test_cmath_tanhS  s
    "r  c                  C   s   t tttd} t| dtd dk s.J t| ttt dk sLJ t| t tt  dk snJ t| dtd dk sJ d S r  )rU   r   r)   r   r  r   r   r   r   r   test_cmath_sin[  s
    "r  c                  C   s   t tttd} t| dtd dk s.J t| ttt dk sLJ t| t tt  dk snJ t| dtd dk sJ d S r  )rU   r   r'   r   r  r   r   r   r   r   test_cmath_cosc  s
    "r  c                  C   sP   t tttd} t| dtd dk s.J t| dtd dk sLJ d S r  )rU   r   r+   r   r  r   r   r   r   test_cmath_tank  s    r  c                  C   s   t tttd} t| dtd dk s.J t| dtd dk sLJ t| dtd dk sjJ t| dtd dk sJ t| dtd dk sJ d S )Nr  r   r   r   r   r   r   )rU   r   r$   r   r  r   r   r   r   test_cmath_asinq  s    r  c                  C   s   t tttd} t| dtd dk s.J t| dtd dk sLJ t| dtd dk sjJ t| dtd dk sJ d S )Nr  r   r   r   r   r   )rU   r   r%   r   r  r   r   r   r   test_cmath_acosz  s
    r  c                  C   s   t tttd} t| dtd dk s.J t| dtd dk sLJ t| dtd dk sjJ t| dtd dk sJ t| dtd dk sJ d S Nr  r   r   r   r   r   r  )rU   r   r&   r   r  r   r   r   r   test_cmath_atan  s    r  c                  C   s   t tttd} t| dtd dk s.J t| dtd dk sLJ t| dtd dk sjJ t| dtd dk sJ t| dtd dk sJ d S r  )rU   r   r   r   r  r   r   r   r   test_cmath_asinh  s    r   c                  C   s   t tttd} t| dtd dk s.J t| dtd dk sLJ t| dtd dk sjJ t| dtd dk sJ d S )Nr  r   r   r   r   r  )rU   r   r   r   r  r   r   r   r   test_cmath_acosh  s
    r!  c                  C   s   t tttd} t| dtd dk s.J t| dtd dk sLJ t| dtd dk sjJ t| dtd dk sJ t| dtd dk sJ t| dtd dk sJ d S )	Nr  r   r         ?      r   r  )rU   r   r   r   r  r   r   r   r   test_cmath_atanh  s    r%  c               	   C   s  t d} t| tt| tt|   ttt|  tt|   }t| g|ddgd}t	j
d }t||d|  dk s~J t| gtt|  t| tt|    ddgd}t||dk sJ t| gt| tt| tt| ttt|     ddgd}t||d|  dk s J t| gt| tt| tt|  ttt|  tt|    ddgd}t||d|  dk sJ t| gt| tt| tt|  ttt|  tt|    ddgd}t||d|  dk sJ t| gt| tt| tt|  ttt|  tt|    ddgd}t||d|  dk s^J t| gt| tt| tt|  ttt|  tt|    ddgd}t||d|  dk sJ t| gt| t| t|   d  ddgd}	t|	|dk sJ tt| tt|  tt| t|   }
tt| tt| t  t|  }ttt| t|  }ttt| t|  }ttt| t|  t| t|   }ttt| t|  t| t|   }t| g|
ddgd}t| g|ddgd}t| g|ddgd}t| g|ddgd}t| g|ddgd}t| g|ddgd}d}t||dk snJ t||dk sJ t||dk sJ t||dk sJ t||dk sJ t||dk sJ d S )	Nr   r  r   r   r   r   gؗҼ<      @      @)r   r'   ri   r-   rj   r   r)   r,   rU   r   r   r   r   r   )r   exprfuncZhpiZfunc_expZfunc_cosZfunc_sinZfunc_cosh_1Z	func_sinhZfunc_cosh_2expr1expr2Zexpr3Zexpr4Zexpr5Zexpr6func1func2func3func4Zfunc5Zfunc6Z
test_valuer   r   r   test_cmath_complex_identities  s`    <
04@@@@.,$((r/  c                  C   sj   t std tstd td} t| jdd d\}}t||f| t gdd}tjd	\}}||| d S )
Nr   r   zb*a - sqrt(a**2)c                 S   s   | j S r   )name)sr   r   r   r     r   z!test_issue_9334.<locals>.<lambda>)keyF)r   dummifyr   r   )r   r}   r   r   sortedZfree_symbolsrU   random)r'  abfunc_numexprZfoobarr   r   r   test_issue_9334  s    r;  c                  C   s   t std ttttftttdkfttdkft } tt< | ddddksRJ t	| ddddksjJ W d    n1 s~0    Y  d S )Nr   r   r   r      *   nan)
r   r}   rU   r   r   r   r#   r   RuntimeWarningr   )r9  r   r   r   test_issue_12984  s    (
r@  c                  C   sd   t d\} }| |  }t| |g|}t| |g|g d}|dd|ddksNJ |dddks`J d S )Nzx yr   r      r   rU   )r   r   r'  Z
no_modulesZempty_modulesr   r   r   test_empty_modules  s    
rD  c                  C   sr   t ttd } | ddksJ | ddks.J | ddks>J | ddksNJ | ddks^J | ddksnJ d S )	Nr   r   r   r   r$  r         @      @r   r   r   r   r   test_exponentiation  s    rG  c                  C   sj   t ttt} | ddksJ | ddks.J | ddks>J t| dd d	k sVJ | d
dksfJ d S )Nr   r   r   r   r   r   r   r  r  rF  rE  r  r   r   r   r   	test_sqrt  s    rH  c                  C   s   t tgttttgd} | t}d}| |d d   k rD|k sJn J | |d   k rd|k sjn J | d}d}| |d d   k r|k sn J | |d   k r|k sn J d S )Nr   gdy=r   r   n!	@gh㈵>)rU   r   r'   r)   r   )r   dr   r   r   r   	test_trig  s    $ $rK  c                  C   sf   t rtstd ttttd  } ttt| tttt	f}|t	 }d|  k r\dk sbn J d S )Nr   r   giv[?gm[?)
r   r   r}   r   r   r   rU   r   rE   r   )r   lrJ  r   r   r   test_integral%  s    
rM  c                  C   sn   t rtstd tddtd td    tddftdtf} ttg| }|d}d|  k rddk sjn J d S )Nr   r   r   r   gX<?g<?)r   r   r}   rE   r   r   r   rU   )irL  rJ  r   r   r   test_double_integral.  s    ,rO  c                  C   s   t rtstd d} td}td|}tt||| |||   dk sPJ t	d|}tt||| |||   dk sJ d S )Nr   g@r   r   :0yE>)
r   r   r}   r   r3   r   rU   subsr   r4   )Z
test_pointr   ZjtestZytestr   r   r   test_spherical_bessel7  s     

rR  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   r   r   r   r   r   r   c                      s    dS r   r   r   r   r   r   r   L  r   z$test_vector_simple.<locals>.<lambda>)rU   r   r   r   r   r   r   r   r   r   test_vector_simpleG  s    rS  c                      s\   t tdt dt f tt fdd  ddks8J  ddksHJ  dd	ksXJ d S )
Nr   r   c                      s    dS r   r   r   r   r   r   r   Q  r   z+test_vector_discontinuous.<locals>.<lambda>)g      r   r   )r#  r"  r$  )r"  r#  )rU   r   r   ZeroDivisionErrorr   r   r   r   test_vector_discontinuousO  s
    rU  c                  C   sV   t tgttttgd} | t}t|d d dk s:J t|d d dk sRJ d S )Nr   r   r   -C6?)rU   r   r'   r)   r   r   r   rJ  r   r   r   test_trig_symbolicW  s    rX  c                  C   sT   t tgttttg} | d}t|d d dk s8J t|d d dk sPJ d S )NrI  r   r   rV  )rU   r   r'   r)   r   rW  r   r   r   test_trig_float^  s    rY  c                  C   s   t ttd } | ddksJ t tttgtttg} | dddg dksLJ t ttt} | ddksjJ t ttfttt d } | dddksJ d S )	Nr   r   r   r   r   r   r   r   r   r   )rU   r   r   r   r"   r)   r   r   r   r   	test_docse  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   )rU   r   r   r)   r   r   r   r   	test_mathp  s    r\  c                  C   sP   t tttd } t| dts$J t tttd dd} t| dtsLJ d S )Nr   r   r   )rU   r   r)   
isinstancefloatr   r   r   r   test_sinu  s    r_  c                  C   s  t ttt gttd tt gg} t ddgtdd dgg}ttttf| dd}|ddd|kshJ ttttf| | gfdd}|ddd||gfksJ t ttt fttf}t ttf}t ddgddgg}t||dddd|ksJ t|j|dddd|ksJ d S )Nr   r   r   r   r   r   r   )ru   r   r   r)   r   rU   ZjacobianT)AZsolr   Jvr   r   r   test_matrix|  s    $rd  c                     sT  t std tttt gttd tt gg} t ddgt dd dgg}ttttf| dg}t j	
|ddd| t|dddt jsJ G dd dt}|ttdgdgd	ggtt}t d
 t | d	ksJ dddd}ttf dddii|}tt|d}t | d	ks2J t|tt fdd d S )Nr   r   r   r   r   r   c                   @   s   e Zd ZdS )ztest_numpy_matrix.<locals>.dotN)__name__
__module____qualname__r   r   r   r   dot  s   rh  r   )   r   FT)Zallow_unknown_functionsinlineZfully_qualified_modulesZuser_functionsprinterc                      s   t td S Nrk  r   r   inpZp3Z	x_dot_mtxr   r   r     r   z#test_numpy_matrix.<locals>.<lambda>)r   r}   ru   r   r   r)   r   arrayrU   testingassert_allcloser]  ndarrayr   zerosallrz   dictr   	Exception)ra  sol_arrr   rh  Zf_dot1Z	strict_kwp2Zf_dot2r   rn  r   test_numpy_matrix  s$    $ 

rz  c                  C   sX   t std tdtgddgg} tt| jdd}t j|dt ddgddgg d S )Nr   r   r   r   r   r   )	r   r}   ru   r   rU   r`  rq  assert_array_equalrp  ra  r   r   r   r   test_numpy_transpose  s
    r}  c                  C   s   t std ttttg} ttttgt| | dd}ttttgt| | jdd}ttttgt| j| dd}ttttgt| | jdd}|ddd|ddd  kr|ddd  kr|ddd  krt 	dgksn J d S )Nnumpy not installedr   r   r   r   r      )
r   r}   ru   r   r   r   rU   rL   r`  rp  ra  r   r   r   Zf4r   r   r   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   r   r   r   r   r   r   r$  )r   r}   ru   r   rU   rq  r{  rp  r|  r   r   r   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	sJ W d    n1 s0    Y  d S )Nr   r   r   r   r   ZImmutableDenseMatrixr   )r   r}   ru   r   r   r)   r   rp  rU   Zmatrixr   PendingDeprecationWarningrq  rr  r]  )ra  rx  r   r   r   r   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sNJ d S )Nr   r   r   r   r   r   )	r   r}   rw   r   r   rU   r]  r   Z
coo_matrix)ra  r   Br   r   r   test_scipy_sparse_matrix  s    
r  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X t|t d	t d
d	ksvJ t|t d	t dtdksJ W d    n1 s0    Y  d S )Nr   r   r   Tr   r   ignore)divider   r"  inf)	r   r}   r#   r   r   rU   Zerrstater^  rp  )r   r   r   r   r    test_python_div_zero_issue_11306  s    ("r  c                  C   s   d dg} t r| d tr$| d | D ]P}tttjt |d}|ddksPJ ttttjt |d}|ddks(J q(tt	t
g| D ]J\}}tt|t|d}|dd	ksJ |d	d	ksJ |d
dksJ qd S )Nr   r   r   r   r   r"  r   r   r   r&  r   )r   appendr   rU   r   r   ZOner   r   r   r   )Zmodsmodr   Zabsfuncr   r   r   r   test_issue9474  s    

r  c                  C   s   t std tstd ttd td  } td|  t}tddd }}tdd  |d	  }tttf|d
d||}tttf|dd||}tj	j
||dd tj	j
||dd d S )Nr   r   r   r   r      r   rB  r$  r   r   r   绽|=)rtol)r   r}   r   r"   r   r   r   ZlinspacerU   rq  rr  )r   r'  xnr4   Zfv_exactZfv_numpyZ
fv_numexprr   r   r   test_issue_9871  s    r  c                  C   s   t std tttdk ftd tdkfd} tt| dd}t j|t dt 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   Tr   r   r   )
r   r   r   r   r   r   $   1   @   Q   r   r   r   r   r   )
r   r}   r#   r   rU   rq  r{  Zarangerp  r>  )piecesr   Z
nodef_funcr   r   r   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   r   r   TF)r   r}   rU   r   r   rF   r   rJ   rI   rp  rq  r{  )Zand_funcZ
and_func_3Zor_funcZ	or_func_3Znot_funcarr1arr2Zarr3r   r   r   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   r   r   r   r   r"  r   r   g      ?      @r#  g      ?g     R@g     ]@      )r   r}   ru   r   r   r   r   rU   rq  r{  rp  )ZxmatZymatZmat_funcr   r   r   r   test_numpy_matmul*  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 || |||| ||sJ d S )	Nr   r   r      r   r   r   r   )r   r}   r   r6  randnr)   r   r'   r   r+   r   r   r%   r   r   r"   r   rU   allclose)r7  r8  cr'  ZnpfuncZnefuncr   r   r   test_numpy_numexpr8  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  stJ ttddd }tt	tf|t	td
d}t 
|| |d|  | d	 sJ d S )Nr   r   r   r   ufevalc                 S   s   |d d S r   r   r   r   r   r   r   r   M  r   z,test_numexpr_userfunctions.<locals>.<lambda>r   r   r   c                 S   s   d|  | d S r   r   r  r   r   r   r   Q  r   )r   r}   r   r6  r  typer   classmethodrU   r   r  r{   r   )r7  r8  r  r(  r   r   r   test_numexpr_userfunctionsF  s    r  c                  C   s   t std ttttdtd  } tt| dd}t jj	 8}t j
dt jd}||j|dd	ksjJ W d    n1 s~0    Y  d S )
Ntensorflow not installed.r   r   r   r   r   Zdtypesessionr"  )r   r}   r    r)   r   r   rU   compatv1Sessionconstantfloat32r  r'  r(  r1  r7  r   r   r   test_tensorflow_basic_mathV  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srJ W d    n1 s0    Y  d S )
Nr  r   r   r   r   r  r   r  Z	feed_dictr"  )r   r}   r    r)   r   r   rU   r  r  r  placeholderr  r  r  r   r   r   test_tensorflow_placeholdersa  s    r  c                  C   s   t std ttttdtd  } tt| dd}t jj	 J}t j
dt jd}||j ||j||didd	ks|J W d    n1 s0    Y  d S )
Nr  r   r   r   r   r   r  r  r"  )r   r}   r    r)   r   r   rU   r  r  r  Variabler  runZinitializerr  r  r   r   r   test_tensorflow_variablesl  s    r  c                  C   s|   t std tttttt} tttg| dd}t jj	
 *}|ddj|ddksZJ W d    n1 sn0    Y  d S )Nr  r   r   FTr  )r   r}   rI   rF   rJ   r   r   rU   r  r  r  r  r'  r(  r1  r   r   r   "test_tensorflow_logical_operationsx  s    r  c                  C   s   t std tdttdfdtdk fdtdkf} tt| dd}t jj X}|dj	|ddksfJ |dj	|ddks~J |dj	|ddksJ W d    n1 s0    Y  d S )Nr  r   r   r   r   r   r  )
r   r}   r#   r   r   rU   r  r  r  r  r  r   r   r   test_tensorflow_piecewise  s    &r  c                  C   st   t std ttt td } tt| dd}t jj (}|dj|ddksRJ W d    n1 sf0    Y  d S )Nr  r   r   r   r$  r  r   )	r   r}   r    r   rU   r  r  r  r  r  r   r   r   test_tensorflow_multi_max  s    r  c                  C   st   t std ttt td } tt| dd}t jj (}|dj|ddksRJ W d    n1 sf0    Y  d S )Nr  r   r   r   r$  r  )	r   r}   r!   r   rU   r  r  r  r  r  r   r   r   test_tensorflow_multi_min  s    r  c                  C   sj   t std tdk} tt| dd}t jj (}|dj|ddksHJ W d    n1 s\0    Y  d S )Nr  r   r   r   r   r  T)r   r}   r   rU   r  r  r  r  r  r   r   r   test_tensorflow_relational  s    r  c                  C   s   t std ttttdd} ttttdd}ttttdd}ttttdd}t jj	
 }t d}| |j|ddksJ ||j|ddksJ ||j|d}td }t|| dk sJ ||j|d}td }t|| dk sJ W d    n1 s0    Y  d S )	Nztensorflow not installedr   r   y      ?       @r  r   r   gư>)r   r}   rU   r   ri   rj   r   rk   r  r  r  r  r  r   r   )r+  r,  r-  r.  r1  r7  Ztensorflow_resultsympy_resultr   r   r   test_tensorflow_complexes  s     
r  c                  C   s|   t std tttggtt t d} t jj 6}| t ddg}|j	|ddksZJ W d    n1 sn0    Y  d S )Nr  r   r   r   r        @)
r   r}   rU   r   r   r  r  r  r  r  )r   r1  Zfcallr   r   r   test_tensorflow_array_arg  s    r  c                  C   s&   t ttt } | ttt ks"J d S r   rU   r   r   r   r   r   r   r   test_sym_single_arg  s    r  c                  C   s0   t ttgtt t } | dddt ks,J d S r   r  r   r   r   r   test_sym_list_args  s    r  c                  C   sx   t tttd  } ttt| ttt tfdd}|ttttd  tt tfks\J |t tt	kstJ d S )Nr   r   r   )
r   r   r   rU   rE   r   r   doitr"   r   )r   rL  r   r   r   test_sym_integral  s     (r  c                  C   s   ddd i} dd dd d}t d}t d}tt|t| dfd	}|d
dksXJ tt|t|dfd	}|d
dks~J |d
dksJ d S )Nr   c                 S   s   dS )Nfirst fr   r   r   r   r   r     r   z&test_namespace_order.<locals>.<lambda>c                 S   s   dS )Nzsecond fr   r   r   r   r   r     r   c                 S   s   dS )N
function gr   r   r   r   r   r     r   )r   gr  r   r   r   r  r  )r   r   rU   r   )Zn1Zn2r   r  Zif1Zif2r   r   r   test_namespace_order  s    

r  c                     s   t ddd  t ddd } tt t}tt| t}t tt| tksTJ |ddksdJ |dtdkszJ td}t|drJ t |d	d }t|dsJ t dd
d t	t
 fdd d S )Nr   c                 S   s   d|  S Nr   r   r   r   r   r   r     r   ztest_imps.<locals>.<lambda>c                 S   s
   t | S r   )r   r"   r   r   r   r   r     r   r   r   r   Z_imp_c                 S   s   d|  S r  r   r   r   r   r   r     r   c                 S   s   | d S )Ne   r   r   r   r   r   r     r   c                      s   t t tS r   r   r   r   r   r   r   r     r   )r{   rU   r   r   r   r"   r   r   r  r   
ValueError)r  l1l2r(  Zmy_fr   r  r   	test_imps  s    
r  c                     sJ   t dttfD ]6\}   fdd}td|}|| }||| ksJ qd S )N)r   r   r   r   c                    s   | dkr dS )Nr   r   r   )r7  Zerror_classr   r   r     s    z test_imps_errors.<locals>.myfuncr   )r   r   r  r{   )valr   r   r'  r   r  r   test_imps_errors  s
    
r  c                   C   s   t tdd  d S )Nc                   S   s   t tdd S )Nc                 S   s   | S r   r   r   r   r   r   r   $  r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>)r{   r)   r   r   r   r   r   $  r   z&test_imps_wrong_args.<locals>.<lambda>)r   r  r   r   r   r   test_imps_wrong_args#  s    r  c                  C   s  t j} tt| tddks J ttd| t ddks>J tttft| t dddksbJ tddd } tt| tddksJ ttd| t ddksJ tttft| t dddksJ tt| ttf}|d	d
ksJ tt| ttg}|d	dd	gksJ tt| t| ttfg}|d	dd
gksFJ tt| tti}|d	dd	iksnJ tt| tti}|d	dd	iksJ ttt| ti}|d	d	diksJ ddd i}tt| t|}|d	dksJ tt| t|dd}|d	dksJ d S )Nr   r   r   r   c                 S   s   | d S )Nr   r   r   r   r   r   r   /  r   z$test_lambdify_imps.<locals>.<lambda>r   r  r   )g   r   r  c                 S   s   | d S )Nc   r   r   r   r   r   r   A  r   F)Zuse_impsf   )r   r'   rU   r   r   r{   )r   lamrJ  r   r   r   test_lambdify_imps'  s2    $$r  c                     s  t dtd tdt d} d d   }t f|}|dddks`J ttdtd  }| d d  ksJ t| fd|   }|ddd	ksJ tt fd
d tt fdd tt fdd d S )NtFGz\alphar   r   	   r   r   c                      s&   t     d S )Nr   rT   r   r  r  r  r   r   r   Y  r   z$test_dummification.<locals>.<lambda>c                      s   t d  d  d S )Nr   r   rT   r   r  r  r   r   r   Z  r   c                      s   t d  d  d S )Nr   r   r   rT   r   r  r   r   r   [  r   )r   r   rU   r)   r   SyntaxError)alphaZ	some_exprr  r   r  r   test_dummificationI  s     r  c                  C   sR   t d} |  \}}}|| }t||g|}|dd}d}t|| dk sNJ d S )NNr   333333?r"  r   )rW   Zbase_scalarsrU   r   )r  r  r4   Zznr'  r   r   r   r   r   r   8test_lambdify__arguments_with_invalid_python_identifiers^  s    
r  c                  C   sJ   t ddd} t| | }|ddks(J t| | dd}|ddksFJ d S )Nz{v}r   r   Tr3  )r   rv   rU   )Zcurlyvr  r   r   r   test_curly_matrix_symboli  s
    
r  c                  C   s.   t d} | d }t| |}|ddks*J d S )Nifr         @r   rC  )Z	python_ifr'  r   r   r   r   test_python_keywordsr  s    
r  c                  C   s   t ttttftt t t } d }| j d t| |ksDJ td}t |t	|} d }| j d t| |ksJ d S )NzOCreated with lambdify. Signature:

func(w, x, y, z)

Expression:

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

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

Expression:

a1 + a10 + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a2 + a20 +...)
rU   r   r   r   r   
splitlines__doc__lenr   sum)r(  r   symsr   r   r   test_lambdify_docstring|  s    r  c                  C   s   t ttd } d}t| |ks$J t| }|ds<J |tjv sJJ tj| t|d |	d|fksnJ ~ t
  |tjvsJ d S )Nr   z,def _lambdifygenerated(x):
    return x + 1
z<lambdifygenerated-T)rU   r   inspect	getsourcegetsourcefile
startswith	linecachecacher  r  gcZcollect)r(  sourcefilenamer   r   r   test_lambdify_linecache  s    
$r   c                     s$  ddl m   fdd} ttdtd tj }td|d| d	}td|d d	}td|d  d	}ttd
d}t	| |sJ t	| |sJ t	| |sJ tt
tt
dd}tt
tt
dd}tt
tt
dd}|||g}	td}
td}td}|
||g}|	|ks J d S )Nr   IntervalPrinterc                    s      | S r   )doprint)r'  r  r   r   intervalrepr  s    z+test_special_printers.<locals>.intervalreprr   r   r   r   )r   rl  r   r   g?   )r  r  r"   r   HalfrU   r  r   mpir]  r   rB   )r  r'  Zfunc0r+  r,  r  Zexp1r[   Zexp3Zexp_lsZsol1Zsol2Zsol3Zsol_lsr   r  r   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)rU   rK   rG   r   r   r   r   test_true_false  s    r	  c                   C   sv   t tttfftt dddks$J t ttttffftt t t dddksTJ t ttd ddddksrJ d S )	Nr   r4  r   )r   )r   r   r   Fr  r   )rU   r   r   r   r   r   r   r   r   test_issue_2790  s    $0r
  c                  C   s.   t ddd } | | d tdks*J d S )Nr   c                 S   s   | d S r  r   r   r   r   r   r     r   z"test_issue_12092.<locals>.<lambda>r   r  )r{   r   r
   r   r   r   r   test_issue_12092  s    r  c                  C   sF   G dd dt j} | d}d| }t |}|dddksBJ d S )Nc                   @   s   e Zd Zdd ZeZeZdS )z"test_issue_14911.<locals>.Variablec                 S   s   | | jS r   )r  r0  )selfrl  r   r   r   	_sympystr  s    z,test_issue_14911.<locals>.Variable._sympystrN)re  rf  rg  r  Z_lambdacodeZ
_numpycoder   r   r   r   r    s   r  r   r     z2*x)r   ZSymbolry   r  replace)r  r   r   coder   r   r   test_issue_14911  s
    r  c                   C   sT   t tttfttttddddks(J t tttfttttddddksPJ d S )NTr   r   F)rU   r   r   r   rH   r   r   r   r   test_ITE  s    (r  c                   C   sT   t tttfttttddddks(J t tttfttttddddksPJ d S r   )rU   r   r   r   r!   r    r   r   r   r   test_Min_Max  s    (r  c               	   C   s  t std t g d} t g d}t g d}t g d}t tttfttt| ||kslJ t tttfttt| ||ksJ t tttt	ftttt	| || |ksJ t tttt	ftttt	| || |ksJ t ttftt| | ksJ t ttftt| | ks8J t tttt	t
ftttt	t
| || dg dksrJ t tttt	t
ftttt	t
| || dg d	ksJ tttfttttg| |dd
gksJ t g dg dg dg}ttfttddttddg|\}}t |t j|ddks<J t |t j|ddksZJ t tttftttg dg dg dksJ t tttdtg dg d	ksJ d S )Nr~  )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   )Zaxisr   r   rZ  )r   r   r   )r   r}   rp  ru  rU   r   r   rf   re   r   r   rc   rd   r    r!   )Za234Za152Za254Za132ra  Zmin_Zmax_r   r   r   test_amin_amax_minimum_maximum  s2    ((..$$::.(6r  c                  C   sl   t std td} td\}}t ddgddgg}t| t| ttf tddftddf|d	kshJ d S )
Nr~  r7  zi jr   r   r   r   r   r   )	r   r}   rR   r   rp  rU   r   r   r   )r7  rN  jr8  r   r   r   test_Indexed  s    r  c                  C   sT   t ttdtftddf} dt }|  |ks0J ttg| d|tdksPJ d S )Nr   r   B   rA  )r   r   r   r   r  rU   rQ  )r  r   r   r   r   test_Sum  s    r  c                  C   s<   t d} td}g d}t| |g| | |ddks8J d S )Nr7  rN  r   r   r   )rR   rS   rU   )r7  rN  r8  r   r   r   test_Idx$  s    r  c                  C   sh   t ttftttddd} t ttftttddd}| tdd ksNJ |tdd ksdJ d S )Nr   r   r   )rU   r   r   r   r   r   )r)  r*  r   r   r   test_issue_12173,  s    r  c                  C   s>   t std tttt} t| dtd  dk s:J d S )Nr~  r   r   )r   r}   rU   r   r*   r   nr   r   r   r   test_issue_136424  s    r  c                  C   s4   t tttd} t| dtd  dk s0J d S )Nr   r   r   )rU   r   r*   r   r  r   r   r   r   test_sinc_mpmath;  s    r  c                  C   s   t  } t| | d dd}|ddks(J t| | d }|ddksFJ t d}t||d }|ddkslJ t|gg|d }|dgdksJ d S )Nr   Fr  r   r   r   r   rU   )d1r   Zf1bZd2r   r   r   r   r   test_lambdify_dummy_arg@  s    r"  c                  C   s:   t  } tt| }t| |g| | }|dddks6J d S )Nr   r   r   )r   r   r   rU   )rJ  Zdsymr   r   r   r   %test_lambdify_mixed_symbol_dummy_argsM  s    r#  c                  C   sD   t std tttggtt t d} | t ddgdks@J d S )Nr~  r   r   r   r   )r   r}   rU   r   r   rp  r   r   r   r   test_numpy_array_argU  s    r$  c               	   C   s  t std tttttttt	t
g	} t jjt jjt jjt jjt jjt jjt jjt jjt jjg	}tjd t| |D ]\}}tt|tdd}tdD ]}tjdddtjd	d
  }|tkrt|}|tkrt|}|tkrt|}|| }||}|t	kr||d }|t
kr0||d }t||| ddt|  k sVJ t||| ddt|  k sJ qqrtttttt g}	t jj!t jj"t jj#t jj$t jj%t jj g}
t|	|
D ]\}}ttt&f|tt&dd}tdD ]}tjdd}tjdddtjd	d
  }|tt fv r2t|}|t krHtt'|}||| }t|||| ddt|  k s~J t|||||| ddt|  k sJ qqd S )Nscipy not installedr   r   r      r   r   r   r   gvIh%<=)(r   r}   r9   r:   r;   r   rA   rB   r@   r>   r?   r   ZexpiZgammalnpsiZsicir   r6  seedr   rU   r   rangeuniformr   r   r   r   r0   r2   r/   r1   rC   ZpochZjvZyvZivkvr   int)Zsingle_arg_sympy_fnsZsingle_arg_scipy_fnssympy_fnZscipy_fnr   rN  tvr  scipy_resultZdouble_arg_sympy_fnsZdouble_arg_scipy_fnsZtv1Ztv2r   r   r   test_scipy_fns_  sX     




&( 

(r2  c                  C   s  t std tjd td} tdftdftdft	dft
dftdftdftdftdfg	}d}|D ]R\}}| d | tf }t||| }tdD ]}tjdd}ttjjdd	|d d
}	tjdddtjdd	  }
|t	krt|
}
|tkr"tjdd}
ttjjd|dd
}	|f|	 |
f }|| }||  }ddt|  }t|| }z||k srJ W q ty   t|jt|t|t|t|||dY q0 qqbd S )Nr%  r   zn k a br   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(  r   &.>)r(  r
  r  r1  r   tol)r   r}   r   r6  r*  r   rl   rm   rn   ro   rp   rq   rr   rs   rt   r   rU   r+  randinttupler,  r   r   r   r   AssertionErrorformatrepr)paramsZpolysmsgr/  Z
num_paramsr
  r   _tnZtparamsr0  valsr1  r  atolr   r   r   r   test_scipy_polys  s\     

rA  c                  C   s$   t ttd } dt| v s J d S )Nr   zx**2)rU   r   r  r  r   r   r   r   test_lambdify_inspect  s    rB  c                  C   s   t  t   } }t| |g| d|did}|dddddks>J t| |g|| fd}|dddksdJ tg d}| dks|J t| |g|| gd}|ddddgksJ d S )Nr   r   r   )r   r   )r   r   r  r   )r   r   r   r   r   r   r   r   r   test_issue_14941  s    
rC  c                      s  t dt   t f  dddks4J tt f  dddksXJ tt fdd tt f  dd	dddksJ tt f  dd	tddtj	ksJ td
 ddksJ ttd
 dd	ddksJ d S )Nr   r   r   r  r   c                      s   t t f  ddS )NFr  )r  r|   r   r   Zfxr   r   r     s    z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>Tr  r   )   r=  )
r   r   r   rU   r  r|   r   rw  r   r  r   r   rD  r   (test_lambdify_Derivative_arg_issue_16468  s     $(.rF  c                  C   s   t tjtdd} tt| dgd}|d}t d t d  d }t|| t| dk sbJ t td t}tt|dgd}|d	}d
| }t|| t| dk sJ d S )NF)evaluater   r   r   gW   @rP  gHz>g;f?g;f@)rD   r   r   rU   r   r   )r)  r   Zans1ref1r*  r   Zans2r   r   r   r   test_lambdify_Derivative_zeta  s    rI  c                     s   t d} t d}G dd dt | ttttfdd ttg d}|dd	ks`J |tttt fd
d d S )Nr+  r,  c                   @   s   e Zd Zdd ZdS )z:test_lambdify_Derivative_custom_printer.<locals>.MyPrinterc                 S   s   |\}|\}dS )NZ42r   )r  r
  Z
seq_ordersrk   orderr   r   r   _print_Derivative_func1  s    zRtest_lambdify_Derivative_custom_printer.<locals>.MyPrinter._print_Derivative_func1N)re  rf  rg  rK  r   r   r   r   	MyPrinter  s   rL  c                      s   t tg S r   r   r   )r)  r   r   r     r   z9test_lambdify_Derivative_custom_printer.<locals>.<lambda>rk  rA  r=  c                      s   t tg dS rm  r   r   )rL  r*  r   r   r     r   )r   rz   r   r   r   rx   rU   )r+  r,  r   r   )rL  r)  r*  r   'test_lambdify_Derivative_custom_printer	  s    rM  c                  C   sZ  t d\} }}td| }|| d|| |||f}||| d |||   || |  |d  }d}d}||| d |||   || |  |d  |d  }d}	tg ddd	gD ]\}
}t||||
d
}|| }t|| dk sJ t|||g||
d
}|| }t|dks"J t|d | dk s<J t|d |	 dk sJ qd S )Nzt, a, br   r   )r   r   r  r  g      @   i)FNTFT)rN   r3  g-q=r   r   )r   r   r   r   rU   r   r  )r  r7  r8  r   r
  r)  num_argsrH  r*  r   r3  _cser+  res1Zfunc12Zres12r   r   r   3test_lambdify_derivative_and_functions_as_arguments  s"    2:rR  c                  C   sP   t tgtt} d}| ||jks(J t tgtt}|||jksLJ d S )Ny      @       @)rU   r   r   ri   r   rj   imag)Zf_rer  Zf_imr   r   r   test_imag_real5  s
    rT  c                  C   s   t std tddd} t ddgddgg}t| | d }t ||t dd	gd
dggsbJ t| | d }t ||t ddgddggsJ d S )Nr~  ra  r   r   r   r   r   g       r         ?r#  %   6   r  v   )r   r}   rv   rp  rU   r  )ra  ZA0r   r  r   r   r   test_MatrixSymbol_issue_15578>  s    &rY  c                  C   s   t std ddlm} m}m}m} ddlm} d\}}}}|	||||
 }	t| |||f|	| |||}
|
||||}t|	| dk sJ d S )Nr%  r   )r  rL  r   Z)hydrogen)r   r   r   r   r   )r   r}   Z	sympy.abcr  rL  r   rZ  Zsympy.physicsr[  ZR_nlr   rU   r   )r  rL  r   rZ  r[  nvlvrvZZvZsympy_valuer   Zscipy_valuer   r   r   test_issue_15654I  s    r_  c            	      C   sP  t std tddd} tddd}tddd}tddd	}td
}t| d| |  }t| d| |  }t| d|  }t|||fd| | | }t |t g dg dg dgt jd| d| d| gd| d| d| gd| d| d| ggtdsJ t |t g dg dg dgt j|d d| d d| d g|d d| d d| d g|d d| d d| d ggtdsJ t |t g dg dg dgt g dg dg dgsJ t |t g dg dgt g dg dg dgt g dg dg dg dgt g dg dgsLJ d S )Nr~  ra  r   r  r   Cr   Dr   kr   r   r  )r   r   r   )r   r   r   r   )r   r   r   r   r   )x      ih  i  iX  )r   r}   rv   r   rU   array_equalrp  object)	ra  r  r`  ra  rb  r   r  hrN  r   r   r   test_issue_15827U  s>    "H
"<
"
4 
rh  c                  C   sF   t std td} dd }t| || dd}|dt jjksBJ d S )Nr%  r   c                 S   s   t j| d  S r  )r   ZGoldenRatior   r   r   r   r   u  r   z"test_issue_16930.<locals>.<lambda>r   r   r   )r   r}   r   rU   	constantsZgolden_ratio)r   r   f_r   r   r   test_issue_16930p  s    rk  c                  C   sH   t std td} t| gt| ddd}|dtddksDJ d S )Nr%  r   r   r   r   r   )r   r}   r   rU   r   ZLambertWr   Zlambertw)r   rj  r   r   r   test_issue_17898y  s
    rl  c                  C   s   t std tttt} ttttd}| g d}|g d}t|d  dk s^J t|d d  dk szJ t|d d  dk sJ t|d  dk sJ t|d d  dk sJ t|d d  dk sJ d S )Nr~  r   r  r   r   r"  r   )r   r}   rU   r   r   r8   r   r  )r   r   rQ  Zres2r   r   r   test_issue_13167_21411  s    rm  c                  C   s"   t tt} | dtdksJ d S )N   r   )rU   r   r	   r   r   r   r   r   test_single_e  s    
ro  c                  C   s   t std td} t| t}t| tf|dd}ttdd|dd dksPJ t| t}t| tf|dd}ttdd|dd dksJ d S )Nr%  r7  r   r   r   r   r  )r   r}   r   r   r   rU   r   r   )r7  r   r  r   r   r   r   test_issue_16536  s    
 
rp  c                  C   s   t std td\} }ttjt| |}t|| |f}t| |f|dd}| d|di}t	|
|||   dk s|J d S Nr~  zx1 x2r   r   r   r   r  )r   r}   r   r    r   Zeror!   rO   rU   r   rQ  valuesru  )x1x2r   r  r  pointr   r   r   test_issue_22726  s    rw  c                  C   sj   t std td\} }tt| |}t| |f|dd}| d|di}t||||   dksfJ d S rq  )	r   r}   r   r8   r!   rU   r   rQ  rs  )rt  ru  r   r  rv  r   r   r   test_issue_22739  s    rx  c                  C   s   t std td\} }| tt|d t|  }t| |g|d}| d|di}t||||	   dksrJ t| |g|}t||||	   dksJ d S )Nr~  za tr   r   r   r  )
r   r}   r   r   r(   r'   rU   r   rQ  rs  )r7  r  r'  r  rv  r   r   r   test_issue_22992  s    "ry  c                  C   s@   t std tttd g} tt| d}|djt jks<J d S )Nr~  r   r   r   )r   r}   rP   r   rU   	__class__rs  )r'  r   r   r   r   test_issue_19764  s
    r{  c                  C   s:   t std ttttd} t j| ddddks6J d S )Nznumba not installedr   T)Znopythonr   g	T?)r   r}   rU   r   r)   Zjitr   r   r   r   test_issue_20070  s    r|  c                  C   st   t std tt} tt}tt| dd}tt|dd}ttd|d dksTJ ttd|d dkspJ d S )Nr%  r   r   ?r  )r   r}   r<   r   r=   rU   r   )r   r   ZF1ZF2r   r   r   test_fresnel_integrals_scipy  s    r~  c                  C   sL   t std ttt} tttf| dd}ttdd|dd dksHJ d S )Nr%  r   r   r}  ffffff@r  )r   r}   r5   r   r   rU   r   r   r  r   r   r   test_beta_scipy  s
    
r  c                  C   s@   t tt} tttf| dd}tt dd|dd dks<J d S )Nr   r   r}  r  r  )r5   r   r   rU   r   r  r   r   r   test_beta_math  s    
r  c                  C   s\   t std ttttt} tttttf| dd}ttdddd|dddd dksXJ d S )	Nr%  r   r   gffffff?g@r   r"  r  )	r   r}   r6   r   r   r   r   rU   r   r  r   r   r   test_betainc_scipy  s
    r  c                  C   s\   t std ttttt} tttttf| dd}ttdddd|dddd dksXJ d S )	Nr%  r   r   r   r  r   r   r  )	r   r}   r7   r   r   r   r   rU   r   r  r   r   r   test_betainc_regularized_scipy  s
    r  c            	      C   s   t std tttttttt	g} | D ]}d|j
v rJ|tt}ttf}d}n&d|j
v rh|t}tf}d}ntdt||}|| }|tt|| }t |t|s$J q$tttft	tttt}td|dd	 d
 dk sJ d S )Nr~  r   )r  g?r   )r  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)r   r}   rY   rZ   r[   r\   r]   r^   ra   rb   r	  r   r   NotImplementedErrorrU   rQ  rv  r   r   r  r^  r   )	funcsr(  r'  r
  rO  r   result	referenceZlae2r   r   r   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 s8J tttt j	j	
dd d d	k}|rtttftttdd}t|d
dd dk sJ d S )Nr%  r   r   g#B;gWw'&l7gN~h.r   )r   r   g333333?r4  g-=gFFg<)r   r}   rU   r   rg   r   r7  mapr.  versionsplitr   rh   )Zcm1Zhave_scipy_1_10plusZcm2r   r   r   test_scipy_special_math%  s    $r  c                  C   s4   t std ttfttdd} | ddks0J d S )Nr%  r   r   r   r"  )r   r}   rU   r   r   )Zbernr   r   r   test_scipy_bernoulli3  s    r  c                  C   s^   t std ttfttdd} | ddks0J tttftttdd}|dddksZJ d S )Nr%  r   r   r   rU  g      ?)r   r}   rU   r   r   r   )ZhnZhnmr   r   r   test_scipy_harmonic;  s    r  c                  C   s\   t std tttggtt t d} | t ddg}|dksDJ dtt|v sXJ d S )NCuPy not installedr   r   r   r   r   r}   rU   r   r   rp  r   r  r   r  r   r   r   test_cupy_array_argE  s    r  c                  C   s\   t std tttggtt t d} | t ddg}|dksDJ dtt|v sXJ d S )Nr  r   r   r   r   r   r  r  r   r   r   test_cupy_array_arg_using_numpyO  s    r  c                  C   s   t std ttttg} ttttgt| | dd}ttttgt| | jdd}ttttgt| j| dd}ttttgt| | jdd}|ddd|ddd  kr|ddd  kr|ddd  krt 	dgksn J d S )Nr  r   r   r   r   r   r  )
r   r}   ru   r   r   r   rU   rL   r`  rp  r  r   r   r   test_cupy_dotproduct[  s     




r  c                  C   s^   t std tttggtt t d} | t jddg}|dksFJ dtt|v sZJ d S )NJAX not installedr   r   r   r   	r   r}   rU   r   r   r   rp  r   r  r  r   r   r   test_jax_array_argl  s    r  c                  C   s^   t std tttggtt t d} | t jddg}|dksFJ dtt|v sZJ d S )Nr  r   r   r   r   r   r  r  r   r   r   test_jax_array_arg_using_numpyv  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 j	
dgksn J d S )Nr  r   r   r   r   r   r  )r   r}   ru   r   r   r   rU   rL   r`  r   rp  r  r   r   r   test_jax_dotproduct  s     



r  c            	      C   s  dd } dd }dd }G dd d}|t ttft t t t t t d	t  d	t  t t t d	 tt d	  gd
d|t ttft tt  ttt  ttt d ttt d gdd|t ttft tt ttt ttt gdd|t ttftt t t gttd t t ggt t tt t t  tt t  ttt t ggddd|t tft t d d	 t t t t t d	t  d  t t d d	  d	t  d t t  gddg}|D ]N}ts|j	rƐqdd|| |fD ]&}|j
|d}||j }|| qԐqd S )Nc                 S   s   d| fS )Nr   r   )exprsr   r   r   	no_op_cse  s    z$test_lambdify_cse.<locals>.no_op_csec                 S   s   ddl m} || ttddS )Nr   rM   clsr   )sympy.simplify.cse_mainrN   rV   r   )r  rN   r   r   r   	dummy_cse  s    z$test_lambdify_cse.<locals>.dummy_csec                 S   s   ddl m}m} || |dS )Nr   )cse_release_variablesrN   )postprocess)r  r  rN   )r  r  rN   r   r   r   minmem  s    z!test_lambdify_cse.<locals>.minmemc                   @   s2   e Zd ZddddZdd Zdddd	d
ZdS )ztest_lambdify_cse.<locals>.CaseF)requires_numpyc                   sB   || _ || _|| _tt| j | j  fdd|D | _|| _d S )Nc                    s   g | ]}|   qS r   )rQ  r   ).0r  Z	subs_dictr   r   
<listcomp>  r   z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r
  r  rO  rv  r   r   r  )r  r
  r  rO  r  r   r  r   __init__  s    z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|dS )NrM   )rU   r
  r  )r  rN   r   r   r   rU     s    z(test_lambdify_cse.<locals>.Case.lambdifyr   )abstolreltolc                   s   | j r.t fddt| jD s*J d S t| jD ]B\}}t| | }|dkrf| k szJ q8|t| k s8J q8d S )Nc                 3   s2   | ]*\}}t j| t j|td  dV  qdS )r  )r  r@  N)r   r  Zasarrayr^  )r  rN  r   r  r  r  r   r   	<genexpr>  s   zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )r  ru  	enumerater   r   )r  r  r  r  rN  r   Zabs_errr   r  r   assertAllClose  s    z.test_lambdify_cse.<locals>.Case.assertAllCloseN)re  rf  rg  r  rU   r  r   r   r   r   Case  s   r  r   )r   r   r  )r
  r  rO  r   )r   r   r  )r   r   r  r   )r   r   r   T)r
  r  rO  r  )r   r   FrM   )r   r   r   r   r8   r*   ru   r)   r   r  rU   rO  r  )	r  r  r  r  ZcasesZcaserP  r   r  r   r   r   test_lambdify_cse  sl    






	"
4/
r  c                     s@   t td tttd ttd g fdddd} | s<J d S )Nr  r   c                    s   t |  dS )Nr  rM   )r  r  r   r   r     r   z"test_issue_25288.<locals>.<lambda>rM   )rV   r   rU   r   r)   )okr   r  r   test_issue_25288  s    
*r  c                   C   s<   t  " ttthtt  W d    n1 s.0    Y  d S r   )r   rU   r   r   r   r   r   r   test_deprecated_set  s    r  c                  C   s   t std tddd} t| | j|  d}|t g ddksDJ |t g ddks^J t| | | j d}|t g ddksJ |t g ddksJ t| | | j |  d}t dgd	gdgg}t dgd
gdgg}t |||sJ d S )Nr   Xr   r   r   r   r  rZ  r      r=  )r   r}   rv   rU   r`  rp  re  )r  r   r  r  r   r   r   test_issue_13881  s    r  c                  C   sx   t dt} t dt}t| d |d  | d ||  d    }| }t| |ftf|dd}|dd	}|d
kstJ d S )Nr   r   r   r   r   TrM   )r   r   r   g     r@)r   r   r   expandrU   )r   r  r'  Z	eval_exprZansr   r   r   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  r  r  r   r   r   r    s    z"LambdifyDocstringTestCase.__init__c                 C   s   d}| j s| jS |S )NzEEXPRESSION REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  EXPR)r  Zexpr_redacted_msgr   r   r   expected_expr!  s    z'LambdifyDocstringTestCase.expected_exprc                 C   s   d}| j s| jS |S )NzFSOURCE CODE REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  SRC)r  Zsrc_redacted_msgr   r   r   expected_src&  s    z&LambdifyDocstringTestCase.expected_srcc                 C   s"   d| j  d| j d| j d}|S )Nz(Created with lambdify. Signature:

func(z)

Expression:

z

Source code:

z

Imported modules:

)	SIGNATUREr  r  )r  expected_docstringr   r   r   r  +  s    	z,LambdifyDocstringTestCase.expected_docstringc                 C   s
   t | jS r   )r  r  r  r   r   r   __len__8  s    z!LambdifyDocstringTestCase.__len__c                 C   s   | j j d| j d| j dS )Nz(docstring_limit=z, expected_redacted=))rz  re  r  r  r  r   r   r   __repr__;  s    
z"LambdifyDocstringTestCase.__repr__)re  rf  rg  r  r  r  r  propertyr  r  r  r  r  r   r   r   r   r    s   


r  c                  C   s   G dd dt } td}| d dd| ddd| ddd| dd	d| d
d	df}|D ](}t|g|d|jd}|j|jksRJ qRd S )Nc                   @   s   e Zd ZdZdZdZdS )zNtest_lambdify_docstring_size_limit_simple_symbol.<locals>.SimpleSymbolTestCaser   z(def _lambdifygenerated(x):
    return x
Nre  rf  rg  r  r  r  r   r   r   r   SimpleSymbolTestCaseE  s   r  r   Fr  r   r   r   Tr   r   r  )r  r   rU   r  r  r  )r  r   
test_cases	test_caselambdified_exprr   r   r   0test_lambdify_docstring_size_limit_simple_symbolC  s     




r  c                  C   s   G dd dt } td\}}}||g||| | d  g}| d dd| ddd| dd	d| d
d	d| dd	df}|D ],}t|||g|d|jd}|j|jksvJ qvd S )Nc                   @   s   e Zd ZdZdZdZdS )zHtest_lambdify_docstring_size_limit_nested_expr.<locals>.ExprListTestCasex, y, zzK[x, [y], z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 +...zdef _lambdifygenerated(x, y, z):
    return [x, [y], z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 + y**3 + 3*y**2*z + 3*y*z**2 + z**3]
Nr  r   r   r   r   ExprListTestCaseb  s
   r  r  r   Fr     r   Tr   r   r   r  )r  r   r  rU   r  r  r  )r  r   r   r   r'  r  r  r  r   r   r   .test_lambdify_docstring_size_limit_nested_expr`  s"    




r  c                  C   s   G dd dt } td\}}}ttj|g|| | || | d  gg}| d dd| ddd| dd	d| d
d	d| dd	df}|D ],}t|||g|d|jd}|j|j	ksJ qd S )Nc                   @   s   e Zd ZdZdZdZdS )zAtest_lambdify_docstring_size_limit_matrix.<locals>.MatrixTestCaser  zNMatrix([[0, x], [x + y + z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z...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]])
Nr  r   r   r   r   MatrixTestCase  s
   r  r  r   Fr  r  r   Tr   r   r   r  )
r  r   ru   r   rr  r  rU   r  r  r  )r  r   r   r   r'  r  r  r  r   r   r   )test_lambdify_docstring_size_limit_matrix  s"    .




r  c                  C   s8   t d} d| ff}t| |}|d}|dks4J dd S )Nr7  r   r   )r   r  z2Lambdify did not handle the empty tuple correctly.rC  )r7  r'  r   r  r   r   r   test_lambdify_empty_tuple  s
    

r  c                  C   sT   d} t ddd }t ddd }d}dt }t||| s@J t||| sPJ d S )	Nr  r   r"  r   r   r   gQ@te_޿gF#O3t9)rr   r   r   r   )r5  Zsympy_result_integerZsympy_result_complexZmpmath_result_integerZmpmath_result_complexr   r   r   (test_assoc_legendre_numerical_evaluation  s    r  c                  C   s  t g} tr| d | D ]}tttdttfd|}|td
 dksLJ |td dksbJ |ddksrJ tttdtt ttfd|}|td
 dksJ |td dksJ |ddksJ tttdt	tfd|}|tddksJ |ddksJ qd S )	Nr   g      @)r   Tr  g      E@r   g      r>  )
r   r   r  rU   r   r#   r`   r^  r   r_   )r   r  r   r   r  r   r   r   test_Piecewise  s    
"r  c                  C   sN   t std tdd} t| | }t |t g dt g dksJJ d S )Nr   r7  )r   r   )r   r}   rQ   rU   ru  rp  )r7  r   r   r   r   test_array_symbol  s
    

r  (`  	itertoolsr   r   r  r  r  r   r  Zsympy.testing.pytestr   r   Zsympy.concrete.summationsr   Zsympy.core.functionr   r   r   Zsympy.core.numbersr	   r
   r   r   r   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.combinatorial.factorialsr   r   Z%sympy.functions.combinatorial.numbersr   r   Z$sympy.functions.elementary.complexesr   r   Z&sympy.functions.elementary.exponentialr   r   Z%sympy.functions.elementary.hyperbolicr   r   r   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)   r*   r+   Zsympy.functionsr,   r-   r.   Zsympy.functions.special.besselr/   r0   r1   r2   r3   r4   Z&sympy.functions.special.beta_functionsr5   r6   r7   Z'sympy.functions.special.delta_functionsr8   Z'sympy.functions.special.error_functionsr9   r:   r;   r<   r=   r>   r?   Z'sympy.functions.special.gamma_functionsr@   rA   rB   rC   Z&sympy.functions.special.zeta_functionsrD   Zsympy.integrals.integralsrE   Zsympy.logic.boolalgrF   rG   rH   rI   rJ   rK   Z%sympy.matrices.expressions.dotproductrL   r  rN   Zsympy.tensor.arrayrO   rP   Zsympy.tensor.array.expressionsrQ   Zsympy.tensor.indexedrR   rS   r   rU   Zsympy.utilities.iterablesrV   Zsympy.vectorrW   Zsympy.core.exprrX   Zsympy.codegen.cfunctionsrY   rZ   r[   r\   r]   r^   r_   r`   Zsympy.codegen.numpy_nodesra   rb   rc   rd   re   rf   Zsympy.codegen.scipy_nodesrg   rh   ri   rj   rk   Z#sympy.functions.special.polynomialsrl   rm   rn   ro   rp   rq   rr   rs   rt   Zsympy.matricesru   rv   rw   Zsympy.printing.codeprinterrx   r  ry   Zsympy.printing.numpyrz   r{   r|   r}   Zsympy.utilities.decoratorr~   Zsympy.utilities.exceptionsr   Zsympy.externalr   r   r   r   ZMutableDenseMatrixr   r   r   r   r   r   r   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@  rD  rG  rH  rK  rM  rO  rR  rS  rU  rX  rY  r[  r\  r_  rd  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  r  r   r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r"  r#  r$  r2  rA  rB  rC  rF  rI  rM  rR  rT  rY  r_  rh  rk  rl  rm  ro  rp  rw  rx  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   <module>   s  $( $ ( ,






	

	
			
A	

				



























"


	




 


*

9<			






]+"#