
    g                        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:ej        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.dS )    )productN)raiseswarns_deprecated_sympy)Sum)FunctionLambdadiff)EFloatIRational	all_closeoopi)Eq)S)Dummysymbols)RisingFactorial	factorial)	bernoulliharmonic)Abs)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                  x     t          g d           t          t           fd                         dk    sJ d S )N   c                        d          S )N fs   _/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>ztest_no_args.<locals>.<lambda>S   s    aaee     rK   r   	TypeErrorr   s   @r   test_no_argsr   Q   s=    QA
9mmmm$$$133!888888r   c                  b    t          t          dt          z            }  | d          dk    sJ d S N   r   rK   xr   s    r   test_single_argr   W   s.    AaCA1Q441999999r   c                  |    t          t          t          gt          t          z             }  | dd          dk    sJ d S Nr   r      )rK   r   yr   s    r   test_list_argsr   \   s4    !QQA1Q77a<<<<<<r   c                  J   t          t          t          ggt          t          g           ddg          ddgk    sJ t          t          fd           t          t          t          ft
          t          fgt          t          t
          t          g           dd          g dk    sJ t          t          fd           t          t          t          ggt
          gt          gt          t          t
          t          g          }  | dd	ggd
gd          g dk    sJ d S )N[   r   c                        dd          S Nr   r   r   )f1s   r   r   z"test_nested_args.<locals>.<lambda>d       bbAhh 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2r1g;;2q'!!!!
9&&&&'''	Aq6Aq6"Q1aL	1	1B2h  OOO3333
9&&&&'''	1uaj!$q!Ql	3	3B2bRD62,##'7'7'7777777r   c                       t          dd             ddd          dk    sJ   ddd	          d
k    sJ t          t           fd           d S )Nzx,y,zzz,y,xr   r   r   r   r   r         ?       @      @r   r   r   c                        d          S Nr   r   r   s   r   r   ztest_str_args.<locals>.<lambda>s       aadd r   r   r   s   @r   test_str_argsr   n   sj    '""A1Q1::""""1S#s....
9llll#####r   c                      d } t          t          t          t                    d| i          } |d          dk    sJ  |d          dk    sJ d S )Nc                     dS Nr   r   r   s    r   r   z&test_own_namespace_1.<locals>.<lambda>w   s    q r   r%   皙?r   d   rK   r   r%   myfuncr   s     r   test_own_namespace_1r   v   sR    [FCFFUFO,,A1S66Q;;;;1S66Q;;;;;;r   c                      d } t          t          t          t                    d| i          } |d          dk    sJ  |d          dk    sJ d S )Nc                     dS r   r   r   s    r   r   z$test_own_namespace_2.<locals>.myfunc~   s    qr   r%   r   r   r   r   r   s     r   test_own_namespace_2r   }   sZ      CFFUFO,,A1S66Q;;;;1S66Q;;;;;;r   c            	         t          t          t          t                    t                    }  | d          dk    sJ t	          dd          \  }}}t          t          |t          ||z             z                       }t          |||g||gt                    }  | ddd	          }t          j        d          gd
z  }t          ||          D ] \  }}t          ||z
  |z            dk     sJ !d S )Nr           zp q rT)realmodulesr   g NgmCg Ngmr   V瞯<)	rK   r   r%   mathr   absr   rN   zip)	r   pqraeresultsrefvalsresrefs	            r   test_own_moduler      s    CFFD!!A1Q443;;;;gD)))GAq!	S?1Q3'''((	)	)B!QRHd333AaT5!!Gx}}oaG)) * *SCGS=!!E)))))* *r   c                  ^    t          t          d            t          t          d            d S )Nc                       t          d          S r   rJ   r   r   r   r   ztest_bad_args.<locals>.<lambda>   s    hqkk 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      s0    
9))***
9../////r   c                      t          t          t          t          z   ddi          }  | d          dk    sJ t          t          t          t          z   ddi          }  | d          dk    sJ d S )Nr   gQ	@r   r                 ?r   y      ?      ?)rK   r   r   r   r   s    r   
test_atomsr      sb    BFT4L))A1Q444<<<<AEC9%%A1Q446>>>>>>r   c                     dt           j        _        t          j        d          } t	          t
          t          t
                    d          } |t
                    t          t
                    k    sJ d}|  |t          dd                                                    t          t          |                     z
  cxk     r|k     sn J d S )N2   40.19866933079506121545941262711838975037020672954020sympyr   r      )mpmathmpdpsmpfrK   r   r%   r   evalfr   strsin02r   precs      r   test_sympy_lambdar      s    FIMJMNNECFFG$$A1Q443q66>>>>D511Xa^^$$**,,uSZZ/@/@@GGGG4GGGGGGGGr   c                     dt           j        _        t          j        d          } t	          t
          t          t
                    d          d}|  d          | z
  cxk     r|k     sn J t          t          fd           d S )Nr   r   r   r   皙?c                  $      t                     S Nr   r   s   r   r   z"test_math_lambda.<locals>.<lambda>       aadd r   )	r   r   r   r   rK   r   r%   r   r   )r   r   r   s     @r   test_math_lambdar      s    FIMJMNNECFFF##AD511S66E>((((D((((((
9llll#####r   c            	      N  	 dt           j        _        t          j        d          } t	          t
          t          t
                    d          	d}|  	t          j        d                    | z
  cxk     r|k     sn J t          t          	fd           t          j        d          t          j        d          d	z  z
  d
t          j        d          z  dz  z   dt          j        d          z  dz  z
  dt          j        d          z  dz  z   }t	          t
          t          ft
          t          z  dz
  d          }t	          t
          t          ft          t
          t                    d          }t	          t
          ft          t
          t          t
                    z            d          } |t          j        d          t          j        d          z   t          j        d                    } |t          j        d          t          j        d          z   t          j        d                    } |t          j        d                    }t          ||z
            dk     sJ t          ||z
            dk     sJ t          ||z
            dk     sJ d S )Nr   r   r   n5z0.2c                  $      t                     S r   r   r   s   r   r   z$test_mpmath_lambda.<locals>.<lambda>   r   r   z1e-30z1e-45r   r   z1e-60   r   z1e-75r   !   z1e-90(   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      sI   FIMJMNNECFFH%%AD511VZ&&''%/6666$666666
9llll### Jwj!!!#$
7###A%& 
7###A%& G$$$R'	(D Aq61a4!8X
.
.C
Aq65A;;
1
1C
A4qqz**H
5
5CC
3
7 3 33VZ5H5HIIEC
3
7 3 33VZ5H5HIIEC
7##$$Eut|u$$$$ut|u$$$$ut|u$$$$$$r   c                      dt           j        _        t          j        d          } t	          t
          | d          }d}|  |d          | z
  cxk     r|k     sn J d S )Nr   r   r   r   r   )r   r   r   r   rK   r   r   s      r   test_number_precisionr      sj    FIMJMNNEE8$$AD511Q44%<&&&&$&&&&&&&&r   c            	          dt           j        _        t           t	          dt          j        d          d                                t          t          j        d                    k    sJ d S )Nr   r   r   )r   r   r   r   rK   r   r   r   r   r   test_mpmath_precisionr     sW    FIM4xBHSMM84466773rx}};M;MMMMMMMr   c                      ddl m}  |                                 D ]%\  }}|t          j        v sJ |t
          j        v sJ &d S )Nr   )MATH_TRANSLATIONS)sympy.utilities.lambdifyr  itemsr   __dict__r   )r  symmats      r   test_math_translr	     sf    ::::::%++-- $ $Sen$$$$dm#####$ $r   c                      ddl m}  |                                 D ]+\  }}|t          j        v s|dk    sJ |t
          j        v sJ ,d S )Nr   )MPMATH_TRANSLATIONSre   )r  r  r  r   r  r   )r  r  r  s      r   test_mpmath_translr     sl    <<<<<<'--// & &Sen$$xfo%%%%%& &r   c                      t           st          d           ddlm}  |                                 D ]%\  }}|t
          j        v sJ |t           j        v sJ &d S )Nnumpy not installed.r   )NUMPY_TRANSLATIONS)rr   rl   r  r  r  r   r  )r  r  numps      r   test_numpy_translr     s}     %#$$$;;;;;;'--// & &	Ten$$$$u~%%%%%& &r   c                      t           st          d           ddlm}  |                                 D ]8\  }}|t
          j        v sJ |t           j        v s|t           j        j        v sJ 9d S )Nscipy not installed.r   )SCIPY_TRANSLATIONS)rs   rl   r  r  r  r   r  special)r  r  scips      r   test_scipy_translr    s     %#$$$;;;;;;'--// H H	Ten$$$$u~%%1G)G)G)G)GH Hr   c                      t           st          d           t          t          t	          t                    d          }  | d          dk    sJ  | d          dk    sJ d S )Nr  rr   r   r   )rr   rl   rK   r   r   r   s    r   test_numpy_translation_absr    s^     %#$$$CFFG$$A1R55A::::1Q441999999r   c                  \   t           st          d           ddlm}  d}t          t
          t          f}| j                                        D ]_}||v rt          |          }t          |d          r|j        d         }nd}|d |         }t          | || d          } |d	|z   J `d S )
Nnumexpr not installed.r   )NumExprPrinter)wherecomplexcontains_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888880IAq	I05577 
+ 
+)vv4"" 	KNEEE% T44;	:::q%+****
+ 
+r   c                  B   t           st          d           t          st          d           t          d          } t	          | j        d           \  }}t          ||f| t           gd          }t          j                            d          \  }} |||           d S )	Nr  r  zb*a - sqrt(a**2)c                     | j         S r   )name)ss    r   r   z!test_issue_9334.<locals>.<lambda>2  s    16 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<  ,  s     '%&&& %#$$$  D$#)9)9:::DAqQqE4'EJJJL|""6**HCLcr   c            	         t           st          d           t          t          t          t
          ft          t          t          dk    ft
          t          dk    f          t                     } t          t                    5   | ddd          dk    sJ t           | ddd                    dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   r   r      *   nan)
rw   rl   rK   r   r   r   r!   rn   RuntimeWarningr   )r9  s    r   test_issue_12984rB  8  s    '%&&&QqGY16{QBK%H%H'RRL		(	( 6 6|Ar2&&",,,,<<B++,,555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   4CC
Cc                      t          d          \  } }| |z   }t          | |g|          }t          | |g|g           } |dd           |dd          k    sJ  |dd          dk    sJ d S )Nzx yr   r      r   rK   )r   r   r6  
no_modulesempty_moduless        r   test_empty_modulesrI  A  s    5>>DAqU8D1a&$''JaVT2666M:a}}Q222222:ar!!!!!!r   c                     t          t          t          dz            }  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ d S )	Nr   r   r   r   r         @      @r   r   s    r   test_exponentiationrN  K  s    AqDA1R55A::::1Q44199991Q44199991R55A::::1Q44199991S66T>>>>>>r   c                     t          t          t          t                              }  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ t           | d          dz
            d	k     sJ  | d
          dk    sJ d S )Nr   r   r   r   r   r   r   g9v?gMbP?rM  rL  )rK   r   r    r   r   s    r   	test_sqrtrP  U  s    DGGA1Q443;;;;1Q443;;;;1Q443;;;;qqtte|u$$$$1T77c>>>>>>r   c                     t          t          gt          t                    t          t                    gd          }  | t                    }d}| |d         dz   cxk     r|k     sn J | |d         cxk     r|k     sn J  | d          }d}| |d         dz   cxk     r|k     sn J | |d         cxk     r|k     sn J d S )Nr   gdy=r   r   n!	@gh㈵>)rK   r   r#   r%   r   )r   dr   s      r   	test_trigrT  ^  s   !s1vvs1vv&//A	"AD51Q4!8""""d""""""51Q4$	'

AD51Q4!8""""d""""""51Q4$r   c            	      `   t           rt          st          d           t          t          t          t          dz                       } t          t          t           | t                    t          t          t          f                    } |t                     }d|cxk     rdk     sn J d S )Nr  r   giv[?gm[?)
rr   rs   rl   r   r   r   rK   r   r=   r   )r   lrS  s      r   test_integralrW  j  s     %U %#$$$q#q!te**AHQQqTTAq":..//A	2#A''''K''''''''r   c                  "   t           rt          st          d           t          ddt          dz  t
          dz  z  z
  z  t          ddft
          dt          f          } t          t          g|           } |d          }d|cxk     rdk     sn J d S )Nr  r   r   r   gX<?g<?)rr   rs   rl   r=   r   r   r   rK   )irV  rS  s      r   test_double_integralrZ  s  s     %U %#$$$A1QT	M"Q1I1ay99A!aA	!A''''K''''''''r   c                     t           rt          st          d           d} t          d          }t	          d|          }t           t          ||          |           |                    ||                                           z
            dk     sJ t          d|          }t           t          ||          |           |                    ||                                           z
            dk     sJ d S )Nr  g@r   r   g:0yE>)
