
    sg                        d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZ d dl m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZE d dlFmGZGmHZHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZPmQZQmRZR d dlSmTZT d dlUmVZVmWZWmXZXmYZYmZZZm[Z[ d dl\m]Z] d dl^m_Z_ d dl`maZambZb d dlcmdZd d dlemfZf d dlgmhZh d d limjZj d d!lkmlZl d d"lmmnZnmoZompZpmqZqmrZrmsZs d d#ltmuZumvZv d d$lwmxZxmyZy d d%l#mzZzm{Z{m|Z| d d&l}m~Z~mZmZmZmZmZmZmZmZ d d'lmZmZmZ d d(lmZ d d)lmZ d d*lemZmZ d d+lmZ d d,lmZ d d-lmZ d d.lmZ d d/lNmZmZ d dlZeZ ed0      Z ed1d2d3gi4      Z ed5      Z ed6      Z ed7      Z ed8      Z ed9      Zerd dlZd:ejH                  d;<    ed<      \  ZZZZd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZedG        ZedH        ZedI        ZedJ        ZedK        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 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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 Z-dÄ Z.y)    )productN)raiseswarns_deprecated_sympy)Sum)FunctionLambdadiff)EFloatIRational	all_closeoopi)Eq)S)Dummysymbols)RisingFactorial	factorial)	bernoulliharmonic)Abs)explog)acosh)floor)MaxMinsqrt)	Piecewise)acoscoscotsinsinctan)besselibesseljbesselkbesselyjnyn)betabetaincbetainc_regularized)	Heaviside)EierferfcfresnelcfresnelsSiCi)digammagammaloggamma	polygamma)Integral)AndfalseITENotOrtrue)
DotProductcse)derive_by_arrayArray)IndexedBaselambdify)numbered_symbols)
CoordSys3D)UnevaluatedExpr)expm1log1pexp2log2log10hypot)	logaddexp
logaddexp2)cosm1powm1)reimarg)	
chebyshevt
chebyshevulegendrehermitelaguerre
gegenbauerassoc_legendreassoc_laguerrejacobi)MatrixMatrixSymbolSparseMatrix)LambdaPrinter)NumPyPrinter)implemented_function	lambdastr)skip)conserve_mpmath_dps)ignore_warnings)import_module)
uppergamma
lowergammanumpyscipyfromlistsparse)import_kwargsnumexpr
tensorflowcupyjaxnumba2TF_CPP_MIN_LOG_LEVELzw,x,y,zc                  \     t        g d       t        t         fd                dk(  sJ y )N   c                        d      S )N fs   V/var/www/html/venv/lib/python3.12/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>ztest_no_args.<locals>.<lambda>S   s    ae     rK   r   	TypeErrorr   s   @r   test_no_argsr   Q   s%    QA
9m$3!8O8r   c                  L    t        t        dt        z        }  | d      dk(  sJ y N   r   rK   xr   s    r   test_single_argr   W   s"    AaCAQ4199r   c                  b    t        t        t        gt        t        z         }  | dd      dk(  sJ y Nr   r      )rK   r   yr   s    r   test_list_argsr   \   s(    !QQAQ7a<<r   c                     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 y )N[   r   c                        dd      S Nr   r   r   )f1s   r   r   z"test_nested_args.<locals>.<lambda>d       bAh r   )      )I      )r   r   r   r   c                        dd      S )Nr   r   r   )f2s   r   r   z"test_nested_args.<locals>.<lambda>h   r   r   
   4      ,   )r   r   r   r   )rK   wr   r   r   r   z)f3r   r   s    @@r   test_nested_argsr   a   s    	Aq6(QF	#Br1g;2q'!!!
9&'	Aq6Aq6"Q1aL	1Bh O333
9&'	1uaj!$q!Ql	3BbRD62,#'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       y )Nzx,y,zzz,y,xr   r   r   r   r   r         ?       @      @r   r   r   c                        d      S Nr   r   r   s   r   r   ztest_str_args.<locals>.<lambda>s       ad r   r   r   s   @r   test_str_argsr   n   sF    '"AQ1:"""S#s...
9l#r   c                  ~    d } t        t        t        t              d| i      } |d      dk(  sJ  |d      dk(  sJ y )Nc                      yNr   r   r   s    r   r   z&test_own_namespace_1.<locals>.<lambda>w       r   r%   皙?r   d   rK   r   r%   myfuncr   s     r   test_own_namespace_1r   v   s=    FCFUFO,AS6Q;;S6Q;;r   c                  ~    d } t        t        t        t              d| i      } |d      dk(  sJ  |d      dk(  sJ y )Nc                      yr   r   r   s    r   r   z$test_own_namespace_2.<locals>.myfunc~   s    r   r%   r   r   r   r   r   s     r   test_own_namespace_2r   }   s=    CFUFO,AS6Q;;S6Q;;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  rJ  y )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)	rK   r   r%   mathr   absr   rN   zip)	r   pqraeresultsrefvalsresrefs	            r   test_own_moduler      s    CFD!AQ43;;gD)GAq!	S?1Q3''(	)B!QRHd3AT5!Gxx}oaG) *SCGS=!E)))*r   c                  H    t        t        d        t        t        d        y )Nc                      t        d      S r   rJ   r   r   r   r   ztest_bad_args.<locals>.<lambda>   s
    hqk r   c                      t        ddg      S r   rJ   r   r   r   r   ztest_bad_args.<locals>.<lambda>   s    h1v. r   )r   r   r   r   r   test_bad_argsr      s    
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 y )Nr   gQ	@r   r                 ?r   y      ?      ?)rK   r   r   r   r   s    r   
test_atomsr      sN    BFT4L)AQ44<<AEC9%AQ46>>r   c                  \   dt         j                  _        t        j                  d      } t	        t
        t        t
              d      } |t
              t        t
              k(  sJ d}|  |t        dd            j                         t        t        |             z
  cxk  r|k  sJ  J y )N2   40.19866933079506121545941262711838975037020672954020sympyr   r      )mpmathmpdpsmpfrK   r   r%   r   evalfr   strsin02r   precs      r   test_sympy_lambdar      s    FIIMJJMNECFG$AQ43q6>>D51Xa^$**,uSZ/@@G4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J  J t        t        fd       y )Nr   r   r   r   皙?c                        t               S Nr   r   s   r   r   z"test_math_lambda.<locals>.<lambda>       ad r   )	r   r   r   r   rK   r   r%   r   r   )r   r   r   s     @r   test_math_lambdar      sa    FIIMJJMNECFF#AD51S6E>(D(((((
9l#r   c            	        	 dt         j                  _        t        j                  d      } t	        t
        t        t
              d      	d}|  	t        j                  d            | z
  cxk  r|k  sJ  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 y )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(   r   1z1e-15gLoW5g[ݦe2g#aMR/)r   r   r   r   rK   r   r%   r   r   r   rX   rO   rP   r   )
r   r   ref2f2af2bf2cans2aans2bans2cr   s
            @r   test_mpmath_lambdar      s   FIIMJJMNECFH%AD51VZZ&'%/6$66666
9l# JJwjj!!#$

7##A%& 

7##A%& G$$R'	(D Aq61a4!8X
.C
Aq65A;
1C
A4qqz*H
5C

3

7 33VZZ5HIE

3

7 33VZZ5HIE

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J  J y )Nr   r   r   r   r   )r   r   r   r   rK   r   r   s      r   test_number_precisionr      sR    FIIMJJMNEE8$AD51Q4%<&$&&&&&r   c            	          dt         j                  _        t         t	        dt        j                  d      d                   t        t        j                  d            k(  sJ y )Nr   r   r   )r   r   r   r   rK   r   r   r   r   r   test_mpmath_precisionr     sD    FIIM4xBHHSM84673rxx};MMMMr   c                      ddl m}  | j                         D ]-  \  }}|t        j                  v sJ |t
        j                  v r-J  y )Nr   )MATH_TRANSLATIONS)sympy.utilities.lambdifyr  itemsr   __dict__r   )r  symmats      r   test_math_translr
     sE    :%++- $Senn$$$dmm###$r   c                      ddl m}  | j                         D ]2  \  }}|t        j                  v s|dk(  sJ |t
        j                  v r2J  y )Nr   )MPMATH_TRANSLATIONSre   )r  r  r  r   r  r   )r  r  r	  s      r   test_mpmath_translr     sK    <'--/ &Senn$x77foo%%%&r   c                      t         st        d       ddlm}  | j	                         D ]-  \  }}|t
        j                  v sJ |t         j                  v r-J  y )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)rr   rl   r  r  r  r   r  )r  r  numps      r   test_numpy_translr     sQ    #$;'--/ &	Tenn$$$u~~%%%&r   c                      t         st        d       ddlm}  | j	                         D ]J  \  }}|t
        j                  v sJ |t         j                  v r-|t         j                  j                  v rJJ  y )Nscipy not installed.r   )SCIPY_TRANSLATIONS)rs   rl   r  r  r  r   r  special)r  r  scips      r   test_scipy_translr    sd    #$;'--/ H	Tenn$$$u~~%1G1G)GGGHr   c                      t         st        d       t        t        t	        t              d      }  | d      dk(  sJ  | d      dk(  sJ y )Nr  rr   r   r   )rr   rl   rK   r   r   r   s    r   test_numpy_translation_absr    s@    #$CFG$AR5A::Q4199r   c                  2   t         st        d       ddlm}  d}t        t
        t        f}| j                  j                         D ]P  }||v rt        |      }t        |d      r|j                  d   }nd}|d | }t        | || d      } |d	|z   PJ  y )
Nnumexpr not installed.r   )NumExprPrinter)wherecomplexcontains_nargsr   rw   r   r   )rw   rl   sympy.printing.lambdareprr  r   r   r   _numexpr_functionskeysr   hasattrr!  rK   )r  	blacklist	arg_tupler  ssymnargsargsr   s           r   test_numexpr_printerr,    s    %& 90IAq	I00557 
+)v4"KKNEE% T4;	:%+***
+r   c                     t         st        d       t        st        d       t        d      } t	        | j
                  d       \  }}t        ||f| t         gd      }t        j                  j                  d      \  }} |||       y )	Nr  r  zb*a - sqrt(a**2)c                     | j                   S r   )name)ss    r   r   z!test_issue_9334.<locals>.<lambda>2  s
    166 r   )keyF)r   dummifyr   r   )rw   rl   rr   r   sortedfree_symbolsrK   random)exprabfunc_numexprfoobars         r   test_issue_9334r=  ,  st    %&#$ D$##)9:DAqQqE4'EJL||""6*HCcr   c            	      F   t         st        d       t        t        t        t
        ft        t        t        dk\  ft
        t        dkD  f      t               } t        t              5   | ddd      dk(  sJ t         | ddd            dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   r   r      *   nan)
rw   rl   rK   r   r   r   r!   rn   RuntimeWarningr   )r:  s    r   test_issue_12984rC  8  s    %&QqGY16{QBK%H'RL		( 6Ar2&",,,<B+,5556 6 6s   %(BB c                      t        d      \  } }| |z   }t        | |g|      }t        | |g|g       } |dd       |dd      k(  sJ  |dd      dk(  sJ y )Nzx yr   r      r   rK   )r   r   r7  
no_modulesempty_moduless        r   test_empty_modulesrJ  A  sm    5>DAqU8D1a&$'JaVT26Ma}Q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 y )	Nr   r   r   r   r         @      @r   r   s    r   test_exponentiationrO  K  sr    AqDAR5A::Q4199Q4199R5A::Q4199S6T>>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 y )Nr   r   r   r   r   r   r   g9v?gMbP?rN  rM  )rK   r   r    r   r   s    r   	test_sqrtrQ  U  sm    DGAQ43;;Q43;;Q43;;qte|u$$$T7c>>r   c                  <   t        t        gt        t              t        t              gd      }  | t              }d}| |d   dz   cxk  r|k  sJ  J | |d   cxk  r|k  sJ  J  | d      }d}| |d   dz   cxk  r|k  sJ  J | |d   cxk  r|k  sJ  J y )Nr   gdy=r   r   n!	@gh㈵>)rK   r   r#   r%   r   )r   dr   s      r   	test_trigrU  ^  s    !s1vs1v&/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J  J y )Nr  r   giv[?gm[?)
rr   rs   rl   r   r   r   rK   r   r=   r   )r   lrT  s      r   test_integralrX  j  sg    U#$q#q!te*AHQqTAq":./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J  J y )Nr  r   r   r   gX<?g<?)rr   rs   rl   r=   r   r   r   rK   )irW  rT  s      r   test_double_integralr[  s  so    U#$A1QT	M"Q1I1ay9A!aA	!A'K'''''r   c                     t         rt        st        d       d} t        d      }t	        d|      }t         t        ||      |       |j                  ||       j                         z
        dk  sJ t        d|      }t         t        ||      |       |j                  ||       j                         z
        dk  sJ y )Nr  g@r   r   g:0yE>)
rr   rs   rl   r   r,   r   rK   subsr   r-   )
test_pointr   jtestytests       r   test_spherical_besselra  |  s    U#$JAq!HE x% ,JJq$**,- .045 5 5q!HE x% ,JJq$**,- .045 5 5r   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	       y )
Nr   r   r   r   r   r   r   r   c                        d      S r   r   r   s   r   r   z$test_vector_simple.<locals>.<lambda>  r   r   )rK   r   r   r   r   r   r   s   @r   test_vector_simplerd    sR    !QQ1I&AQ1:"""S#s...
9l#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 y )	Nr   r   c                        d      S r   r   r   s   r   r   z+test_vector_discontinuous.<locals>.<lambda>  s    ad r   )g      r   r   )            ?rL  )rh  rg  )rK   r   r   ZeroDivisionErrorr   s   @r   test_vector_discontinuousrj    s\    RT1Q3K A
l+Q4;Q4;R5K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 y )Nr   r   r   -C6?)rK   r   r#   r%   r   r   r   rT  s     r   test_trig_symbolicrn    s\    !s1vs1v&/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 y )NrS  r   r   rl  )rK   r   r#   r%   r   rm  s     r   test_trig_floatrp    sZ    !s1vs1v&'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 y )	Nr   r   r   r   r   r   r   r   r   r   )rK   r   r   r   r    r%   r   s    r   	test_docsrs    s    AqDAQ4199!QQ1I&AQ1:"""DGAQ43;;!QQqS1%AQ7a<<r   c                  j    t        t        t        ft        t              d      }  | dd      dk(  sJ y )Nr   r   r   r   )rK   r   r   r%   r   s    r   	test_mathru    s*    !QQ0AQ7a<<r   c                      t        t        t        t              dz        } t         | d      t              sJ t        t        t        t              dz  d      } t         | d      t              sJ y )Nr   r   r   )rK   r   r%   
isinstancefloatr   s    r   test_sinry    sT    CFAIAadE"""CFAIv.AadE"""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      j                  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 y )Nr   r   r   r   r   r   r   )re   r   r   r%   r   rK   jacobianT)Asolr   Jvs        r   test_matrixr    s2   AaC3q6A:q!t,-.A
1a&3q6A:q/*
+C!QAw/AQ1:!QQHg6AQ1:#u%%%1q5z##QF+A1vA
1a&1a&!
"C*8Aq'*1a0C777,8ACCG,Q2c999r   c                    	
 t         st        d       t        t        t        t        z  gt        t              dz   t        t        z  gg      } t         j                  ddgt         j                  d      dz   dgg      }t        t        t        t        f| dg      }t         j                  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         j                  d
      t         j                   |      d	k(        sJ dddd}t!        t#        ddddii|      }t        t        
|      }t         j                   |      d	k(        sJ t!        |      	t%        t&        	
fd       y )Nr  r   r   r   r   rr   c                       e Zd Zy)test_numpy_matrix.<locals>.dotN)__name__
__module____qualname__r   r   r   dotr    s    r   r  r   )   r   FT)allow_unknown_functionsinlinefully_qualified_modulesuser_functionsprinterc                  4     t        t                     S )Nr  r   )inpp3	x_dot_mtxs   r   r   z#test_numpy_matrix.<locals>.<lambda>  s    @hq)R@E r   r   )rr   rl   re   r   r   r%   r   arrayrK   testingassert_allcloserw  ndarrayr   zerosallri   dictr   	Exception)r}  sol_arrr   r  f_dot1	strict_kwp2f_dot2r  r  r  s           @@@r   test_numpy_matrixr    sr   #$AaC3q6A:q!t,-.AkkAq6EIIaL1$4a#89:G!QAy)A	MM!!!Aq!*g6a1aj%--000h AvsQC!o./Ia#F
++g
C99VC[A%&&&,1T^cdI	dF5%.FIF	GBaB/F99VC[A%&&&	i	 B
9EFr   c                     t         st        d       t        dt        gddgg      } t	        t        | j
                  d      }t         j                  j                   |d      t         j                  ddgddgg             y )Nr  r   r   rr   r   r   )	rr   rl   re   r   rK   r|  r  assert_array_equalr  r}  r   s     r   test_numpy_transposer    se    #$AA A!acc7+A	MM$$QqT5;;AA7G+HIr   c                  n   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(  r6 |ddd      cxk(  r( |ddd      cxk(  rt         j                  dg      k(  sJ  J y )Nnumpy not installedrr   r   r   r   r      )
rr   rl   re   r   r   r   rK   rD   r|  r  r}  r   r   r   f4s        r   test_numpy_dotproductr    s    "#1ayA	1a)Z1-w	?B	1a)Z133/	AB	1a)ZQ/	AB	1a)Z133/	ABaA;aA;aA; aA; ;;t	    r   c                      t         st        d       t        dt        gddgg      } t	        t        | dz  d      }t         j
                  j                   |d      t         j                  ddgddgg             y )	Nr  r   r   r   rr   r   r   rL  )rr   rl   re   r   rK   r  r  r  r  s     r   test_numpy_inverser    se    #$AA A!aeW-A	MM$$QqT5;;B!a7I+JKr   c                  <   t         st        d       t        t        t        t        z  gt        t              dz   t        t        z  gg      } t         j                  ddgt         j                  d      dz   dgg      }t        t        t        t        f| dt         j                  idg      }t        t              5  t         j                  j                   |ddd      |       t         |ddd      t         j                        sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   r   r   r   ImmutableDenseMatrixrr   )rr   rl   re   r   r   r%   r   r  rK   matrixrn   PendingDeprecationWarningr  r  rw  )r}  r  r   s      r   test_numpy_old_matrixr    s    #$AaC3q6A:q!t,-.AkkAq6EIIaL1$4a#89:G!QA!7 FPQA	2	3 4%%a1aj':!Aq!*ell3334 4 4s   ;ADD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 y )Nr  r   rs   r   r   r   )	rs   rl   rg   r   r   rK   rw  ru   
coo_matrix)r}  r   Bs      r   test_scipy_sparse_matrixr    s\    #$q!fq!f%&A!QG,A	!QAa00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         j                  d      5  t         |t         j                  d	      t         j                  d
                  d	k(  sJ t         |t         j                  d	      t         j                  d                  t        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   r   Trr   r   ignore)divider   rh  inf)	rr   rl   r!   r   r   rK   errstaterx  r  )r   r   s     r    test_python_div_zero_issue_11306r     s    #$1q5!b&/Aq1u:At}=A!QG,A	x	( HQu{{1~u{{3'789Q>>>Qu{{1~u{{1~675<GGGH H Hs   3BDD
c                     d dg} t         r| j                  d       t        r| j                  d       | D ]s  }t        t        t
        j                  t        z  |      } |d      dk(  sJ t        t        t        t
        j                  t        z        |      } |d      dk(  rsJ  t        t        t        g|       D ]H  \  }}t        t         |t              |      } |d      d	k(  sJ  |d	      d	k(  sJ  |d
      dk(  rHJ  y )Nr   rr   r   r   r   rh  r   r   r   y      @      @r   )rr   appendr   rK   r   r   Oner   r   r   r   )modsmodr   absfuncr   s        r   test_issue9474r  *  s    &>DGH Qa-ts{{QaeeAg4tqyy	 $S#J5 Q
G4uzztqyyw!||	r   c                     t         st        d       t        st        d       t        t        dz  t
        dz  z         } t        d| z  t              }t        j                  ddd      x}}t        j                  d      dz   |d	z  z  } t        t        t
        f|d
      ||      } t        t        t
        f|d      ||      }t        j                  j                  ||d       t        j                  j                  ||d       y )Nr  r  r   r   r      r   rF  rL  rr   r   rw   绽|=)rtol)rw   rl   rr   r    r   r   r	   linspacerK   r  r  )r   r7  xnr-   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6r2>H:1a&$	:2rBJ	MM!!(H5!A	MM!!*hU!Cr   c            	      b   t         st        d       t        t        t        dk  ft        dz  t        dkD  fd      } t	        t        | d      }t         j
                  j                   |t         j                  d            t         j                  g d	             t	        t        t        t        t        d
kD  ft         t        d
k  f            }t         j
                  j                   |t         j                  g d            t         j                  dt         j                  dg             y )Nr  r   r   r   )r   Trr   r   r   )
r   r   r   r   r   r   $   1   @   Q   r   r   r   r   r   )
rr   rl   r!   r   rK   r  r  aranger  rA  )piecesr   
nodef_funcs      r   test_numpy_piecewiser  P  s    #$1q5zAqD!a%=)<FFG,A	MM$$Qu||B'7%8%*[[1S%TV !Y1q5zQBA;?@J	MM$$ZJ0G%H%*[[!UYY1B%C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         j                  ddg      }t         j                  ddg      }t         j                  ddg      }t         j                  j                   | ||      t         j                  ddg             t         j                  j                   ||||      t         j                  ddg             t         j                  j                   |||      t         j                  ddg             t         j                  j                   ||||      t         j                  ddg             t         j                  j                   ||      t         j                  ddg             y )Nr  rr   r   TF)rr   rl   rK   r   r   r>   r   rB   rA   r  r  r  )and_func
and_func_3or_func	or_func_3not_funcarr1arr2arr3s           r   test_numpy_logical_opsr  ]  s   #$AAq	7;H1a)SAq\7CJ1vr!Qx9G!QBq!QKAISVW5H;;d|$D;;t}%D;;e}%D	MM$$XdD%95;;t};UV	MM$$ZdD%A5;;PUW\~C^_	MM$$WT4%8%++tTl:ST	MM$$YtT4%@%++tUYlB[\	MM$$Xd^U[[$5OPr   c                     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                  j                   |ddd      t         j                  d	gd
gg             t         j                  j                   |ddd      t         j                  dgd
gg             t        t        t        t
        f| | z  | z  d      }t         j                  j                   |ddd      t         j                  ddgddgg             y )Nr  r   r   rr   r   rh  r   r   g      ?      @rg  g      ?g     R@g     ]@      )rr   rl   re   r   r   r   r   rK   r  r  r  )xmatymatmat_funcr   s       r   test_numpy_matmulr  o  s   #$Aq6Aqs8$%DAqD6CF8$%DAq	49g>H	MM$$Xc1a%8%++wQTPUFV:WX	MM$$XdAq%95;;RUQVGW;XY!QDIdNG<A	MM$$QsAq\5;;@PADc
@L 4M Nr   c            	         t         st        d       t        st        d       t         j                  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         j%                   || ||       || ||            sJ y )	Nr  r  r      r   rr   r   rw   )rr   rl   rw   r6  randnr%   r   r#   r   r'   r   r   r"   r   r   r    r   rK   allclose)r8  r9  cr7  npfuncnefuncs         r   test_numpy_numexprr  }  s   #$%&ll  C-GAq!q6CF?SVQY&QqS$s1Q3x.)@@qs8E!C!H*%%&'+AqD1a4K'89Dq!Qiw7Fq!Qiy9F>>&Aq/6!Q?;;;r   c                     t         st        d       t        st        d       t         j                  j	                  dd      \  } }t        dt        fdt        d       i      }t        t        d |t              z
  d	
      }t         j                   ||       | dz         sJ t        t        d      d       }t        t        t        f |t        t              d	
      }t         j                   || |      d| z  |z  dz         sJ y )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   r   rw   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   )rr   rl   rw   r6  r  typer   classmethodrK   r   r  rj   r   )r8  r9  r  funcs       r   test_numexpr_userfunctionsr    s    #$%&<<a$DAq	dXL$89:
<BAqAw	2D>>$q'QT7+++	htn.C	DBQFBq!Hi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                  j                         5 }t         j                  dt         j                        } ||      j                  |      d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Ntensorflow not installed.r   r   rx   r   r   dtypesessionrh  )rx   rl   r   r%   r   r   rK   compatv1Sessionconstantfloat32r  r7  r  r0  r8  s       r   test_tensorflow_basic_mathr    s    ()s1vs1ac7|$DAt\2D						%	%	' .1););<Aw||A|&#---. . .s   8ACCc                     t         st        d       t        t        t              t        dt        dz   z              } t        t        | d      }t         j                  j                  j                         5 }t         j                  j                  j                  t         j                        } ||      j                  ||di      d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Nr  r   r   rx   r   r  r   r  	feed_dictrh  )rx   rl   r   r%   r   r   rK   r  r  r  placeholderr  r  r  s       r   test_tensorflow_placeholdersr    s    ()s1vs1ac7|$DAt\2D						%	%	' @1  ,,:3E3E,FAw||A!Q|8C???@ @ @s   8ACC$c                     t         st        d       t        t        t              t        dt        dz   z              } t        t        | d      }t         j                  j                  j                         5 }t         j                  dt         j                        }|j                  |j                          ||      j                  ||di      d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Nr  r   r   rx   r   r   r  r
  rh  )rx   rl   r   r%   r   r   rK   r  r  r  Variabler  runinitializerr  r  s       r   test_tensorflow_variablesr    s    ()s1vs1ac7|$DAt\2D						%	%	' @1););<	ammAw||A!Q|8C???@ @ @s   8A!C##C,c                  d   t         st        d       t        t        t	        t
        t              t                    } t        t
        t        g| d      }t         j                  j                  j                         5 } |dd      j                  |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  rx   r   FTr   )rx   rl   rA   r>   rB   r   r   rK   r  r  r  r  r7  r  r0  s      r   "test_tensorflow_logical_operationsr    s    ()s2a8Q DQFD,7D						%	%	' :1E4 %%a%0E999: : :s   =B&&B/c                     t         st        d       t        dt        t        d      fdt        dk  fdt        dkD  f      } t        t        | d      }t         j                  j                  j                         5 } |d      j                  |      dk(  sJ  |d      j                  |      dk(  sJ  |d      j                  |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   r   r   rx   r   r   )
rx   rl   r!   r   r   rK   r  r  r  r  r  s      r   test_tensorflow_piecewiser    s    ()aAa\BA;AE
;DAt\2D						%	%	' ,1Bx}}Q}'2---Aw||A|&!+++Aw||A|&!+++, , ,s   ;ACC&c                  :   t         st        d       t        t        t         t        dz        } t	        t        | d      }t         j
                  j                  j                         5 } |d      j                  |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   rx   r   rL  r   r   )	rx   rl   r   r   rK   r  r  r  r  r  s      r   test_tensorflow_multi_maxr    s|    ()q1"adDAt\2D						%	%	' -1Bx}}Q}'1,,,- - -   )BBc                  :   t         st        d       t        t        t         t        dz        } t	        t        | d      }t         j
                  j                  j                         5 } |d      j                  |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   rx   r   rL  r   )	rx   rl   r   r   rK   r  r  r  r  r  s      r   test_tensorflow_multi_minr    s|    ()q1"adDAt\2D						%	%	' .1Bx}}Q}'2---. . .r  c                     t         st        d       t        dk\  } t        t        | d      }t         j                  j
                  j                         5 } |d      j                  |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   rx   r   r   r   T)rx   rl   r   rK   r  r  r  r  r  s      r   test_tensorflow_relationalr    sq    ()6DAt\2D						%	%	' /1Aw||A|&$.../ / /s   A==Bc                  H   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                  j                         5 }t         j                  d      } | |      j                  |      dk(  sJ  ||      j                  |      dk(  sJ  ||      j                  |      }t        d      j                         }t        ||z
        dk  sJ  ||      j                  |      }t        d      j                         }t        ||z
        dk  sJ 	 d d d        y # 1 sw Y   y xY w)	Nztensorflow not installedrx   r   y      ?       @r   r   r   gư>)rx   rl   rK   r   rY   rZ   r   r[   r  r  r  r  r  r   r   )func1func2func3func4r0  r8  tensorflow_resultsympy_results           r   test_tensorflow_complexesr&    sQ   '(Q1|4EQ1|4EQA5EQA5E						%	%	' <1 %Qx}}Q}'1,,,Qx}}Q}'1,,,!!HMM!M46{((*$\12V;;;!!HMM!M46{((*$\12V;;;< < <s   6CFF!c                  ^   t         st        d       t        t        t        ggt        t        z  t        z   d      } t         j
                  j                  j                         5 } | t         j                  ddg            }|j                  |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  rx   r   r   r   g      @)
rx   rl   rK   r   r   r  r  r  r  r  )r   r0  fcalls      r   test_tensorflow_array_argr)    s    ()1a&1Q37L1A						%	%	' ,1*%%sCj12zz!z$+++, , ,s   $5B##B,c                  r    t        t        t        t        z        }  | t              t        t        z  k(  sJ y r   rK   r   r   r   r   s    r   test_sym_single_argr,    s&    AEAQ41q5==r   c                  ~    t        t        t        gt        t        z   t        z         }  | dd      dt        z   k(  sJ y r   r+  r   s    r   test_sym_list_argsr.    s2    !QQ#AQ7a!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              j                         t        t              k(  sJ y )Nr   r   r   )
r   r   r   rK   r=   r   r   doitr    r   )r   rW  s     r   test_sym_integralr1  $  s    q#q!te*AHQqTAsB<0'BAQ48CAJRC5555Q499;$r("""r   c                  6   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 y )Nr   c                      y)Nfirst fr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>2  r   r   c                      y)Nzsecond fr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>3  r   r   c                      y)N
function gr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>4  r   r   )r   gr8  r   r   r   r4  r7  )r   r   rK   r   )n1n2r   r8  if1if2s         r   test_namespace_orderr=  +  s     "	#B#%
'BsAsA
1adRM
2Cq6Y
1adRM
2Cq6Yq6\!!!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
       y )Nr   c                     d| z  S Nr   r   r   s    r   r   ztest_imps.<locals>.<lambda>C  s
    AaC r   c                 ,    t        j                  |       S r   )r   r    r   s    r   r   ztest_imps.<locals>.<lambda>D  s    DIIaL r   r   r   r   _imp_c                     d| z  S r@  r   r   s    r   r   ztest_imps.<locals>.<lambda>M  s
    ! r   c                     | dz   S )Ne   r   r   s    r   r   ztest_imps.<locals>.<lambda>P  s
    QW r   c                  D    t        t           t                          S r   r   )r   r   s   r   r   ztest_imps.<locals>.<lambda>Q  s    x1RU84 r   )rj   rK   r   r   r   r    r   r   r&  r   
ValueError)r8  l1l2r  my_fr   r   s        @@r   	test_impsrK  @  s     	S-0AS"89A	!QqT	B	!QqT	Bqt9AaD	!!!a5A::a5DIIaL   >>(#DtW%%%m4D4!!!	c#4	5B
:45r   c                      t        dt        t        f      D ]+  \  } fd}t        d|      } ||       }| ||       k(  r+J  y )N)r   r   r   r   c                     | dk(  ry)Nr   r   r   )r8  error_classs    r   r   z test_imps_errors.<locals>.myfunc^  s    Av!!r   r   )r   r   rG  rj   )valr   r   r7  rN  s       @r   test_imps_errorsrP  T  sQ     $Oi5LM 	[	
 !f-vqv~~	r   c                  &    t        t        d        y )Nc                  $    t        t        d       S )Nc                     | S r   r   r   s    r   r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>i  s    1 r   )rj   r%   r   r   r   r   z&test_imps_wrong_args.<locals>.<lambda>i  s    3CE r   )r   rG  r   r   r   test_imps_wrong_argsrT  h  s    
:EFr   c                  4   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 y )Nr   r   r   r   c                     | dz   S )Nr   r   r   s    r   r   z$test_lambdify_imps.<locals>.<lambda>t  s
    AG r   r   rE  r   )g   r   rW  c                     | dz   S )Nc   r   r   s    r   r   z$test_lambdify_imps.<locals>.<lambda>  s
    B r   F)use_impsf   )r   r#   rK   r   r   rj   )r   lamrT  s      r   test_lambdify_impsr]  l  sH    			A8AqtQ1$$$ 8Aq1Q4x #q(((%8QFA!H%a+q000S"34A8AqtQ3&&& 8Aq1Q4x #s***%8QFA!H%a+s222
1qtQi
 Cq6X
1qtQi
 Cq6c1X
1qtadAY'
(Cq6c8_$$$
1qtQi
 Cq6c1X
1qtQi
 Cq6c1X
1q!A$i
 Cq6aX	A
1adA
Cq6S==
1adA
.Cq6S==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       y )NtFGz\alphar   r   	   r   r   c                  ^    t                       z                 z  dz         S )Nr   rJ   )r`  ra  r_  s   r   r   z$test_dummification.<locals>.<lambda>  s*    1!adQqTkAo F r   c                  F    t        d        z  d        z  dz         S )Nr   r   rJ   r`  r_  s   r   r   z$test_dummification.<locals>.<lambda>  "    QqT1qt8a< @ r   c                  F    t        d        z  d        z  dz         S )Nr   r   r   rJ   re  s   r   r   z$test_dummification.<locals>.<lambda>  rf  r   )r   r   rK   r%   r   SyntaxError)alpha	some_exprr\  r`  ra  r_  s      @@@r   test_dummificationrk    s    AAA IEAaD!Gad"I
AaD!A$<
+Cq!9>>
3q61s1vqy=
)Cqt9AaD!G###
E1:qw{
+Cq!9>>
;FG
;@A
;@Ar   c                      t        d      } | j                         \  }}}||z   }t        ||g|      } |dd      }d}t        ||z
        dk  sJ y )NNr   333333?rh  r   )rM   base_scalarsrK   r   )rm  r  r-   znr7  r   r   r   s           r   8test_lambdify__arguments_with_invalid_python_identifiersrq    s\    3A!JBB7D"b4 A
