o
    3Ih;                    @   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)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 r   fr   c/home/air/sanwanet/gpt-api/venv/lib/python3.10/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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 Nr   r   r   r   )f1r   r   r   j      
 z"test_nested_args.<locals>.<lambda>)      )I      )r   r   r   r   c                      r   )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sJ tt fdd d S )Nzx,y,zzz,y,xr   r   r   r   r   r         ?       @      @r   r   r   c                      r   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   @   dd } t tttd| i}|ddksJ |ddksJ d S )Nc                 S      dS Nr   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   r   )Nc                 S   r   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 sTJ qDd S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)	rU   r   r)   mathr   absr   rX   zip)	r   pqraeresults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   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                 ?r   y      ?      ?)rU   r   r   r   r   r   r   r   
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   r      )mpmathmpdpsmpfrU   r   r)   r   evalfr
   strsin02r   precr   r   r   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   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 r&|k s)J  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 sJ t|| dk sJ t|| dk sJ d S )Nr   r   r   n5z0.2c                      r   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   ref2f2af2bf2cans2aans2bans2cr   r   r   test_mpmath_lambda   s0   
,  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   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sJ 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 s|dksJ |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 sJ |t jv s"J qd S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)r   r}   r   r	  r  r   r  )r	  r  numpr   r   r   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)r   r}   r   r  r  r   r  special)r  r  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 ]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_nargsr   r   r   r   )r   r}   sympy.printing.lambdareprr  r   r   r   _numexpr_functionskeysr   hasattrr  rU   )r  	blacklist	arg_tupler  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sJ | ddks J t| dd dk s,J | dd	ks4J | d
dks<J 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 s!J t| dtd dk s0J d S )Nr#  r   r   r   r   )rU   r   r   r   r#  er   r   r   r   test_cmath_log<  s   "r+  c                  C      t tttd} t| dtd dk sJ t| ttt dk s&J t| t tt  dk s7J t| dtd dk sFJ d S Nr#  r   r   r   )rU   r   r,   r   r#  r   r   r   r   r   test_cmath_sinhC  
   ""r.  c                  C   r,  r-  )rU   r   r-   r   r#  r   r   r   r   r   test_cmath_coshK  r/  r0  c                  C   r,  r-  )rU   r   r.   r   r#  r   r   r   r   r   test_cmath_tanhS  r/  r1  c                  C   r,  r-  )rU   r   r)   r   r#  r   r   r   r   r   test_cmath_sin[  r/  r2  c                  C   r,  r-  )rU   r   r'   r   r#  r   r   r   r   r   test_cmath_cosc  r/  r3  c                  C   sP   t tttd} t| dtd dk sJ t| dtd dk s&J d S r-  )rU   r   r+   r   r#  r   r   r   r   test_cmath_tank  s   "r4  c                  C      t tttd} t| dtd dk sJ t| dtd dk s&J t| dtd dk s5J t| dtd dk sDJ t| dtd dk sSJ d S )Nr#  r   r   r   r   r   r   )rU   r   r$   r   r#  r   r   r   r   test_cmath_asinq     "r6  c                  C      t tttd} t| dtd dk sJ t| dtd dk s&J t| dtd dk s5J t| dtd dk sDJ d S )Nr#  r   r   r   r   r   )rU   r   r%   r   r#  r   r   r   r   test_cmath_acosz  
   "r9  c                  C   r5  Nr#  r   r   r   r   r   r'  )rU   r   r&   r   r#  r   r   r   r   test_cmath_atan  r7  r<  c                  C   r5  r;  )rU   r   r   r   r#  r   r   r   r   test_cmath_asinh  r7  r=  c                  C   r8  )Nr#  r   r   r   r   r'  )rU   r   r   r   r#  r   r   r   r   test_cmath_acosh  r:  r>  c                  C   s   t tttd} t| dtd dk sJ t| dtd dk s&J t| dtd dk s5J t| dtd dk sDJ t| dtd dk sSJ t| dtd dk sbJ d S )	Nr#  r   r         ?      r   r'  )rU   r   r   r   r#  r   r   r   r   test_cmath_atanh  s   "rB  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 saJ t| g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 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 saJ t| gt| t| t|   d  ddgd}	t|	|dk sJ 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 s4J t||dk s?J t||dk sJJ t||dk sUJ t||dk s`J t||dk skJ 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funchpifunc_expfunc_cosfunc_sinfunc_cosh_1	func_sinhfunc_cosh_2expr1expr2expr3expr4expr5expr6func1func2func3func4func5func6
test_valuer   r   r   test_cmath_complex_identities  s`   <
04@@@@.,$((rZ  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     s    z!test_issue_9334.<locals>.<lambda>)keyF)r   dummifyr   r   )r   r}   r   r   sortedfree_symbolsrU   random)rD  abfunc_numexprfoobarr   r   r   test_issue_9334  s   rh  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   r   r      *   nan)
r   r}   rU   r   r   r   r#   r   RuntimeWarningr   )re  r   r   r   test_issue_12984  s   (
"rm  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   rU   )r   r   rD  
no_modulesempty_modulesr   r   r   test_empty_modules  s   
rs  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   r   r   r   rA  r         @      @r   r   r   r   r   test_exponentiation  s   rv  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   r   r   r   r   r   r$  r%  ru  rt  r(  r   r   r   r   	test_sqrt  s   rw  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   r   n!	@gh㈵>)rU   r   r'   r)   r   )r   dr   r   r   r   	test_trig  s   &"&&rz  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[?)
r   r   r}   r   r   r   rU   r   rE   r   )r   lry  r   r   r   test_integral%  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  r   r   r   gX<?g<?)r   r   r}   rE   r   r   r   rU   )ir{  ry  r   r   r   test_double_integral.  s   , r~  c                  C   s   t rtstd d} td}td|}tt||| |||   dk s(J t	d|}tt||| |||   dk sBJ d S )Nr  g@r   r   :0yE>)
r   r   r}   r   r3   r   rU   subsr   r4   )
test_pointr   jtestytestr   r   r   test_spherical_bessel7  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   r   r   r   r   r   r   c                      r   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   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 )
Nr   r   c                      r   r   r   r   r   r   r   r   Q  r   z+test_vector_discontinuous.<locals>.<lambda>)g      r   r   )r@  r?  rA  )r?  r@  )rU   r   r   ZeroDivisionErrorr   r   r   r   test_vector_discontinuousO  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   r   -C6?)rU   r   r'   r)   r   r   r   ry  r   r   r   test_trig_symbolicW  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 )Nrx  r   r   r  )rU   r   r'   r)   r   r  r   r   r   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   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s&J 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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   r   r   r   r   r   r   )ru   r   r   r)   r   rU   jacobianT)Asolr   Jvr   r   r   test_matrix|  s   $"r  c                     sR  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 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   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    r  r   )   r   FT)allow_unknown_functionsinlinefully_qualified_modulesuser_functionsprinterc                      s   t td S Nr  r   r   inpp3	x_dot_mtxr   r   r         z#test_numpy_matrix.<locals>.<lambda>r   )r   r}   ru   r   r   r)   r   arrayrU   testingassert_allcloser  ndarrayr   zerosallrz   dictr   	Exception)r  sol_arrr   r  f_dot1	strict_kwp2f_dot2r   r  r   test_numpy_matrix  s$   $ 

