
    Rie                        d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZHmIZImJZJ d dlKmLZLmMZMmNZNmOZO d dlPmQZQ d dlRmSZSmTZTmUZUmVZVmWZWmXZX d dlYmZZZ d dl[m\Z\m]Z] d dl^m_Z_ d dl`maZa d dlbmcZc d dldmeZemfZfmgZgmhZhmiZimjZj d d lkmlZlmmZm d d!lnmoZompZp d d"l"mqZqmrZrmsZs d d#ltmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z} d d$l~mZmZmZ d d%lmZ d d&lmZ d d'l`mZmZ d d(lmZ d d)lmZ d d*lmZ d d+lmZ d d,lKmZmZ d dlZeZ ed-          Z ed.d/d0gi1          Z ed2          Z ed3          Z ed4          Z ed5          Z ed6          Zerd dlZd7ej        d8<    ed9          \  ZZZZd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZedD             ZedE             ZedF             ZedG             ZedH             ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d d          Zd Zd Zd Z dS )    )productN)raiseswarns_deprecated_sympy)Sum)FunctionLambdadiff)EFloatIRationaloopi)Eq)S)Dummysymbols)RisingFactorial	factorial)	bernoulliharmonic)Abs)explog)acosh)floor)MaxMinsqrt)	Piecewise)acoscoscotsinsinctan)besselibesseljbesselkbessely)betabetaincbetainc_regularized)	Heaviside)EierferfcfresnelcfresnelsSiCi)digammagammaloggamma	polygamma)Integral)AndfalseITENotOrtrue)
DotProduct)derive_by_arrayArray)IndexedBaselambdify)UnevaluatedExpr)expm1log1pexp2log2log10hypot)	logaddexp
logaddexp2)cosm1powm1)reimarg)	
chebyshevt
chebyshevulegendrehermitelaguerre
gegenbauerassoc_legendreassoc_laguerrejacobi)MatrixMatrixSymbolSparseMatrix)LambdaPrinter)NumPyPrinter)implemented_function	lambdastr)skip)conserve_mpmath_dps)ignore_warnings)import_module)
uppergamma
lowergammanumpyscipyfromlistsparse)import_kwargsnumexpr
tensorflowcupyjaxnumba2TF_CPP_MIN_LOG_LEVELzw,x,y,zc                  x     t          g d           t          t           fd                         dk    sJ d S )N   c                        d          S )N fs   Clib/python3.11/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>ztest_no_args.<locals>.<lambda>P   s    aaee     rF   r   	TypeErrorr|   s   @r~   test_no_argsr   N   s=    QA
9mmmm$$$133!888888r   c                  b    t          t          dt          z            }  | d          dk    sJ d S N   rx   rF   xr|   s    r~   test_single_argr   T   s.    AaCA1Q441999999r   c                  |    t          t          t          gt          t          z             }  | dd          dk    sJ d S Nrx   r      )rF   r   yr|   s    r~   test_list_argsr   Y   s4    !QQA1Q77a<<<<<<r   c                  J   t          t          t          ggt          t          g           ddg          ddgk    sJ t          t          fd           t          t          t          ft
          t          fgt          t          t
          t          g           dd          g dk    sJ t          t          f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    sJ d S )N[   r   c                        dd          S Nrx   r   r{   )f1s   r~   r   z"test_nested_args.<locals>.<lambda>a       bbAhh r   )      )I      )r   r   r   r   c                        dd          S )Nr   r   r{   )f2s   r~   r   z"test_nested_args.<locals>.<lambda>e   r   r   
   4      ,   )r   r   r   r   )rF   wr   r   r   r   z)f3r   r   s    @@r~   test_nested_argsr   ^   s   	Aq6(QF	#	#B2r1g;;2q'!!!!
9&&&&'''	Aq6Aq6"Q1aL	1	1B2h  OOO3333
9&&&&'''	1uaj!$q!Ql	3	3B2bRD62,##'7'7'7777777r   c                       t          dd             ddd          dk    sJ   ddd	          d
k    sJ t          t           fd           d S )Nzx,y,zzz,y,xr   r   rx   rx   r   r         ?       @      @r   r   r   c                        d          S Nr   r{   r|   s   r~   r   ztest_str_args.<locals>.<lambda>p       aadd r   r   r|   s   @r~   test_str_argsr   k   sj    '""A1Q1::""""1S#s....
9llll#####r   c                      d } t          t          t          t                    d| i          } |d          dk    sJ  |d          dk    sJ d S )Nc                     dS Nrx   r{   r   s    r~   r   z&test_own_namespace_1.<locals>.<lambda>t   s    q r   r$   皙?rx   d   rF   r   r$   myfuncr}   s     r~   test_own_namespace_1r   s   sR    [FCFFUFO,,A1S66Q;;;;1S66Q;;;;;;r   c                      d } t          t          t          t                    d| i          } |d          dk    sJ  |d          dk    sJ d S )Nc                     dS r   r{   r   s    r~   r   z$test_own_namespace_2.<locals>.myfunc{   s    qr   r$   r   rx   r   r   r   s     r~   test_own_namespace_2r   z   sZ      CFFUFO,,A1S66Q;;;;1S66Q;;;;;;r   c            	         t          t          t          t                    t                    }  | d          dk    sJ t	          dd          \  }}}t          t          |t          ||z             z                       }t          |||g||gt                    }  | ddd	          }t          j        d          gd
z  }t          ||          D ] \  }}t          ||z
  |z            dk     sJ !d S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)	rF   r   r$   mathr   absr   rG   zip)	r}   pqraeresultsrefvalsresrefs	            r~   test_own_moduler      s    CFFD!!A1Q443;;;;gD)))GAq!	S?1Q3'''((	)	)B!QRHd333AaT5!!Gx}}oaG)) * *SCGS=!!E)))))* *r   c                  ^    t          t          d            t          t          d            d S )Nc                       t          d          S r   rE   r{   r   r~   r   ztest_bad_args.<locals>.<lambda>   s    hqkk r   c                  $    t          ddg          S r   rE   r{   r   r~   r   ztest_bad_args.<locals>.<lambda>   s    h1v.. r   )r   r   r{   r   r~   test_bad_argsr      s0    
9))***
9../////r   c                      t          t          t          t          z   ddi          }  | d          dk    sJ t          t          t          t          z   ddi          }  | d          dk    sJ d S )Nr   gQ	@r   r                 ?rx   y      ?      ?)rF   r   r   r   r|   s    r~   
test_atomsr      sb    BFT4L))A1Q444<<<<AEC9%%A1Q446>>>>>>r   c                     dt           j        _        t          j        d          } t	          t
          t          t
                    d          } |t
                    t          t
                    k    sJ d}|  |t          dd                                                    t          t          |                     z
  cxk     r|k     sn J d S )N2   40.19866933079506121545941262711838975037020672954020sympyr   rx      )mpmathmpdpsmpfrF   r   r$   r   evalfr   strsin02r}   precs      r~   test_sympy_lambdar      s    FIMJMNNECFFG$$A1Q443q66>>>>D511Xa^^$$**,,uSZZ/@/@@GGGG4GGGGGGGGr   c                     dt           j        _        t          j        d          } t	          t
          t          t
                    d          d}|  d          | z
  cxk     r|k     sn J t          t          fd           d S )Nr   r   r   r   皙?c                  $      t                     S Nr   r|   s   r~   r   z"test_math_lambda.<locals>.<lambda>       aadd r   )	r   r   r   r   rF   r   r$   r   r   )r   r   r}   s     @r~   test_math_lambdar      s    FIMJMNNECFFF##AD511S66E>((((D((((((
9llll#####r   c            	      N  	 dt           j        _        t          j        d          } t	          t
          t          t
                    d          	d}|  	t          j        d                    | z
  cxk     r|k     sn J t          t          	fd           t          j        d          t          j        d          d	z  z
  d
t          j        d          z  dz  z   dt          j        d          z  dz  z
  dt          j        d          z  dz  z   }t	          t
          t          ft
          t          z  dz
  d          }t	          t
          t          ft          t
          t                    d          }t	          t
          ft          t
          t          t
                    z            d          } |t          j        d          t          j        d          z   t          j        d                    } |t          j        d          t          j        d          z   t          j        d                    } |t          j        d                    }t          ||z
            dk     sJ t          ||z
            dk     sJ t          ||z
            dk     sJ d S )Nr   r   r   n5z0.2c                  $      t                     S r   r   r|   s   r~   r   z$test_mpmath_lambda.<locals>.<lambda>   r   r   z1e-30z1e-45r   r   z1e-60   r   z1e-75r   !   z1e-90(   rx   1z1e-15gLoW5g[ݦe2g#aMR/)r   r   r   r   rF   r   r$   r   r   r   rQ   rH   rI   r   )
r   r   ref2f2af2bf2cans2aans2bans2cr}   s
            @r~   test_mpmath_lambdar      sI   FIMJMNNECFFH%%AD511VZ&&''%/6666$666666
9llll### Jwj!!!#$
7###A%& 
7###A%& G$$$R'	(D Aq61a4!8X
.
.C
Aq65A;;
1
1C
A4qqz**H
5
5CC
3
7 3 33VZ5H5HIIEC
3
7 3 33VZ5H5HIIEC
7##$$Eut|u$$$$ut|u$$$$ut|u$$$$$$r   c                      dt           j        _        t          j        d          } t	          t
          | d          }d}|  |d          | z
  cxk     r|k     sn J d S )Nr   r   r   r   r   )r   r   r   r   rF   r   r   s      r~   test_number_precisionr      sj    FIMJMNNEE8$$AD511Q44%<&&&&$&&&&&&&&r   c            	          dt           j        _        t           t	          dt          j        d          d                                t          t          j        d                    k    sJ d S )Nr   r{   r   )r   r   r   r   rF   r   r   r{   r   r~   test_mpmath_precisionr      sW    FIM4xBHSMM84466773rx}};M;MMMMMMMr   c                      ddl m}  |                                 D ]%\  }}|t          j        v sJ |t
          j        v sJ &d S )Nr   )MATH_TRANSLATIONS)sympy.utilities.lambdifyr   itemsr   __dict__r   )r   symmats      r~   test_math_translr     sf    ::::::%++-- $ $Sen$$$$dm#####$ $r   c                      ddl m}  |                                 D ]+\  }}|t          j        v s|dk    sJ |t
          j        v sJ ,d S )Nr   )MPMATH_TRANSLATIONSr^   )r   r  r   r   r   r   )r  r   r  s      r~   test_mpmath_translr     sl    <<<<<<'--// & &Sen$$xfo%%%%%& &r   c                      t           st          d           ddlm}  |                                 D ]%\  }}|t
          j        v sJ |t           j        v sJ &d S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)rk   re   r   r  r   r   r   )r  r   numps      r~   test_numpy_translr
     s}     %#$$$;;;;;;'--// & &	Ten$$$$u~%%%%%& &r   c                      t           st          d           ddlm}  |                                 D ]8\  }}|t
          j        v sJ |t           j        v s|t           j        j        v sJ 9d S )Nscipy not installed.r   )SCIPY_TRANSLATIONS)rl   re   r   r  r   r   r   special)r  r   scips      r~   test_scipy_translr     s     %#$$$;;;;;;'--// H H	Ten$$$$u~%%1G)G)G)G)GH Hr   c                      t           st          d           t          t          t	          t                    d          }  | d          dk    sJ  | d          dk    sJ d S )Nr  rk   rz   rx   )rk   re   rF   r   r   r|   s    r~   test_numpy_translation_absr  	  s^     %#$$$CFFG$$A1R55A::::1Q441999999r   c                  \   t           st          d           ddlm}  d}t          t
          t          f}| j                                        D ]_}||v rt          |          }t          |d          r|j        d         }nd}|d |         }t          | || d          } |d	|z   J `d S )
Nnumexpr not installed.r   )NumExprPrinter)wherecomplexcontains_nargsrx   rp   r   rx   )rp   re   sympy.printing.lambdareprr  r   r   r   _numexpr_functionskeysr   hasattrr  rF   )r  	blacklist	arg_tupler   ssymnargsargsr}   s           r~   test_numexpr_printerr$    s     '%&&& 9888880IAq	I05577 
+ 
+)vv4"" 	KNEEE% T44;	:::q%+****
+ 
+r   c                  B   t           st          d           t          st          d           t          d          } t	          | j        d           \  }}t          ||f| t           gd          }t          j                            d          \  }} |||           d S )	Nr  r  zb*a - sqrt(a**2)c                     | j         S r   )name)ss    r~   r   z!test_issue_9334.<locals>.<lambda>/  s    16 r   )keyF)r   dummifyr   r   )rp   re   rk   r   sortedfree_symbolsrF   random)exprabfunc_numexprfoobars         r~   test_issue_9334r5  )  s     '%&&& %#$$$  D$#)9)9:::DAqQqE4'EJJJL|""6**HCLcr   c            	         t           st          d           t          t          t          t
          ft          t          t          dk    ft
          t          dk    f          t                     } t          t                    5   | ddd          dk    sJ t           | ddd                    dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rz   rx      *   nan)
rp   re   rF   r   r   r   r    rg   RuntimeWarningr   )r2  s    r~   test_issue_12984r;  5  s    '%&&&QqGY16{QBK%H%H'RRL		(	( 6 6|Ar2&&",,,,<<B++,,555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   4CC
Cc                      t          d          \  } }| |z   }t          | |g|          }t          | |g|g           } |dd           |dd          k    sJ  |dd          dk    sJ d S )Nzx yr   r      r   rF   )r   r   r/  
no_modulesempty_moduless        r~   test_empty_modulesrB  >  s    5>>DAqU8D1a&$''JaVT2666M:a}}Q222222:ar!!!!!!r   c                     t          t          t          dz            }  | 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    sJ d S )	Nr   rz   rx   r   r         @      @r   r|   s    r~   test_exponentiationrG  H  s    AqDA1R55A::::1Q44199991Q44199991R55A::::1Q44199991S66T>>>>>>r   c                     t          t          t          t                              }  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ t           | d          dz
            d	k     sJ  | d
          dk    sJ d S )Nr   r   rx   r   r   r   r   g9v?gMbP?rF  rE  )rF   r   r   r   r|   s    r~   	test_sqrtrI  R  s    DGGA1Q443;;;;1Q443;;;;1Q443;;;;qqtte|u$$$$1T77c>>>>>>r   c                     t          t          gt          t                    t          t                    gd          }  | t                    }d}| |d         dz   cxk     r|k     sn J | |d         cxk     r|k     sn J  | d          }d}| |d         dz   cxk     r|k     sn J | |d         cxk     r|k     sn J d S )Nr   gdy=r   rx   n!	@gh㈵>)rF   r   r"   r$   r   )r}   dr   s      r~   	test_trigrM  [  s   !s1vvs1vv&//A	"AD51Q4!8""""d""""""51Q4$	'

AD51Q4!8""""d""""""51Q4$r   c            	      `   t           rt          st          d           t          t          t          t          dz                       } t          t          t           | t                    t          t          t          f                    } |t                     }d|cxk     rdk     sn J d S )Nr  r   giv[?gm[?)
rk   rl   re   r   r   r   rF   r   r:   r   )r}   lrL  s      r~   test_integralrP  g  s     %U %#$$$q#q!te**AHQQqTTAq":..//A	2#A''''K''''''''r   c                  "   t           rt          st          d           t          ddt          dz  t
          dz  z  z
  z  t          ddft
          dt          f          } t          t          g|           } |d          }d|cxk     rdk     sn J d S )Nr  rx   r   r   gX<?g<?)rk   rl   re   r:   r   r   r   rF   )irO  rL  s      r~   test_double_integralrS  p  s     %U %#$$$A1QT	M"Q1I1ay99A!aA	!A''''K''''''''r   c                       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 S )
