o
    jg                     @   s  d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZ d dl m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZE d dlFmGZGmHZHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZPmQZQmRZR d dlSmTZT d dlUmVZVmWZWmXZXmYZYmZZZm[Z[ d dl\m]Z] d dl^m_Z_ d dl`maZambZb d dlcmdZd d dlemfZf d dlgmhZh d d limjZj d d!lkmlZl d d"lmmnZnmoZompZpmqZqmrZrmsZs d d#ltmuZumvZv d d$lwmxZxmyZy d d%l#mzZzm{Z{m|Z| d d&l}m~Z~mZmZmZmZmZmZmZmZ d d'lmZmZmZ d d(lmZ d d)lmZ d d*lemZmZ d d+lmZ d d,lmZ d d-lmZ d d.lmZ d d/lNmZmZ d dlZeZed0Zed1d2d3gid4Zed5Zed6Zed7Zed8Zed9Zerd dlZd:ejd;< ed<\ZZZZd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZedQdR ZedSdT ZedUdV ZedWdX ZedYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd Zdd Zdd Zdd Zdd 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 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/d0 Z"d1d2 Z#d3d4 Z$d5d6 Z%d7d8 Z&d9d: Z'd;d< Z(G d=d> d>Z)d?d@ Z*dAdB Z+dCdD Z,dEdF Z-dGdH Z.dS (I      )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)explog)acosh)floor)MaxMinsqrt)	Piecewise)acoscoscotsinsinctan)besselibesseljbesselkbesselyjnyn)betabetaincbetainc_regularized)	Heaviside)EierferfcfresnelcfresnelsSiCi)digammagammaloggamma	polygamma)Integral)AndfalseITENotOrtrue)
DotProductcse)derive_by_arrayArray)IndexedBaselambdify)numbered_symbols)
CoordSys3D)UnevaluatedExpr)expm1log1pexp2log2log10hypot)	logaddexp
logaddexp2)cosm1powm1)reimarg)	
chebyshevt
chebyshevulegendrehermitelaguerre
gegenbauerassoc_legendreassoc_laguerrejacobi)MatrixMatrixSymbolSparseMatrix)LambdaPrinter)NumPyPrinter)implemented_function	lambdastr)skip)conserve_mpmath_dps)ignore_warnings)import_module)
uppergamma
lowergammanumpyscipyfromlistsparse)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   [/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>S       ztest_no_args.<locals>.<lambda>rJ   r   	TypeErrorr   r   r   r   test_no_argsQ   s   
r   c                  C   s"   t tdt } | ddksJ d S N   r}   rJ   xr   r   r   r   test_single_argW   s   r   c                  C   s(   t ttgtt } | dddksJ d S Nr}   r      )rJ   r   yr   r   r   r   test_list_args\   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   d      
 z"test_nested_args.<locals>.<lambda>)      )I      )r   r   r   r   c                      r   )Nr   r   r   r   )f2r   r   r   h   r   
   4      ,   )r   r   r   r   )rJ   wr   r   r   r   z)f3r   )r   r   r   test_nested_argsa   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   s   r   ztest_str_args.<locals>.<lambda>r   r   r   r   r   test_str_argsn   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   w       z&test_own_namespace_1.<locals>.<lambda>r$   皙?r}   d   rJ   r   r$   myfuncr   r   r   r   test_own_namespace_1v   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瞯<)	rJ   r   r$   mathr   absr   rM   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   rI   r   r   r   r   r      r   ztest_bad_args.<locals>.<lambda>c                   S   s   t ddgS r   rI   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      ?      ?)rJ   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mpfrJ   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   rJ   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   rJ   r   r$   r   r   r   rW   rN   rO   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   rJ   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   rJ   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_TRANSLATIONSrd   )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)rq   rk   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)rr   rk   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   rq   r   r}   )rq   rk   rJ   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}   rv   r   r}   )rv   rk   sympy.printing.lambdareprr  r   r   r   _numexpr_functionskeysr   hasattrr  rJ   )r  	blacklist	arg_tupler   ssymnargsargsr   r   r   r   test_numexpr_printer  s    

r  c                  C   sj   t std tstd td} t| jdd d\}}t||f| t gdd}tjd	\}}||| d S )
Nr   r   zb*a - sqrt(a**2)c                 S   s   | j S r   )name)sr   r   r   r   2  s    z!test_issue_9334.<locals>.<lambda>)keyF)r   dummifyr   r   )rv   rk   rq   r   sortedfree_symbolsrJ   random)exprabfunc_numexpr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s)J t	| ddddks5J W d    d S 1 s@w   Y  d S )Nr   r   r   r}      *   nan)
rv   rk   rJ   r   r   r   r    rm   RuntimeWarningr   )r  r   r   r   test_issue_129848  s   (
"r$  c                  C   sd   t d\} }| |  }t| |g|}t| |g|g d}|dd|ddks'J |dddks0J d S )Nzx yr   r      r   rJ   )r   r   r  
no_modulesempty_modulesr   r   r   test_empty_modulesA  s   
r*  c                  C   sr   t ttd } | ddksJ | ddksJ | ddksJ | ddks'J | ddks/J | ddks7J d S )	Nr   r   r}   r   r         @      @r   r   r   r   r   test_exponentiationK  s   r.  c                  C   sj   t ttt} | ddksJ | ddksJ | ddksJ t| dd d	k s+J | d
dks3J d S )Nr   r   r}   r   r   r   r   g9v?gMbP?r-  r,  )rJ   r   r   r   r   r   r   r   	test_sqrtU  s   r/  c                  C   s   t tgttttgd} | t}d}| |d d   k r#|k s&J  J | |d   k r4|k s7J  J | d}d}| |d d   k rM|k sPJ  J | |d   k r^|k saJ  J d S )Nr   gdy=r   r}   n!	@gh㈵>)rJ   r   r"   r$   r   )r   dr   r   r   r   	test_trig^  s   &"&&r2  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[?)
rq   rr   rk   r   r   r   rJ   r   r<   r   )r   lr1  r   r   r   test_integralj  s   
 r4  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<?)rq   rr   rk   r<   r   r   r   rJ   )ir3  r1  r   r   r   test_double_integrals  s   , r6  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   g:0yE>)
rq   rr   rk   r   r+   r   rJ   subsr   r,   )
test_pointr   jtestytestr   r   r   test_spherical_bessel|  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     r   z$test_vector_simple.<locals>.<lambda>)rJ   r   r   r   r   r   r   r   r   r   test_vector_simple  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     r   z+test_vector_discontinuous.<locals>.<lambda>)g      r   r   )            ?r+  )r>  r=  )rJ   r   r   ZeroDivisionErrorr   r   r   r   test_vector_discontinuous  s
   r@  c                  C   sV   t tgttttgd} | t}t|d d dk sJ t|d d dk s)J d S )Nr   r   r}   -C6?)rJ   r   r"   r$   r   r   r   r1  r   r   r   test_trig_symbolic  s   rC  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 )Nr0  r   r}   rA  )rJ   r   r"   r$   r   rB  r   r   r   test_trig_float  s   rD  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   )rJ   r   r   r   r   r$   r   r   r   r   	test_docs  s   rF  c                  C   s,   t ttfttdd} | dddksJ d S )Nr   r   r   r   )rJ   r   r   r$   r   r   r   r   	test_math  s   rG  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   )rJ   r   r$   
isinstancefloatr   r   r   r   test_sin  s   rJ  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   )rd   r   r   r$   r   rJ   jacobianT)Asolr   Jvr   r   r   test_matrix  s   $"rQ  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   rq   c                   @   s   e Zd ZdS )ztest_numpy_matrix.<locals>.dotN)__name__
__module____qualname__r   r   r   r   dot  s    rU  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   )rq   rk   rd   r   r   r$   r   arrayrJ   testingassert_allcloserH  ndarrayr   zerosallrh   dictr   	Exception)rM  sol_arrr   rU  f_dot1	strict_kwp2f_dot2r   r]  r   test_numpy_matrix  s$   $ 

ro  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   rq   r   r   )	rq   rk   rd   r   rJ   rL  rc  assert_array_equalrb  rM  r   r   r   r   test_numpy_transpose  s
   (rr  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 installedrq   r   r}   r   r      )
rq   rk   rd   r   r   r   rJ   rC   rL  rb  rM  r   r   r   f4r   r   r   test_numpy_dotproduct  s    




rx  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   rq   r   r   r+  )rq   rk   rd   r   rJ   rc  rp  rb  rq  r   r   r   test_numpy_inverse  s
   (ry  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   ImmutableDenseMatrixrq   )rq   rk   rd   r   r   r$   r   rb  rJ   matrixrm   PendingDeprecationWarningrc  rd  rH  )rM  rj  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   rr   r   r}   r   )	rr   rk   rf   r   r   rJ   rH  rt   
coo_matrix)rM  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   Trq   r   ignore)divider   r>  inf)	rq   rk   r    r   r   rJ   errstaterI  rb  )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   rq   r   r   r   r>  r   r   r}   y      @      @r   )rq   appendr   rJ   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   r&  r+  rq   r   rv   绽|=)rtol)rv   rk   rq   r   r   r   r   linspacerJ   rc  rd  )r   r  xnr,   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   Trq   r   r   )
r   r}   r   r   r   r   $   1   @   Q   r   r   r   r}   r}   )
rq   rk   r    r   rJ   rc  rp  arangerb  r"  )piecesr   
nodef_funcr   r   r   test_numpy_piecewiseP  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   rq   r   TF)rq   rk   rJ   r   r   r=   r   rA   r@   rb  rc  rp  )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   rq   r   r>  r   r   g      ?      @r=  g      ?g     R@g     ]@      )rq   rk   rd   r   r   r   r   rJ   rc  rp  rb  )xmatymatmat_funcr   r   r   r   test_numpy_matmulo  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   rq   r   rv   )rq   rk   rv   r  randnr$   r   r"   r   r&   r   r   r!   r   r   r   r   rJ   allclose)r  r  cr  npfuncnefuncr   r   r   test_numpy_numexpr}  s   6$r  c                  C   s   t std tstd t jdd\} }tdtfdtdd i}tt	d	|t	 d
d}t 
|| | d  s:J ttddd }tt	tf|t	td
d}t 
|| |d|  | d	 s`J d S )Nr   r   r   r   ufevalc                 S   s   |d d S r   r   r   r   r   r   r   r     r   z,test_numexpr_userfunctions.<locals>.<lambda>r}   rv   r   c                 S   s   d|  | d S r   r   r  r   r   r   r     s    )rq   rk   rv   r  r  typer   classmethodrJ   r   r  ri   r   )r  r  r  funcr   r   r   test_numexpr_userfunctions  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   rw   r   r   dtypesessionr>  )rw   rk   r   r$   r   r   rJ   compatv1Sessionconstantfloat32r  r  r  r  r  r   r   r   test_tensorflow_basic_math  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   rw   r   r  r   r  	feed_dictr>  )rw   rk   r   r$   r   r   rJ   r  r  r  placeholderr  r  r  r   r   r   test_tensorflow_placeholders  s    "r  c                  C   s   t std ttttdtd  } tt| dd}t jj	 &}t j
dt jd}||j ||j||didd	ks>J W d    d S 1 sIw   Y  d S )
Nr  r}   r   rw   r   r   r  r  r>  )rw   rk   r   r$   r   r   rJ   r  r  r  Variabler  runinitializerr  r  r   r   r   test_tensorflow_variables  s    "r  c                  C   s~   t std tttttt} tttg| dd}t jj	
 }|ddj|ddks-J W d    d S 1 s8w   Y  d S )Nr  rw   r   FTr  )rw   rk   r@   r=   rA   r   r   rJ   r  r  r  r  r  r  r  r   r   r   "test_tensorflow_logical_operations  s   "r  c                  C   s   t std tdttdfdtdk fdtdkf} tt| dd}t jj -}|dj	|ddks3J |dj	|ddks?J |dj	|ddksKJ W d    d S 1 sVw   Y  d S )Nr  r   r   r}   rw   r   r  )