r  c                  C   sX   t std tdtgddgg} tt| jdd}t j|dt ddgddgg d S )Nr  r   r   r   r   r   )	r   r}   ru   r   rU   r  r  assert_array_equalr  r  r   r   r   r   test_numpy_transpose  s
   (r  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 installedr   r   r   r   r      )
r   r}   ru   r   r   r   rU   rL   r  r  r  r   r   r   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   rA  )r   r}   ru   r   rU   r  r  r  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	sRJ W d    d S 1 s]w   Y  d S )Nr  r   r   r   r   ImmutableDenseMatrixr   )r   r}   ru   r   r   r)   r   r  rU   matrixr   PendingDeprecationWarningr  r  r  )r  r  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s'J d S )Nr  r   r   r   r   r   )	r   r}   rw   r   r   rU   r  r   
coo_matrix)r  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- t|t d	t d
d	ks;J t|t d	t dtdksNJ W d    d S 1 sYw   Y  d S )Nr  r   r   Tr   r   ignore)divider   r?  inf)	r   r}   r#   r   r   rU   errstater  r  )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 ](}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   r   r   r   r   r?  r   r   r   rC  r   )r   appendr   rU   r   r   Oner   r   r   r   )modsmodr   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   ro  rA  r   r   r   绽|=)rtol)r   r}   r   r"   r   r   r   linspacerU   r  r  )r   rD  xnr4   fv_exactfv_numpy
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   r  r  aranger  rk  )piecesr   
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   r  r  r  )and_func
and_func_3or_func	or_func_3not_funcarr1arr2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   r  r  r  )xmatymat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 || |||| ||ssJ d S )	Nr  r  r      r   r   r   r   )r   r}   r   rb  randnr)   r   r'   r   r+   r   r   r%   r   r   r"   r   rU   allclose)rc  rd  crD  npfunc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  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   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   rb  r  typer   classmethodrU   r   r  r{   r   )rc  rd  r  rE  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	 }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.r   r   r   r   r   dtypesessionr?  )r   r}   r    r)   r   r   rU   compatv1Sessionconstantfloat32r  rD  rE  r\  rc  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s9J W d    d S 1 sDw   Y  d S )
Nr  r   r   r   r   r  r   r  	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	 &}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  r   r   r   r   r   r  r  r?  )r   r}   r    r)   r   r   rU   r	  r
  r  Variabler  run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s-J W d    d S 1 s8w   Y  d S )Nr  r   r   FTr  )r   r}   rI   rF   rJ   r   r   rU   r	  r
  r  r  rD  rE  r\  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 -}|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   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   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   r   r   rA  r  r   )	r   r}   r    r   rU   r	  r
  r  r  r  r   r   r   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   r   r   rA  r  )	r   r}   r!   r   rU   r	  r
  r  r  r  r   r   r   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   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	
 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 installedr   r   y      ?       @r  r   r   gư>)r   r}   rU   r   ri   rj   r   rk   r	  r
  r  r  r  r   r   )rS  rT  rU  rV  r\  rc  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 }| t ddg}|j	|ddks-J W d    d S 1 s8w   Y  d S )Nr  r   r   r   r        @)