Nr   r   rx   r   r   r   r   r   c                        d          S r   r{   r|   s   r~   r   z$test_vector_simple.<locals>.<lambda>  r   r   )rF   r   r   r   r   r   r|   s   @r~   test_vector_simplerV  }  sv    !QQ1I&&A1Q1::""""1S#s....
9llll#####r   c                       t          t          dt          z  dt          z  f           t          t           fd             d          dk    sJ   d          dk    sJ   d          dk    sJ d S )	Nrz   rx   c                        d          S r   r{   r|   s   r~   r   z+test_vector_discontinuous.<locals>.<lambda>  s    aadd r   )g      r   r   )            ?rD  )rZ  rY  )rF   r   r   ZeroDivisionErrorr|   s   @r~   test_vector_discontinuousr\    s    RT1Q3K  A
llll+++1Q44;1Q44;1R55Kr   c                     t          t          gt          t                    t          t                    gd          }  | t                    }t          |d         dz             dk     sJ t          |d         dz
            dk     sJ d S )Nr   r   rx   -C6?)rF   r   r"   r$   r   r   r}   rL  s     r~   test_trig_symbolicr`    sw    !s1vvs1vv&//A	"Aqtax==6!!!!qtax==6!!!!!!r   c                     t          t          gt          t                    t          t                    g          }  | d          }t	          |d         dz             dk     sJ t	          |d         dz
            dk     sJ d S )NrK  r   rx   r^  )rF   r   r"   r$   r   r_  s     r~   test_trig_floatrb    su    !s1vvs1vv&''A	'

Aqtax==6!!!!qtax==6!!!!!!r   c                     t          t          t          dz            }  | 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    sJ t          t          t          ft          t          t          z            dz            }  | dd          dk    sJ d S )	Nr   r   rx   r   r   r   rx   r   r   r   )rF   r   r   r   r   r$   r|   s    r~   	test_docsre    s    AqDA1Q4419999!QQ1I&&A1Q1::""""DGGA1Q443;;;;!QQqS1%%A1Q77a<<<<<<r   c                      t          t          t          ft          t                    d          }  | dd          dk    sJ d S )Nr   r   r   r   )rF   r   r   r$   r|   s    r~   	test_mathrg    s;    !QQ000A1Q77a<<<<<<r   c                  2   t          t          t          t                    dz            } t           | d          t                    sJ t          t          t          t                    dz  d          } t           | d          t                    sJ d S )Nr   r   r   )rF   r   r$   
isinstancefloatr|   s    r~   test_sinrk    s{    CFFAIAaaddE"""""CFFAIv...AaaddE"""""""r   c                  @   t          t          t          t          z  gt          t                    dz   t          t          z  gg          } t          ddgt          d          dz   dgg          }t          t          t          t          f| d          } |ddd          |k    sJ t          t          t          t          f| | gfd          } |ddd          ||gfk    sJ t          t          t          t          z   f                              t          t          f          }t          t          t          f          }t          ddgddgg          } t          ||d          dd          |k    sJ  t          |j        |d          dd          |k    sJ d S )Nr   rx   r   r   r   r   r   )r^   r   r   r$   r   rF   jacobianT)Asolr}   Jvs        r~   test_matrixrs    s}   AaC3q66A:q!t,-..A
1a&3q66A:q/*
+
+C!QAw///A1Q1::!QQHg666A1Q1::#u%%%%1q5z##QF++A1vA
1a&1a&!
"
"C*8Aq'***1a00C7777,8ACG,,,Q22c999999r   c                  b  	
 t           st          d           t          t          t          t          z  gt          t                    dz   t          t          z  gg          } t                               ddgt                               d          dz   dgg          }t          t          t          t          f| dg          }t           j	        
                     |ddd          |           t           |ddd          t           j                  sJ  G d dt                    } |t          t          dgdgd	gg                    
t          t          
          }t                               d
          t                                |          d	k              sJ dddd}t!          t#          ddddii|          }t          t          
|          }t                                |          d	k              sJ t!          |          	t%          t&          	
fd           d S )Nr  r   rx   r   r   rk   c                       e Zd ZdS )test_numpy_matrix.<locals>.dotN)__name__
__module____qualname__r{   r   r~   dotrv    s        r   rz  r   )   r   FT)allow_unknown_functionsinlinefully_qualified_modulesuser_functionsprinterc                  D     t          t                               S )Nr  r   )inpp3	x_dot_mtxs   r~   r   z#test_numpy_matrix.<locals>.<lambda>  s!    @hq)R@@@EE r   r{   )rk   re   r^   r   r   r$   r   arrayrF   testingassert_allcloseri  ndarrayr   zerosallrb   dictr   	Exception)ro  sol_arrr}   rz  f_dot1	strict_kwp2f_dot2r  r  r  s           @@@r~   test_numpy_matrixr    s    %#$$$AaC3q66A:q!t,-..AkkAq6EIIaLL1$4a#89::G!QAy))A	M!!!!Aq!**g666aa1ajj%-00000    h   AvsQC!o..//Ia##F
++g

C99VVC[[A%&&&&&,1T^cddI	dFF5%.FIFF	G	GBaB///F99VVC[[A%&&&&&	i	 	 B
9EEEEEEFFFFFr   c                  ,   t           st          d           t          dt          gddgg          } t	          t          | j        d          }t           j                             |d          t                               ddgddgg                     d S )Nr  rx   r   rk   r   r   )	rk   re   r^   r   rF   rn  r  assert_array_equalr  ro  r}   s     r~   test_numpy_transposer    s     %#$$$AA  A!ac7+++A	M$$QQqTT5;;AA7G+H+HIIIIIr   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rC |ddd          cxk    r1 |ddd          cxk    rt           	                    dg          k    sn J d S )Nnumpy not installedrk   r   rx   r   r      )
rk   re   r^   r   r   r   rF   rA   rn  r  ro  r   r   r   f4s        r~   test_numpy_dotproductr    sw    $"###1ayA	1a)Z1--w	?	?	?B	1a)Z13//	A	A	AB	1a)ZQ//	A	A	AB	1a)Z13//	A	A	AB2aA;;2aA;;   2aA;;    2aA;;    ;;t	       r   c                  (   t           st          d           t          dt          gddgg          } t	          t          | dz  d          }t           j                             |d          t                               ddgddgg                     d S )	Nr  rx   r   rz   rk   r   r   rD  )rk   re   r^   r   rF   r  r  r  r  s     r~   test_numpy_inverser    s     %#$$$AA  A!aeW---A	M$$QQqTT5;;B!a7I+J+JKKKKKr   c                     t           st          d           t          t          t          t          z  gt          t                    dz   t          t          z  gg          } t                               ddgt                               d          dz   dgg          }t          t          t          t          f| dt           j	        idg          }t          t                    5  t           j                             |ddd          |           t           |ddd          t           j	                  sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rx   r   r   ImmutableDenseMatrixrk   )rk   re   r^   r   r   r$   r   r  rF   matrixrg   PendingDeprecationWarningr  r  ri  )ro  r  r}   s      r~   test_numpy_old_matrixr    sV    %#$$$AaC3q66A:q!t,-..AkkAq6EIIaLL1$4a#89::G!QA!7 FPQQA	2	3	3 4 4%%aa1ajj':::!!Aq!**el3333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s    AEEEc                     t           st          d           t          t          dgdt          gg          } t          t          t          f| d          } |dd          }t          |t           j        j                  sJ d S )Nr  r   rl   r   rx   r   )	rl   re   r`   r   r   rF   ri  rn   
coo_matrix)ro  r}   Bs      r~   test_scipy_sparse_matrixr    s{     %#$$$q!fq!f%&&A!QG,,,A	!QAa01111111r   c            
         t           st          d           t          dt          z  t          dk     ft          t          dk     fdt          z  df          } t          t          t          g| d          }t                               d           t           |t                               d	g          t                               d
g                              d	k    sJ t          t           |t                               d	g          t                               dg                                        dk    sJ t                               d           d S )Nr  rx   rz   Trk   r   ignore)divider   rZ  infwarn)
rk   re   r    r   r   rF   seterrrj  r  r   )r   r}   s     r~    test_python_div_zero_issue_11306r    s    %#$$$1q5!b&/Aq1u:At}==A!QG,,,A	LLL!!!5;;s##EKK$6$67788A====uQQu{{A3''QC(8(899::;;uDDDD	LLLr   c                  ~   d dg} t           r|                     d           t          r|                     d           | D ]}t          t          t
          j        t          z  |          } |d          dk    sJ t          t          t          t
          j        t          z            |          } |d          dk    sJ t          t          t          g|           D ]]\  }}t          t           |t                    |          } |d          d	k    sJ  |d	          d	k    sJ  |d
          dk    sJ ^d S )Nr   rk   r   r   r   rZ  r   rz   rx   y      @      @r   )rk   appendr   rF   r   r   Oner   r   r   r   )modsmodr}   absfuncr   s        r~   test_issue9474r    s=   &>D G H  Qa---qtts{{{{QaeAg444qttqyyyyy#S#J55  Q

G444quuzzzzqttqyyyyqww!|||||	 r   c                  ~   t           st          d           t          st          d           t          t          dz  t
          dz  z             } t          d| z  t                    }t                              ddd          x}}t                              d          dz   |d	z  z  } t          t          t
          f|d
          ||          } t          t          t
          f|d          ||          }t          j	        
                    ||d           t          j	        
                    ||d           d S )Nr  r  r   rx   r      r   r>  rD  rk   r   rp   绽|=)rtol)rp   re   rk   r   r   r   r	   linspacerF   r  r  )r   r/  xnynfv_exactfv_numpy
fv_numexprs          r~   test_issue_9871r  /  s    '%&&& %#$$$QTAqD[A!Q<<DnnQB'''B

2""RV+H6xAg666r2>>H:1a&$	:::2rBBJ	M!!(H5!AAA	M!!*hU!CCCCCr   c            	         t           st          d           t          t          t          dk     ft          dz  t          dk    fd          } t	          t          | 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   Trk   r   r   )
r   rx   r   r   r   r   $   1   @   Q   r   rz   r   rx   rx   )
rk   re   r    r   rF   r  r  aranger  r9  )piecesr}   
nodef_funcs      r~   test_numpy_piecewiser  B  s'    %#$$$1q5zAqD!a%=)<<FFG,,,A	M$$QQu||B'7'7%8%8%*[[1S1S1S%T%TV V V !Y1q5zQBA;??@@J	M$$ZZJJJ0G0G%H%H%*[[!UY1B%C%CE E E E Er   c                     t           st          d           t          t          t          ft          t          t                    d          } t          t          t          t          ft          t          t          t                    d          }t          t          t          ft          t          t                    d          }t          t          t          t          ft          t          t          t                    d          }t          t          t          t                    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  rk   r   TF)rk   re   rF   r   r   r;   r   r?   r>   r  r  r  )and_func
and_func_3or_func	or_func_3not_funcarr1arr2arr3s           r~   test_numpy_logical_opsr  O  s    %#$$$AAq		7;;;H1a)SAq\\7CCCJ1vr!Qxx999G!QBq!QKKAAAISVVW555H;;d|$$D;;t}%%D;;e}%%D	M$$XXdD%9%95;;t};U;UVVV	M$$ZZdD%A%A5;;PUW\~C^C^___	M$$WWT4%8%8%++tTl:S:STTT	M$$YYtT4%@%@%++tUYlB[B[\\\	M$$XXd^^U[[$5O5OPPPPPr   c                  4   t           st          d           t          t          t          gt
          dt
          z   gg          } t          t          dz  gt          t                    gg          }t          t          t          t
          f| |z  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| | z  | z  d          }t           j        	                     |ddd          t           
                    ddgddgg                     d S )Nr  rx   r   rk   r   rZ  r   r   g      ?      @rY  g      ?g     R@g     ]@      )rk   re   r^   r   r   r   r   rF   r  r  r  )xmatymatmat_funcr}   s       r~   test_numpy_matmulr  a  so    %#$$$Aq6Aqs8$%%DAqD6CFF8$%%DAq	49g>>>H	M$$XXc1a%8%8%++wQTPUFV:W:WXXX	M$$XXdAq%9%95;;RUQVGW;X;XYYY!QDIdNG<<<A	M$$QQsAq\\5;;@PADc
@L 4M 4M N N N N Nr   c            	         t           st          d           t          st          d           t           j                            ddd          \  } }}t          t                    t          t                    z   t          t                    dz  z   t          t          t          z
            t          t          t          t          z                      z  z   t          t          t          z
            t          dt          t          t          z
            z             z  z   t          t          dz  t           t          dz  z  z             z
  }t#          t          t          t          f|d          }t#          t          t          t          f|d          }t                                || ||           || ||                    sJ d S )	Nr  r  r      r   rk   r   rp   )rk   re   rp   r.  randnr$   r   r"   r   r&   r   r   r!   r   r   r   r   rF   allclose)r0  r1  cr/  npfuncnefuncs         r~   test_numpy_numexprr  o  sP    %#$$$ '%&&&l  C--GAq!q66CFF?SVVQY&QqS$s1Q3xx..)@@qs88E!C!HH*%%%&'+AqD1a4K'8'89Dq!Qiw777Fq!Qiy999F>>&&Aq//66!Q??;;;;;;;r   c                     t           st          d           t          st          d           t           j                            dd          \  } }t          dt          fdt          d           i          }t          t          d |t                    z
  d	
          }t           
                     ||           | dz             sJ t          t          d          d           }t          t          t          f |t          t                    d	
          }t           
                     || |          d| z  |z  dz             sJ d S )Nr  r  r   r   ufevalc                     |dz  dz   S r   r{   r   r   s     r~   r   z,test_numexpr_userfunctions.<locals>.<lambda>  s    !Q$q& r   rx   rp   r   c                     d| z  |z  dz   S r   r{   r  s     r~   r   z,test_numexpr_userfunctions.<locals>.<lambda>  s    AaCE!G r   )rk   re   rp   r.  r  typer   classmethodrF   r   r  rc   r   )r0  r1  r  funcs       r~   test_numexpr_userfunctionsr  }  s-    %#$$$ '%&&&<a$$DAq	dXL$8$899:
< 
<BAqAw	222D>>$$q''QT7+++++	htnn.C.C	D	DBQFBBq!HHi888D>>$$q!**ac!eAg.......r   c                     t           st          d           t          t          t                    t          dt          dz   z                      } t          t          | d          }t           j        j        	                                5 }t           
                    dt           j                  } ||                              |          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Ntensorflow not installed.rx   r   rq   r   r   dtypesessionrZ  )rq   re   r   r$   r   r   rF   compatv1Sessionconstantfloat32r  r/  r  r(  r0  s       r~   test_tensorflow_basic_mathr    s    *()))s1vvs1ac7||$$DAt\222D				%	%	'	' .1);<<tAww||A|&&#-----. . . . . . . . . . . . . . . . . .s   AC%%C),C)c                     t           st          d           t          t          t                    t          dt          dz   z                      } t          t          | d          }t           j        j        	                                5 }t           j        j        
                    t           j                  } ||                              ||di          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr  rx   r   rq   r   r  r   r  	feed_dictrZ  )rq   re   r   r$   r   r   rF   r  r  r  placeholderr  r  r  s       r~   test_tensorflow_placeholdersr    s+    *()))s1vvs1ac7||$$DAt\222D				%	%	'	' @1 ,,:3E,FFtAww||A!Q|88C?????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AC11C58C5c                     t           st          d           t          t          t                    t          dt          dz   z                      } t          t          | d          }t           j        j        	                                5 }t           
                    dt           j                  }|                    |j                    ||                              ||di          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr  rx   r   rq   r   r   r  r  rZ  )rq   re   r   r$   r   r   rF   r  r  r  Variabler  runinitializerr  r  s       r~   test_tensorflow_variablesr    s;    *()))s1vvs1ac7||$$DAt\222D				%	%	'	' @1);<<	amtAww||A!Q|88C?????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   A)DD	Dc                     t           st          d           t          t          t	          t
          t                    t                              } t          t
          t          g| d          }t           j        j	        
                                5 } |dd                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  rq   r   FTr  )rq   re   r>   r;   r?   r   r   rF   r  r  r  r  r/  r  r(  s      r~   "test_tensorflow_logical_operationsr	    s     *()))s2a88Q  DQFD,777D				%	%	'	' :1tE4  %%a%00E99999: : : : : : : : : : : : : : : : : :s   'CCCc                  0   t           st          d           t          dt          t          d          fdt          dk     fdt          dk    f          } t          t          | d          }t           j        j                                        5 } |d          	                    |          dk    sJ  |d          	                    |          dk    sJ  |d          	                    |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rz   rx   rq   r   r  )
rq   re   r    r   r   rF   r  r  r  r  r  s      r~   test_tensorflow_piecewiser    sK    *()))aAa\BA;AE
;;DAt\222D				%	%	'	' ,1tBxx}}Q}''2----tAww||A|&&!++++tAww||A|&&!+++++, , , , , , , , , , , , , , , , , ,s   A0DDDc                  l   t           st          d           t          t          t           t          dz            } t	          t          | d          }t           j        j                                        5 } |d                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rq   r   rD  r  r   )	rq   re   r   r   rF   r  r  r  r  r  s      r~   test_tensorflow_multi_maxr    s     *()))q1"adDAt\222D				%	%	'	' -1tBxx}}Q}''1,,,,,- - - - - - - - - - - - - - - - - -   5&B))B-0B-c                  l   t           st          d           t          t          t           t          dz            } t	          t          | d          }t           j        j                                        5 } |d                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rq   r   rD  r  )	rq   re   r   r   rF   r  r  r  r  r  s      r~   test_tensorflow_multi_minr    s     *()))q1"adDAt\222D				%	%	'	' .1tBxx}}Q}''2-----. . . . . . . . . . . . . . . . . .r  c                  :   t           st          d           t          dk    } t          t          | d          }t           j        j                                        5 } |d                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rq   r   rx   r  T)rq   re   r   rF   r  r  r  r  r  s      r~   test_tensorflow_relationalr    s     *()))6DAt\222D				%	%	'	' /1tAww||A|&&$...../ / / / / / / / / / / / / / / / / /s   &BBBc                     t           st          d           t          t          t	          t                    d          } t          t          t          t                    d          }t          t          t          t                    d          }t          t          t          t                    d          }t           j        j	        
                                5 }t                               d          } | |                              |          dk    sJ  ||                              |          dk    sJ  ||                              |          }t          d                                          }t          ||z
            dk     sJ  ||                              |          }t          d                                          }t          ||z
            dk     sJ 	 d d d            d S # 1 swxY w Y   d S )	Nztensorflow not installedrq   r   y      ?       @r  rx   r   gư>)rq   re   rF   r   rR   rS   r   rT   r  r  r  r  r  r   r   )func1func2func3func4r(  r0  tensorflow_resultsympy_results           r~   test_tensorflow_complexesr    s    )'(((Q1|444EQ1|444EQA555EQA555E				%	%	'	' <1 %%uQxx}}Q}''1,,,,uQxx}}Q}''1,,,,!E!HHMM!M446{{((**$\122V;;;;!E!HHMM!M446{{((**$\122V;;;;;< < < < < < < < < < < < < < < < < <s   DHHHc                     t           st          d           t          t          t          ggt          t          z  t          z   d          } t           j        j                                        5 } | t                               ddg                    }|	                    |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  rq   r   r   r  g      @)
rq   re   rF   r   r   r  r  r  r  r  )r}   r(  fcalls      r~   test_tensorflow_array_argr    s     *()))1a&1Q37L11A				%	%	'	' ,1*%%sCj1122zz!z$$+++++, , , , , , , , , , , , , , , , , ,s   -AB==CCc                      t          t          t          t          z            }  | t                    t          t          z  k    sJ d S r   rF   r   r   r   r|   s    r~   test_sym_single_argr     s2    AEA1Q441q5======r   c                      t          t          t          gt          t          z   t          z             }  | dd          dt          z   k    sJ d S r   r  r|   s    r~   test_sym_list_argsr"    sB    !QQ##A1Q77a!er   c            	         t          t          t          t          dz                       } t          t          t	           | t                    t          t
           t
          f          d          } |t                    t	          t          t          dz             t          t
           t
          f          k    sJ  |t                                                    t          t                    k    sJ d S )Nr   r   r   )
r   r   r   rF   r:   r   r   doitr   r   )r}   rO  s     r~   test_sym_integralr%    s    q#q!te**AHQQqTTAsB<00'BBBA1Q448CAJJRC5555551Q4499;;$r((""""""r   c                  p   dd i} d d d}t          j        d          }t          j        d          }t          t           |t                    | df          } |d	          d
k    sJ t          t           |t                    |df          } |d	          d
k    sJ  |d	          dk    sJ d S )Nr}   c                     dS )Nfirst fr{   r   s    r~   r   z&test_namespace_order.<locals>.<lambda>$  s     r   c                     dS )Nzsecond fr{   r   s    r~   r   z&test_namespace_order.<locals>.<lambda>%  s     r   c                     dS )N
function gr{   r   s    r~   r   z&test_namespace_order.<locals>.<lambda>&  s     r   )r}   gr,  r   r   rx   r(  r+  )r   r   rF   r   )n1n2r}   r,  if1if2s         r~   test_namespace_orderr1    s     ""	#B##%%
' 
'BsAsA
1aaddRM
2
2
2C3q66Y
1aaddRM
2
2
2C3q66Y3q66\!!!!!!r   c                     t          dd           t          dd           } t          t           t                              }t          t           | t                              }t           t                              t           | t                              k    sJ  |d          dk    sJ  |d          t	          j        d          k    sJ t          j        d          }t          |d          rJ t          |d           }t          |d          sJ t          dd	           t          t          fd
           d S )Nr}   c                     d| z  S Nr   r{   r   s    r~   r   ztest_imps.<locals>.<lambda>5  s
    AaC r   c                 *    t          j        |           S r   )r   r   r   s    r~   r   ztest_imps.<locals>.<lambda>6  s    DIaLL r   r   r   r   _imp_c                     d| z  S r4  r{   r   s    r~   r   ztest_imps.<locals>.<lambda>?  s
    ! r   c                     | dz   S )Ne   r{   r   s    r~   r   ztest_imps.<locals>.<lambda>B  s
    QW r   c                  \    t          t             t                                        S r   r   )r}   r   s   r~   r   ztest_imps.<locals>.<lambda>C  s!    x11RRUU8844 r   )rc   rF   r   r   r   r   r   r   r  r   
ValueError)r,  l1l2r  my_fr}   r   s        @@r~   	test_impsr?  2  s=    	S--00AS"8"899A	!QQqTT		B	!QQqTT		Bqqtt99AAaDD		!!!!2a55A::::2a55DIaLL    >(##DtW%%%%%mm44D4!!!!!	c#4#4	5	5B
:4444455555r   c                      t          dt          t          f          D ]6\  } fd}t          d|          } ||           }| ||           k    sJ 7d S )N)r   r   r   r   c                     | dk    rdS )Nr   rx   r{   )r0  error_classs    r~   r   z test_imps_errors.<locals>.myfuncP  s    Avv!!1r   r}   )r   r   r;  rc   )valr   r}   r/  rB  s       @r~   test_imps_errorsrD  F  s     $Oi5LMM 	 	[	 	 	 	 	
 !f--qvvqqvv~~~~~	 	r   c                  2    t          t          d            d S )Nc                  .    t          t          d           S )Nc                     | S r   r{   r   s    r~   r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>[  s    1 r   )rc   r$   r{   r   r~   r   z&test_imps_wrong_args.<locals>.<lambda>[  s    3CEE r   )r   r;  r{   r   r~   test_imps_wrong_argsrH  Z  s    
:EEFFFFFr   c                     t           j        }  t          t           | t                              d          dk    sJ  t          t          d | t                    z             d          dk    sJ  t          t          t          ft           | t                    z             dd          dk    sJ t          dd           }  t          t           | t                              d          dk    sJ  t          t          d | t                    z             d          dk    sJ  t          t          t          ft           | t                    z             dd          dk    sJ t          t           | t                    t          f          } |d          d	k    sJ t          t           | t                    t          g          } |d          d
dgk    sJ t          t           | t                     | t                    t          fg          } |d          d
d	gk    sJ t          t           | t                    t          i          } |d          d
dik    sJ t          t           | t                    t          i          } |d          d
dik    sJ t          t          t           | t                    i          } |d          dd
ik    sJ dd i}t          t           | t                    |          } |d          d
k    sJ t          t           | t                    |d          } |d          dk    sJ d S )Nr   rx   r   r}   c                     | dz   S )Nr   r{   r   s    r~   r   z$test_lambdify_imps.<locals>.<lambda>f  s
    AG r   r   r9  r   )g   r   rK  c                     | dz   S )Nc   r{   r   s    r~   r   z$test_lambdify_imps.<locals>.<lambda>x  s
    B r   F)use_impsf   )r   r"   rF   r   r   rc   )r}   lamrL  s      r~   test_lambdify_impsrQ  ^  s    		A8AqqttQ1$$$$ 8Aq11Q44x  ##q((((%8QFA!H%%a++q0000S"3"344A8AqqttQ3&&&& 8Aq11Q44x  ##s****%8QFA!H%%a++s2222
1qqttQi
 
 C3q66X
1qqttQi
 
 C3q66c1X
1qqttaaddAY'
(
(C3q66c8_$$$$
1qqttQi
 
 C3q66c1X
1qqttQi
 
 C3q66c1X
1q!!A$$i
 
 C3q66aX	A
1aaddA

C3q66S====
1aaddA
.
.
.C3q66S======r   c                     t          d          t          d          t          d          t          d          } d           dz  z             z  }t                                f|          } |dd          dk    sJ t          t                    dt                    dz  z            } |                     d           dz  z  k    sJ t          | fd| z  z             } |dd          d	k    sJ t	          t
          fd
           t	          t
          fd           t	          t
          fd           d S )NtFGz\alphar   r   	   rx   r   c                  ~    t                                 z                         z  dz             S )Nr   rE   )rT  rU  rS  s   r~   r   z$test_dummification.<locals>.<lambda>  s=    1!aaddQQqTTkAo F F r   c                  Z    t          d            z  d            z  dz             S )Nr   r   rE   rT  rS  s   r~   r   z$test_dummification.<locals>.<lambda>  -    QQqTT1qqtt8a< @ @ r   c                  Z    t          d            z  d            z  dz             S )Nr   r   r   rE   rY  s   r~   r   z$test_dummification.<locals>.<lambda>  rZ  r   )r   r   rF   r$   r   SyntaxError)alpha	some_exprrP  rT  rU  rS  s      @@@r~   test_dummificationr_    sw   AAA IEAAaDD!Gaadd"I
AAaDD!!A$$<
+
+C3q!99>>>>
3q661s1vvqy=
)
)C3qqtt99AAaDD!G####
E1:qw{
+
+C3q!99>>>>
;FFFFFFGGG
;@@@@@AAA
;@@@@@AAAAAr   c                      t          j        ddd          } t          | |           } |d          dk    sJ t          | | d          } |d          dk    sJ d S )Nz{v}r   rx   Tr*  )r   r_   rF   )curlyvrP  s     r~   test_curly_matrix_symbolrc    sg    q!,,F
66
"
"C3q6619999
664
0
0
0C3q661999999r   c                  p    t          d          } | dz  }t          | |          } |d          dk    sJ d S )Nifr         @r   r?  )	python_ifr/  r}   s      r~   test_python_keywordsrh    s@     Iq=DD!!A1S66S======r   c                     t          t          t          t          t          ft          t          z   t          z   t          z             } 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 +...)
rF   r   r   r   r   
splitlines__doc__lenr   sum)r  r   symss      r~   test_lambdify_docstringro    s    Q1aL!a%!)a-00D	 jll  <""$$Yc#hhY/366667DD#d))$$D	Y
 jll  <""$$Yc#hhY/3666666r   c                     ddl m fd} t          t          d          t          d          z             t          j        z   }t          d|d|           }t          d|d          }t          d|d                       }t          t          j        d	d                    }t           |            |          sJ t           |            |          sJ t           |            |          sJ  t          t          t          t                    d          d
          } t          t          t          t                    d          d          } t          t          t          t                    d          d          }|||g}	t          j        d
          }
t          j        d          }t          j        d          }|
||g}|	|k    sJ d S )Nr   )IntervalPrinterc                 >                                      |           S r   )doprint)r/  rq  s    r~   intervalreprz+test_special_printers.<locals>.intervalrepr  s      ((...r   r   r   r{   r   )r   r  rx   r   g?   )r  rq  r   r   HalfrF   r  r   mpiri  r   r8   )rt  r/  func0r  r  rw  exp1rJ   exp3exp_lssol1sol2sol3sol_lsrq  s                 @r~   test_special_printersr    s   999999/ / / / / Q$q''!""QV+DRxFFFERxIIIERx9J9JKKKE
vz!Q
 
 Ceeggs#####eeggs#####eeggs##### .8Ax{{H--a00D-8Ax{{H--c22D-8Ax{{H--b11DD$F?1D?3D?2DD$FVr   c                       t          g t                                du sJ  t          g t                                du sJ d S )NTF)rF   r@   r<   r{   r   r~   test_true_falser    sN    8B4''''8B  E))))))r   c                      t          t          t          t          fft          t          z             dd          dk    sJ  t          t          t          t          t          ffft          t          z   t          z   t          z             dd          dk    sJ  t          t          t          dz   d          d          dk    sJ d S )	Nrx   r+  r   )r   )r   r   r   Fra  r   )rF   r   r   r   r   r{   r   r~   test_issue_2790r    s    '8QAKQ''622a777748QQF$a!eai!m44QDDJJJJ,8Aq1ue,,,Q//1444444r   c                      t          dd           }  |  | d                                                    t          d          k    sJ d S )Nr}   c                     | dz  S r4  r{   r   s    r~   r   z"test_issue_12092.<locals>.<lambda>  s
    AqD r   r   r  )rc   r   r   r|   s    r~   test_issue_12092r    sH    S..11A1QQqTT77==??eBii''''''r   c                       G d dt           j                  }  | d          }d|z  }t                                          |          }|                    dd          dk    sJ d S )Nc                       e Zd Zd ZeZeZdS )"test_issue_14911.<locals>.Variablec                 6    |                     | j                  S r   )rs  r'  )selfr  s     r~   	_sympystrz,test_issue_14911.<locals>.Variable._sympystr  s    ??49---r   N)rw  rx  ry  r  _lambdacode
_numpycoder{   r   r~   r  r    s)        	. 	. 	.  


r   r  r   r     z2*x)r   Symbolra   rs  replace)r  r   r   codes       r~   test_issue_14911r    s        5<    	A	AA??""1%%D<<R  E))))))r   c            	      J    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)rF   r   r   r   r=   r{   r   r~   test_ITEr    sz    ,8Q1Is1a||,,T1a88A====,8Q1Is1a||,,UAq99Q>>>>>>r   c            	      J    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   )rF   r   r   r   r   r   r{   r   r~   test_Min_Maxr    sz    ,8Q1Is1a||,,Q155::::,8Q1Is1a||,,Q155::::::r   c                  T   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    sJ d S )
Nr  r0  zi jrx   r   r   r   r   r   )	rk   re   rD   r   r  rF   r   r   r   )r0  rR  jr1  s       r~   test_Indexedr  
  s     $"###CA5>>DAqaVaV$%%A:8As1QT7Q1I1ay99::1==CCCCCCr   c                      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    sJ d S )Nr   rx   r   )rF   r   r   ri   rj   r   )expr1expr2s     r~   test_issue_12173r    s    7HaVZ1--h771==E7HaVZ1--h771==EJq!$$**,,,,,,Jq!$$**,,,,,,,,r   c                      t           st          d           t          t          t	          t                              } t           | d          t	          d          z
                                            dk     sJ d S )Nr  rx   r   )rk   re   rF   r   r%   r   nr|   s    r~   test_issue_13642r    sk     $"###DGGAqqttd1gg~  ""U******r   c                      t          t          t          t                    d          } t           | d          t          d          z
                                            dk     sJ d S )Nr   rx   r   )rF   r   r%   r   r  r|   s    r~   test_sinc_mpmathr  $  sV    DGGX&&Aqqttd1gg~  ""U******r   c                  j   t                      } t          | | dz   d          } |d          dk    sJ t          | | dz             } |d          dk    sJ t          d          }t          ||dz             } |d          dk    sJ t          |gg|dz             } |dg          dk    sJ d S )Nrx   Fra  r   r   r   r   rF   )d1r   f1bd2r   r   s         r~   test_lambdify_dummy_argr  )  s    	B	"b1fe	,	,	,B2a55A::::
2rAv

C3q66Q;;;;	sB	"b1f		B2a55A::::	B4&"q&	!	!B2qc77a<<<<<<r   c                      t                      } t          t          |                     }t          | |g| |z
            } |dd          dk    sJ d S )Nr   rx   r   )r   r   r   rF   )rL  dsymr}   s      r~   %test_lambdify_mixed_symbol_dummy_argsr  6  sN    A3q66??D!TAH%%A1Q77a<<<<<<r   c                      t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    dk    sJ d S )Nr  rk   r   r   r   )rk   re   rF   r   r   r  r|   s    r~   test_numpy_array_argr  >  si     $"###1a&1Q37G,,A1U[[#s$$%%******r   c            	      	   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          }t-          d          D ]~}t           j                            dd          dt           j                            d	d
          z  z   }|t
          k    rt                               |          }|t          k    rt                               |          }|t          k    rt                               |          } ||                                          } ||          }|t          k    r ||          d         }|t          k    r ||          d         }t1           ||          |z
            ddt1          |          z   z  k     sJ t1           ||          |z
            ddt1          |          z   z  k     sJ t6          t8          t:          t<          t>          t@          g}	t           j        j!        t           j        j"        t           j        j#        t           j        j$        t           j        j%        t           j        j         g}
t'          |	|
          D ]\  }}t)          t*          tL          f |t*          tL                    d          }t-          d          D ]J}t           j                            dd          }t           j                            dd          dt           j                            d	d
          z  z   }|t6          t@          fv rt                               |          }|t@          k    rt1          tO          |                    } |||                                          }t1           |||          |z
            ddt1          |          z   z  k     sJ t1           |||           |||          z
            ddt1          |          z   z  k     sJ Ld S )Nscipy not installedr   rl   r      r   r   r   rx   gvIh%<=)(rl   re   r/   r0   r1   r   r7   r8   r6   r4   r5   r  expigammalnpsisicirk   r.  seedr   rF   r   rangeuniformr   r   r   r   r(   r*   r'   r)   r9   pochjvyvivkvr   int)single_arg_sympy_fnssingle_arg_scipy_fnssympy_fnscipy_fnr}   rR  tvr  scipy_resultdouble_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2s                r~   test_scipy_fnsr  H  s)    $"###T9eXwPRTVW!M.0A5=CU!4em6K!M-u}/A5=CUW 
La #$8:N O O M M8QW555r 	M 	MA%%c2..EL4H4HQ4O4O1OOB 9$$YYr]] 8##YYr]] 7""ZZ^^#8B<<--//L#8B<<L 2~~'x||A2~~'x||Aqquu|+,,ua#l:K:K6K/LLLLLqquu|+,,ua#l:K:K6K/LLLLLL1	M4 ,Wgw#Y0!M.0@!M,em.>@PRWR_Rik #$8:N O O Y Y8aVXXa^^W===r 	Y 	YA,&&sB//C,&&sB//"U\5I5I"a5P5P2PPCOY777jjoo9$$#c((mm#8C--3355Lqqc{{\122UAL@Q@Q<Q5RRRRRqqc{{XXc3%7%77885!c,FWFWBW;XXXXXX	YY Yr   c                  X   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z   }t!          | ||           }t#          d          D ]}t          j                            dd          }t'          t          j                            dd	|dz
  
                    }	t          j                            dd          dt          j                            dd	          z  z   }
|t          k    rt                              |
          }
|t          k    rOt          j                            dd          }
t'          t          j                            d|d
                    }	|f|	z   |
fz   } || } ||                                 }ddt/          |          z   z  }t/          ||z
            }	 ||k     sJ p# t0          $ r] t3          |                    t7          |          t7          |          t7          |          t7          |          ||                    w xY wd S )Nr  r   zn k a brx   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  rz   &.>)r  r#  r  r  r	   tol)rl   re   rk   r.  r  r   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r   rF   r  randinttupler  r   r   r   r   AssertionErrorformatrepr)paramspolysmsgr  
num_paramsr#  r}   _tntparamsr  valsr  r  atolr	   s                   r~   test_scipy_polysr    s    $"###	LaYF 
Q	Q	1	!	1	Q			
E	0  !&  *kzk"aT)T88T?++r 	 	A%%a,,BEL00AJqL0IIJJG%%c2..EL4H4HQ4O4O1OOB7""ZZ^^>))\))"a00 4 4Q 4 C CDD57?bU*D1d8L#8T?0022LS.../D|l233Dd{{{{{ 	 	 	$JJ!(^^!$ZZ%),%7%7%),%7%7!   " "  	'	 s   4H>>A'J%c                  p    t          t          t          dz            } dt          j        |           v sJ d S )Nr   zx**2)rF   r   inspect	getsourcer|   s    r~   test_lambdify_inspectr    s9    AqDA W&q))))))))r   c                  v   t                      t                      }} t          | |g| d|did          } |dd          dddk    sJ t          | |g|| fd          } |dd          dk    sJ t          g d          } |            dk    sJ t          | |g|| gd          } |dd          ddgk    sJ d S )Nr   r   r   )r   r   )r   r   r  r  )r   r   r   r   r   r   s         r~   test_issue_14941r    s    77EGGqA 
1a&1aA,	0	0B2a881||#### 
1a&1a&'	*	*B2a88v
2t

C355D==== 
1a&1a&'	*	*B2a881vr   c                       t          d          t                                                       t           f z             dd          dk    sJ  t	          t           f z                      dd          dk    sJ t          t           fd            t	          t           f z  d                    dd          dk    sJ  t	          t           f z  d                    t          d          d          t          j	        k    sJ  t          d	z             d
          dk    sJ  t	          t          d	z   d                    d
          dk    sJ d S )Nr}   r   r   ru  r   c                  L    t          t           f z  d                    S )NFra  )r  rd   r}   fxs   r~   r   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>  s*    Y2w"e44455 r   Tra  rx   )   r8  )
r   r   r	   rF   r  rd   r   r\  r   rv  r  s   @@r~   (test_lambdify_Derivative_arg_issue_16468r    s   aA	
B$8QGQV$$R++r1111)4	1b'1R4(())"a00A5555
; 6 6 6 6 6 7 7 774	1b'1R466677A>>!CCCC74	2q'1R466677"qAAQVKKKK8BB##r))))44	"a"fd33344R88B>>>>>>r   c                     t          t          gt          j        t                              } d} | |          |j        k    sJ t          t          gt          j        t                              } ||          |j        k    sJ d S )Ny      @       @)rF   r   r   rR   r   rS   imag)f_rerC  f_ims      r~   test_imag_realr    su    QC!%%D
C499    QC!%%D499      r   c                     t           st          d           t          ddd          } t                               ddgddgg          }t	          | | dz            }t                                ||          t                               dd	gd
dgg                    sJ t	          | | dz            }t                                ||          t                               ddgddgg                    sJ d S )Nr  ro  r   rx   r   r   rz   g       r         ?rY  %   6   r  v   )rk   re   r_   r  rF   r  )ro  A0r}   r,  s       r~   test_MatrixSymbol_issue_15578r    s     $"###S!QA	q!fq!f%	&	&BAGA>>!!B%%sBi#t-E!F!FGGGGGAqDA>>!!B%%r2hS	-B!C!CDDDDDDDr   c            	      X   t           st          d           ddlm} m}m}m} ddlm} d\  }}}}|	                    ||||          
                                }	t          | |||f|	                    | |||                    }
 |
||||          }t          |	|z
            dk     sJ d S )Nr  r   )r  rO  r   Z)hydrogen)rx   r   r   rx   r   )rl   re   	sympy.abcr  rO  r   r  sympy.physicsr  R_nlr   rF   r   )r  rO  r   r  r  nvlvrvZvsympy_valuer}   scipy_values               r~   test_issue_15654r    s     $"###$$$$$$$$$$$$&&&&&&NBB--BB//5577K!Q1x}}Q1a8899A!BB##K{[())E111111r   c                     t           st          d           t          ddd          } t          ddd          }t          ddd          }t          ddd	          }t          d
          }t	          | d|z  | z            }t	          | d|z   | z            }t	          | d| z            }t	          |||fd|z  |z  |z            }t                                |t                               g dg dg dg                    t                               d|z  d|z  d|z  gd|z  d|z  d|z  gd|z  d|z  d|z  ggt                              sJ t                                |t                               g dg dg dg                    t                               |dz   d|z  dz   d|z  dz   g|dz   d|z  dz   d|z  dz   g|dz   d|z  dz   d|z  dz   ggt                              sJ t                                |t                               g dg dg dg                    t                               g dg dg dg                    sJ 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  ro  r   r  r   Cr   Dr   kr   r   r  )r   r   r   )rx   r   r   r   )rx   r   r   r   r   )x      ih  i  iX  )rk   re   r_   r   rF   array_equalr  object)	ro  r  r  r  r	  r}   r,  hrR  s	            r~   test_issue_15827r    sz    $"###S!QAS!QAS!QAS!QAcllAQqS!GAQqS!GAAaCA!QAaCE!G$$AQQu{{IIIyyy)))+LMMNN	KK!A#qsAaC1Q3!QqS/AaC1ac?C6KRRT T T T T QQu{{IIIyyy)))+LMMNN	KK!a%1q!A#'*QUAaC!GQqS1W,EUAaC!GQqS1W&,  . ./ / / / / QQu{{IIIyyy)))+LMMNN	KKIIIyyy1224 4 4 4 4 QQu{{IIIyyy+ABBEKKQ]Q]Q]_k_k_kmymymyPzD{D{	KK///???OOOTUUW WX]XcXceeee  Y! Y!" " " " " " "r   c                      t           st          d           t          d          } d }t          |  ||           d          } |d          t           j        j        k    sJ d S )Nr  r   c                 &    t           j        | dz  z  S r4  )r   GoldenRatior   s    r~   r   z"test_issue_16930.<locals>.<lambda>#  s    1=1a4' r   rl   r   rx   )rl   re   r   rF   	constantsgolden_ratio)r   r}   f_s      r~   test_issue_16930r    sl     $"###A''A	!QQqTT7	+	+	+B2a55EO0000000r   c                      t           st          d           t          d          } t          | gt	          j        | d          d          } |d          t          j        dd          k    sJ d S )Nr  r   rz   rl   r   r   )rl   re   r   rF   r   LambertWr   lambertw)r   r  s     r~   test_issue_17898r  '  sq     $"###A	1#u~a++W	=	=	=B2c77foc2........r   c                  L   t           st          d           t          t          t	          j        t                              } t          t          t	          j        t          d                    } | g d          } |g d          }t          |d                                                   dk     sJ t          |d         dz
                                            dk     sJ t          |d         dz
                                            dk     sJ t          |d                                                   dk     sJ t          |d         dz
                                            dk     sJ t          |d         dz
                                            dk     sJ d S )Nr  rx   r  r   r   rZ  r   )rk   re   rF   r   r   r.   r   r  )r   r   res1res2s       r~   test_issue_13167_21411r  .  ss    $"###	!U_Q''	(	(B	!U_Q**	+	+B2jjj>>D2jjj>>DtAw<<>>e####tAw}!!E))))tAw{%''''tAw<<>>e####tAw{%''''tAw{%''''''r   c                  v    t          t          t                    }  | d          t          d          k    sJ d S )N   r   )rF   r   r
   r   r|   s    r~   test_single_er!  <  s4    AA1R55CHHr   c                     t           st          d           t          d          } t          | t                    }t          | t          f|d          }t          t          dd           |dd          z
            dk    sJ t          | t                    }t          | t          f|d          }t          t          dd           |dd          z
            dk    sJ d S )Nr  r0  rl   r   rx   r   r  )rl   re   r   rj   r   rF   r   ri   )r0  r   rT  r   s       r~   test_issue_16536r#  @  s     $"###A	Aq		B!QW---Az!Q!!Aq'')**e3333	Aq		B!QW---Az!Q!!Aq'')**e333333r   c                     t           st          d           t          d          \  } }t          t          j        t          | |                    }t          || |f          }t          | |f|d          }| d|di}t          |
                    |           ||                                 z
            dk                                    sJ d S Nr  zx1 x2rk   r   rx   r   r  )rk   re   r   r   r   Zeror   rB   rF   r   subsvaluesr  )x1x2r}   r,  rU  points         r~   test_issue_22726r,  N  s     $"###WFBAFCBKK  AB8$$A"b1g...ABNEu5<<>> 2233u<AACCCCCCCr   c                  D   t           st          d           t          d          \  } }t          t	          | |                    }t          | |f|d          }| d|di}t          |                    |           ||                                 z
            dk    sJ d S r%  )	rk   re   r   r.   r   rF   r   r'  r(  )r)  r*  r}   rT  r+  s        r~   test_issue_22739r.  Z  s     $"###WFB#b"++A"b1g...ABNEqvve}}qq%,,..1122e;;;;;;r   c                     t           st          d           t          d          \  } }| t          t	          |dz                      t          |          z
  z  }t          | |g|d          }| d|di}t          |                    |           ||	                                 z
            dk    sJ t          | |g|          }t          |                    |           ||	                                 z
            dk    sJ d S )Nr  za tr   rk   r   r  )
rk   re   r   r   r#   r"   rF   r   r'  r(  )r0  rS  r/  rT  r+  s        r~   test_issue_22992r0  e  s     $"###5>>DAqc#ac((mmc!ff$%D!Qw''AAqMEtyy!!U\\^^"4455>>>> 	!QAtyy!!U\\^^"4455>>>>>>r   c                      t           st          d           t          t          t          dz  g          } t	          t          | d          } |d          j        t           j        k    sJ d S )Nr  r   rk   rx   )rk   re   rC   r   rF   	__class__r  )r/  r}   s     r~   test_issue_19764r3  w  sb     $"###!QTDD'""A1Q44>U]******r   c                      t           st          d           t          t          t	          t                    d          } t                              |           d          dk    sJ d S )Nznumba not installedrk   rx   g	T?)rt   re   rF   r   r$   jitr|   s    r~   test_issue_20070r6    sX     $"###CFFG$$A99Q<<??.......r   c                     t           st          d           t          t                    } t	          t                    }t          t          | d          }t          t          |d          }t          t          d           |d          z
            dk    sJ t          t	          d           |d          z
            dk    sJ d S )Nr  rl   r   ?r  )rl   re   r2   r   r3   rF   r   )r   r   F1F2s       r~   test_fresnel_integrals_scipyr;    s     $"###	!B	!B	!R	)	)	)B	!R	)	)	)Bx}}rr#ww&''50000x}}rr#ww&''5000000r   c                     t           st          d           t          t          t                    } t          t          t          f| d          }t          t          dd           |dd          z
            dk    sJ d S )Nr  rl   r   r8  ffffff@r  )rl   re   r+   r   r   rF   r   r}   rT  s     r~   test_beta_scipyr?    st     $"###Q

A!QG,,,AtC~~#s+,,555555r   c                      t          t          t                    } t          t          t          f| d          }t	          t          dd           |dd          z
            dk    sJ d S )Nr   r   r8  r=  r  )r+   r   r   rF   r   r>  s     r~   test_beta_mathrA    s]    Q

A!QF+++AtC~~#s+,,555555r   c            	      :   t           st          d           t          t          t          t
          t                    } t          t          t          t
          t          f| d          }t          t          dddd           |dddd          z
            dk    sJ d S )	Nr  rl   r   gffffff?g@r   rZ  r  )	rl   re   r,   r   r   r   r   rF   r   r>  s     r~   test_betainc_scipyrC    s     $"###1aA!Q1q'222AwsCc**QQsCc-B-BBCCuLLLLLLr   c            	      :   t           st          d           t          t          t          t
          t                    } t          t          t          t
          t          f| d          }t          t          dddd           |dddd          z
            dk    sJ d S )	Nr  rl   r   r   r  r   rx   r  )	rl   re   r-   r   r   r   r   rF   r   r>  s     r~   test_betainc_regularized_scipyrE    s     $"###Aq!Q''A!Q1q'222A"3S!44qqc37J7JJKKuTTTTTTr   c            	      N   t           st          d           t          t          t          t
          t          t          t          t          g} | D ]}d|j
        v r' |t          t                    }t          t          f}d}n3d|j
        v r |t                    }t          f}d}nt          d          t          ||          } || }|                    t!          t#          ||                                                              }t                               |t)          |                    sJ t          t          t          ft          t          t                    t          t                                        }t+          d |dd	          z  d
z
            dk     sJ d S )Nr  r   )333333?g?rx   )rG  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)rk   re   rH   rI   rJ   rK   rL   rM   rN   rO   r"  r   r   NotImplementedErrorrF   r'  r  r   r   r  rj  r   )	funcsr  r/  r#  num_argsr}   result	referencelae2s	            r~   test_numpy_special_mathrN    si    $"###E4ueY
KE 8 8
??41::Dq6D!HH$*__477D4DHH%&bcccT4  HIId3tX#6#67788>>@@	~~feI&6&6777777QFJtAwwQ8899DsDD(((7233e;;;;;;r   c                      t           st          d           t          t          ft	          t                    d          } t           | d          dz             dk     sJ t          t          t          t           j	        j	        
                    d          d d                             d	k    }|rXt          t          t          ft          t          t                    d          }t           |d
d          dz
            dk     sJ d S d S )Nr  rl   r   g#B;gWw'&l7gN~h.r   )rx   r   g333333?r  g-=gFFg<)rl   re   rF   r   rP   r   r  mapr  versionsplitr   rQ   )cm1have_scipy_1_10pluscm2s      r~   test_scipy_special_mathrW    s     $"###
A4q7
3
3
3Css5zzE!""V++++C)>)D)DS)I)I"1")M N NOOSZZ =1vuQ{{G<<<33sD>>N233u<<<<= =<<r   c                      t           st          d           t          t          ft	          t                    d          }  | d          dk    sJ d S )Nr  rl   r   rx   rZ  )rl   re   rF   r   r   )berns    r~   test_scipy_bernoullirZ    sN     $"###QD)A,,888D477c>>>>>>r   c                  8   t           st          d           t          t          ft	          t                    d          }  | d          dk    sJ t          t          t
          ft	          t          t
                    d          } |dd          dk    sJ d S )Nr  rl   r   r   r  g      ?)rl   re   rF   r   r   r   )hnhnms     r~   test_scipy_harmonicr^    s     $"###	1$W	5	5	5B2a55C<<<<
Aq68Aq>>7
;
;
;C3q!99r   c                  2   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    }|dk    sJ dt          t          |                    v sJ d S )NCuPy not installedrr   r   r   r   rr   re   rF   r   r   r  r   r  r}   rK  s     r~   test_cupy_array_argrc    s     #!"""1a&1Q37F++AQtzz3*%%&&FQ;;;;Sf&&&&&&&&r   c                  2   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    }|dk    sJ dt          t          |                    v sJ d S )Nr`  rk   r   r   r   rr   ra  rb  s     r~   test_cupy_array_arg_using_numpyre    s      #!"""1a&1Q37G,,AQtzz3*%%&&FQ;;;;Sf&&&&&&&&r   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rC |ddd          cxk    r1 |ddd          cxk    rt           	                    dg          k    sn J d S )Nr`  rr   r   rx   r   r   r  )
rr   re   r^   r   r   r   rF   rA   rn  r  r  s        r~   test_cupy_dotproductrg  	  sw    #!"""1ayA	1a)Z1--v	>	>	>B	1a)Z13//	@	@	@B	1a)ZQ//	@	@	@B	1a)Z13//	@	@	@B2aA;;
1a   
1a    	1a    	