C+C
Cs3w<%r   c                      t        j                  ddd      } t        | |       } |d      dk(  sJ t        | | d      } |d      dk(  sJ y )Nz{v}r   r   Tr2  )r   rf   rK   )curlyvr\  s     r   test_curly_matrix_symbolru    sP    q!,F
66
"Cq6199
664
0Cq6199r   c                  V    t        d      } | dz  }t        | |      } |d      dk(  sJ y )Nifr         @r   rG  )	python_ifr7  r   s      r   test_python_keywordsrz    s2     Iq=DD!AS6S==r   c                     t        t        t        t        t        ft        t        z   t        z   t        z         } dj                         }| j                  j                         d t        |       |k(  sJ t        d      }t        |t        |            } dj                         }| j                  j                         d t        |       |k(  sJ y )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 +...)
rK   r   r   r   r   
splitlines__doc__lenr   sum)r  r   symss      r   test_lambdify_docstringr    s    Q1aL!a%!)a-0D	 jl  <<""$Yc#h/36667DD#d)$D	Y
 jl  <<""$Yc#h/3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 y )Nr   )IntervalPrinterc                 0            j                  |       S r   )doprint)r7  r  s    r   intervalreprz+test_special_printers.<locals>.intervalrepr  s     ((..r   r   r   r   r   )r   r  r   r   g?   )r#  r  r    r   HalfrK   r  r   mpirw  r   r;   )r  r7  func0r   r!  r  exp1rQ   exp3exp_lssol1sol2sol3sol_lsr  s                 @r   test_special_printersr    sH   9/ Q$q'!"QVV+DRxFERxIERx9JKE