rw   rk   r    r   r   rJ   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   rw   r   r+  r  r   )	rw   rk   r   r   rJ   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   rw   r   r+  r  )	rw   rk   r   r   rJ   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   rw   r   r}   r  T)rw   rk   r   rJ   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 installedrw   r   y      ?       @r  r}   r   gư>)rw   rk   rJ   r   rX   rY   r   rZ   r  r  r  r  r  r   r   )func1func2func3func4r  r  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  rw   r   r   r  g      @)
rw   rk   rJ   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   rJ   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   rJ   r<   r   r   doitr   r   )r   r3  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   2  r   z&test_namespace_order.<locals>.<lambda>c                 S   r   )Nzsecond fr   r   r   r   r   r   3  r   c                 S   r   )N
function gr   r   r   r   r   r   4  r   )r   gr  r   r   r}   r  r  )r   r   rJ   r   )n1n2r   r  if1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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   C  r   ztest_imps.<locals>.<lambda>c                 S   s
   t | S r   )r   r   r   r   r   r   r   D  r   r   r   r   _imp_c                 S   r  r  r   r   r   r   r   r   M  r   c                 S      | d S )Ne   r   r   r   r   r   r   P  r   c                      s   t t tS r   r   r   r   r   r   r   r   Q  ra  )ri   rJ   r   r   r   r   r   r   r
  r   