B4	       r   c                  <   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t           j                            ddg                    }|dk    sJ dt          t          |                    v sJ d S )NJAX not installedrs   r   r   r   	rs   re   rF   r   r   rk   r  r   r  rb  s     r~   test_jax_array_argrk    s     " !!!1a&1Q37E**AQsySz**++FQ;;;;CV%%%%%%%%r   c                  <   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t           j                            ddg                    }|dk    sJ dt          t          |                    v sJ d S )Nri  rk   r   r   r   rs   rj  rb  s     r~   test_jax_array_arg_using_numpyrm  $  s     " !!!1a&1Q37G,,AQsySz**++FQ;;;;CV%%%%%%%%r   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rH |ddd          cxk    r6 |ddd          cxk    r$t           j	        
                    dg          k    sn J d S )Nri  rs   r   rx   r   r   r  )rs   re   r^   r   r   r   rF   rA   rn  rk   r  r  s        r~   test_jax_dotproductro  .  sy    " !!!1ayA	1a)Z1--u	=	=	=B	1a)Z13//	?	?	?B	1a)ZQ//	?	?	?B	1a)Z13//	?	?	?B2aA;;
1a   
1a    	1a    			       r   c                     d } d } G d d          } |t           t          t          ft           t          z   t          z   t           t          z   t          z
  dt           z  dt          z  z   t          z
  t           t          z   dz  t          t          z   dz  z   gd           |t           t          t          ft           t          j        t                     z   t          t          j        t                     z   t          t          j        t           d          z   t          t          j        t           d          z  gd	           |t           t          t          ft           t          t                    z   t          t          t                    z   t          t          t                    z
  gd
           |t           t          t          ft          t           t           t          z  gt          t                    dz   t           t          z  gg          t           t          z  t          t                    z   t           t          z  z
  t          t           t           z  t          t                    t           t          z  g          gdd           |t           t          ft           t          z   dz
  dz  t           t           t          z   t           t          z   dt           z  dz   z  t           t          z   dz
  dz  z   dt           z  dz   t           t          z   z  gd          g}|D ]O}t          s|j	        rdd|| fD ]7}|
                    |          } ||j         }|                    |           8Pd S )Nc                 
    d| fS )Nr{   r{   )exprss    r~   	dummy_csez$test_lambdify_cse.<locals>.dummy_cse@  s    5yr   c                 ,    ddl m}m}  || |          S )Nr   )cse_release_variablescse)postprocess)sympy.simplify.cse_mainru  rv  )rr  ru  rv  s      r~   minmemz!test_lambdify_cse.<locals>.minmemC  s0    FFFFFFFFs5&;<<<<r   c                   .    e Zd ZdddZd ZddddZdS )	test_lambdify_cse.<locals>.CaseF)requires_numpyc                    || _         || _        || _        t          t	          | j         | j                            fd|D             | _        || _        d S )Nc                 ^    g | ])}|                                                               *S r{   )r'  r   ).0e	subs_dicts     r~   