vzz!Q
 Cegs###egs###egs### .8Ax{H-a0D-8Ax{H-c2D-8Ax{H-b1DD$F??1D??3D??2DD$FVr   c                  h     t        g t                     du sJ  t        g t                     du sJ y )NTF)rK   rC   r?   r   r   r   test_true_falser    s6    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 y )	Nr   r3  r   )r   )r   r   r   Frs  r   )rK   r   r   r   r   r   r   r   test_issue_2790r    s    '8QAKQ'62a77748QQF$a!eai!m4QDJJJ,8Aq1ue,Q/1444r   c                  r    t        dd       }  |  | d            j                         t        d      k(  sJ y )Nr   c                     | dz  S r@  r   r   s    r   r   z"test_issue_12092.<locals>.<lambda>  s
    AqD r   r   r  )rj   r   r   r   s    r   test_issue_12092r    s.    S.1AQqT7==?eBi'''r   c                       G d dt         j                        }  | d      }d|z  }t               j                  |      }|j	                  dd      dk(  sJ y )Nc                       e Zd Zd ZeZeZy)"test_issue_14911.<locals>.Variablec                 8    |j                  | j                        S r   )r  r/  )selfr  s     r   	_sympystrz,test_issue_14911.<locals>.Variable._sympystr  s    ??499--r   N)r  r  r  r  _lambdacode
_numpycoder   r   r   r  r    s    	.  
r   r  r   r     z2*x)r   Symbolrh   r  replace)r  r   r   codes       r   test_issue_14911r  
  sQ    5<<  	A	AA?""1%D<<R E)))r   c            	           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 y )NTr   r   F)rK   r   r   r   r@   r   r   r   test_ITEr    s^    ,8Q1Is1a|,T1a8A===,8Q1Is1a|,UAq9Q>>>r   c            	           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 y r   )rK   r   r   r   r   r   r   r   r   test_Min_Maxr    s^    ,8Q1Is1a|,Q15:::,8Q1Is1a|,Q15:::r   c                     t         st        d       t        d      } t        d      \  }}t         j	                  ddgddgg      } t        | t        | t        t        f   t        ddft        ddf            |      d	k(  sJ y )
Nr  r8  zi jr   r   r   r   r   r   )	rr   rl   rI   r   r  rK   r   r   r   )r8  rZ  jr9  s       r   test_Indexedr  #  sy    "#CA5>DAqaVaV$%A:8As1QT7Q1I1ay9:1=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      j                         k(  sJ |t	        dd      j                         k(  sJ y )Nr   r   r   )rK   r   r   rp   rq   r   )expr1expr2s     r   test_issue_12173r  .  s    7HaVZ1-h71=E7HaVZ1-h71=EJq!$**,,,,Jq!$**,,,,r   c                      t         st        d       t        t        t	        t                    } t         | d      t	        d      z
        j                         dk  sJ y )Nr  r   r   )rr   rl   rK   r   r&   r   nr   s    r   test_issue_13642r  6  sF    "#DGAqtd1g~  "U***r   c                      t        t        t        t              d      } t         | d      t        d      z
        j	                         dk  sJ y )Nr   r   r   )rK   r   r&   r   r  r   s    r   test_sinc_mpmathr  =  s<    DGX&Aqtd1g~  "U***r   c                     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 y )Nr   Frs  r   r   r   r   rK   )d1r   f1bd2r   r   s         r   test_lambdify_dummy_argr  B  s    	B	"b1fe	,Ba5A::
2rAv
Cq6Q;;	sB	"b1f	Ba5A::	B4&"q&	!Bqc7a<<r   c                  ~    t               } t        t        |             }t        | |g| |z
        } |dd      dk(  sJ y )Nr   r   r   )r   r   r   rK   )rT  dsymr   s      r   %test_lambdify_mixed_symbol_dummy_argsr  O  s<    A3q6?D!TAH%AQ7a<<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 y )Nr  rr   r   r   r   )rr   rl   rK   r   r   r  r   s    r   test_numpy_array_argr  W  sJ    "#1a&1Q37G,AU[[#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"                  j%                  d       t'        | |      D ]h  \  }}t)        t*         |t*              d      }t-        d      D ]7  }t         j"                  j/                  dd      dt         j"                  j/                  d	d
      z  z   }|t
        k(  rt         j1                  |      }|t        k(  rt         j1                  |      }|t        k(  rt         j3                  |      } ||      j5                         } ||      }|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  r8J  k t6        t8        t:        t<        t>        t@        g}	t         j                  jB                  t         j                  jD                  t         j                  jF                  t         j                  jH                  t         j                  jJ                  t         j                  j@                  g}
t'        |	|
      D ]S  \  }}t)        t*        tL        f |t*        tL              d      }t-        d      D ]  }t         j"                  j/                  dd      }t         j"                  j/                  dd      dt         j"                  j/                  d	d
      z  z   }|t6        t@        fv rt         j3                  |      }|t@        k(  rt1        tO        |            } |||      j5                         }t1         |||      |z
        ddt1        |      z   z  k  sJ t1         |||       |||      z
        ddt1        |      z   z  k  rJ  V y )Nscipy not installedr   rs   r      r   r   r   r   gvIh%<=)(rs   rl   r2   r3   r4   r   r:   r;   r9   r7   r8   r  expigammalnpsisicirr   r6  seedr   rK   r   rangeuniformr   r   r   r   r)   r+   r(   r*   r<   pochjvyvivkvr   int)single_arg_sympy_fnssingle_arg_scipy_fnssympy_fnscipy_fnr   rZ  tvr%  scipy_resultdouble_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2s                r   test_scipy_fnsr  a  s   "#T9eXwPRTVW!MM..0A0A5==CUCU!4!4emm6K6K!MM--u}}/A/A5==CUCUW 
LLa #$8:N O M8QW5r 	MA%%c2.ELL4H4HQ4O1OOB 9$YYr] 8#YYr] 7"ZZ^#B<--/L#B<L 2~'|A2~'|Aqu|+,ua#l:K6K/LLLLqu|+,ua#l:K6K/LLLL1	MM8 ,Wgw#Y0!MM..0@0@!MM,,emm.>.>@P@PRWR_R_RiRik #$8:N O Y8aVXa^W=r 	YA,,&&sB/C,,&&sB/"U\\5I5I"a5P2PPCOY77jjo9$#c(m#C-335Lqc{\12UAL@Q<Q5RRRRqc{Xc3%7785!c,FWBW;XXXX	YYr   c                     t         st        d       t        j                  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 ]P  }t        j                  j%                  dd      }t'        t        j                  j)                  dd	|dz
  
            }	t        j                  j)                  dd      dt        j                  j)                  dd	      z  z   }
|t        k(  rt        j+                  |
      }
|t        k(  rKt        j                  j)                  dd      }
t'        t        j                  j%                  d|d
            }	|f|	z   |
fz   } || } || j-                         }ddt/        |      z   z  }t/        ||z
        }	 ||k  sJ S  y # t0        $ rE t3        |j5                  t7        |      t7        |      t7        |      t7        |      ||            w xY w)Nr  r   zn k a br   r   r   zThe random test of the function {func} with the arguments {args} had failed because the SymPy result {sympy_result} and SciPy result {scipy_result} had failed to converge within the tolerance {tol} (Actual absolute difference : {diff})r   r   )sizer  r   r  r   &.>)r  r+  r%  r  r	   tol)rs   rl   rr   r6  r  r   r\   r]   r^   r_   r`   ra   rb   rc   rd   r   rK   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<   "#	LLaYF 
Q	Q	1	!	1	Q			
E	0  !& *kz"aT)T8T?+r 	A%%a,BELL00AJqL0IJG%%c2.ELL4H4HQ4O1OOB7"ZZ^>)\\))"a0 4 4Q 4 CD57?bU*Dd8L#T?002LS../D|l23Dd{"{%	,  	$JJ!(^!$Z%),%7%),%7!   " 	s   9HAIc                  d    t        t        t        dz        } dt        j                  |       v sJ y )Nr   zx**2)rK   r   inspect	getsourcer   s    r   test_lambdify_inspectr    s-    AqDA W&&q))))r   c                  $   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 y )Nr   r   r   )r   r   )r   r   r"  r  )r   r   r   r   r   r   s         r   test_issue_14941r    s    7EGqA 
1a&1aA,	0Ba81|### 
1a&1a&'	*Ba8v
2t
C5D== 
1a&1a&'	*Ba81vr   c                  L     t        d      t                j                          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 y )Nr   r   r   r  r   c                  <    t        t         f z  d            S )NFrs  )r  rk   r   fxs   r   r   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>  s!    Y2w"e45 r   Trs  r   )   r@  )
r   r   r	   rK   r  rk   r   r  r   r  r  s   @@r   (test_lambdify_Derivative_arg_issue_16468r    s'   aA	
B$8QGQV$R+r111)4	1b'1R4()"a0A555
9 6 774	1b'1R467A>!CCC74	2q'1R467"qAQVVKKK8BB#r)))44	"a"fd34R8B>>>r   c                     t        t        gt        j                  t                    } d} | |      |j                  k(  sJ t        t        gt        j
                  t                    } ||      |j                  k(  sJ y )Ny      @       @)rK   r   r   rY   r   rZ   imag)f_rerO  f_ims      r   test_imag_realr    s_    QC!%D
C9   QC!%D9   r   c                     t         st        d       t        ddd      } t         j                  ddgddgg      }t	        | | dz        }t         j                   ||      t         j                  dd	gd
dgg            sJ t	        | | dz        }t         j                   ||      t         j                  ddgddgg            sJ y )Nr  r}  r   r   r   r   r   g       r         ?rg  %   6   r  v   )rr   rl   rf   r  rK   r  )r}  A0r   r8  s       r   test_MatrixSymbol_issue_15578r
    s    "#S!QA	q!fq!f%	&BAGA>>!B%sBi#t-E!FGGGAqDA>>!B%r2hS	-B!CDDDr   c            	         t         st        d       ddlm} m}m}m} ddlm} d\  }}}}|j                  ||||      j                         }	t        | |||f|j                  | |||            }
 |
||||      }t        |	|z
        dk  sJ y )Nr  r   )r  rW  r   Z)hydrogen)r   r   r   r   r   )rs   rl   	sympy.abcr  rW  r   r  sympy.physicsr  R_nlr   rK   r   )r  rW  r   r  r  nvlvrvZvsympy_valuer   scipy_values               r   test_issue_15654r    s    "#$$&NBB--BB/557K!Q1x}}Q1a89ABB#K{[()E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         j                   |t         j                  g dg dg dg            t         j                  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         j                   |t         j                  g dg dg dg            t         j                  |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         j                   |t         j                  g dg dg dg            t         j                  g dg dg dg            sJ t         j                   |t         j                  g dg dg      t         j                  g dg dg dg      t         j                  g dg dg dg dg            t         j                  g dg dg            sJ y )Nr  r}  r   r  r   Cr   Dr   kr   r   r  )r   r   r   )r   r   r   r   )r   r   r   r   r   )x      ih  i  iX  )rr   rl   rf   r   rK   array_equalr  object)	r}  r  r  r  r  r   r8  hrZ  s	            r   test_issue_15827r!    s   "#S!QAS!QAS!QAS!QAclAQqS!GAQqS!GAAaCA!QAaCE!G$AQu{{Iy)+LMN	KK!A#qsAaC1Q3!QqS/AaC1ac?C6KRT T T Qu{{Iy)+LMN	KK!a%1q!A#'*QUAaC!GQqS1W,EUAaC!GQqS1W&,  ./ / / Qu{{Iy)+LMN	KKIy124 4 4 Qu{{Iy+ABEKKQ]_kmyPzD{	KK/?OTUWX]XcXcee  Y!" " "r   c                      t         st        d       t        d      } d }t        |  ||       d      } |d      t         j                  j
                  k(  sJ y )Nr  r   c                 .    t         j                  | dz  z  S r@  )r   GoldenRatior   s    r   r   z"test_issue_16930.<locals>.<lambda><  s    1==1a4' r   rs   r   r   )rs   rl   r   rK   	constantsgolden_ratio)r   r   f_s      r   test_issue_16930r(  7  sJ    "#A'A	!QqT7	+Ba5EOO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 y )Nr  r   r   rs   r   r   )rs   rl   r   rK   r   LambertWr   lambertw)r   r'  s     r   test_issue_17898r,  @  sO    "#A	1#u~~a+W	=Bc7fooc2....r   c                     t         st        d       t        t        t	        j
                  t                    } t        t        t	        j
                  t        d            } | g d      } |g d      }t        |d         j                         dk  sJ t        |d   dz
        j                         dk  sJ t        |d   dz
        j                         dk  sJ t        |d         j                         dk  sJ t        |d   dz
        j                         dk  sJ t        |d   dz
        j                         dk  sJ y )Nr  r   r  r   r   rh  r   )rr   rl   rK   r   r   r1   r   r  )r   r   res1res2s       r   test_issue_13167_21411r0  G  s   "#	!U__Q'	(B	!U__Q*	+Bj>Dj>DtAw<>>e###tAw}!E)))tAw{%'''tAw<>>e###tAw{%'''tAw{%'''r   c                  X    t        t        t              }  | d      t        d      k(  sJ y )N   r   )rK   r   r
   r   r   s    r   test_single_er3  U  s#    AAR5CH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 y )Nr  r8  rs   r   r   r   r  )rs   rl   r   rq   r   rK   r   rp   )r8  r   r`  r   s       r   test_issue_16536r5  Y  s    "#A	Aq	B!QW-Az!Q!Aq')*e333	Aq	B!QW-Az!Q!Aq')*e333r   c                  T   t         st        d       t        d      \  } }t        t        j
                  t        | |            }t        || |f      }t        | |f|d      }| d|di}t        |j                  |       ||j                          z
        dk  j                         sJ y Nr  zx1 x2rr   r   r   r   r  )rr   rl   r   r   r   Zeror   rG   rK   r   r]  valuesr  )x1x2r   r8  ra  points         r   test_issue_22726r=  g  s    "#WFBAFFCBK AB8$A"b1g.ABNEu5<<> 223u<AACCCr   c                      t         st        d       t        d      \  } }t        t	        | |            }t        | |f|d      }| d|di}t        |j                  |       ||j                          z
        dk  sJ y r7  )	rr   rl   r   r1   r   rK   r   r]  r9  )r:  r;  r   r`  r<  s        r   test_issue_22739r?  s  sv    "#WFB#b"+A"b1g.ABNEqvve}q%,,.112e;;;r   c                     t         st        d       t        d      \  } }| t        t	        |dz              t        |      z
  z  }t        | |g|d      }| d|di}t        |j                  |       ||j                          z
        dk  sJ t        | |g|      }t        |j                  |       ||j                          z
        dk  sJ y )Nr  za tr   rr   r   r  )
rr   rl   r   r   r$   r#   rK   r   r]  r9  )r8  r_  r7  r`  r<  s        r   test_issue_22992rA  ~  s    "#5>DAqc#ac(mc!f$%D!Qw'AAqMEtyy!U\\^"445>>> 	!QAtyy!U\\^"445>>>r   c                      t         st        d       t        t        t        dz  g      } t	        t        | d      } |d      j
                  t         j                  k(  sJ y )Nr  r   rr   r   )rr   rl   rH   r   rK   	__class__r  )r7  r   s     r   test_issue_19764rD    sH    "#!QTDD'"AQ4>>U]]***r   c                      t         st        d       t        t        t	        t              d      } t        j                  | d      d      dk(  sJ y )Nznumba not installedrr   T)nopythonr   g	T?)r{   rl   rK   r   r%   jitr   s    r   test_issue_20070rH    sA    "#CFG$A99Q9&q)+====r   c                  2   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 y )Nr  rs   r   ?r  )rs   rl   r5   r   r6   rK   r   )r   r   F1F2s       r   test_fresnel_integrals_scipyrM    s|    "#	!B	!B	!R	)B	!R	)Bx}r#w&'5000x}r#w&'5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 y )Nr  rs   r   rJ  ffffff@r  )rs   rl   r.   r   r   rK   r   r   r`  s     r   test_beta_scipyrQ    sO    "#Q
A!QG,AtC~#s+,555r   c                      t        t        t              } t        t        t        f| d      }t	        t        dd       |dd      z
        dk  sJ y )Nr   r   rJ  rO  r  )r.   r   r   rK   r   rP  s     r   test_beta_mathrS    sC    Q