r   r}   rU   r   r   r	  r
  r  r  r  )r   r\  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s:J d S )Nr   r   r   )
r   r   r   rU   rE   r   r   doitr"   r   )r   r{  r   r   r   test_sym_integral  s    (r)  c                  C   s   ddd i} dd dd d}t d}t d}tt|t| dfd	}|d
dks,J tt|t|dfd	}|d
dks?J |d
dksGJ d S )Nr   c                 S   r   )Nfirst fr   r   r   r   r   r     r   z&test_namespace_order.<locals>.<lambda>c                 S   r   )Nzsecond fr   r   r   r   r   r     r   c                 S   r   )N
function gr   r   r   r   r   r     r   )r   gr,  r   r   r   r*  r+  )r   r   rU   r   )n1n2r   r,  if1if2r   r   r   test_namespace_order  s   

r1  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 )Nr   c                 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   _imp_c                 S   r2  r3  r   r   r   r   r   r     r   c                 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l2rE  my_fr   r7  r   	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   r   r   )rc  error_classr   r   r     s   z test_imps_errors.<locals>.myfuncr   )r   r   r8  r{   )valr   r   rD  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   $      z&test_imps_wrong_args.<locals>.<lambda>)r   r8  r   r   r   r   test_imps_wrong_args#     rB  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   r   r   r   c                 S   r5  )Nr   r   r   r   r   r   r   /  r   z$test_lambdify_imps.<locals>.<lambda>r   r6  r   )g   r   rD  c                 S   r5  )Nc   r   r   r   r   r   r   A  r   F)use_impsf   )r   r'   rU   r   r   r{   )r   lamry  r   r   r   test_lambdify_imps'  s2   $$rI  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   	   r   r   c                      s&   t     d S )Nr   rT   r   rK  rL  rJ  r   r   r   Y  s   & z$test_dummification.<locals>.<lambda>c                      s   t d  d  d S )Nr   r   rT   r   rK  rJ  r   r   r   Z      c                      s   t d  d  d S )Nr   r   r   rT   r   rO  r   r   r   [  rP  )r   r   rU   r)   r   SyntaxError)alpha	some_exprrH  r   rN  r   test_dummificationI  s    rT  c                  C   sR   t d} |  \}}}|| }t||g|}|dd}d}t|| dk s'J d S )NNr   333333?r?  r   )rW   base_scalarsrU   r   )rU  r  r4   znrD  r   r   r   r   r   r   8test_lambdify__arguments_with_invalid_python_identifiers^  s   
rY  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   r   Tr^  )r   rv   rU   )curlyvrH  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   rp  )	python_ifrD  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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 +...)
rU   r   r   r   r   
splitlines__doc__lenr   sum)rE  r   symsr   r   r   test_lambdify_docstring|  s   "rf  c                  C   s   t ttd } d}t| |ksJ t| }|dsJ |tjv s%J tj| t|d |	d|fks7J ~ t
  |tjvsCJ d S )Nr   z,def _lambdifygenerated(x):
    return x + 1