<listcomp>z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>M  s1    AAAay))//11AAAr   )r#  rr  rJ  r  r   r   r|  )r  r#  rr  rJ  r|  r  s        @r~   __init__z(test_lambdify_cse.<locals>.Case.__init__H  s\    DIDJ$DMSDM::;;IAAAA5AAADH"0Dr   c                :    t          | j        | j        |          S )Nrv  )rF   r#  rr  )r  rv  s     r~   rF   z(test_lambdify_cse.<locals>.Case.lambdifyP  s    DItzs;;;;r   r   )abstolreltolc                2   | j         r3t          fdt          | j                  D                       sJ d S t          | j                  D ]D\  }}t	          |         |z
            }|dk    r	|k     sJ ,|t	          |          z  k     sJ Ed S )Nc              3      K   | ]J\  }}t                               |         t                               |t                               V  KdS )r  )r  r  N)rk   r  asarrayrj  )r  rR  r   r  r  rK  s      r~   	<genexpr>zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>U  sm       < <#q! !>>&)U]]1E]5R5R/5F * D D < < < < < <r   r   )r|  r  	enumerater   r   )r  rK  r  r  rR  r   abs_errs    ```   r~   assertAllClosez.test_lambdify_cse.<locals>.Case.assertAllCloseS  s    "  < < < < < <'0':':< < < < < < < < !$(++ 3 31fQi!m,,66"V+++++"3q66>F222223 3r   N)rw  rx  ry  r  rF   r  r{   r   r~   Caser{  G  s_        DI 	1 	1 	1 	1 	1	< 	< 	< 49 	3 	3 	3 	3 	3 	3 	3r   r  r   )r   r   rf  )r#  rr  rJ  rx   )r   r   rf  )r   r   rG  r   )r   r   r   T)r#  rr  rJ  r|  )rx   r   Fr  )r   r   r   r   r.   r%   r^   r$   rk   r|  rF   rJ  r  )rs  ry  r  casescaserv  r}   rK  s           r~   test_lambdify_cser  ?  s
     = = =3 3 3 3 3 3 3 36 	QUQYUQYqS1Q3Y]cAX1q 	 "		
 		
 		
 	Q""""""1%%%eoa###	 "		
 		
 		
 	QQKQKQK
 %	
 	
 	
 	QAaC3q66A:q!t"4566!CFF