A!QF+AtC~#s+,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 y )	Nr  rs   r   gffffff?g@r   rh  r  )	rs   rl   r/   r   r   r   r   rK   r   rP  s     r   test_betainc_scipyrU    sb    "#1aA!Q1q'2AwsCc*QsCc-BBCu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 y )	Nr  rs   r   r   r  r   r   r  )	rs   rl   r0   r   r   r   r   rK   r   rP  s     r   test_betainc_regularized_scipyrW    sc    "#Aq!Q'A!Q1q'2A"3S!4qc37JJKuTTTr   c            	         t         st        d       t        t        t        t
        t        t        t        t        g} | D ]  }d|j                  v r  |t        t              }t        t        f}d}n/d|j                  v r |t              }t        f}d}nt        d      t        ||      } || }|j                  t!        t#        ||                  j%                         }t         j'                  |t)        |            rJ  t        t        t        ft        t        t              t        t                          }t+        d |dd	      z  d
z
        dk  sJ y )Nr  r   )rn  g?r   )rn  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)rr   rl   rO   rP   rQ   rR   rS   rT   rU   rV   r*  r   r   NotImplementedErrorrK   r]  r  r   r   r  rx  r   )	funcsr  r7  r+  num_argsr   result	referencelae2s	            r   test_numpy_special_mathr_    s   "#E4ueY