ValueError)r  l1l2r  my_fr   r  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   )r  error_classr   r   r   ^  s   z test_imps_errors.<locals>.myfuncr   )r   r   r  ri   )valr   r   r  r   r  r   test_imps_errorsT  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   i  r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>)ri   r$   r   r   r   r   r   i      z&test_imps_wrong_args.<locals>.<lambda>)r   r  r   r   r   r   test_imps_wrong_argsh     r  c                  C   s
  t j} tt| tddksJ ttd| t ddksJ tttft| t dddks1J tddd } tt| tddksEJ ttd| t ddksTJ tttft| t dddksfJ tt| ttf}|d	d
kswJ tt| ttg}|d	dd	gksJ tt| t| ttfg}|d	dd
gksJ tt| tti}|d	dd	iksJ tt| tti}|d	dd	iksJ ttt| ti}|d	d	diksJ ddd i}tt| t|}|d	dksJ tt| t|dd}|d	dksJ d S )Nr   r}   r   r   c                 S   r  )Nr   r   r   r   r   r   r   t  r   z$test_lambdify_imps.<locals>.<lambda>r   r  r   )g   r   r  c                 S   r  )Nc   r   r   r   r   r   r     r   F)use_impsf   )r   r"   rJ   r   r   ri   )r   lamr1  r   r   r   test_lambdify_impsl  s2   $$r  c                     s  t dtd tdt d} d d   }t f|}|dddks0J ttdtd  }| d d  ksMJ t| fd|   }|ddd	ksaJ tt fd
d tt fdd tt fdd d S )NtFGz\alphar   r   	   r}   r   c                      s&   t     d S )Nr   rI   r   r  r  r  r   r   r     s   & z$test_dummification.<locals>.<lambda>c                      s   t d  d  d S )Nr   r   rI   r   r  r  r   r   r         c                      s   t d  d  d S )Nr   r   r   rI   r   r
  r   r   r     r  )r   r   rJ   r$   r   SyntaxError)alpha	some_exprr  r   r	  r   test_dummification  s    r  c                  C   sR   t d} |  \}}}|| }t||g|}|dd}d}t|| dk s'J d S )NNr   333333?r>  r   )rL   base_scalarsrJ   r   )r  r  r,   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s#J d S )Nz{v}r   r}   Tr  )r   re   rJ   )curlyvr  r   r   r   test_curly_matrix_symbol  s
   