1a4!SVVQT*++
  		
 		
 		
 	QEAI>1a!eUQqS1WQQ.1qAE0BD		
 	
 	
Q.E^  ( ( 	, 	43 	( 	(C#&&AQ&F''''	(( (r   c                      t                      5  t          t          t          ht          t          z              d d d            d S # 1 swxY w Y   d S r   )r   rF   r   r   r{   r   r~   test_deprecated_setr    s    		!	!    !QQ                                   s   *AA
A
c                     t           st          d           t          ddd          } t          | | j        | z  d          } |t                               g d                    dk    sJ  |t                               g d                    dk    sJ t          | | | j        z  d          } |t                               g d                    dk    sJ  |t                               g d                    dk    sJ t          | | | j        z  | z  d          }t                               dgd	gdgg          }t                               dgd
gdgg          }t                                ||          |          sJ d S )Nr  Xr   rx   rk   r   r  rd  r      r8  )rk   re   r_   rF   rn  r  r  )r  r}   r  r  s       r~   test_issue_13881r    s    %#$$$S!QAACE7##A1U[[##$$****1U[[##$$****AacE7##A1U[[##$$****1U[[##$$****QqsUAIw''A;;aS1#''D;;bT2$'((DQQtWWd+++++++r   c                  D    t          d          t                    }  t          d          t                    }t          | dz  |dz  z   | dz  || z  dz  z   z  z   }|                                }t	          | |ft          f|d          } |dd	          }|d
k    sJ d S )Nr   r   r   r   r   Tr  )r   r   r   g     r@)r   r   r   expandrF   )r}   r,  r/  	eval_expranss        r~   test_23536_lambdify_cse_dummyr    s    aAaA1q!tadacAXo..D;;==D1a&!d555I
)J
$
$C%<<<<<<r   c                   n    e Zd ZdZdZdZd Zed             Zed             Z	ed             Z
d Zd ZdS )LambdifyDocstringTestCaseNc                 "    || _         || _        d S r   docstring_limitexpected_redacted)r  r  r  s      r~   r  z"LambdifyDocstringTestCase.__init__  s    .!2r   c                 &    d}| j         s| j        n|S )Nz!EXPRESSION REDACTED DUE TO LENGTH)r  EXPR)r  expr_redacted_msgs     r~   expected_exprz'LambdifyDocstringTestCase.expected_expr  s    ? $ 6Mtyy<MMr   c                 &    d}| j         s| j        n|S )Nz"SOURCE CODE REDACTED DUE TO LENGTH)r  SRC)r  src_redacted_msgs     r~   expected_srcz&LambdifyDocstringTestCase.expected_src  s    ?#5Ktxx;KKr   c                 <    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_docstrings     r~   r  z,LambdifyDocstringTestCase.expected_docstring  sL    %N% % !% %
  % % % 	 "!r   c                 *    t          | j                  S r   )rl  r  r  s    r~   __len__z!LambdifyDocstringTestCase.__len__  s    4*+++r   c                 @    | j         j         d| j         d| j         dS )Nz(docstring_limit=z, expected_redacted=))r2  rw  r  r  r  s    r~   __repr__z"LambdifyDocstringTestCase.__repr__  s>    ~& ; ;#3; ;!%!7; ; ;	