KE 8

?1:Dq6D!H$**_7D4DH%&bccT4 HIId3tX#678>>@	~~feI&67778  QFJtAwQ89DsD((72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                  j                  d      d d             d	k\  }|rEt        t        t        ft        t        t              d      }t         |d
d      dz
        dk  sJ y y )Nr  rs   r   g#B;gWw'&l7gN~h.r   )r   r   g333333?r  g-=gFFg<)rs   rl   rK   r   rW   r   r  mapr  versionsplitr   rX   )cm1have_scipy_1_10pluscm2s      r   test_scipy_special_mathrh    s    "#
A4q7
3Cs5zE!"V+++C)>)>)D)DS)I"1)M NOSZZ1vuQ{G<3sD>N23u<<< r   c                      t         st        d       t        t        ft	        t              d      }  | d      dk(  sJ y )Nr  rs   r   r   rh  )rs   rl   rK   r   r   )berns    r   test_scipy_bernoullirk    s2    "#QD)A,8D7c>>r   c                      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 y )Nr  rs   r   r   r  g      ?)rs   rl   rK   r   r   r   )hnhnms     r   test_scipy_harmonicro    s^    "#	1$W	5Ba5C<<
Aq68Aq>7
;Cq!9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 y )NCuPy not installedry   r   r   r   ry   rl   rK   r   r   r  r   r  r   r\  s     r   test_cupy_array_argrt    sd    !"1a&1Q37F+Atzz3*%&FQ;;Sf&&&&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 y )Nrq  rr   r   r   r   ry   rr  rs  s     r   test_cupy_array_arg_using_numpyrv    sf     !"1a&1Q37G,Atzz3*%&FQ;;Sf&&&&r   c                  n   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(  r6 |ddd      cxk(  r( |ddd      cxk(  rt         j                  dg      k(  sJ  J y )Nrq  ry   r   r   r   r   r  )
ry   rl   re   r   r   r   rK   rD   r|  r  r  s        r   test_cupy_dotproductrx  "  s    !"1ayA	1a)Z1-v	>B	1a)Z133/	@B	1a)ZQ/	@B	1a)Z133/	@BaA;
1a
1a 	1a 	