rr   rs   rl   r   r,   r   rK   subsr   r-   )
test_pointr   jtestytests       r   test_spherical_besselr`  |  s    %U %#$$$JAq!HHE x%  ,,JJq$$**,,- . .045 5 5 5q!HHE x%  ,,JJq$$**,,- . .045 5 5 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	           d S )
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_simplerc    sv    !QQ1I&&A1Q1::""""1S#s....
9llll#####r   c                       t          t          dt          z  dt          z  f           t          t           fd             d          dk    sJ   d          dk    sJ   d          dk    sJ d S )	Nr   r   c                        d          S r   r   r   s   r   r   z+test_vector_discontinuous.<locals>.<lambda>  s    aadd r   )g      r   r   )            ?rK  )rg  rf  )rK   r   r   ZeroDivisionErrorr   s   @r   test_vector_discontinuousri    s    RT1Q3K  A
llll+++1Q44;1Q44;1R55Kr   c                     t          t          gt          t                    t          t                    gd          }  | t                    }t          |d         dz             dk     sJ t          |d         dz
            dk     sJ d S )Nr   r   r   -C6?)rK   r   r#   r%   r   r   r   rS  s     r   test_trig_symbolicrm    sw    !s1vvs1vv&//A	"Aqtax==6!!!!qtax==6!!!!!!r   c                     t          t          gt          t                    t          t                    g          }  | d          }t	          |d         dz             dk     sJ t	          |d         dz
            dk     sJ d S )NrR  r   r   rk  )rK   r   r#   r%   r   rl  s     r   test_trig_floatro    su    !s1vvs1vv&''A	'

Aqtax==6!!!!qtax==6!!!!!!r   c                     t          t          t          dz            }  | d          dk    sJ t          t          t          t          gt          t          t          g          }  | ddd          g dk    sJ t          t          t	          t                              }  | d          dk    sJ t          t          t          ft          t          t          z            dz            }  | dd          dk    sJ d S )	Nr   r   r   r   r   r   r   r   r   r   )rK   r   r   r   r    r%   r   s    r   	test_docsrr    s    AqDA1Q4419999!QQ1I&&A1Q1::""""DGGA1Q443;;;;!QQqS1%%A1Q77a<<<<<<r   c                      t          t          t          ft          t                    d          }  | dd          dk    sJ d S )Nr   r   r   r   )rK   r   r   r%   r   s    r   	test_mathrt    s;    !QQ000A1Q77a<<<<<<r   c                  2   t          t          t          t                    dz            } t           | d          t                    sJ t          t          t          t                    dz  d          } t           | d          t                    sJ d S )Nr   r   r   )rK   r   r%   
isinstancefloatr   s    r   test_sinrx    s{    CFFAIAaaddE"""""CFFAIv...AaaddE"""""""r   c                  @   t          t          t          t          z  gt          t                    dz   t          t          z  gg          } t          ddgt          d          dz   dgg          }t          t          t          t          f| d          } |ddd          |k    sJ t          t          t          t          f| | gfd          } |ddd          ||gfk    sJ t          t          t          t          z   f                              t          t          f          }t          t          t          f          }t          ddgddgg          } t          ||d          dd          |k    sJ  t          |j        |d          dd          |k    sJ d S )Nr   r   r   r   r   r   r   )re   r   r   r%   r   rK   jacobianT)Asolr   Jvs        r   test_matrixr    s}   AaC3q66A:q!t,-..A
1a&3q66A:q/*
+
+C!QAw///A1Q1::!QQHg666A1Q1::#u%%%%1q5z##QF++A1vA
1a&1a&!
"
"C*8Aq'***1a00C7777,8ACG,,,Q22c999999r   c                  b  	
 t           st          d           t          t          t          t          z  gt          t                    dz   t          t          z  gg          } t                               ddgt                               d          dz   dgg          }t          t          t          t          f| dg          }t           j	        
                     |ddd          |           t           |ddd          t           j                  sJ  G d dt                    } |t          t          dgdgd	gg                    
t          t          
          }t                               d
          t                                |          d	k              sJ dddd}t!          t#          ddddii|          }t          t          
|          }t                                |          d	k              sJ t!          |          	t%          t&          	
fd           d S )Nr  r   r   r   r   rr   c                       e Zd ZdS )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                  D     t          t                               S )Nr  r   )inpp3	x_dot_mtxs   r   r   z#test_numpy_matrix.<locals>.<lambda>  s!    @hq)R@@@EE r   r   )rr   rl   re   r   r   r%   r   arrayrK   testingassert_allcloserv  ndarrayr   zerosallri   dictr   	Exception)r|  sol_arrr   r  f_dot1	strict_kwp2f_dot2r  r  r  s           @@@r   test_numpy_matrixr    s    %#$$$AaC3q66A:q!t,-..AkkAq6EIIaLL1$4a#89::G!QAy))A	M!!!!Aq!**g666aa1ajj%-00000    h   AvsQC!o..//Ia##F
++g

C99VVC[[A%&&&&&,1T^cddI	dFF5%.FIFF	G	GBaB///F99VVC[[A%&&&&&	i	 	 B
9EEEEEEFFFFFr   c                  ,   t           st          d           t          dt          gddgg          } t	          t          | j        d          }t           j                             |d          t                               ddgddgg                     d S )Nr  r   r   rr   r   r   )	rr   rl   re   r   rK   r{  r  assert_array_equalr  r|  r   s     r   test_numpy_transposer    s     %#$$$AA  A!ac7+++A	M$$QQqTT5;;AA7G+H+HIIIIIr   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rC |ddd          cxk    r1 |ddd          cxk    rt           	                    dg          k    sn J d S )Nnumpy not installedrr   r   r   r   r      )
rr   rl   re   r   r   r   rK   rD   r{  r  r|  r   r   r   f4s        r   test_numpy_dotproductr    sw    $"###1ayA	1a)Z1--w	?	?	?B	1a)Z13//	A	A	AB	1a)ZQ//	A	A	AB	1a)Z13//	A	A	AB2aA;;2aA;;   2aA;;    2aA;;    ;;t	       r   c                  (   t           st          d           t          dt          gddgg          } t	          t          | dz  d          }t           j                             |d          t                               ddgddgg                     d S )	Nr  r   r   r   rr   r   r   rK  )rr   rl   re   r   rK   r  r  r  r  s     r   test_numpy_inverser    s     %#$$$AA  A!aeW---A	M$$QQqTT5;;B!a7I+J+JKKKKKr   c                     t           st          d           t          t          t          t          z  gt          t                    dz   t          t          z  gg          } t                               ddgt                               d          dz   dgg          }t          t          t          t          f| dt           j	        idg          }t          t                    5  t           j                             |ddd          |           t           |ddd          t           j	                  sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   r   r   r   ImmutableDenseMatrixrr   )rr   rl   re   r   r   r%   r   r  rK   matrixrn   PendingDeprecationWarningr  r  rv  )r|  r  r   s      r   test_numpy_old_matrixr    sV    %#$$$AaC3q66A:q!t,-..AkkAq6EIIaLL1$4a#89::G!QA!7 FPQQA	2	3	3 4 4%%aa1ajj':::!!Aq!**el3333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s    AEEEc                     t           st          d           t          t          dgdt          gg          } t          t          t          f| d          } |dd          }t          |t           j        j                  sJ d S )Nr  r   rs   r   r   r   )	rs   rl   rg   r   r   rK   rv  ru   
coo_matrix)r|  r   Bs      r   test_scipy_sparse_matrixr    s{     %#$$$q!fq!f%&&A!QG,,,A	!QAa01111111r   c            	         t           st          d           t          dt          z  t          dk     ft          t          dk     fdt          z  df          } t          t          t          g| d          }t                               d          5  t           |t                               d	          t                               d
                              d	k    sJ t           |t                               d	          t                               d                              t          d          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   r   Trr   r   ignore)divider   rg  inf)	rr   rl   r!   r   r   rK   errstaterw  r  )r   r   s     r    test_python_div_zero_issue_11306r     sg    %#$$$1q5!b&/Aq1u:At}==A!QG,,,A	x	(	( H HQQu{{1~~u{{3'7'78899Q>>>>QQu{{1~~u{{1~~66775<<GGGGGH H H H H H H H H H H H H H H H H Hs   B,EEEc                  ~   d dg} t           r|                     d           t          r|                     d           | D ]}t          t          t
          j        t          z  |          } |d          dk    sJ t          t          t          t
          j        t          z            |          } |d          dk    sJ t          t          t          g|           D ]]\  }}t          t           |t                    |          } |d          d	k    sJ  |d	          d	k    sJ  |d
          dk    sJ ^d S )Nr   rr   r   r   r   rg  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---qtts{{{{QaeAg444qttqyyyyy#S#J55  Q

G444quuzzzzqttqyyyyqww!|||||	 r   c                  ~   t           st          d           t          st          d           t          t          dz  t
          dz  z             } t          d| z  t                    }t                              ddd          x}}t                              d          dz   |d	z  z  } t          t          t
          f|d
          ||          } t          t          t
          f|d          ||          }t          j	        
                    ||d           t          j	        
                    ||d           d S )Nr  r  r   r   r      r   rE  rK  rr   r   rw   绽|=)rtol)rw   rl   rr   r    r   r   r	   linspacerK   r  r  )r   r6  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666r2>>H:1a&$	:::2rBBJ	M!!(H5!AAA	M!!*hU!CCCCCr   c            	         t           st          d           t          t          t          dk     ft          dz  t          dk    fd          } t	          t          | d          }t           j                             |t                               d                    t                               g d	                     t	          t          t          t          t          d
k    ft           t          d
k     f                    }t           j                             |t                               g d                    t                               dt           j	        dg                     d S )Nr  r   r   r   )r   Trr   r   r   )
r   r   r   r   r   r   $   1   @   Q   r   r   r   r   r   )
rr   rl   r!   r   rK   r  r  aranger  r@  )piecesr   
nodef_funcs      r   test_numpy_piecewiser  P  s'    %#$$$1q5zAqD!a%=)<<FFG,,,A	M$$QQu||B'7'7%8%8%*[[1S1S1S%T%TV V V !Y1q5zQBA;??@@J	M$$ZZJJJ0G0G%H%H%*[[!UY1B%C%CE E E E Er   c                     t           st          d           t          t          t          ft          t          t                    d          } t          t          t          t          ft          t          t          t                    d          }t          t          t          ft          t          t                    d          }t          t          t          t          ft          t          t          t                    d          }t          t          t          t                    d          }t           	                    ddg          }t           	                    ddg          }t           	                    ddg          }t           j
                             | ||          t           	                    ddg                     t           j
                             ||||          t           	                    ddg                     t           j
                             |||          t           	                    ddg                     t           j
                             ||||          t           	                    ddg                     t           j
                             ||          t           	                    ddg                     d S )Nr  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CCCJ1vr!Qxx999G!QBq!QKKAAAISVVW555H;;d|$$D;;t}%%D;;e}%%D	M$$XXdD%9%95;;t};U;UVVV	M$$ZZdD%A%A5;;PUW\~C^C^___	M$$WWT4%8%8%++tTl:S:STTT	M$$YYtT4%@%@%++tUYlB[B[\\\	M$$XXd^^U[[$5O5OPPPPPr   c                  4   t           st          d           t          t          t          gt
          dt
          z   gg          } t          t          dz  gt          t                    gg          }t          t          t          t
          f| |z  d          }t           j        	                     |ddd          t           
                    d	gd
gg                     t           j        	                     |ddd          t           
                    dgd
gg                     t          t          t          t
          f| | z  | z  d          }t           j        	                     |ddd          t           
                    ddgddgg                     d S )Nr  r   r   rr   r   rg  r   r   g      ?      @rf  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  so    %#$$$Aq6Aqs8$%%DAqD6CFF8$%%DAq	49g>>>H	M$$XXc1a%8%8%++wQTPUFV:W:WXXX	M$$XXdAq%9%95;;RUQVGW;X;XYYY!QDIdNG<<<A	M$$QQsAq\\5;;@PADc
@L 4M 4M N N N N Nr   c            	         t           st          d           t          st          d           t           j                            ddd          \  } }}t          t                    t          t                    z   t          t                    dz  z   t          t          t          z
            t          t          t          t          z                      z  z   t          t          t          z
            t          dt          t          t          z
            z             z  z   t          t          dz  t           t          dz  z  z             z
  }t#          t          t          t          f|d          }t#          t          t          t          f|d          }t                                || ||           || ||                    sJ d S )	Nr  r  r      r   rr   r   rw   )rr   rl   rw   r5  randnr%   r   r#   r   r'   r   r   r"   r   r   r    r   rK   allclose)r7  r8  cr6  npfuncnefuncs         r   test_numpy_numexprr  }  sP    %#$$$ '%&&&l  C--GAq!q66CFF?SVVQY&QqS$s1Q3xx..)@@qs88E!C!HH*%%%&'+AqD1a4K'8'89Dq!Qiw777Fq!Qiy999F>>&&Aq//66!Q??;;;;;;;r   c                     t           st          d           t          st          d           t           j                            dd          \  } }t          dt          fdt          d           i          }t          t          d |t                    z
  d	
          }t           
                     ||           | dz             sJ t          t          d          d           }t          t          t          f |t          t                    d	
          }t           
                     || |          d| z  |z  dz             sJ d S )Nr  r  r   r   ufevalc                     |dz  dz   S r   r   r   r   s     r   r   z,test_numexpr_userfunctions.<locals>.<lambda>  s    !Q$q& r   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   r5  r  typer   classmethodrK   r   r  rj   r   )r7  r8  r  funcs       r   test_numexpr_userfunctionsr    s-    %#$$$ '%&&&<a$$DAq	dXL$8$899:
< 
<BAqAw	222D>>$$q''QT7+++++	htnn.C.C	D	DBQFBBq!HHi888D>>$$q!**ac!eAg.......r   c                     t           st          d           t          t          t                    t          dt          dz   z                      } t          t          | d          }t           j        j        	                                5 }t           
                    dt           j                  } ||                              |          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Ntensorflow not installed.r   r   rx   r   r   dtypesessionrg  )rx   rl   r   r%   r   r   rK   compatv1Sessionconstantfloat32r  r6  r  r/  r7  s       r   test_tensorflow_basic_mathr    s    *()))s1vvs1ac7||$$DAt\222D				%	%	'	' .1);<<tAww||A|&&#-----. . . . . . . . . . . . . . . . . .s   AC%%C),C)c                     t           st          d           t          t          t                    t          dt          dz   z                      } t          t          | d          }t           j        j        	                                5 }t           j        j        
                    t           j                  } ||                              ||di          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr  r   r   rx   r   r  r   r   	feed_dictrg  )rx   rl   r   r%   r   r   rK   r  r  r  placeholderr  r  r  s       r   test_tensorflow_placeholdersr    s+    *()))s1vvs1ac7||$$DAt\222D				%	%	'	' @1 ,,:3E,FFtAww||A!Q|88C?????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AC11C58C5c                     t           st          d           t          t          t                    t          dt          dz   z                      } t          t          | d          }t           j        j        	                                5 }t           
                    dt           j                  }|                    |j                    ||                              ||di          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr  r   r   rx   r   r   r  r	  rg  )rx   rl   r   r%   r   r   rK   r  r  r  Variabler  runinitializerr  r  s       r   test_tensorflow_variablesr    s;    *()))s1vvs1ac7||$$DAt\222D				%	%	'	' @1);<<	amtAww||A!Q|88C?????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   A)DD	Dc                     t           st          d           t          t          t	          t
          t                    t                              } t          t
          t          g| d          }t           j        j	        
                                5 } |dd                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  rx   r   FTr  )rx   rl   rA   r>   rB   r   r   rK   r  r  r  r  r6  r  r/  s      r   "test_tensorflow_logical_operationsr    s     *()))s2a88Q  DQFD,777D				%	%	'	' :1tE4  %%a%00E99999: : : : : : : : : : : : : : : : : :s   'CCCc                  0   t           st          d           t          dt          t          d          fdt          dk     fdt          dk    f          } t          t          | d          }t           j        j                                        5 } |d          	                    |          dk    sJ  |d          	                    |          dk    sJ  |d          	                    |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   r   r   rx   r   r  )
rx   rl   r!   r   r   rK   r  r  r  r  r  s      r   test_tensorflow_piecewiser    sK    *()))aAa\BA;AE
;;DAt\222D				%	%	'	' ,1tBxx}}Q}''2----tAww||A|&&!++++tAww||A|&&!+++++, , , , , , , , , , , , , , , , , ,s   A0DDDc                  l   t           st          d           t          t          t           t          dz            } t	          t          | d          }t           j        j                                        5 } |d                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rx   r   rK  r  r   )	rx   rl   r   r   rK   r  r  r  r  r  s      r   test_tensorflow_multi_maxr    s     *()))q1"adDAt\222D				%	%	'	' -1tBxx}}Q}''1,,,,,- - - - - - - - - - - - - - - - - -   5&B))B-0B-c                  l   t           st          d           t          t          t           t          dz            } t	          t          | d          }t           j        j                                        5 } |d                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rx   r   rK  r  )	rx   rl   r   r   rK   r  r  r  r  r  s      r   test_tensorflow_multi_minr    s     *()))q1"adDAt\222D				%	%	'	' .1tBxx}}Q}''2-----. . . . . . . . . . . . . . . . . .r  c                  :   t           st          d           t          dk    } t          t          | d          }t           j        j                                        5 } |d                              |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r   rx   r   r   r  T)rx   rl   r   rK   r  r  r  r  r  s      r   test_tensorflow_relationalr    s     *()))6DAt\222D				%	%	'	' /1tAww||A|&&$...../ / / / / / / / / / / / / / / / / /s   &BBBc                     t           st          d           t          t          t	          t                    d          } t          t          t          t                    d          }t          t          t          t                    d          }t          t          t          t                    d          }t           j        j	        
                                5 }t                               d          } | |                              |          dk    sJ  ||                              |          dk    sJ  ||                              |          }t          d                                          }t          ||z
            dk     sJ  ||                              |          }t          d                                          }t          ||z
            dk     sJ 	 d d d            d S # 1 swxY w Y   d S )	Nztensorflow not 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func4r/  r7  tensorflow_resultsympy_results           r   test_tensorflow_complexesr%    s    )'(((Q1|444EQ1|444EQA555EQA555E				%	%	'	' <1 %%uQxx}}Q}''1,,,,uQxx}}Q}''1,,,,!E!HHMM!M446{{((**$\122V;;;;!E!HHMM!M446{{((**$\122V;;;;;< < < < < < < < < < < < < < < < < <s   DHHHc                     t           st          d           t          t          t          ggt          t          z  t          z   d          } t           j        j                                        5 } | t                               ddg                    }|	                    |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  rx   r   r   r  g      @)
rx   rl   rK   r   r   r  r  r  r  r  )r   r/  fcalls      r   test_tensorflow_array_argr(    s     *()))1a&1Q37L11A				%	%	'	' ,1*%%sCj1122zz!z$$+++++, , , , , , , , , , , , , , , , , ,s   -AB==CCc                      t          t          t          t          z            }  | t                    t          t          z  k    sJ d S r   rK   r   r   r   r   s    r   test_sym_single_argr+    s2    AEA1Q441q5======r   c                      t          t          t          gt          t          z   t          z             }  | dd          dt          z   k    sJ d S r   r*  r   s    r   test_sym_list_argsr-    sB    !QQ##A1Q77a!er   c            	         t          t          t          t          dz                       } t          t          t	           | t                    t          t
           t
          f          d          } |t                    t	          t          t          dz             t          t
           t
          f          k    sJ  |t                                                    t          t                    k    sJ d S )Nr   r   r   )
r   r   r   rK   r=   r   r   doitr    r   )r   rV  s     r   test_sym_integralr0  $  s    q#q!te**AHQQqTTAsB<00'BBBA1Q448CAJJRC5555551Q4499;;$r((""""""r   c                  p   dd i} d d d}t          j        d          }t          j        d          }t          t           |t                    | df          } |d	          d
k    sJ t          t           |t                    |df          } |d	          d
k    sJ  |d	          dk    sJ d S )Nr   c                     dS )Nfirst fr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>2  s     r   c                     dS )Nzsecond fr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>3  s     r   c                     dS )N
function gr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>4  s     r   )r   gr7  r   r   r   r3  r6  )r   r   rK   r   )n1n2r   r7  if1if2s         r   test_namespace_orderr<  +  s     ""	#B##%%
' 
'BsAsA
1aaddRM
2
2
2C3q66Y
1aaddRM
2
2
2C3q66Y3q66\!!!!!!r   c                     t          dd           t          dd           } t          t           t                              }t          t           | t                              }t           t                              t           | t                              k    sJ  |d          dk    sJ  |d          t	          j        d          k    sJ t          j        d          }t          |d          rJ t          |d           }t          |d          sJ t          dd	           t          t          fd
           d S )Nr   c                     d| z  S Nr   r   r   s    r   r   ztest_imps.<locals>.<lambda>C  s
    AaC r   c                 *    t          j        |           S r   )r   r    r   s    r   r   ztest_imps.<locals>.<lambda>D  s    DIaLL 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                  \    t          t             t                                        S r   r   )r   r   s   r   r   ztest_imps.<locals>.<lambda>Q  s!    x11RRUU8844 r   )rj   rK   r   r   r   r    r   r   r%  r   
ValueError)r7  l1l2r  my_fr   r   s        @@r   	test_impsrJ  @  s=    	S--00AS"8"899A	!QQqTT		B	!QQqTT		Bqqtt99AAaDD		!!!!2a55A::::2a55DIaLL    >(##DtW%%%%%mm44D4!!!!!	c#4#4	5	5B
:4444455555r   c                      t          dt          t          f          D ]6\  } fd}t          d|          } ||           }| ||           k    sJ 7d S )N)r   r   r   r   c                     | dk    rdS )Nr   r   r   )r7  error_classs    r   r   z test_imps_errors.<locals>.myfunc^  s    Avv!!1r   r   )r   r   rF  rj   )valr   r   r6  rM  s       @r   test_imps_errorsrO  T  s     $Oi5LMM 	 	[	 	 	 	 	
 !f--qvvqqvv~~~~~	 	r   c                  2    t          t          d            d S )Nc                  .    t          t          d           S )Nc                     | S r   r   r   s    r   r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>i  s    1 r   )rj   r%   r   r   r   r   z&test_imps_wrong_args.<locals>.<lambda>i  s    3CEE r   )r   rF  r   r   r   test_imps_wrong_argsrS  h  s    
:EEFFFFFr   c                     t           j        }  t          t           | t                              d          dk    sJ  t          t          d | t                    z             d          dk    sJ  t          t          t          ft           | t                    z             dd          dk    sJ t          dd           }  t          t           | t                              d          dk    sJ  t          t          d | t                    z             d          dk    sJ  t          t          t          ft           | t                    z             dd          dk    sJ t          t           | t                    t          f          } |d          d	k    sJ t          t           | t                    t          g          } |d          d
dgk    sJ t          t           | t                     | t                    t          fg          } |d          d
d	gk    sJ t          t           | t                    t          i          } |d          d
dik    sJ t          t           | t                    t          i          } |d          d
dik    sJ t          t          t           | t                    i          } |d          dd
ik    sJ dd i}t          t           | t                    |          } |d          d
k    sJ t          t           | t                    |d          } |d          dk    sJ d S )Nr   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   rD  r   )g   r   rV  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   lamrS  s      r   test_lambdify_impsr\  l  s    		A8AqqttQ1$$$$ 8Aq11Q44x  ##q((((%8QFA!H%%a++q0000S"3"344A8AqqttQ3&&&& 8Aq11Q44x  ##s****%8QFA!H%%a++s2222
1qqttQi
 
 C3q66X
1qqttQi
 
 C3q66c1X
1qqttaaddAY'
(
(C3q66c8_$$$$
1qqttQi
 
 C3q66c1X
1qqttQi
 
 C3q66c1X
1q!!A$$i
 
 C3q66aX	A
1aaddA

C3q66S====
1aaddA
.
.
.C3q66S======r   c                     t          d          t          d          t          d          t          d          } d           dz  z             z  }t                                f|          } |dd          dk    sJ t          t                    dt                    dz  z            } |                     d           dz  z  k    sJ t          | fd| z  z             } |dd          d	k    sJ t	          t
          fd
           t	          t
          fd           t	          t
          fd           d S )NtFGz\alphar   r   	   r   r   c                  ~    t                                 z                         z  dz             S )Nr   rJ   )r_  r`  r^  s   r   r   z$test_dummification.<locals>.<lambda>  s=    1!aaddQQqTTkAo F F r   c                  Z    t          d            z  d            z  dz             S )Nr   r   rJ   r_  r^  s   r   r   z$test_dummification.<locals>.<lambda>  -    QQqTT1qqtt8a< @ @ r   c                  Z    t          d            z  d            z  dz             S )Nr   r   r   rJ   rd  s   r   r   z$test_dummification.<locals>.<lambda>  re  r   )r   r   rK   r%   r   SyntaxError)alpha	some_exprr[  r_  r`  r^  s      @@@r   test_dummificationrj    sw   AAA IEAAaDD!Gaadd"I
AAaDD!!A$$<
+
+C3q!99>>>>
3q661s1vvqy=
)
)C3qqtt99AAaDD!G####
E1:qw{
+
+C3q!99>>>>
;FFFFFFGGG
;@@@@@AAA
;@@@@@AAAAAr   c                      t          d          } |                                 \  }}}||z   }t          ||g|          } |dd          }d}t          ||z
            dk     sJ d S )NNr   333333?rg  r   )rM   base_scalarsrK   r   )rl  r  r-   znr6  r   r   r   s           r   8test_lambdify__arguments_with_invalid_python_identifiersrp    ss    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 d S )Nz{v}r   r   Tr1  )r   rf   rK   )curlyvr[  s     r   test_curly_matrix_symbolrt    sg    q!,,F
66
"
"C3q6619999
664
0
0
0C3q661999999r   c                  p    t          d          } | dz  }t          | |          } |d          dk    sJ d S )Nifr         @r   rF  )	python_ifr6  r   s      r   test_python_keywordsry    s@     Iq=DD!!A1S66S======r   c                     t          t          t          t          t          ft          t          z   t          z   t          z             } d                                }| j                                        d t          |                   |k    sJ t          d          }t          |t          |                    } d                                }| j                                        d t          |                   |k    sJ d S )NzOCreated with lambdify. Signature:

func(w, x, y, z)

Expression:

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

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

Expression:

a1 + a10 + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a2 + a20 +...)
rK   r   r   r   r   
splitlines__doc__lenr   sum)r  r   symss      r   test_lambdify_docstringr    s    Q1aL!a%!)a-00D	 jll  <""$$Yc#hhY/366667DD#d))$$D	Y
 jll  <""$$Yc#hhY/3666666r   c                     ddl m fd} t          t          d          t          d          z             t          j        z   }t          d|d|           }t          d|d          }t          d|d                       }t          t          j        d	d                    }t           |            |          sJ t           |            |          sJ t           |            |          sJ  t          t          t          t                    d          d
          } t          t          t          t                    d          d          } t          t          t          t                    d          d          }|||g}	t          j        d
          }
t          j        d          }t          j        d          }|
||g}|	|k    sJ d S )Nr   )IntervalPrinterc                 >                                      |           S r   )doprint)r6  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   mpirv  r   r;   )r  r6  func0r  r   r  exp1rQ   exp3exp_lssol1sol2sol3sol_lsr  s                 @r   test_special_printersr    s   999999/ / / / / Q$q''!""QV+DRxFFFERxIIIERx9J9JKKKE
vz!Q
 
 Ceeggs#####eeggs#####eeggs##### .8Ax{{H--a00D-8Ax{{H--c22D-8Ax{{H--b11DD$F?1D?3D?2DD$FVr   c                       t          g t                                du sJ  t          g t                                du sJ d S )NTF)rK   rC   r?   r   r   r   test_true_falser    sN    8B4''''8B  E))))))r   c                      t          t          t          t          fft          t          z             dd          dk    sJ  t          t          t          t          t          ffft          t          z   t          z   t          z             dd          dk    sJ  t          t          t          dz   d          d          dk    sJ d S )	Nr   r2  r   )r   )r   r   r   Frr  r   )rK   r   r   r   r   r   r   r   test_issue_2790r    s    '8QAKQ''622a777748QQF$a!eai!m44QDDJJJJ,8Aq1ue,,,Q//1444444r   c                      t          dd           }  |  | d                                                    t          d          k    sJ d S )Nr   c                     | dz  S 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    sH    S..11A1QQqTT77==??eBii''''''r   c                       G d dt           j                  }  | d          }d|z  }t                                          |          }|                    dd          dk    sJ d S )Nc                       e Zd Zd ZeZeZdS )"test_issue_14911.<locals>.Variablec                 6    |                     | j                  S r   )r  r.  )selfr  s     r   	_sympystrz,test_issue_14911.<locals>.Variable._sympystr  s    ??49---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  
  s        5<    	A	AA??""1%%D<<R  E))))))r   c            	      J    t          t          t          t          ft	          t          t          t                              ddd          dk    sJ  t          t          t          t          ft	          t          t          t                              ddd          dk    sJ d S )NTr   r   F)rK   r   r   r   r@   r   r   r   test_ITEr    sz    ,8Q1Is1a||,,T1a88A====,8Q1Is1a||,,UAq99Q>>>>>>r   c            	      J    t          t          t          t          ft	          t          t          t                              ddd          dk    sJ  t          t          t          t          ft          t          t          t                              ddd          dk    sJ d S r   )rK   r   r   r   r   r   r   r   r   test_Min_Maxr    sz    ,8Q1Is1a||,,Q155::::,8Q1Is1a||,,Q155::::::r   c                  T   t           st          d           t          d          } t          d          \  }}t                               ddgddgg          } t          | t          | t          t          f         t          ddft          ddf                    |          d	k    sJ d S )
Nr  r7  zi jr   r   r   r   r   r   )	rr   rl   rI   r   r  rK   r   r   r   )r7  rY  jr8  s       r   test_Indexedr  #  s     $"###CA5>>DAqaVaV$%%A:8As1QT7Q1I1ay99::1==CCCCCCr   c                      t          t          t          ft          t          t                    d          dd          }  t          t          t          ft	          t          t                    d          dd          }| t          dd                                          k    sJ |t	          dd                                          k    sJ d S )Nr   r   r   )rK   r   r   rp   rq   r   )expr1expr2s     r   test_issue_12173r  .  s    7HaVZ1--h771==E7HaVZ1--h771==EJq!$$**,,,,,,Jq!$$**,,,,,,,,r   c                      t           st          d           t          t          t	          t                              } t           | d          t	          d          z
                                            dk     sJ d S )Nr  r   r   )rr   rl   rK   r   r&   r   nr   s    r   test_issue_13642r  6  sk     $"###DGGAqqttd1gg~  ""U******r   c                      t          t          t          t                    d          } t           | d          t          d          z
                                            dk     sJ d S )Nr   r   r   )rK   r   r&   r   r  r   s    r   test_sinc_mpmathr  =  sV    DGGX&&Aqqttd1gg~  ""U******r   c                  j   t                      } t          | | dz   d          } |d          dk    sJ t          | | dz             } |d          dk    sJ t          d          }t          ||dz             } |d          dk    sJ t          |gg|dz             } |dg          dk    sJ d S )Nr   Frr  r   r   r   r   rK   )d1r   f1bd2r   r   s         r   test_lambdify_dummy_argr  B  s    	B	"b1fe	,	,	,B2a55A::::
2rAv

C3q66Q;;;;	sB	"b1f		B2a55A::::	B4&"q&	!	!B2qc77a<<<<<<r   c                      t                      } t          t          |                     }t          | |g| |z
            } |dd          dk    sJ d S )Nr   r   r   )r   r   r   rK   )rS  dsymr   s      r   %test_lambdify_mixed_symbol_dummy_argsr  O  sN    A3q66??D!TAH%%A1Q77a<<<<<<r   c                      t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    dk    sJ d S )Nr  rr   r   r   r   )rr   rl   rK   r   r   r  r   s    r   test_numpy_array_argr  W  si     $"###1a&1Q37G,,A1U[[#s$$%%******r   c            	      	   t           st          d           t          t          t          t
          t          t          t          t          t          g	} t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        g	}t           j                            d           t'          | |          D ]\  }}t)          t*           |t*                    d          }t-          d          D ]~}t           j                            dd          dt           j                            d	d
          z  z   }|t
          k    rt                               |          }|t          k    rt                               |          }|t          k    rt                               |          } ||                                          } ||          }|t          k    r ||          d         }|t          k    r ||          d         }t1           ||          |z
            ddt1          |          z   z  k     sJ t1           ||          |z
            ddt1          |          z   z  k     sJ t6          t8          t:          t<          t>          t@          g}	t           j        j!        t           j        j"        t           j        j#        t           j        j$        t           j        j%        t           j        j         g}
t'          |	|
          D ]\  }}t)          t*          tL          f |t*          tL                    d          }t-          d          D ]J}t           j                            dd          }t           j                            dd          dt           j                            d	d
          z  z   }|t6          t@          fv rt                               |          }|t@          k    rt1          tO          |                    } |||                                          }t1           |||          |z
            ddt1          |          z   z  k     sJ t1           |||           |||          z
            ddt1          |          z   z  k     sJ Ld S )Nscipy not installedr   rs   r      r   r   r   r   gvIh%<=)(rs   rl   r2   r3   r4   r   r:   r;   r9   r7   r8   r  expigammalnpsisicirr   r5  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   rY  tvr$  scipy_resultdouble_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2s                r   test_scipy_fnsr  a  s)    $"###T9eXwPRTVW!M.0A5=CU!4em6K!M-u}/A5=CUW 
La #$8:N O O M M8QW555r 	M 	MA%%c2..EL4H4HQ4O4O1OOB 9$$YYr]] 8##YYr]] 7""ZZ^^#8B<<--//L#8B<<L 2~~'x||A2~~'x||Aqquu|+,,ua#l:K:K6K/LLLLLqquu|+,,ua#l:K:K6K/LLLLLL1	M4 ,Wgw#Y0!M.0@!M,em.>@PRWR_Rik #$8:N O O Y Y8aVXXa^^W===r 	Y 	YA,&&sB//C,&&sB//"U\5I5I"a5P5P2PPCOY777jjoo9$$#c((mm#8C--3355Lqqc{{\122UAL@Q@Q<Q5RRRRRqqc{{XXc3%7%77885!c,FWFWBW;XXXXXX	YY Yr   c                  X   t           st          d           t          j                            d           t          d          } t          dft          dft          dft          dft          dft          dft          dft          dft          dfg	}d}|D ]\  }}| d |         t          fz   }t!          | ||           }t#          d          D ]}t          j                            dd          }t'          t          j                            dd	|dz
  
                    }	t          j                            dd          dt          j                            dd	          z  z   }
|t          k    rt                              |
          }
|t          k    rOt          j                            dd          }
t'          t          j                            d|d
                    }	|f|	z   |
fz   } || } ||                                 }ddt/          |          z   z  }t/          ||z
            }	 ||k     sJ p# t0          $ r] t3          |                    t7          |          t7          |          t7          |          t7          |          ||                    w xY wd S )Nr  r   zn k a 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   r5  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    $"###	LaYF 
Q	Q	1	!	1	Q			
E	0  !&  *kzk"aT)T88T?++r 	 	A%%a,,BEL00AJqL0IIJJG%%c2..EL4H4HQ4O4O1OOB7""ZZ^^>))\))"a00 4 4Q 4 C CDD57?bU*D1d8L#8T?0022LS.../D|l233Dd{{{{{ 	 	 	$JJ!(^^!$ZZ%),%7%7%),%7%7!   " "  	'	 s   4H>>A'J%c                  p    t          t          t          dz            } dt          j        |           v sJ d S )Nr   zx**2)rK   r   inspect	getsourcer   s    r   test_lambdify_inspectr    s9    AqDA W&q))))))))r   c                  v   t                      t                      }} t          | |g| d|did          } |dd          dddk    sJ t          | |g|| fd          } |dd          dk    sJ t          g d          } |            dk    sJ t          | |g|| gd          } |dd          ddgk    sJ d S )Nr   r   r   )r   r   )r   r   r!  r  )r   r   r   r   r   r   s         r   test_issue_14941r    s    77EGGqA 
1a&1aA,	0	0B2a881||#### 
1a&1a&'	*	*B2a88v
2t

C355D==== 
1a&1a&'	*	*B2a881vr   c                       t          d          t                                                       t           f z             dd          dk    sJ  t	          t           f z                      dd          dk    sJ t          t           fd            t	          t           f z  d                    dd          dk    sJ  t	          t           f z  d                    t          d          d          t          j	        k    sJ  t          d	z             d
          dk    sJ  t	          t          d	z   d                    d
          dk    sJ d S )Nr   r   r   r  r   c                  L    t          t           f z  d                    S )NFrr  )r  rk   r   fxs   r   r   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>  s*    Y2w"e44455 r   Trr  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1)4	1b'1R4(())"a00A5555
9 6 6 6 6 6 7 7 774	1b'1R466677A>>!CCCC74	2q'1R466677"qAAQVKKKK8BB##r))))44	"a"fd33344R88B>>>>>>r   c                     t          t          gt          j        t                              } d} | |          |j        k    sJ t          t          gt          j        t                              } ||          |j        k    sJ d S )Ny      @       @)rK   r   r   rY   r   rZ   imag)f_rerN  f_ims      r   test_imag_realr    su    QC!%%D
C499    QC!%%D499      r   c                     t           st          d           t          ddd          } t                               ddgddgg          }t	          | | dz            }t                                ||          t                               dd	gd
dgg                    sJ t	          | | dz            }t                                ||          t                               ddgddgg                    sJ d S )Nr  r|  r   r   r   r   r   g       r         ?rf  %   6   r  v   )rr   rl   rf   r  rK   r  )r|  A0r   r7  s       r   test_MatrixSymbol_issue_15578r	    s     $"###S!QA	q!fq!f%	&	&BAGA>>!!B%%sBi#t-E!F!FGGGGGAqDA>>!!B%%r2hS	-B!C!CDDDDDDDr   c            	      X   t           st          d           ddlm} m}m}m} ddlm} d\  }}}}|	                    ||||          
                                }	t          | |||f|	                    | |||                    }
 |
||||          }t          |	|z
            dk     sJ d S )Nr  r   )r  rV  r   Z)hydrogen)r   r   r   r   r   )rs   rl   	sympy.abcr  rV  r   r  sympy.physicsr  R_nlr   rK   r   )r  rV  r   r  r  nvlvrvZvsympy_valuer   scipy_values               r   test_issue_15654r    s     $"###$$$$$$$$$$$$&&&&&&NBB--BB//5577K!Q1x}}Q1a8899A!BB##K{[())E111111r   c                     t           st          d           t          ddd          } t          ddd          }t          ddd          }t          ddd	          }t          d
          }t	          | d|z  | z            }t	          | d|z   | z            }t	          | d| z            }t	          |||fd|z  |z  |z            }t                                |t                               g dg dg dg                    t                               d|z  d|z  d|z  gd|z  d|z  d|z  gd|z  d|z  d|z  ggt                              sJ t                                |t                               g dg dg dg                    t                               |dz   d|z  dz   d|z  dz   g|dz   d|z  dz   d|z  dz   g|dz   d|z  dz   d|z  dz   ggt                              sJ t                                |t                               g dg dg dg                    t                               g dg dg dg                    sJ t                                |t                               g dg dg          t                               g dg dg dg          t                               g dg dg dg dg                    t                               g dg dg                    sJ d S )Nr  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   r7  hrY  s	            r   test_issue_15827r     sz    $"###S!QAS!QAS!QAS!QAcllAQqS!GAQqS!GAAaCA!QAaCE!G$$AQQu{{IIIyyy)))+LMMNN	KK!A#qsAaC1Q3!QqS/AaC1ac?C6KRRT T T T T QQu{{IIIyyy)))+LMMNN	KK!a%1q!A#'*QUAaC!GQqS1W,EUAaC!GQqS1W&,  . ./ / / / / QQu{{IIIyyy)))+LMMNN	KKIIIyyy1224 4 4 4 4 QQu{{IIIyyy+ABBEKKQ]Q]Q]_k_k_kmymymyPzD{D{	KK///???OOOTUUW WX]XcXceeee  Y! Y!" " " " " " "r   c                      t           st          d           t          d          } d }t          |  ||           d          } |d          t           j        j        k    sJ d S )Nr  r   c                 &    t           j        | dz  z  S 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  sl     $"###A''A	!QQqTT7	+	+	+B2a55EO0000000r   c                      t           st          d           t          d          } t          | gt	          j        | d          d          } |d          t          j        dd          k    sJ d S )Nr  r   r   rs   r   r   )rs   rl   r   rK   r   LambertWr   lambertw)r   r&  s     r   test_issue_17898r+  @  sq     $"###A	1#u~a++W	=	=	=B2c77foc2........r   c                  L   t           st          d           t          t          t	          j        t                              } t          t          t	          j        t          d                    } | g d          } |g d          }t          |d                                                   dk     sJ t          |d         dz
                                            dk     sJ t          |d         dz
                                            dk     sJ t          |d                                                   dk     sJ t          |d         dz
                                            dk     sJ t          |d         dz
                                            dk     sJ d S )Nr  r   r  r   r   rg  r   )rr   rl   rK   r   r   r1   r   r  )r   r   res1res2s       r   test_issue_13167_21411r/  G  ss    $"###	!U_Q''	(	(B	!U_Q**	+	+B2jjj>>D2jjj>>DtAw<<>>e####tAw}!!E))))tAw{%''''tAw<<>>e####tAw{%''''tAw{%''''''r   c                  v    t          t          t                    }  | d          t          d          k    sJ d S )N   r   )rK   r   r
   r   r   s    r   test_single_er2  U  s4    AA1R55CHHr   c                     t           st          d           t          d          } t          | t                    }t          | t          f|d          }t          t          dd           |dd          z
            dk    sJ t          | t                    }t          | t          f|d          }t          t          dd           |dd          z
            dk    sJ d S )Nr  r7  rs   r   r   r   r  )rs   rl   r   rq   r   rK   r   rp   )r7  r   r_  r   s       r   test_issue_16536r4  Y  s     $"###A	Aq		B!QW---Az!Q!!Aq'')**e3333	Aq		B!QW---Az!Q!!Aq'')**e333333r   c                     t           st          d           t          d          \  } }t          t          j        t          | |                    }t          || |f          }t          | |f|d          }| d|di}t          |
                    |           ||                                 z
            dk                                    sJ d S Nr  zx1 x2rr   r   r   r   r  )rr   rl   r   r   r   Zeror   rG   rK   r   r\  valuesr  )x1x2r   r7  r`  points         r   test_issue_22726r<  g  s     $"###WFBAFCBKK  AB8$$A"b1g...ABNEu5<<>> 2233u<AACCCCCCCr   c                  D   t           st          d           t          d          \  } }t          t	          | |                    }t          | |f|d          }| d|di}t          |                    |           ||                                 z
            dk    sJ d S r6  )	rr   rl   r   r1   r   rK   r   r\  r8  )r9  r:  r   r_  r;  s        r   test_issue_22739r>  s  s     $"###WFB#b"++A"b1g...ABNEqvve}}qq%,,..1122e;;;;;;r   c                     t           st          d           t          d          \  } }| t          t	          |dz                      t          |          z
  z  }t          | |g|d          }| d|di}t          |                    |           ||	                                 z
            dk    sJ t          | |g|          }t          |                    |           ||	                                 z
            dk    sJ d S )Nr  za tr   rr   r   r  )