r   )rw  rx  ry  r  r  r  r  propertyr  r  r  r  r  r{   r   r~   r  r    s        ID
C3 3 3 N N XN L L XL 
" 
" X
", , ,
 
 
 
 
r   r  c                  &    G d dt                     } t          d          } | d d           | dd           | dd           | dd	           | d
d	          f}|D ]-}t          |g|d|j                  }|j        |j        k    sJ .d S )Nc                       e Zd ZdZdZdZdS )Ntest_lambdify_docstring_size_limit_simple_symbol.<locals>.SimpleSymbolTestCaser   z(def _lambdifygenerated(x):
    return x
Nrw  rx  ry  r  r  r  r{   r   r~   SimpleSymbolTestCaser    s"        	 	r   r  r   Fr  r   rx   r   Trz   r   r  )r  r   rF   r  rk  r  )r  r   
test_cases	test_caselambdified_exprs        r~   0test_lambdify_docstring_size_limit_simple_symbolr    s   
 
 
 
 
8 
 
 
 	A 	TUKKKSEJJJQ%HHHQ$GGGR4HHHJ   G G	"C%5	
 
 
 &)*FFFFFFG Gr   c                  v    G d dt                     } t          d          \  }}}||g|||z   |z   dz                                  g} | d d           | dd           | dd	           | d