z<lambdifygenerated-T)rU   r   inspect	getsourcegetsourcefile
startswith	linecachecacherc  ra  gccollect)rE  sourcefilenamer   r   r   test_lambdify_linecache  s   
$rq  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)rD  rr  r   r   intervalrepr     z+test_special_printers.<locals>.intervalreprr   r   r   r   )r   r  r   r   g?   )r  rs  r"   r   HalfrU   r  r   mpir  r   rB   )ru  rD  func0rS  rT  ry  exp1r[   exp3exp_lssol1sol2sol3sol_lsr   rr  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s*J t ttd ddddks9J d S )	Nr   r_  r   )r   )r   r   r   FrZ  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 r3  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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   )rt  r[  )selfr  r   r   r   	_sympystr  rv  z,test_issue_14911.<locals>.Variable._sympystrN)r  r  r  r  _lambdacode
_numpycoder   r   r   r   r    s    r  r   r     z2*x)r   Symbolry   rt  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s(J 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s(J 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s6J t tttfttt| ||ksJJ t tttt	ftttt	| || |ksaJ t tttt	ftttt	| || |ksxJ t ttftt| | ksJ t ttftt| | ksJ t tttt	t
ftttt	t
| || dg dksJ 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s(J t tttftttg dg dg dksCJ t tttdtg dg d	ksYJ 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   rM  )r   r   r   r   )axisr   r   r  )r   r   r   )r   r}   r  r  rU   r   r   rf   re   r   r   rc   rd   r    r!   )a234a152a254a132r  min_max_r   r   r   test_amin_amax_minimum_maximum  s2   ((..""88,(60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 )
Nr  rc  zi jr   r   r   r   r   r   )	r   r}   rR   r   r  rU   r   r   r   )rc  r}  jrd  r   r   r   test_Indexed  s   6r  c                  C   sT   t ttdtftddf} dt }|  |ksJ ttg| d|tdks(J d S )Nr   r   B   rn  )r   r   r   r   r(  rU   r  )r*  r   r   r   r   test_Sum  s   $r  c                  C   s<   t d} td}g d}t| |g| | |ddksJ d S )Nrc  r}  r   r   r   )rR   rS   rU   )rc  r}  rd  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s'J |tdd ks2J d S )Nr   r   r   )rU   r   r   r   r   r   )rM  rN  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 sJ 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s#J t d}t||d }|ddks6J t|gg|d }|dgdksHJ d S )Nr   FrZ  r   r   r   r   rU   )d1r   f1bd2r   r   r   r   r   test_lambdify_dummy_arg@  s   r  c                  C   s:   t  } tt| }t| |g| | }|dddksJ d S )Nr   r   r   )r   r   r   rU   )ry  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   r  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 ]o}tjdddtjd	d
  }|tkret|}|tkrnt|}|tkrwt|}|| }||}|t	kr||d }|t