r  c                  C   s.   t d} | d }t| |}|ddksJ d S )Nifr         @r   r'  )	python_ifr  r   r   r   r   test_python_keywords  s   
r  c                  C   s   t ttttftt t t } d }| j d t| |ks"J td}t |t	|} d }| j d t| |ks@J d S )NzOCreated with lambdify. Signature:

func(w, x, y, z)

Expression:

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

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

Expression:

a1 + a10 + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a2 + a20 +...)
rJ   r   r   r   r   
splitlines__doc__lenr   sum)r  r   symsr   r   r   test_lambdify_docstring  s   "r!  c                     s"  ddl m   fdd} ttdtd tj }td|d| d	}td|d d	}td|d  d	}ttd
d}t	| |sBJ t	| |sJJ t	| |sRJ tt
tt
dd}tt
tt
dd}tt
tt
dd}|||g}	td}
td}td}|
||g}|	|ksJ d S )Nr   IntervalPrinterc                    s      | S r   )doprint)r  r"  r   r   intervalrepr     z+test_special_printers.<locals>.intervalreprr   r   r   r   )r   r\  r}   r   g?   )r  r#  r   r   HalfrJ   r  r   mpirH  r   r:   )r%  r  func0r  r  r)  exp1rP   exp3exp_lssol1sol2sol3sol_lsr   r"  r   test_special_printers  s&   