d	           | dd	          f}|D ]/}t          |||g|d|j                  }|j        |j        k    sJ 0d S )Nc                       e Zd ZdZdZdZdS )Htest_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~   ExprListTestCaser    s(        	 	
J 	r   r  r  r   Fr     r   Tr   rz   r   r  )r  r   r  rF   r  rk  r  )r  r   r   r   r/  r  r  r  s           r~   .test_lambdify_docstring_size_limit_nested_exprr    s6   

 

 

 

 

4 

 

 

 i  GAq!sAQQ..001D 	GGGFFFtDDDdCCCtDDDJ   G G	"1I%5	
 
 
 &)*FFFFFFG Gr   c                      G d dt                     } t          d          \  }}}t          t          j        |g||z   |z   ||z   |z   dz                                  gg          } | d d           | dd           | dd	           | d
d	           | dd	          f}|D ]/}t          |||g|d|j                  }|j        |j	        k    sJ 0d S )Nc                       e Zd ZdZdZdZdS )Atest_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~   MatrixTestCaser  (  s'        	 	
0 	r   r  r  r   Fr  r  r   Tr   rz   r   r  )
r  r   r^   r   r&  r  rF   r  rk  r  )r  r   r   r   r/  r  r  r  s           r~   )test_lambdify_docstring_size_limit_matrixr  &  sF   
 
 
 
 
2 
 
 
 i  GAq!AFA;Qa!eai!^,C,C,E,E FGHHD 	tuEEEseDDDrTBBBqDAAArTBBBJ   G G	"1I%5	
 
 
 &)*FFFFFFG Gr   (!  	itertoolsr   r   r  r   sympy.testing.pytestr   r   sympy.concrete.summationsr   sympy.core.functionr   r   r	   sympy.core.numbersr
   r   r   r   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   r   %sympy.functions.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*   &sympy.functions.special.beta_functionsr+   r,   r-   'sympy.functions.special.delta_functionsr.   'sympy.functions.special.error_functionsr/   r0   r1   r2   r3   r4   r5   'sympy.functions.special.gamma_functionsr6   r7   r8   r9   sympy.integrals.integralsr:   sympy.logic.boolalgr;   r<   r=   r>   r?   r@   %sympy.matrices.expressions.dotproductrA   sympy.tensor.arrayrB   rC   sympy.tensor.indexedrD   r   rF   sympy.core.exprrG   sympy.codegen.cfunctionsrH   rI   rJ   rK   rL   rM   sympy.codegen.numpy_nodesrN   rO   sympy.codegen.scipy_nodesrP   rQ   rR   rS   rT   #sympy.functions.special.polynomialsrU   rV   rW   rX   rY   rZ   r[   r\   r]   sympy.matricesr^   r_   r`   r  ra   sympy.printing.numpyrb   rc   rd   re   sympy.utilities.decoratorrf   sympy.utilities.exceptionsrg   sympy.externalrh   ri   rj   r   MutableDenseMatrixrk   rl   rp   rq   rr   rs   rt   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$  r5  r;  rB  rG  rI  rM  rP  rS  rV  r\  r`  rb  re  rg  rk  rs  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?  rD  rH  rQ  r_  rc  rh  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r,  r.  r0  r3  r6  r;  r?  rA  rC  rE  rN  rW  rZ  r^  rc  re  rg  rk  rm  ro  r  r  r  r  r  r  r  r  r{   r   r~   <module>r     s            ? ? ? ? ? ? ? ? ) ) ) ) ) ) 8 8 8 8 8 8 8 8 8 8 > > > > > > > > > > > > > > > > $ $ $ $ $ $ " " " " " " . . . . . . . . Q Q Q Q Q Q Q Q E E E E E E E E 4 4 4 4 4 4 ; ; ; ; ; ; ; ; 7 7 7 7 7 7 5 5 5 5 5 5 E E E E E E E E E E : : : : : :A A A A A A A A A A A A A A A A O O O O O O O O O O O O W W W W W W W W W W ? ? ? ? ? ? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Y Y Y Y Y Y Y Y Y Y Y Y . . . . . . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ < < < < < < 5 5 5 5 5 5 5 5 , , , , , , - - - - - - + + + + + + K K K K K K K K K K K K K K K K ; ; ; ; ; ; ; ; 2 2 2 2 2 2 2 2 < < < < < < < < < <+ + + + + + + + + + + + + + + + + + + + + + > = = = = = = = = = 3 3 3 3 3 3 - - - - - - D D D D D D D D % % % % % % 9 9 9 9 9 9 6 6 6 6 6 6 ( ( ( ( ( ( J J J J J J J J   ggj8*-EFFF
-	
"
"]<((
}VmEg -III),BJ%&WY
1a
    
  

8 
8 
8$ $ $    
* 
* 
*0 0 0   H H H $ $ $ % % %4 ' ' ' N N N$ $ $& & && & &H H H  + + +.	 	 	6 6 6" " "    	 	 	( ( (( ( ($ $ $     " " "" " "    
# # #: : :G G G:J J J   L L L4 4 42 2 2       &D D D&
E 
E 
EQ Q Q$N N N< < </ / / . . .@ @ @	@ 	@ 	@: : :	, 	, 	,- - -. . ./ / /< < <4	, 	, 	,  
  
# # #" " "*6 6 6(  (G G G  DB B B*    7 7 70  @* * *5 5 5( ( (
* * *? ? ?
; ; ;D D D- - -+ + ++ + +

 
 
  + + +6Y 6Y 6Yr9 9 9x* * *  $
? 
? 
?! ! !E E E	2 	2 	2" " "61 1 1/ / /( ( (  4 4 4	D 	D 	D< < <? ? ?$+ + +/ / /
1 
1 
16 6 66 6 6M M MU U U< < <2= = =    ' ' '
' 
' 
'  "& & && & &  "W( W( W(r     , , ,*  (
 (
 (
 (
 (
 (
 (
 (
VG G G:G G GD G  G  G  G  Gr   