kr||d }t||| ddt|  k sJ t||| ddt|  k sJ qJq9t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 ]w\}}ttt&f|tt&dd}tdD ]b}tjdd}tjdddtjd	d
  }|tt fv rt|}|t kr tt'|}||| }t|||| ddt|  k s;J t|||||| ddt|  k sRJ qqd S )Nscipy not installedr   r   r      r   r   r   r   gvIh%<=)(r   r}   r9   r:   r;   r   rA   rB   r@   r>   r?   r  expigammalnpsisicir   rb  seedr   rU   r   rangeuniformr   r   r   r   r0   r2   r/   r1   rC   pochjvyvivkvr   int)single_arg_sympy_fnssingle_arg_scipy_fnssympy_fnscipy_fnr   r}  tvr   scipy_resultdouble_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2r   r   r   test_scipy_fns_  s^    


$& 

(0r  c                  C   s  t std tjd td} tdftdftdft	dft
dftdftdftdftdfg	}d}|D ]\}}| 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 )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   &.>)rE  r!  r   r  r   tol)r   r}   r   rb  r  r   rl   rm   rn   ro   rp   rq   rr   rs   rt   r   rU   r  randinttupler  r   r   r   r   AssertionErrorformatrepr)paramspolysmsgr  
num_paramsr!  r   _tntparamsr  valsr  r   atolr   r   r   r   test_scipy_polys  sb    
r  c                  C   s$   t ttd } dt| v sJ d S )Nr   zx**2)rU   r   rg  rh  r   r   r   r   test_lambdify_inspect  s   r  c                  C   s   t  t  } }t| |g| d|did}|dddddks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   r   r   r   r   r   test_issue_14941  s   
r  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 )Nr   r   r   rw  r   c                      s   t t f  ddS )NFrZ  )r  r|   r   r   fxr   r   r     s   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>TrZ  r   )   rj  )
r   r   r   rU   r  r|   r   r  r   rx  r   r   r  r   (test_lambdify_Derivative_arg_issue_16468  s    $(.&r  c                  C   s   t tjtdd} tt| dgd}|d}t d t d  d }t|| t| dk s1J t td t}tt|dgd}|d	}d
| }t|| t| dk sXJ d S )NF)evaluater   r   r   gW   @r  gHz>g;f?g;f@)rD   r   r   rU   r   r   )rM  r   ans1ref1rN  r   ans2r   r   r   r   test_lambdify_Derivative_zeta  s    r  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s0J |tttt fd
d d S )NrS  rT  c                   @   s   e Zd Zdd ZdS )z:test_lambdify_Derivative_custom_printer.<locals>.MyPrinterc                 S   s   |\}|\}dS )N42r   )r  r!  
seq_ordersrk   orderr   r   r   _print_Derivative_func1  s   zRtest_lambdify_Derivative_custom_printer.<locals>.MyPrinter._print_Derivative_func1N)r  r  r  r  r   r   r   r   	MyPrinter  s    r  c                      s   t tg S r   r   r   )rM  r   r   r     r   z9test_lambdify_Derivative_custom_printer.<locals>.<lambda>r  rn  rj  c                      s   t tg dS r  r   r   )r  rN  r   r   r     r   )r   rz   r   r   r   rx   rU   )rS  rT  r   r   )r  rM  rN  r   'test_lambdify_Derivative_custom_printer	  s   r  c                  C   sV  t d\} }}td| }|| d|| |||f}||| d |||   || |  |d  }d}d}||| d |||   || |  |d  |d  }d}	tg ddd	gD ]H\}
}t||||
d
}|| }t|| dk szJ t|||g||
d
}|| }t|dksJ t|d | dk sJ t|d |	 dk sJ q`d S )Nzt, a, br   r   )r   r   r^  r"  g      @   i)FNTFT)rN   r^  g-q=r   r   )r   r   r   r   rU   r   rc  )rJ  rc  rd  r   r!  rM  num_argsr  rN  r   r^  _cserS  res1func12res12r   r   r   3test_lambdify_derivative_and_functions_as_arguments  s$   2:r  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      @       @)rU   r   r   ri   r   rj   imag)f_rer?  f_imr   r   r   test_imag_real5  s
   r  c                  C   s   t std tddd} t ddgddgg}t| | d }t ||t dd	gd
dggs1J t| | d }t ||t ddgddggsKJ d S )Nr  r  r   r   r   r   r   g       r         ?r@  %   6   r  v   )r   r}   rv   r  rU   r  )r  A0r   r,  r   r   r   test_MatrixSymbol_issue_15578>  s   &*r  c                  C   s   t std ddlm} m}m}m} ddlm} d\}}}}|	||||
 }	t| |||f|	| |||}
|
||||}t|	| dk sHJ d S )Nr  r   )r  r{  r   Z)hydrogen)r   r   r   r   r   )r   r}   	sympy.abcr  r{  r   r  sympy.physicsr  R_nlr   rU   r   )r  r{  r   r  r  nvlvrvZvsympy_valuer   scipy_valuer   r   r   test_issue_15654I  s   r  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 )Nr  r  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_equalr  object)	r  r  r  r	  r
  r   r,  hr}  r   r   r   test_issue_15827U  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 )Nr  r   c                 S   s   t j| d  S r3  )r   GoldenRatior   r   r   r   r   u  rA  z"test_issue_16930.<locals>.<lambda>r   r   r   )r   r}   r   rU   	constantsgolden_ratio)r   r   f_r   r   r   test_issue_16930p  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 )Nr  r   r   r   r   r   )r   r}   r   rU   r   LambertWr   lambertw)r   r  r   r   r   test_issue_17898y  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 )Nr  r   r  r   r   r?  r   )r   r}   rU   r   r   r8   r   r  )r   r   r  res2r   r   r   test_issue_13167_21411  s    r  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   
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 )Nr  rc  r   r   r   r   r  )r   r}   r   r   r   rU   r   r   )rc  r   rK  r   r   r   r   test_issue_16536  s   
 
$r  c                  C   s   t std td\} }ttjt| |}t|| |f}t| |f|dd}| d|di}t	|
|||   dk s>J d S Nr  zx1 x2r   r   r   r   r  )r   r}   r   r    r   Zeror!   rO   rU   r   r  valuesr  )x1x2r   r,  rL  pointr   r   r   test_issue_22726  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  )	r   r}   r   r8   r!   rU   r   r  r   )r!  r"  r   rK  r#  r   r   r   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 )Nr  za tr   r   r   r  )
r   r}   r   r   r(   r'   rU   r   r  r   )rc  rJ  rD  rK  r#  r   r   r   test_issue_22992  s   "&r&  c                  C   s@   t std tttd g} tt| d}|djt jksJ d S )Nr  r   r   r   )r   r}   rP   r   rU   	__class__r  )rD  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sJ d S )Nznumba not installedr   T)nopythonr   g	T?)r   r}   rU   r   r)   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s*J ttd|d dks8J d S )Nr  r   r   ?r  )r   r}   r<   r   r=   rU   r   )r   r   F1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s$J d S )Nr  r   r   r,  ffffff@r  )r   r}   r5   r   r   rU   r   r   rK  r   r   r   test_beta_scipy  s
   
$r2  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,  r0  r  )r5   r   r   rU   r   r1  r   r   r   test_beta_math  s   
$r3  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 )	Nr  r   r   gffffff?g@r   r?  r  )	r   r}   r6   r   r   r   r   rU   r   r1  r   r   r   test_betainc_scipy  
   ,r5  c                  C   r4  )	Nr  r   r   r   r  r   r   r  )	r   r}   r7   r   r   r   r   rU   r   r1  r   r   r   test_betainc_regularized_scipy  r6  r7  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 )Nr  r   )rV  g?r   )rV  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   r  r  r   r   r  r  r   )	funcsrE  rD  r!  r  r   result	reference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 sJ tttt j	j	
dd d d	k}|rItttftttdd}t|d
dd dk sKJ d S d S )Nr  r   r   g#B;gWw'&l7gN~h.r   )r   r   g333333?r  g-=gFFg<)r   r}   rU   r   rg   r   r  mapr  versionsplitr   rh   )cm1have_scipy_1_10pluscm2r   r   r   test_scipy_special_math%  s   $rE  c                  C   s4   t std ttfttdd} | ddksJ d S )Nr  r   r   r   r?  )r   r}   rU   r   r   )bernr   r   r   test_scipy_bernoulli3  s   rG  c                  C   s^   t std ttfttdd} | ddksJ tttftttdd}|dddks-J d S )Nr  r   r   r   r  g      ?)r   r}   rU   r   r   r   )hnhnmr   r   r   test_scipy_harmonic;  s   rJ  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 installedr   r   r   r   r   r}   rU   r   r   r  r   r  r   r:  r   r   r   test_cupy_array_argE  s   rN  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 )NrK  r   r   r   r   r   rL  rM  r   r   r   test_cupy_array_arg_using_numpyO  s   rO  c                  C   r  )NrK  r   r   r   r   r   r  )
r   r}   ru   r   r   r   rU   rL   r  r  r  r   r   r   test_cupy_dotproduct[  s    




rP  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 installedr   r   r   r   	r   r}   rU   r   r   r   r  r   r  rM  r   r   r   test_jax_array_argl     rS  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 )NrQ  r   r   r   r   r   rR  rM  r   r   r   test_jax_array_arg_using_numpyv  rT  rU  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 )NrQ  r   r   r   r   r   r  )r   r}   ru   r   r   r   rU   rL   r  r   r  r  r   r   r   test_jax_dotproduct  s    



rV  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 ]"}ts|j	rqdd|| |fD ]}|j
|d}||j }|| qqd 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   )rW  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   )rW  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   )r  r   ).0r*  	subs_dictr   r   
<listcomp>  s    z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r!  rW  r  r  r   r   ra  )r  r!  rW  r  ra  r   rc  r   __init__  s   
z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|dS )NrM   )rU   r!  rW  )r  rN   r   r   r   rU     rC  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  )r  r  N)r   r  asarrayr  )rb  r}  r   rg  rh  r:  r   r   	<genexpr>  s    zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )ra  r  	enumerater   r   )r  r:  rg  rh  r}  r   abs_errr   rj  r   assertAllClose  s   z.test_lambdify_cse.<locals>.Case.assertAllCloseN)r  r  r  rf  rU   rn  r   r   r   r   Case  s    ro  r   )r   r   r^  )r!  rW  r  r   )r   r   r^  )r   r   rV  r   )r   r   r   T)r!  rW  r  ra  )r   r   FrM   )r   r   r   r   r8   r*   ru   r)   r   ra  rU   r  rn  )	rX  r]  r`  ro  casescaser  r   r:  r   r   r   test_lambdify_cse  sp   






	"