r2  c                   C   s,   t g t du s
J t g t du sJ d S )NTF)rJ   rB   r>   r   r   r   r   test_true_false  s   r3  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   Fr  r   )rJ   r   r   r   r   r   r   r   r   test_issue_2790  s   $0"r4  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  )ri   r   r
   r   r   r   r   test_issue_12092  s    r5  c                  C   sF   G dd dt j} | d}d| }t |}|dddks!J d S )Nc                   @   s   e Zd Zdd ZeZeZdS )z"test_issue_14911.<locals>.Variablec                 S   s   | | jS r   )r$  r  )selfr\  r   r   r   	_sympystr  r&  z,test_issue_14911.<locals>.Variable._sympystrN)rR  rS  rT  r7  _lambdacode
_numpycoder   r   r   r   r    s    r  r   r     z2*x)r   Symbolrg   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s(J d S )NTr   r   F)rJ   r   r   r   r?   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   )rJ   r   r   r   r   r   r   r   r   r   test_Min_Max  s   (,rA  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 )
Nrt  r  zi jr}   r   r   r   r   r   )	rq   rk   rH   r   rb  rJ   r   r   r   )r  r5  jr  r   r   r   test_Indexed#  s   6rC  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   )rJ   r   r   ro   rp   r   )expr1expr2r   r   r   test_issue_12173.  s   rF  c                  C   s>   t std tttt} t| dtd  dk sJ d S )Nrt  r}   r   )rq   rk   rJ   r   r%   r   nr   r   r   r   test_issue_136426  s   $rH  c                  C   s4   t tttd} t| dtd  dk sJ d S )Nr   r}   r   )rJ   r   r%   r   rG  r   r   r   r   test_sinc_mpmath=  s   $rI  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}   Fr  r   r   r   r   rJ   )d1r   f1bd2r   r   r   r   r   test_lambdify_dummy_argB  s   rN  c                  C   s:   t  } tt| }t| |g| | }|dddksJ d S )Nr   r}   r   )r   r   r   rJ   )r1  dsymr   r   r   r   %test_lambdify_mixed_symbol_dummy_argsO  s   rP  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 )Nrt  rq   r   r   r   )rq   rk   rJ   r   r   rb  r   r   r   r   test_numpy_array_argW  s   rQ  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   rr   r      r   r   r   r}   gvIh%<=)(rr   rk   r1   r2   r3   r   r9   r:   r8   r6   r7   r   expigammalnpsisicirq   r  seedr   rJ   r   rangeuniformr   r   r   r   r(   r*   r'   r)   r;   pochjvyvivkvr   int)single_arg_sympy_fnssingle_arg_scipy_fnssympy_fnscipy_fnr   r5  tvr  scipy_resultdouble_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2r   r   r   test_scipy_fnsa  s^    


$& 