rr   rl   r   r   r$   r#   rK   r   r\  r8  )r7  r^  r6  r_  r;  s        r   test_issue_22992r@  ~  s     $"###5>>DAqc#ac((mmc!ff$%D!Qw''AAqMEtyy!!U\\^^"4455>>>> 	!QAtyy!!U\\^^"4455>>>>>>r   c                      t           st          d           t          t          t          dz  g          } t	          t          | d          } |d          j        t           j        k    sJ d S )Nr  r   rr   r   )rr   rl   rH   r   rK   	__class__r  )r6  r   s     r   test_issue_19764rC    sb     $"###!QTDD'""A1Q44>U]******r   c                      t           st          d           t          t          t	          t                    d          } t                              | d          d          dk    sJ d S )Nznumba not installedrr   T)nopythonr   g	T?)r{   rl   rK   r   r%   jitr   s    r   test_issue_20070rG    s`     $"###CFFG$$A99Q9&&q))+=======r   c                     t           st          d           t          t                    } t	          t                    }t          t          | d          }t          t          |d          }t          t          d           |d          z
            dk    sJ t          t	          d           |d          z
            dk    sJ d S )Nr  rs   r   ?r  )rs   rl   r5   r   r6   rK   r   )r   r   F1F2s       r   test_fresnel_integrals_scipyrL    s     $"###	!B	!B	!R	)	)	)B	!R	)	)	)Bx}}rr#ww&''50000x}}rr#ww&''5000000r   c                     t           st          d           t          t          t                    } t          t          t          f| d          }t          t          dd           |dd          z
            dk    sJ d S )Nr  rs   r   rI  ffffff@r  )rs   rl   r.   r   r   rK   r   r   r_  s     r   test_beta_scipyrP    st     $"###Q