4/

rr  c                     s@   t td tttd ttd g fdddd} | sJ d S )NrY  r   c                    s   t |  dS )Nr[  rM   )r*  re  r   r   r     r   z"test_issue_25288.<locals>.<lambda>rM   )rV   r   rU   r   r)   )okr   rs  r   test_issue_25288  s   
*ru  c                   C   s>   t   ttthtt  W d    d S 1 sw   Y  d S r   )r   rU   r   r   r   r   r   r   test_deprecated_set  s   "rv  c                  C   s   t std tddd} t| | j|  d}|t g ddks"J |t g ddks/J t| | | j d}|t g ddksEJ |t g ddksRJ t| | | j |  d}t dgd	gdgg}t dgd
gdgg}t |||s}J d S )Nr  Xr   r   r   r   r  r  r      rj  )r   r}   rv   rU   r  r  r  )rw  r   r  r  r   r   r   test_issue_13881  s   ry  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   TrM   )r   r   r   g     r@)r   r   r   expandrU   )r   r,  rD  	eval_expr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   rf    s   
z"LambdifyDocstringTestCase.__init__c                 C      d}| j s| jS |S )NzEEXPRESSION REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  EXPR)r  expr_redacted_msgr   r   r   expected_expr!     z'LambdifyDocstringTestCase.expected_exprc                 C   r  )NzFSOURCE CODE REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  SRC)r  src_redacted_msgr   r   r   expected_src&  r  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   )rc  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=))r'  r  r  r  r  r   r   r   __repr__;  s   
z"LambdifyDocstringTestCase.__repr__)r  r  r  r  r  r  rf  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s=J q)d S )Nc                   @   s   e Zd ZdZdZdZdS )zNtest_lambdify_docstring_size_limit_simple_symbol.<locals>.SimpleSymbolTestCaser   z(def _lambdifygenerated(x):
    return x