B4	    r   c                     t         st        d       t        t        t        ggt        t        z  t        z   d      }  | t         j
                  j                  ddg            }|dk(  sJ dt        t        |            v sJ y )NJAX not installedrz   r   r   r   	rz   rl   rK   r   r   rr   r  r   r  rs  s     r   test_jax_array_argr|  3  sh     !1a&1Q37E*AsyySz*+FQ;;CV%%%%r   c                     t         st        d       t        t        t        ggt        t        z  t        z   d      }  | t         j
                  j                  ddg            }|dk(  sJ dt        t        |            v sJ y )Nrz  rr   r   r   r   rz   r{  rs  s     r   test_jax_array_arg_using_numpyr~  =  sh     !1a&1Q37G,Asyy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(  r@ |ddd      cxk(  r2 |ddd      cxk(  r$t         j                  j                  dg      k(  sJ  J y )Nrz  rz   r   r   r   r   r  )rz   rl   re   r   r   r   rK   rD   r|  rr   r  r  s        r   test_jax_dotproductr  G  s     !1ayA	1a)Z1-u	=B	1a)Z133/	?B	1a)ZQ/	?B	1a)Z133/	?BaA;
1a
1a 	1a 				    r   c                     d } 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 ]S  }t        s|j                  rdd|| |fD ]4  }|j                  |      } ||j                   }|j                  |       6 U y )Nc                 
    d| fS )Nr   r   )exprss    r   	no_op_csez$test_lambdify_cse.<locals>.no_op_cseY  s    5yr   c                 >    ddl m}  || t        t                    S )Nr   rE   clsr   )sympy.simplify.cse_mainrF   rL   r   )r  rF   s     r   	dummy_csez$test_lambdify_cse.<locals>.dummy_cse\  s    /5"2u"=>>r   c                 &    ddl m}m}  || |      S )Nr   )cse_release_variablesrF   )postprocess)r  r  rF   )r  r  rF   s      r   minmemz!test_lambdify_cse.<locals>.minmem`  s    F5&;<<r   c                   ,    e Zd ZdddZd ZddddZy)	test_lambdify_cse.<locals>.CaseF)requires_numpyc                    || _         || _        || _        t        t	        | j                   | j                              }|D cg c]!  }|j                  |      j                         # c}| _        || _        y c c}w r   )	r+  r  r[  r  r   r]  r   r   r  )r  r+  r  r[  r  	subs_dictes          r   __init__z(test_lambdify_cse.<locals>.Case.__init__e  sb    DIDJ$DMSDMM:;I;@Aay)//1ADH"0D Bs   &A9c                F    t        | j                  | j                  |      S )NrE   )rK   r+  r  )r  rF   s     r   rK   z(test_lambdify_cse.<locals>.Case.lambdifym  s    DIItzzs;;r   r   )abstolreltolc                   | j                   r,t        fdt        | j                        D              sJ y t        | j                        D ]6  \  }}t	        |   |z
        }|dk(  r|k  r"J |t	        |      z  k  r6J  y )Nc              3      K   | ]<  \  }}t         j                  |   t         j                  |t                      > yw)r  )r  r  N)rr   r  asarrayrx  ).0rZ  r   r  r  r\  s      r   	<genexpr>zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r  sF      <#q! !>>&)U]]1E]5R/5F * D <s   AAr   )r  r  	enumerater   r   )r  r\  r  r  rZ  r   abs_errs    ```   r   assertAllClosez.test_lambdify_cse.<locals>.Case.assertAllClosep  s    "" <'0':< < < < !$((+ 31fQi!m,6"V+++"3q6>F2223r   N)r  r  r  r  rK   r  r   r   r   Caser  d  s    DI 	1	< 49 	3r   r  r   )r   r   rx  )r+  r  r[  r   )r   r   rx  )r   r   rn  r   )r   r   r   T)r+  r  r[  r  )r   r   FrE   )r   r   r   r   r1   r&   re   r%   rr   r  rK   r[  r  )	r  r  r  r  casescase_cser   r\  s	            r   test_lambdify_cser  X  sk   ?=3 36 	QUQYUQYqS1Q3Y]cAX1q 	 "		
 	Q""""1%%eooa##	 "		
 	QQKQKQK
 %	
 	QAaC3q6A:q!t"456!CF
1a4!SVQT*+
  		
 	QEAI>1a!eUQqS1WQQ.1qAE0BD		
Q.E^  (,,D&)Y? 	(D$'A&F'	((r   c            	          t        t               t        t        t        dz  t	        t        dz        gfd      d      } | sJ y )Nr  r   c                     t        |       S )Nr  rE   )r  r  s    r   r   z"test_issue_25288.<locals>.<lambda>  s    c!T6J r   rE   )rL   r   rK   r   r%   )okr  s    @r   test_issue_25288r    s;    &D	K!adC1I&,J	KA	NBI2r   c                      t               5  t        t        t        ht        t        z          d d d        y # 1 sw Y   y xY wr   )r   rK   r   r   r   r   r   test_deprecated_setr    s/    		!  !QQ     s   "6?c                     t         st        d       t        ddd      } t        | | j                  | z  d      } |t         j                  g d            dk(  sJ  |t         j                  g d            dk(  sJ t        | | | j                  z  d      } |t         j                  g d            dk(  sJ  |t         j                  g d            dk(  sJ t        | | | j                  z  | z  d      }t         j                  dgd	gdgg      }t         j                  dgd
gdgg      }t         j                   ||      |      sJ y )Nr  Xr   r   rr   r   r  rr  r      r@  )rr   rl   rf   rK   r|  r  r  )r  r   r  r  s       r   test_issue_13881r    s!   #$S!QAACCE7#AU[[#$***U[[#$***AaccE7#AU[[#$***U[[#$***QqssUAIw'A;;aS1#'D;;bT2$'(DQtWd+++r   c                      t        d      t              }  t        d      t              }t        | dz  |dz  z   | dz  || z  dz  z   z  z   }|j                         }t	        | |ft        f|d      } |dd	      }|d
k(  sJ y )Nr   r   r   r   r   TrE   )r   r   r   g     r@)r   r   r   expandrK   )r   r8  r7  	eval_expranss        r   test_23536_lambdify_cse_dummyr    s    aAaA1q!tadacAXo..D;;=D1a&!d5I
J
$C%<<r   c                   Z    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y)LambdifyDocstringTestCaseNc                      || _         || _        y r   docstring_limitexpected_redacted)r  r  r  s      r   r  z"LambdifyDocstringTestCase.__init__  s    .!2r   c                 :    d}| j                   s| j                  S |S )NzEEXPRESSION REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  EXPR)r  expr_redacted_msgs     r   expected_exprz'LambdifyDocstringTestCase.expected_expr  s     c $ 6 6tyyM<MMr   c                 :    d}| j                   s| j                  S |S )NzFSOURCE CODE REDACTED DUE TO LENGTH, (see lambdify's `docstring_limit`))r  SRC)r  src_redacted_msgs     r   expected_srcz&LambdifyDocstringTestCase.expected_src  s     c#55txxK;KKr   c                 Z    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  sJ    NN# $!!" #  ! "$% 	 "!r   c                 ,    t        | j                        S r   )r~  r  r  s    r   __len__z!LambdifyDocstringTestCase.__len__  s    4**++r   c                 h    | j                   j                   d| j                   d| j                   dS )Nz(docstring_limit=z, expected_redacted=))rC  r  r  r  r  s    r   __repr__z"LambdifyDocstringTestCase.__repr__  s@    ~~&&' (#334 5!!%!7!7 8;	
r   )r  r  r  r  r  r  r  propertyr  r  r  r  r  r   r   r   r  r    s`    ID
C3 N N L L 
" 
",
r   r  c                      G d dt               } t        d      } | d d       | dd       | dd       | dd	       | d
d	      f}|D ]7  }t        |g|d|j                        }|j                  |j
                  k(  r7J  y )Nc                       e Zd ZdZdZdZy)Ntest_lambdify_docstring_size_limit_simple_symbol.<locals>.SimpleSymbolTestCaser   z(def _lambdifygenerated(x):
    return x
Nr  r  r  r  r  r  r   r   r   SimpleSymbolTestCaser    s    	 	r   r  r   Fr  r   r   r   Tr   r   r  )r  r   rK   r  r}  r  )r  r   
test_cases	test_caselambdified_exprs        r   0test_lambdify_docstring_size_limit_simple_symbolr  
  s    
8 
 	A 	TUKSEJQ%HQ$GR4HJ   G	"C%55	
 &&)*F*FFFFGr   c                  V    G d dt               } t        d      \  }}}||g|||z   |z   dz  j                         g} | d d       | dd       | dd	       | d
d	       | dd	      f}|D ]9  }t        |||g|d|j                        }|j
                  |j                  k(  r9J  y )Nc                       e Zd ZdZdZdZy)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   r   r   r  )r  r   r  rK   r  r}  r  )r  r   r   r   r7  r  r  r  s           r   .test_lambdify_docstring_size_limit_nested_exprr  '  s    

4 

 i GAq!sAQQ..01D 	GFtDdCtDJ   G	"1I%55	
 &&)*F*FFFFGr   c                      G d dt               } t        d      \  }}}t        t        j                  |g||z   |z   ||z   |z   dz  j                         gg      } | d d       | dd       | dd	       | d
d	       | dd	      f}|D ]9  }t        |||g|d|j                        }|j                  |j                  k(  r9J  y )Nc                       e Zd ZdZdZdZy)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  K  s    	 	
0 	r   r  r  r   Fr  r  r   Tr   r   r   r  )
r  r   re   r   r8  r  rK   r  r}  r  )r  r   r   r   r7  r  r  r  s           r   )test_lambdify_docstring_size_limit_matrixr  I  s    
2 
 i GAq!AFFA;Qa!eai!^,C,C,E FGHD 	tuEseDrTBqDArTBJ   G	"1I%55	
 &&)*F*FFFFGr   c                  d    t        d      } d| ff}t        | |      } |d      }|dk(  sJ d       y )Nr8  r   r   )r   r"  z2Lambdify did not handle the empty tuple correctly.rG  )r8  r7  r   r\  s       r   test_lambdify_empty_tupler  l  s?    A:DDAqTFZU!UUr   c                      d} t        ddd      j                         }t        ddd      j                         }d}dt        z  }t        |||       sJ t        |||       sJ y )	Nr  r   rh  r   r   r   gQ@te_޿gF#O3t9)rb   r   r   r   )r  sympy_result_integersympy_result_complexmpmath_result_integermpmath_result_complexs        r   (test_assoc_legendre_numerical_evaluationr  s  sp    
C)!S#6<<>)!Q288:..q0)+@#FFF)+@#FFFr   (/  	itertoolsr   r   r  r   sympy.testing.pytestr   r   sympy.concrete.summationsr   sympy.core.functionr   r   r	   sympy.core.numbersr
   r   r   r   r   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   r   %sympy.functions.combinatorial.numbersr   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   r   r    $sympy.functions.elementary.piecewiser!   (sympy.functions.elementary.trigonometricr"   r#   r$   r%   r&   r'   sympy.functions.special.besselr(   r)   r*   r+   r,   r-   &sympy.functions.special.beta_functionsr.   r/   r0   'sympy.functions.special.delta_functionsr1   'sympy.functions.special.error_functionsr2   r3   r4   r5   r6   r7   r8   'sympy.functions.special.gamma_functionsr9   r:   r;   r<   sympy.integrals.integralsr=   sympy.logic.boolalgr>   r?   r@   rA   rB   rC   %sympy.matrices.expressions.dotproductrD   r  rF   sympy.tensor.arrayrG   rH   sympy.tensor.indexedrI   r  rK   sympy.utilities.iterablesrL   sympy.vectorrM   sympy.core.exprrN   sympy.codegen.cfunctionsrO   rP   rQ   rR   rS   rT   sympy.codegen.numpy_nodesrU   rV   sympy.codegen.scipy_nodesrW   rX   rY   rZ   r[   #sympy.functions.special.polynomialsr\   r]   r^   r_   r`   ra   rb   rc   rd   sympy.matricesre   rf   rg   r#  rh   sympy.printing.numpyri   rj   rk   rl   sympy.utilities.decoratorrm   sympy.utilities.exceptionsrn   sympy.externalro   rp   rq   r   MutableDenseMatrixrr   rs   rw   rx   ry   rz   r{   osenvironr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r,  r=  rC  rJ  rO  rQ  rU  rX  r[  ra  rd  rj  rn  rp  rs  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r)  r,  r.  r1  r=  rK  rP  rT  r]  rk  rq  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r!  r(  r,  r0  r3  r5  r=  r?  rA  rD  rH  rM  rQ  rS  rU  rW  r_  rh  rk  ro  rt  rv  rx  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     sn       ? ) 8 8 I I I $ " . Q E 4 ; 7 5 E E :A A W W W W ? _ _ _ Y Y . @ @ < ' 5 , - 6 # + K K ; 2 < <+ + + > = 3 - D % 9 6 ( J   ggj8*-EF
	
"<(
VEg),BJJ%&Y
1a



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

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