A!QG,,,AtC~~#s+,,555555r   c                      t          t          t                    } t          t          t          f| d          }t	          t          dd           |dd          z
            dk    sJ d S )Nr   r   rI  rN  r  )r.   r   r   rK   r   rO  s     r   test_beta_mathrR    s]    Q

A!QF+++AtC~~#s+,,555555r   c            	      :   t           st          d           t          t          t          t
          t                    } t          t          t          t
          t          f| d          }t          t          dddd           |dddd          z
            dk    sJ d S )	Nr  rs   r   gffffff?g@r   rg  r  )	rs   rl   r/   r   r   r   r   rK   r   rO  s     r   test_betainc_scipyrT    s     $"###1aA!Q1q'222AwsCc**QQsCc-B-BBCCuLLLLLLr   c            	      :   t           st          d           t          t          t          t
          t                    } t          t          t          t
          t          f| d          }t          t          dddd           |dddd          z
            dk    sJ d S )	Nr  rs   r   r   r  r   r   r  )	rs   rl   r0   r   r   r   r   rK   r   rO  s     r   test_betainc_regularized_scipyrV    s     $"###Aq!Q''A!Q1q'222A"3S!44qqc37J7JJKKuTTTTTTr   c            	      N   t           st          d           t          t          t          t
          t          t          t          t          g} | D ]}d|j
        v r' |t          t                    }t          t          f}d}n3d|j
        v r |t                    }t          f}d}nt          d          t          ||          } || }|                    t!          t#          ||                                                              }t                               |t)          |                    sJ t          t          t          ft          t          t                    t          t                                        }t+          d |dd	          z  d