Nr  r  r  r  r  r  r   r   r   r   SimpleSymbolTestCaseE  s
    r  r   Fr  r   r   r   Tr   r   r  )r~  r   rU   r  rb  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sQJ q;d S )Nc                   @      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      r  r  r   Fr     r   Tr   r   r   r  )r~  r   rz  rU   r  rb  r  )r  r   r   r   rD  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sYJ qCd S )Nc                   @   r  )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  r  r  r  r   Fr  r  r   Tr   r   r   r  )
r~  r   ru   r   r  rz  rU   r  rb  r  )r  r   r   r   rD  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sJ dd S )Nrc  r   r   )r   r  z2Lambdify did not handle the empty tuple correctly.rp  )rc  rD  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||| s(J d S )	Nr  r   r?  r   r   r   gQ@te_޿gF#O3t9)rr   r   r   r   )r  sympy_result_integersympy_result_complexmpmath_result_integer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s&J |td dks1J |ddks9J tttdtt ttfd|}|td
 dksUJ |td dks`J |ddkshJ tttdt	tfd|}|tddksJ |ddksJ qd S )	Nr   g      @)r   Tr  g      E@r   g      rk  )
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s%J d S )Nr  rc  )r   r   )r   r}   rQ   rU   r  r  )rc  r   r   r   r   test_array_symbol  s
   

.r  (`  	itertoolsr   r   rg  rk  rm  r   r#  sympy.testing.pytestr   r   sympy.concrete.summationsr   sympy.core.functionr   r   r   sympy.core.numbersr	   r
   r   r   r   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   r   %sympy.functions.combinatorial.numbersr   r   $sympy.functions.elementary.complexesr   r   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   r   r   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr    r!   r"   $sympy.functions.elementary.piecewiser#   (sympy.functions.elementary.trigonometricr$   r%   r&   r'   r(   r)   r*   r+   sympy.functionsr,   r-   r.   sympy.functions.special.besselr/   r0   r1   r2   r3   r4   &sympy.functions.special.beta_functionsr5   r6   r7   'sympy.functions.special.delta_functionsr8   'sympy.functions.special.error_functionsr9   r:   r;   r<   r=   r>   r?   'sympy.functions.special.gamma_functionsr@   rA   rB   rC   &sympy.functions.special.zeta_functionsrD   sympy.integrals.integralsrE   sympy.logic.boolalgrF   rG   rH   rI   rJ   rK   %sympy.matrices.expressions.dotproductrL   r\  rN   sympy.tensor.arrayrO   rP   sympy.tensor.array.expressionsrQ   sympy.tensor.indexedrR   rS   r   rU   sympy.utilities.iterablesrV   sympy.vectorrW   sympy.core.exprrX   sympy.codegen.cfunctionsrY   rZ   r[   r\   r]   r^   r_   r`   sympy.codegen.numpy_nodesra   rb   rc   rd   re   rf   sympy.codegen.scipy_nodesrg   rh   ri   rj   rk   #sympy.functions.special.polynomialsrl   rm   rn   ro   rp   rq   rr   rs   rt   sympy.matricesru   rv   rw   sympy.printing.codeprinterrx   r  ry   sympy.printing.numpyrz   r{   r|   r}   sympy.utilities.decoratorr~   sympy.utilities.exceptionsr   sympy.externalr   r   r   r   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.  r0  r1  r2  r3  r4  r6  r9  r<  r=  r>  rB  rZ  rh  rm  rs  rv  rw  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)  r1  r<  r@  rB  rI  rT  rY  r\  r`  rf  rq  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  r3  r5  r7  r=  rE  rG  rJ  rN  rO  rP  rS  rU  rV  rr  ru  rv  ry  r}  r~  r  r  r  r  r  r  r  r   r   r   r   <module>   s   $( $ ( ,




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


















"


	


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