(0rm  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 )NrR  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   )sizerT  r   rU  r   &.>)r  r  r  rh  r   tol)rr   rk   rq   r  rZ  r   r[   r\   r]   r^   r_   r`   ra   rb   rc   r   rJ   r[  randinttupler\  r   r   r   r   AssertionErrorformatrepr)paramspolysmsgre  
num_paramsr  r   _tntparamsrg  valsrh  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)rJ   r   inspect	getsourcer   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  rJ  )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   r'  r   c                      s   t t f  ddS )NFr  )r  rj   r   r   fxr   r   r     s   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>Tr  r}   )   r!  )
r   r   r   rJ   r  rj   r   ri  r   r(  r   r   r  r   (test_lambdify_Derivative_arg_issue_16468  s    $(.&r  c                  C   sP   t tgtt} d}| ||jksJ t tgtt}|||jks&J d S )Ny      @       @)rJ   r   r   rX   r   rY   imag)f_rer  f_imr   r   r   test_imag_real  s
   r  c                  C   s   t std tddd} t ddgddgg}t| | d }t ||t dd	gd
dggs1J t| | d }t ||t ddgddggsKJ d S )Nrt  rM  r   r}   r   r   r   g       r         ?r=  %   6   r  v   )rq   rk   re   rb  rJ   r  )rM  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 )NrR  r   )rG  r3  r   Z)hydrogen)r}   r   r   r}   r   )rr   rk   	sympy.abcrG  r3  r   r  sympy.physicsr  R_nlr   rJ   r   )rG  r3  r   r  r  nvlvrvZvsympy_valuer   scipy_valuer   r   r   test_issue_15654  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 )Nrt  rM  r   r  r   Cr   Dr   kr   r   r  )r   r   r   )r}   r   r   r   )r}   r   r   r   r   )x      ih  i  iX  )rq   rk   re   r   rJ   array_equalrb  object)	rM  r  r  r  r  r   r  hr5  r   r   r   test_issue_15827  s>   "H"<"4 
r  c                  C   sF   t std td} dd }t| || dd}|dt jjks!J d S )NrR  r   c                 S   s   t j| d  S r  )r   GoldenRatior   r   r   r   r   <  r  z"test_issue_16930.<locals>.<lambda>rr   r   r}   )rr   rk   r   rJ   	constantsgolden_ratio)r   r   f_r   r   r   test_issue_169307  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 )NrR  r   r   rr   r   r   )rr   rk   r   rJ   r   LambertWr   lambertw)r   r  r   r   r   test_issue_17898@  s
   r  c                  C   s   t std tttt} ttttd}| g d}|g d}t|d  dk s/J t|d d  dk s=J t|d d  dk sKJ t|d  dk sWJ t|d d  dk seJ t|d d  dk ssJ d S )Nrt  r}   r  r   r   r>  r   )rq   rk   rJ   r   r   r0   r   rG  )r   r   res1res2r   r   r   test_issue_13167_21411G  s    r  c                  C   s"   t tt} | dtdksJ d S )N   r   )rJ   r   r	   r   r   r   r   r   test_single_eU  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 )NrR  r  rr   r   r}   r   r  )rr   rk   r   rp   r   rJ   r   ro   )r  r   r  r   r   r   r   test_issue_16536Y  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 Nrt  zx1 x2rq   r   r}   r   r  )rq   rk   r   r   r   Zeror   rF   rJ   r   r7  valuesrg  )x1x2r   r  r  pointr   r   r   test_issue_22726g  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  )	rq   rk   r   r0   r   rJ   r   r7  r  )r  r  r   r  r  r   r   r   test_issue_22739s  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 )Nrt  za tr   rq   r   r  )
rq   rk   r   r   r#   r"   rJ   r   r7  r  )r  r  r  r  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 )Nrt  r   rq   r}   )rq   rk   rG   r   rJ   	__class__re  )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sJ d S )Nznumba not installedrq   T)nopythonr}   g	T?)rz   rk   rJ   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 )NrR  rr   r   ?r  )rr   rk   r4   r   r5   rJ   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 )NrR  rr   r   r  ffffff@r  )rr   rk   r-   r   r   rJ   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  )r-   r   r   rJ   r   r  r   r   r   test_beta_math  s   
$r  c                  C   \   t std ttttt} tttttf| dd}ttdddd|dddd dks,J d S )	NrR  rr   r   gffffff?g@r   r>  r  )	rr   rk   r.   r   r   r   r   rJ   r   r  r   r   r   test_betainc_scipy  
   ,r  c                  C   r  )	NrR  rr   r   r   r  r   r}   r  )	rr   rk   r/   r   r   r   r   rJ   r   r  r   r   r   test_betainc_regularized_scipy  r  r  c            	      C   s   t std tttttttt	g} | D ]E}d|j
v r%|tt}ttf}d}nd|j
v r4|t}tf}d}ntdt||}|| }|tt|| }t |t|sWJ qtttft	tttt}td|dd	 d
 dk suJ d S )Nrt  r   )r  g?r}   )r  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)rq   rk   rN   rO   rP   rQ   rR   rS   rT   rU   r  r   r   NotImplementedErrorrJ   r7  rh  r   r   r  rI  r   )	funcsr  r  r  num_argsr   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 )NrR  rr   r   g#B;gWw'&l7gN~h.r   )r}   r   g333333?ro  g-=gFFg<)rr   rk   rJ   r   rV   r   rr  maprb  versionsplitr   rW   )cm1have_scipy_1_10plus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sJ d S )NrR  rr   r   r}   r>  )rr   rk   rJ   r   r   )bernr   r   r   test_scipy_bernoulli  s   r  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 )NrR  rr   r   r   r  g      ?)rr   rk   rJ   r   r   r   )hn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s"J dtt|v s,J d S )NCuPy not installedrx   r   r   r   rx   rk   rJ   r   r   rb  r   r  r   r  r   r   r   test_cupy_array_arg  s   r  c                  C   s\   t std tttggtt t d} | t ddg}|dks"J dtt|v s,J d S )Nr  rq   r   r   r   rx   r  r  r   r   r   test_cupy_array_arg_using_numpy  s   r  c                  C   rs  )Nr  rx   r   r}   r   r   ru  )
rx   rk   rd   r   r   r   rJ   rC   rL  rb  rv  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s#J dtt|v s-J d S )NJAX not installedry   r   r   r   	ry   rk   rJ   r   r   rq   rb  r   r  r  r   r   r   test_jax_array_arg3     r  c                  C   s^   t std tttggtt t d} | t jddg}|dks#J dtt|v s-J d S )Nr  rq   r   r   r   ry   r  r  r   r   r   test_jax_array_arg_using_numpy=  r  r  c                  C   s   t std ttttg} ttttgt| | dd}ttttgt| | jdd}ttttgt| j| dd}ttttgt| | jdd}|ddd|ddd  krn|ddd  krn|ddd  krnt j	
dgksqJ  J d S )Nr  ry   r   r}   r   r   ru  )ry   rk   rd   r   r   r   rJ   rC   rL  rq   rb  rv  r   r   r   test_jax_dotproductG  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 ]"}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_cseY  s   z$test_lambdify_cse.<locals>.no_op_csec                 S   s   ddl m} || ttddS )Nr   rD   clsr   )sympy.simplify.cse_mainrE   rK   r   )r  rE   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_variablesrE   )postprocess)r  r  rE   )r  r  rE   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   )r7  r   ).0e	subs_dictr   r   
<listcomp>j  s    z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>)r  r  r  rh  r   r   r  )r6  r  r  r  r  r   r  r   __init__e  s   
z(test_lambdify_cse.<locals>.Case.__init__c                S   s   t | j| j|dS )NrD   )rJ   r  r  )r6  rE   r   r   r   rJ   m  r  z(test_lambdify_cse.<locals>.Case.lambdifyr   )abstolreltolc                   s   | j rt fddt| jD sJ d S t| jD ]!\}}t| | }|dkr3| k s2J q|t| k s=J qd S )Nc                 3   s4    | ]\}}t j| t j|td  dV  qdS )r  )r  r~  N)rq   r  asarrayrI  )r  r5  r   r   r  r  r   r   	<genexpr>r  s    zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r   )r  rg  	enumerater   r   )r6  r  r   r  r5  r   abs_errr   r  r   assertAllClosep  s   z.test_lambdify_cse.<locals>.Case.assertAllCloseN)rR  rS  rT  r  rJ   r  r   r   r   r   Cased  s    r  r   )r   r   r  )r  r  r  r}   )r   r   r  )r   r   r  r   )r   r   r   T)r  r  r  r  )r}   r   FrD   )r   r   r   r   r0   r%   rd   r$   rq   r  rJ   r  r  )	r  r  r  r  casescase_cser   r  r   r   r   test_lambdify_cseX  sp   






	"
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  rD   )r  r   r   r   r     r   z"test_issue_25288.<locals>.<lambda>rD   )rK   r   rJ   r   r$   )okr   r  r   test_issue_25288  s   
*r  c                   C   s>   t   ttthtt  W d    d S 1 sw   Y  d S r   )r   rJ   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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}   rq   r   ru  rE  r      r!  )rq   rk   re   rJ   rL  rb  r  )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s:J d S )Nr   r   r   r   r   TrD   )r   r   r   g     r@)r   r   r   expandrJ   )r   r  r  	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)r6  r  r  r   r   r   r    s   
z"LambdifyDocstringTestCase.__init__c                 C      d}| j s| jS |S )NzEEXPRESSION REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  EXPR)r6  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)r6  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#  )r6  expected_docstringr   r   r   r%    s   	z,LambdifyDocstringTestCase.expected_docstringc                 C   s
   t | jS r   )r  r%  r6  r   r   r   __len__  s   
z!LambdifyDocstringTestCase.__len__c                 C   s   | j j d| j d| j dS )Nz(docstring_limit=z, expected_redacted=))r  rR  r  r  r&  r   r   r   __repr__  s   
z"LambdifyDocstringTestCase.__repr__)rR  rS  rT  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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rR  rS  rT  r$  r  r!  r   r   r   r   SimpleSymbolTestCase  s
    r,  r   Fr  r   r}   r   Tr   r   r  )r  r   rJ   r  r  r%  )r,  r   
test_cases	test_caselambdified_exprr   r   r   0test_lambdify_docstring_size_limit_simple_symbol
  s"   




r1  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   ExprListTestCase)      r4  r3  r   Fr     r   Tr   r   r   r-  )r  r   r  rJ   r  r  r%  )r4  r   r   r   r  r.  r/  r0  r   r   r   .test_lambdify_docstring_size_limit_nested_expr'  s$   




r7  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                   @   r2  )zAtest_lambdify_docstring_size_limit_matrix.<locals>.MatrixTestCaser3  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   MatrixTestCaseK  r5  r8  r3  r   Fr  r6  r   Tr   r   r   r-  )
r  r   rd   r   r  r  rJ   r  r  r%  )r8  r   r   r   r  r.  r/  r0  r   r   r   )test_lambdify_docstring_size_limit_matrixI  s$   .




r9  c                  C   s8   t d} d| ff}t| |}|d}|dksJ dd S )Nr  r   r}   )r   r  z2Lambdify did not handle the empty tuple correctly.r'  )r  r  r   r  r   r   r   test_lambdify_empty_tuplel  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)ra   r   r   r   )rp  sympy_result_integersympy_result_complexmpmath_result_integermpmath_result_complexr   r   r   (test_assoc_legendre_numerical_evaluations  s   r?  (/  	itertoolsr   r   r  r   sympy.testing.pytestr   r   sympy.concrete.summationsr   sympy.core.functionr   r   r   sympy.core.numbersr	   r
   r   r   r   r   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   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   r   r   $sympy.functions.elementary.piecewiser    (sympy.functions.elementary.trigonometricr!   r"   r#   r$   r%   r&   sympy.functions.special.besselr'   r(   r)   r*   r+   r,   &sympy.functions.special.beta_functionsr-   r.   r/   'sympy.functions.special.delta_functionsr0   'sympy.functions.special.error_functionsr1   r2   r3   r4   r5   r6   r7   'sympy.functions.special.gamma_functionsr8   r9   r:   r;   sympy.integrals.integralsr<   sympy.logic.boolalgr=   r>   r?   r@   rA   rB   %sympy.matrices.expressions.dotproductrC   r  rE   sympy.tensor.arrayrF   rG   sympy.tensor.indexedrH   r   rJ   sympy.utilities.iterablesrK   sympy.vectorrL   sympy.core.exprrM   sympy.codegen.cfunctionsrN   rO   rP   rQ   rR   rS   sympy.codegen.numpy_nodesrT   rU   sympy.codegen.scipy_nodesrV   rW   rX   rY   rZ   #sympy.functions.special.polynomialsr[   r\   r]   r^   r_   r`   ra   rb   rc   sympy.matricesrd   re   rf   r  rg   sympy.printing.numpyrh   ri   rj   rk   sympy.utilities.decoratorrl   sympy.utilities.exceptionsrm   sympy.externalrn   ro   rp   r   MutableDenseMatrixrq   rr   rv   rw   rx   ry   rz   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/  r2  r4  r6  r;  r<  r@  rC  rD  rF  rG  rJ  rQ  ro  rr  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!  r2  r3  r4  r5  r?  r@  rA  rC  rF  rH  rI  rN  rP  rQ  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  r7  r9  r:  r?  r   r   r   r   <module>   s   $  $  ,






	

		

				




"	
 




9
<



	
		






]+"#