z
            dk     sJ d S )Nr  r   )rm  g?r   )rm  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  rw  r   )	funcsr  r6  r*  num_argsr   result	referencelae2s	            r   test_numpy_special_mathr^    si    $"###E4ueY
KE 8 8
??41::Dq6D!HH$*__477D4DHH%&bcccT4  HIId3tX#6#67788>>@@	~~feI&6&6777777QFJtAwwQ8899DsDD(((7233e;;;;;;r   c                      t           st          d           t          t          ft	          t                    d          } t           | d          dz             dk     sJ t          t          t          t           j	        j	        
                    d          d d                             d	k    }|rXt          t          t          ft          t          t                    d          }t           |d
d          dz
            dk     sJ d S d S )Nr  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_mathrg    s     $"###
A4q7
3
3
3Css5zzE!""V++++C)>)D)DS)I)I"1")M N NOOSZZ =1vuQ{{G<<<33sD>>N233u<<<<= =<<r   c                      t           st          d           t          t          ft	          t                    d          }  | d          dk    sJ d S )Nr  rs   r   r   rg  )rs   rl   rK   r   r   )berns    r   test_scipy_bernoullirj    sN     $"###QD)A,,888D477c>>>>>>r   c                  8   t           st          d           t          t          ft	          t                    d          }  | d          dk    sJ t          t          t
          ft	          t          t
                    d          } |dd          dk    sJ d S )Nr  rs   r   r   r  g      ?)rs   rl   rK   r   r   r   )hnhnms     r   test_scipy_harmonicrn    s     $"###	1$W	5	5	5B2a55C<<<<
Aq68Aq>>7
;
;
;C3q!99r   c                  2   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    }|dk    sJ dt          t          |                    v sJ d S )NCuPy not installedry   r   r   r   ry   rl   rK   r   r   r  r   r  r   r[  s     r   test_cupy_array_argrs    s     #!"""1a&1Q37F++AQtzz3*%%&&FQ;;;;Sf&&&&&&&&r   c                  2   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    }|dk    sJ dt          t          |                    v sJ d S )Nrp  rr   r   r   r   ry   rq  rr  s     r   test_cupy_array_arg_using_numpyru    s      #!"""1a&1Q37G,,AQtzz3*%%&&FQ;;;;Sf&&&&&&&&r   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rC |ddd          cxk    r1 |ddd          cxk    rt           	                    dg          k    sn J d S )Nrp  ry   r   r   r   r   r  )
ry   rl   re   r   r   r   rK   rD   r{  r  r  s        r   test_cupy_dotproductrw  "  sw    #!"""1ayA	1a)Z1--v	>	>	>B	1a)Z13//	@	@	@B	1a)ZQ//	@	@	@B	1a)Z13//	@	@	@B2aA;;
1a   
1a    	1a    	

B4	       r   c                  <   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t           j                            ddg                    }|dk    sJ dt          t          |                    v sJ d S )NJAX not installedrz   r   r   r   	rz   rl   rK   r   r   rr   r  r   r  rr  s     r   test_jax_array_argr{  3  s     " !!!1a&1Q37E**AQsySz**++FQ;;;;CV%%%%%%%%r   c                  <   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t           j                            ddg                    }|dk    sJ dt          t          |                    v sJ d S )Nry  rr   r   r   r   rz   rz  rr  s     r   test_jax_array_arg_using_numpyr}  =  s     " !!!1a&1Q37G,,AQsySz**++FQ;;;;CV%%%%%%%%r   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rH |ddd          cxk    r6 |ddd          cxk    r$t           j	        
                    dg          k    sn J d S )Nry  rz   r   r   r   r   r  )rz   rl   re   r   r   r   rK   rD   r{  rr   r  r  s        r   test_jax_dotproductr  G  sy    " !!!1ayA	1a)Z1--u	=	=	=B	1a)Z13//	?	?	?B	1a)ZQ//	?	?	?B	1a)Z13//	?	?	?B2aA;;
1a   
1a    	1a    			       r   c                     d } d }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 ]P}t          s|j	        rdd|| |fD ]7}|
                    |          } ||j         }|                    |           8Qd S )Nc                 
    d| fS )Nr   r   )exprss    r   	no_op_csez$test_lambdify_cse.<locals>.no_op_cseY  s    5yr   c                 N    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\  s5    //////s5"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`  s0    FFFFFFFFs5&;<<<<r   c                   .    e Zd ZdddZd ZddddZdS )	test_lambdify_cse.<locals>.CaseF)requires_numpyc                    || _         || _        || _        t          t	          | j         | j                            fd|D             | _        || _        d S )Nc                 ^    g | ])}|                                                               *S r   )r\  r   ).0e	subs_dicts     r   
<listcomp>z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>j  s1    AAAay))//11AAAr   )r*  r  rZ  r  r   r   r  )r  r*  r  rZ  r  r  s        @r   __init__z(test_lambdify_cse.<locals>.Case.__init__e  s\    DIDJ$DMSDM::;;IAAAA5AAADH"0Dr   c                :    t          | j        | j        |          S )NrE   )rK   r*  r  )r  rF   s     r   rK   z(test_lambdify_cse.<locals>.Case.lambdifym  s    DItzs;;;;r   r   )abstolreltolc                2   | j         r3t          fdt          | j                  D                       sJ d S t          | j                  D ]D\  }}t	          |         |z
            }|dk    r	|k     sJ ,|t	          |          z  k     sJ Ed S )Nc              3      K   | ]J\  }}t                               |         t                               |t                               V  KdS )r  )r  r  N)rr   r  asarrayrw  )r  rY  r   r  r  r[  s      r   	<genexpr>zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>r  sm       < <#q! !>>&)U]]1E]5R5R/5F * D D < < < < < <r   r   )r  r  	enumerater   r   )r  r[  r  r  rY  r   abs_errs    ```   r   assertAllClosez.test_lambdify_cse.<locals>.Case.assertAllClosep  s    "  < < < < < <'0':':< < < < < < < < !$(++ 3 31fQi!m,,66"V+++++"3q66>F222223 3r   N)r  r  r  r  rK   r  r   r   r   Caser  d  s_        DI 	1 	1 	1 	1 	1	< 	< 	< 49 	3 	3 	3 	3 	3 	3 	3r   r  r   )r   r   rw  )r*  r  rZ  r   )r   r   rw  )r   r   rm  r   )r   r   r   T)r*  r  rZ  r  )r   r   FrE   )r   r   r   r   r1   r&   re   r%   rr   r  rK   rZ  r  )	r  r  r  r  casescase_cser   r[  s	            r   test_lambdify_cser  X  s     ? ? ?= = =3 3 3 3 3 3 3 36 	QUQYUQYqS1Q3Y]cAX1q 	 "		
 		
 		
 	Q""""""1%%%eoa###	 "		
 		
 		
 	QQKQKQK
 %	
 	
 	
 	QAaC3q66A:q!t"4566!CFF
1a4!SVVQT*++
  		
 		
 		
 	QEAI>1a!eUQqS1WQQ.1qAE0BD		
 	
 	
Q.E^  ( ( 	, 	D&)Y? 	( 	(D$''AQ&F''''	(( (r   c            	          t          t                     t          t          t          dz  t	          t          dz            gfd          d          } | sJ d S )Nr  r   c                 &    t          |           S )Nr  rE   )r  r  s    r   r   z"test_issue_25288.<locals>.<lambda>  s    c!T6J6J6J r   rE   )rL   r   rK   r   r%   )okr  s    @r   test_issue_25288r    s[    &&&D	K!adC1II&,J,J,J,J	K	K	KA	N	NBIIIIIr   c                      t                      5  t          t          t          ht          t          z              d d d            d S # 1 swxY w Y   d S r   )r   rK   r   r   r   r   r   test_deprecated_setr    s    		!	!    !QQ                                   s   *AA
A
c                     t           st          d           t          ddd          } t          | | j        | z  d          } |t                               g d                    dk    sJ  |t                               g d                    dk    sJ t          | | | j        z  d          } |t                               g d                    dk    sJ  |t                               g d                    dk    sJ t          | | | j        z  | z  d          }t                               dgd	gdgg          }t                               dgd
gdgg          }t                                ||          |          sJ d S )Nr  Xr   r   rr   r   r  rq  r      r?  )rr   rl   rf   rK   r{  r  r  )r  r   r  r  s       r   test_issue_13881r    s    %#$$$S!QAACE7##A1U[[##$$****1U[[##$$****AacE7##A1U[[##$$****1U[[##$$****QqsUAIw''A;;aS1#''D;;bT2$'((DQQtWWd+++++++r   c                  D    t          d          t                    }  t          d          t                    }t          | dz  |dz  z   | dz  || z  dz  z   z  z   }|                                }t	          | |ft          f|d          } |dd	          }|d
k    sJ d S )Nr   r   r   r   r   TrE   )r   r   r   g     r@)r   r   r   expandrK   )r   r7  r6  	eval_expranss        r   test_23536_lambdify_cse_dummyr    s    aAaA1q!tadacAXo..D;;==D1a&!d555I
)J
$
$C%<<<<<<r   c                   n    e Zd ZdZdZdZd Zed             Zed             Z	ed             Z
d Zd ZdS )LambdifyDocstringTestCaseNc                 "    || _         || _        d S r   docstring_limitexpected_redacted)r  r  r  s      r   r  z"LambdifyDocstringTestCase.__init__  s    .!2r   c                 &    d}| j         s| j        n|S )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Mtyy<MMr   c                 &    d}| j         s| j        n|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Ktxx;KKr   c                 <    d| j          d| j         d| j         d}|S )Nz(Created with lambdify. Signature:

func(z)

Expression:

z

Source code:

z

Imported modules:

)	SIGNATUREr  r  )r  expected_docstrings     r   r  z,LambdifyDocstringTestCase.expected_docstring  sL    %N% % !% %
  % % % 	 "!r   c                 *    t          | j                  S r   )r}  r  r  s    r   __len__z!LambdifyDocstringTestCase.__len__  s    4*+++r   c                 @    | j         j         d| j         d| j         dS )Nz(docstring_limit=z, expected_redacted=))rB  r  r  r  r  s    r   __repr__z"LambdifyDocstringTestCase.__repr__  s>    ~& ; ;#3; ;!%!7; ; ;	
r   )r  r  r  r  r  r  r  propertyr  r  r  r  r  r   r   r   r  r    s        ID
C3 3 3 N N XN L L XL 
" 
" X
", , ,
 
 
 
 
r   r  c                  &    G d dt                     } t          d          } | d d           | dd           | dd           | dd	           | d
d	          f}|D ]-}t          |g|d|j                  }|j        |j        k    sJ .d S )Nc                       e Zd ZdZdZdZdS )Ntest_lambdify_docstring_size_limit_simple_symbol.<locals>.SimpleSymbolTestCaser   z(def _lambdifygenerated(x):
    return x
N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KKSEJJJQ%HHHQ$GGGR4HHHJ   G G	"C%5	
 
 
 &)*FFFFFFG Gr   c                  v    G d dt                     } t          d          \  }}}||g|||z   |z   dz                                  g} | d d           | dd           | dd	           | d
d	           | dd	          f}|D ]/}t          |||g|d|j                  }|j        |j        k    sJ 0d S )Nc                       e Zd ZdZdZdZdS )Htest_lambdify_docstring_size_limit_nested_expr.<locals>.ExprListTestCasex, y, zzK[x, [y], z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 +...zdef _lambdifygenerated(x, y, z):
    return [x, [y], z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 + y**3 + 3*y**2*z + 3*y*z**2 + z**3]
Nr  r   r   r   ExprListTestCaser  )  s(        	 	
J 	r   r  r  r   Fr     r   Tr   r   r   r  )r  r   r  rK   r  r|  r  )r  r   r   r   r6  r  r  r  s           r   .test_lambdify_docstring_size_limit_nested_exprr  '  s6   

 

 

 

 

4 

 

 

 i  GAq!sAQQ..001D 	GGGFFFtDDDdCCCtDDDJ   G G	"1I%5	
 
 
 &)*FFFFFFG Gr   c                      G d dt                     } t          d          \  }}}t          t          j        |g||z   |z   ||z   |z   dz                                  gg          } | d d           | dd           | dd	           | d
d	           | dd	          f}|D ]/}t          |||g|d|j                  }|j        |j	        k    sJ 0d S )Nc                       e Zd ZdZdZdZdS )Atest_lambdify_docstring_size_limit_matrix.<locals>.MatrixTestCaser  zNMatrix([[0, x], [x + y + z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z...zdef _lambdifygenerated(x, y, z):
    return ImmutableDenseMatrix([[0, x], [x + y + z, x**3 + 3*x**2*y + 3*x**2*z + 3*x*y**2 + 6*x*y*z + 3*x*z**2 + y**3 + 3*y**2*z + 3*y*z**2 + z**3]])
Nr  r   r   r   MatrixTestCaser  K  s'        	 	
0 	r   r  r  r   Fr  r  r   Tr   r   r   r  )
r  r   re   r   r7  r  rK   r  r|  r  )r  r   r   r   r6  r  r  r  s           r   )test_lambdify_docstring_size_limit_matrixr  I  sF   
 
 
 
 
2 
 
 
 i  GAq!AFA;Qa!eai!^,C,C,E,E FGHHD 	tuEEEseDDDrTBBBqDAAArTBBBJ   G G	"1I%5	
 
 
 &)*FFFFFFG Gr   c                      t          d          } d| ff}t          | |          } |d          }|dk    s
J d            d S )Nr7  r   r   )r   r!  z2Lambdify did not handle the empty tuple correctly.rF  )r7  r6  r   r[  s       r   test_lambdify_empty_tupler  l  sT    A:DDAQqTTFZ!Ur   c                      d} t          ddd                                          }t          ddd                                          }d}dt          z  }t          |||           sJ t          |||           sJ d S )	Nr  r   rg  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  s    
C)!S#66<<>>)!Q2288::..q0)+@#FFFFF)+@#F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<  rB  rI  rN  rP  rT  rW  rZ  r`  rc  ri  rm  ro  rr  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r(  r+  r-  r0  r<  rJ  rO  rS  r\  rj  rp  rt  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/  r2  r4  r<  r>  r@  rC  rG  rL  rP  rR  rT  rV  r^  rg  rj  rn  rs  ru  rw  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s            ? ? ? ? ? ? ? ? ) ) ) ) ) ) 8 8 8 8 8 8 8 8 8 8 I I I I I I I I I I I I I I I I I I $ $ $ $ $ $ " " " " " " . . . . . . . . Q Q Q Q Q Q Q Q E E E E E E E E 4 4 4 4 4 4 ; ; ; ; ; ; ; ; 7 7 7 7 7 7 5 5 5 5 5 5 E E E E E E E E E E : : : : : :A A A A A A A A A A A A A A A A W W W W W W W W W W W W W W W W W W W W W W W W W W ? ? ? ? ? ? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Y Y Y Y Y Y Y Y Y Y Y Y . . . . . . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ < < < < < < ' ' ' ' ' ' 5 5 5 5 5 5 5 5 , , , , , , - - - - - - 6 6 6 6 6 6 # # # # # # + + + + + + K K K K K K K K K K K K K K K K ; ; ; ; ; ; ; ; 2 2 2 2 2 2 2 2 < < < < < < < < < <+ + + + + + + + + + + + + + + + + + + + + + > = = = = = = = = = 3 3 3 3 3 3 - - - - - - D D D D D D D D % % % % % % 9 9 9 9 9 9 6 6 6 6 6 6 ( ( ( ( ( ( J J J J J J J J   ggj8*-EFFF
-	
"
"]<((
}VmEg -III),BJ%&WY
1a
    
  

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

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