
    Xh;                    	   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
l m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZBmCZCmDZD d dlEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZO d dlPmQZQ d dlRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[m\Z\m]Z]m^Z^ d dl_m`Z` d dlambZb d dlcmdZdmeZemfZfmgZgmhZhmiZi d dljmkZk d dllmmZm d dlnmoZompZp d dlqmrZr d d lsmtZtmuZu d d!lvmwZw d d"lxmyZy d d#lzm{Z{ d d$l|m}Z} d d%l~mZmZmZmZmZmZmZmZ d d&lmZmZmZmZmZmZ d d'lmZmZ d d(l&mZmZmZ d d)lmZmZmZmZmZmZmZmZmZ d d*lmZmZmZ d d+lmZ d d,lmZ d d-lmZ d d.lvmZmZ d d/lmZ d d0lmZ d d1lmZ d d2lmZ d d3lZmZmZ d dlZeZ ed4          Z ed5d6d7gi8          Z ed9          Z ed:          Z ed;          Z ed<          Z ed=          Zerd dlZd>ej        d?<    ed@          \  ZZZZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZedK             ZedL             ZedM             ZedN             ZedO             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 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(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCdÄ ZDdĄ ZEdń ZFdƄ ZGdǄ ZHdȄ ZIdɄ ZJdʄ ZKd˄ ZLd̄ ZMd̈́ ZNd΄ ZOdτ ZPdЄ ZQdф ZRd҄ ZSdӄ ZTdԄ ZUdՄ ZVdք ZW G dׄ dئ          ZXdل ZYdڄ ZZdۄ 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sign)explog)asinhacoshatanh)floor)MaxMinsqrt)	Piecewise)asinacosatancoscotsinsinctan)sinhcoshtanh)besselibesseljbesselkbesselyjnyn)betabetaincbetainc_regularized)	Heaviside)EierferfcfresnelcfresnelsSiCi)digammagammaloggamma	polygamma)zeta)Integral)AndfalseITENotOrtrue)
DotProductcse)derive_by_arrayArray)ArraySymbol)IndexedBaseIdxlambdify)numbered_symbols)
CoordSys3D)UnevaluatedExpr)expm1log1pexp2log2log10hypotisnanisinf)	logaddexp
logaddexp2aminamaxminimummaximum)cosm1powm1)reimarg)	
chebyshevt
chebyshevulegendrehermitelaguerre
gegenbauerassoc_legendreassoc_laguerrejacobi)MatrixMatrixSymbolSparseMatrix)PrintMethodNotImplementedError)LambdaPrinter)NumPyPrinter)implemented_function	lambdastr)skip)conserve_mpmath_dps)ignore_warnings)import_module)
uppergamma
lowergammanumpyscipyfromlistsparse)import_kwargsnumexpr
tensorflowcupyjaxnumba2TF_CPP_MIN_LOG_LEVELzw,x,y,zc                  x     t          g d           t          t           fd                         dk    sJ d S )N   c                        d          S )N fs   u/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/sympy/utilities/tests/test_lambdify.py<lambda>ztest_no_args.<locals>.<lambda>Y   s    aaee     rV   r   	TypeErrorr   s   @r   test_no_argsr   W   s=    QA
9mmmm$$$133!888888r   c                  b    t          t          dt          z            }  | d          dk    sJ d S N   r   rV   xr   s    r   test_single_argr   ]   s.    AaCA1Q441999999r   c                  |    t          t          t          gt          t          z             }  | dd          dk    sJ d S Nr   r      )rV   r   yr   s    r   test_list_argsr   b   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>j       bbAhh r   )      )I      )r   r   r   r   c                        dd          S )Nr   r   r   )f2s   r   r   z"test_nested_args.<locals>.<lambda>n   r   r   
   4      ,   )r   r   r   r   )rV   wr   r   r   r   z)f3r   r   s    @@r   test_nested_argsr   g   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>y       aadd r   r   r   s   @r   test_str_argsr   t   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>}   s    q r   r*   皙?r   d   rV   r   r*   myfuncr   s     r   test_own_namespace_1r   |   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瞯<)	rV   r   r*   mathr   absr   rY   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   rU   r   r   r   r   ztest_bad_args.<locals>.<lambda>   s    hqkk r   c                  $    t          ddg          S r   rU   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      ?      ?)rV   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mpfrV   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   rV   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   rV   r   r*   r   r   r   ri   rZ   r[   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   rV   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   rV   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_TRANSLATIONSrv   )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)r   r~   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)r   r~   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   r   r   r   )r   r~   rV   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   r   r   r   )r   r~   sympy.printing.lambdareprr.  r   r   r   _numexpr_functionskeysr   hasattrr2  rV   )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          t          t          t                    d          }  | 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
          dk    sJ d S )Ncmathr   r   r   r   9v?MbP?r   r                  @rV   r   r#   r   r   s    r   test_cmath_sqrtrE  2  s    DGGW%%A1Q44199991Q44199991Q4419999qqtte|u$$$$1R55B;;;;1R55B;;;;;;r   c                  T   t          t          t          t                    d          } t           | d          dz
            dk     sJ t           | t          j                  dz
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S )Nr?  r   r   r   r   )rV   r   r   r   r?  er   s    r   test_cmath_logrH  <  s    CFFG$$Aqqttax==5    qqzzA~&&&&qquuuy}}$%%------r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | t
                    t	          j        t
                    z
            dk     sJ t           | t
                     t	          j        t
                     z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S Nr?  r   r   r   )rV   r   r-   r   r?  r   r   s    r   test_cmath_sinhrK  C      DGGW%%Aqqttejmm#$$u,,,,qquuuz"~~%&&....qq"vv
B3'((50000qquuuz"~~%&&......r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | t
                    t	          j        t
                    z
            dk     sJ t           | t
                     t	          j        t
                     z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S rJ  )rV   r   r.   r   r?  r   r   s    r   test_cmath_coshrN  K  rL  r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | t
                    t	          j        t
                    z
            dk     sJ t           | t
                     t	          j        t
                     z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S rJ  )rV   r   r/   r   r?  r   r   s    r   test_cmath_tanhrP  S  rL  r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | t
                    t	          j        t
                    z
            dk     sJ t           | t
                     t	          j        t
                     z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S rJ  )rV   r   r*   r   r?  r   r   s    r   test_cmath_sinrR  [      CFFG$$Aqqtteill"##e++++qquuuy}}$%%----qq"vv	2#&''%////qquuuy}}$%%------r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | t
                    t	          j        t
                    z
            dk     sJ t           | t
                     t	          j        t
                     z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S rJ  )rV   r   r(   r   r?  r   r   s    r   test_cmath_cosrU  c  rS  r   c                  "   t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S rJ  )rV   r   r,   r   r?  r   s    r   test_cmath_tanrW  k  s{    CFFG$$Aqqtteill"##e++++qquuuy}}$%%------r   c                  T   t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S )Nr?  r   r   r   r   r   r   )rV   r   r%   r   r?  r   s    r   test_cmath_asinrY  q     DGGW%%Aqqttejmm#$$u,,,,qqttejmm#$$u,,,,qquuuz"~~%&&....qqttejmm#$$u,,,,qquuuz"~~%&&......r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S )Nr?  r   r   r   r   r   )rV   r   r&   r   r?  r   s    r   test_cmath_acosr\  z  s    DGGW%%Aqqttejmm#$$u,,,,qquuuz"~~%&&....qqttejmm#$$u,,,,qquuuz"~~%&&......r   c                  T   t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S Nr?  r   r   r   r   r   rC  )rV   r   r'   r   r?  r   s    r   test_cmath_atanr_    rZ  r   c                  T   t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S r^  )rV   r   r   r   r?  r   s    r   test_cmath_asinhra    s   E!HHg&&Aqqttek!nn$%%----qqttek!nn$%%----qquuu{2&''%////qqttek!nn$%%----qquuu{2&''%//////r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S )Nr?  r   r   r   r   rC  )rV   r   r   r   r?  r   s    r   test_cmath_acoshrc    s    E!HHg&&Aqqttek!nn$%%----qqttek!nn$%%----qquuu{2&''%////qquuu{2&''%//////r   c                     t          t          t          t                    d          } t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ t           | d          t	          j        d          z
            dk     sJ d S )	Nr?  r   r         ?      r   rC  )rV   r   r   r   r?  r   s    r   test_cmath_atanhrh    s7   E!HHg&&Aqqttek!nn$%%----qqvvC((())E1111qqwwT***++e3333qqttek!nn$%%----qquuu{2&''%////qquuu{2&''%//////r   c                     t          d          } t          |           t          t          |                     t          t	          |                     z  z
  t
          t          t          |                     z  t          t	          |                     z  z   }t          | g|ddg          }t          j
        dz  }t           ||d|z  z                       dk     sJ t          | gt          t
          | z            t          |           t
          t          |           z  z   z
  ddg          }t           ||                    dk     sJ t          | gt          |           t          t          |                     t          t	          |                     t
          t          t	          |                     z  z   z  z
  ddg          }t           ||d|z  z                       dk     sJ t          | gt          |           t          t          |                     t          t	          |                     z  t
          t          t          |                     z  t          t	          |                     z  z
  z
  ddg          }t           ||d|z  z                       dk     sJ t          | gt          |           t          t          |                     t          t	          |                     z  t
          t          t          |                     z  t          t	          |                     z  z   z
  ddg          }t           ||d|z  z                       dk     sJ t          | gt          |           t          t          |                     t          t	          |                     z  t
          t          t          |                     z  t          t	          |                     z  z   z
  ddg          }t           ||d|z  z                       dk     sJ t          | gt          |           t          t          |                     t          t	          |                     z  t
          t          t          |                     z  t          t	          |                     z  z   z
  ddg          }t           ||d|z  z                       dk     sJ t          | gt          |           t          |           t          |            z   dz  z
  ddg          }	t           |	|                    dk     sJ t          t          |                     t          t	          |                     z   t          t          |           t	          |           z            z
  }
t          t          |                     t          t	          |           t
          z            z  t          |           z
  }t          t          t          |                               t          |           z
  }t          t          t          |                               t          |           z
  }t          t          t          |           t	          |           z                       t          |           t	          |           z   z
  }t          t          t          |           t	          |           z                       t          |           t	          |           z   z
  }t          | g|
ddg          }t          | g|ddg          }t          | g|ddg          }t          | g|ddg          }t          | g|ddg          }t          | g|ddg          }d}t           ||                    dk     sJ t           ||                    dk     sJ t           ||                    dk     sJ t           ||                    dk     sJ t           ||                    dk     sJ t           ||                    dk     sJ d S )	Nr   r?  r   r   r   r   gؗҼ<      @      @)r   r(   rj   r.   rk   r   r*   r-   rV   r   r   r   r   r   )r   exprfunchpifunc_expfunc_cosfunc_sinfunc_cosh_1	func_sinhfunc_cosh_2expr1expr2expr3expr4expr5expr6func1func2func3func4func5func6
test_values                          r   test_cmath_complex_identitiesr    s>   A q66C1JJbee,,q3r!uu::~RUU/KKDQC'8999D
'A+CttC"s(N##$$u,,,, QCQUs1vvCFF
':;gvEVWWWDttCyy>>E!!!! SVVc"Q%%jjC1JJSAZZ4O&PP!(& 13 3 3Hxxb3h''((50000 SVVs2a55zzDAKK'?!c"Q%%jj.SWXZ[\X]X]S^S^B^'^_!(& 13 3 3Hxxb3h''((50000 SVVs2a55zzDAKK'?!c"Q%%jj.SWXZ[\X]X]S^S^B^'^_!(& 13 3 3Hxxb3h''((50000 A3Q41;;RUU+Ca$rRSuu++oX[\^_`\a\aXbXbFb+b c")6!24 4 4K{{3c>**++e3333 !d1ggbees2a55zz)AARPQUUOVYZ\]^Z_Z_V`V`D`)`a")6!24 4 4IyyrCx(())E1111 A3Q3q66CGG+;q*@ @7TZJ[\\\K{{3  5(((( 1JJRUU#c"Q%%"Q%%-&8&88E1JJRUUQY'#a&&0EBqEE

OObee#EBqEE

OObee#EBqEEBqEEM""##r!uur!uu}5EBqEEBqEEM""##r!uur!uu}5EaS%'6):;;;EaS%'6):;;;EaS%'6):;;;EaS%'6):;;;EaS%'6):;;;EaS%'6):;;;EJuuZ  !!E))))uuZ  !!E))))uuZ  !!E))))uuZ  !!E))))uuZ  !!E))))uuZ  !!E))))))r   c                  B   t           st          d           t          st          d           t          d          } t	          | j        d           \  }}t          ||f| t           gd          }t          j                            d          \  }} |||           d S )	Nr-  r   zb*a - sqrt(a**2)c                     | j         S r   )name)ss    r   r   z!test_issue_9334.<locals>.<lambda>  s    16 r   )keyF)r   dummifyr   r   )r   r~   r   r   sortedfree_symbolsrV   random)rk  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)
r   r~   rV   r   r   r   r$   r   RuntimeWarningr   )r  s    r   test_issue_12984r    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   rV   )r   r   rk  
no_modulesempty_moduless        r   test_empty_modulesr    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   rg  r         @      @r   r   s    r   test_exponentiationr    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   r@  rA  r  r  rD  r   s    r   	test_sqrtr    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㈵>)rV   r   r(   r*   r   )r   dr   s      r   	test_trigr    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[?)
r   r   r~   r   r   r   rV   r   rF   r   )r   lr  s      r   test_integralr  %  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<?)r   r   r~   rF   r   r   r   rV   )ir  r  s      r   test_double_integralr  .  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   :0yE>)
r   r   r~   r   r4   r   rV   subsr   r5   )
test_pointr   jtestytests       r   test_spherical_besselr  7  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>L  r   r   )rV   r   r   r   r   r   r   s   @r   test_vector_simpler  G  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>Q  s    aadd r   )g      r   r   )rf  re  rg  )re  rf  )rV   r   r   ZeroDivisionErrorr   s   @r   test_vector_discontinuousr  O  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?)rV   r   r(   r*   r   r   r   r  s     r   test_trig_symbolicr  W  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 )Nr  r   r   r  )rV   r   r(   r*   r   r  s     r   test_trig_floatr  ^  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   )rV   r   r   r   r#   r*   r   s    r   	test_docsr  e  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   )rV   r   r   r*   r   s    r   	test_mathr  p  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   )rV   r   r*   
isinstancefloatr   s    r   test_sinr  u  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   )rv   r   r   r*   r   rV   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   r   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   )r   r~   rv   r   r   r*   r   arrayrV   testingassert_allcloser  ndarrayr   zerosallr{   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   r   r   r   )	r   r~   rv   r   rV   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 installedr   r   r   r   r      )
r   r~   rv   r   r   r   rV   rM   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   r   r   r   rg  )r   r~   rv   r   rV   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   ImmutableDenseMatrixr   )r   r~   rv   r   r   r*   r   r  rV   matrixr   PendingDeprecationWarningr  r  r  )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   r   r   r   r   )	r   r~   rx   r   r   rV   r  r   
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   Tr   r   ignore)divider   re  inf)	r   r~   r$   r   r   rV   errstater  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   r   r   r   r   re  r   r   r   rj  r   )r   appendr   rV   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   r  rg  r   r   r   绽|=)rtol)r   r~   r   r#   r   r   r	   linspacerV   r  r  )r   rk  xnr5   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   Tr   r   r   )
r   r   r   r   r   r   $   1   @   Q   r   r   r   r   r   )
r   r~   r$   r   rV   r  r  aranger  r  )piecesr   
nodef_funcs      r   test_numpy_piecewiser*    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   r   r   TF)r   r~   rV   r   r   rG   r   rK   rJ   r  r  r  )and_func
and_func_3or_func	or_func_3not_funcarr1arr2arr3s           r   test_numpy_logical_opsr4    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   r   r   re  r   r   g      ?      @rf  g      ?g     R@g     ]@      )r   r~   rv   r   r   r   r   rV   r  r  r  )xmatymatmat_funcr   s       r   test_numpy_matmulr<  *  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   r   r   r   )r   r~   r   r  randnr*   r   r(   r   r,   r   r   r&   r   r   r#   r   rV   allclose)r  r  crk  npfuncnefuncs         r   test_numpy_numexprrD  8  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>M  s    !Q$q& r   r   r   r   c                     d| z  |z  dz   S r   r   rI  s     r   r   z,test_numexpr_userfunctions.<locals>.<lambda>Q  s    AaCE!G r   )r   r~   r   r  r?  typer   classmethodrV   r   r@  r|   r   )r  r  rF  rl  s       r   test_numexpr_userfunctionsrM  F  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   r   r   r   dtypesessionre  )r   r~   r!   r*   r   r   rV   compatv1Sessionconstantfloat32rG  rk  rl  r  r  s       r   test_tensorflow_basic_mathrZ  V  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 )
NrO  r   r   r   r   rP  r   rS  	feed_dictre  )r   r~   r!   r*   r   r   rV   rT  rU  rV  placeholderrX  rG  rY  s       r   test_tensorflow_placeholdersr_  a  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 )
NrO  r   r   r   r   r   rP  r\  re  )r   r~   r!   r*   r   r   rV   rT  rU  rV  VariablerX  runinitializerrG  rY  s       r   test_tensorflow_variablesrd  l  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 )NrO  r   r   FTrR  )r   r~   rJ   rG   rK   r   r   rV   rT  rU  rV  rG  rk  rl  r  s      r   "test_tensorflow_logical_operationsrg  x  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 )NrO  r   r   r   r   r   rR  )
r   r~   r$   r   r   rV   rT  rU  rV  rG  rf  s      r   test_tensorflow_piecewiseri    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 )NrO  r   r   r   rg  rR  r   )	r   r~   r!   r   rV   rT  rU  rV  rG  rf  s      r   test_tensorflow_multi_maxrk    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 )NrO  r   r   r   rg  rR  )	r   r~   r"   r   rV   rT  rU  rV  rG  rf  s      r   test_tensorflow_multi_minrn    s     *()))q1"adDAt\222D				%	%	'	' .1tBxx}}Q}''2-----. . . . . . . . . . . . . . . . . .rl  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 )NrO  r   r   r   r   rR  T)r   r~   r   rV   rT  rU  rV  rG  rf  s      r   test_tensorflow_relationalrp    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 installedr   r   y      ?       @rR  r   r   gư>)r   r~   rV   r   rj   rk   r   rl   rT  rU  rV  rW  rG  r   r   )rz  r{  r|  r}  r  r  tensorflow_resultsympy_results           r   test_tensorflow_complexesrt    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 )NrO  r   r   r   rR        @)
r   r~   rV   r   r   rT  rU  rV  rW  rG  )r   r  fcalls      r   test_tensorflow_array_argrx    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   rV   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   rz  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   rV   rF   r   r   doitr#   r   )r   r  s     r   test_sym_integralr    s    q#q!te**AHQQqTTAsB<00'BBBA1Q448CAJJRC5555551Q4499;;$r((""""""r   c                  p   dd i} d d d}t          j        d          }t          j        d          }t          t           |t                    | df          } |d	          d
k    sJ t          t           |t                    |df          } |d	          d
k    sJ  |d	          dk    sJ d S )Nr   c                     dS )Nfirst fr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>  s     r   c                     dS )Nzsecond fr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>  s     r   c                     dS )N
function gr   r   s    r   r   z&test_namespace_order.<locals>.<lambda>  s     r   )r   gr  r   r   r   r  r  )r   r   rV   r   )n1n2r   r  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>  s
    AaC r   c                 *    t          j        |           S r   )r   r#   r   s    r   r   ztest_imps.<locals>.<lambda>  s    DIaLL r   r   r  r   _imp_c                     d| z  S r  r   r   s    r   r   ztest_imps.<locals>.<lambda>  s
    ! r   c                     | dz   S )Ne   r   r   s    r   r   ztest_imps.<locals>.<lambda>  s
    QW r   c                  \    t          t             t                                        S r   r   )r   r   s   r   r   ztest_imps.<locals>.<lambda>  s!    x11RRUU8844 r   )r|   rV   r   r   r   r#   r   r   r7  r   
ValueError)r  l1l2rl  my_fr   r   s        @@r   	test_impsr    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   )r  error_classs    r   r   z test_imps_errors.<locals>.myfunc  s    Avv!!1r   r   )r   r   r  r|   )valr   r   rk  r  s       @r   test_imps_errorsr    s     $Oi5LMM 	 	[	 	 	 	 	
 !f--qvvqqvv~~~~~	 	r   c                  2    t          t          d            d S )Nc                  .    t          t          d           S )Nc                     | S r   r   r   s    r   r   z8test_imps_wrong_args.<locals>.<lambda>.<locals>.<lambda>$  s    1 r   )r|   r*   r   r   r   r   z&test_imps_wrong_args.<locals>.<lambda>$  s    3CEE r   )r   r  r   r   r   test_imps_wrong_argsr  #  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>/  s
    AG r   r   r  r   )g   r   r  c                     | dz   S )Nc   r   r   s    r   r   z$test_lambdify_imps.<locals>.<lambda>A  s
    B r   F)use_impsf   )r   r(   rV   r   r   r|   )r   lamr  s      r   test_lambdify_impsr  '  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   rU   )r  r  r  s   r   r   z$test_dummification.<locals>.<lambda>Y  s=    1!aaddQQqTTkAo F F r   c                  Z    t          d            z  d            z  dz             S )Nr   r   rU   r  r  s   r   r   z$test_dummification.<locals>.<lambda>Z  -    QQqTT1qqtt8a< @ @ r   c                  Z    t          d            z  d            z  dz             S )Nr   r   r   rU   r  s   r   r   z$test_dummification.<locals>.<lambda>[  r  r   )r   r   rV   r*   r   SyntaxError)alpha	some_exprr  r  r  r  s      @@@r   test_dummificationr  I  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?re  r   )rX   base_scalarsrV   r   )r  r  r5   znrk  r   r   r   s           r   8test_lambdify__arguments_with_invalid_python_identifiersr  ^  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r  )r   rw   rV   )curlyvr  s     r   test_curly_matrix_symbolr  i  sg    q!,,F
66
"
"C3q6619999
664
0
0
0C3q661999999r   c                  p    t          d          } | dz  }t          | |          } |d          dk    sJ d S )Nifr         @r   r  )	python_ifrk  r   s      r   test_python_keywordsr  r  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 +...)
rV   r   r   r   r   
splitlines__doc__lenr   sum)rl  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                     t          t          t          dz             } d}t          j        |           |k    sJ t          j        |           }|                    d          sJ |t          j        v sJ t          j        |         t          |          d |	                    d          |fk    sJ ~ t          j                     |t          j        vsJ d S )Nr   z,def _lambdifygenerated(x):
    return x + 1
z<lambdifygenerated-T)rV   r   inspect	getsourcegetsourcefile
startswith	linecachecacher  r  gccollect)rl  sourcefilenames      r   test_lambdify_linecacher    s    Aq1uD=FT""f,,,,$T**H455555y&&&&?8$VdF<M<Md<S<SU](^^^^^JLLL9?******r   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)rk  r  s    r   intervalreprz+test_special_printers.<locals>.intervalrepr  s      ((...r   r   r   r   r   )r   r  r   r   g?   )r4  r  r#   r   HalfrV   rK  r   mpir  r   rC   )r  rk  func0rz  r{  r  exp1r\   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)rV   rL   rH   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   r  r   )r   )r   r   r   Fr  r   )rV   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  )r|   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   ra  r    s)        	. 	. 	.  


r   ra  r   r     z2*x)r   Symbolrz   r  replace)ra  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)rV   r   r   r   rI   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   )rV   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           st          d           t                               g d          } t                               g d          }t                               g d          }t                               g d          }t                                t	          t
          t          ft          t
          t                              | |          |k              sJ t                                t	          t
          t          ft          t
          t                              | |          |k              sJ t                                t	          t
          t          t          ft          t
          t          t                              | ||           |k              sJ t                                t	          t
          t          t          ft          t
          t          t                              | ||           |k              sJ t                                t	          t
          ft          t
                              |           | k              sJ t                                t	          t
          ft          t
                              |           | k              sJ t                                t	          t
          t          t          t          ft          t
          t          t          t                              | || d          g dk              sJ t                                t	          t
          t          t          t          ft          t
          t          t          t                              | || d          g d	k              sJ  t	          t
          t          ft          t
                    t          t                    g          | |          dd
gk    sJ t                               g dg dg dg          } t	          t
          ft          t
          d          t          t
          d          g          |          \  }}t                               |t                               |d          k              sJ t                               |t                               |d          k              sJ t                                t	          t
          t          ft          t
          t                              g dg d          g dk              sJ t                                t	          t
          t          dt
                              g d          g d	k              sJ d S )Nr  )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r      )r   r   r  )r   r  r   r   )axisr   r   r  )r   r   r   )r   r~   r  r  rV   r   r   rg   rf   r   r   rd   re   r!   r"   )a234a152a254a132r  min_max_s          r   test_amin_amax_minimum_maximumr    s?    $"###;;yyy!!D;;yyy!!D;;yyy!!D;;yyy!!D994Xq!fgamm44T4@@DHIIIII994Xq!fgamm44T4@@DHIIIII 99:Xq!QiAq)9)9::4tLLPTTUUUUU99:Xq!QiAq)9)9::4tLLPTTUUUUU 99/XqdGAJJ//55=>>>>>99/XqdGAJJ//55=>>>>> 99@Xq!QlGAq!Q,?,?@@tTSTUUYbYbYbbccccc99@Xq!QlGAq!Q,?,?@@tTSTUUYbYbYbbccccc 08QFT!WWd1gg.//d;;1vEEEE				

 	 	A
 D1$aa$qq/// BCCAFFJD$99TUZZZ2223333399TUZZZ22233333 990Xq!fc!Qii00IIIFF)))STTTTT99-Xq3q!99--iii88IIIEFFFFFFFr   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  r  zi jr   r   r   r   r   r   )	r   r~   rS   r   r  rV   r   r   r   )r  r  jr  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          dt          ft          ddf          } dt          z  }|                                 |k    sJ  t          t          g|           d          |                    t          d          k    sJ d S )Nr   r   B   r  )r   r   r   r   r  rV   r  )rG  r   s     r   test_Sumr    sv    A1ay1a*%%A
Q$C6688s????8QCA#((1a..000000r   c                      t          d          } t          d          }g d} t          | |g| |                   |d          dk    sJ d S )Nr  r  r   r   r   )rS   rT   rV   )r  r  r  s      r   test_Idxr  $  sX    CACAA!8QFAaD!!!Q''1,,,,,,r   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   )rV   r   r   r   r   r   )rt  ru  s     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   )r   r~   rV   r   r+   r   nr   s    r   test_issue_13642r  4  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   )rV   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   Fr  r   r   r   r   rV   )d1r   f1bd2r   r   s         r   test_lambdify_dummy_argr%  @  s    	B	"b1fe	,	,	,B2a55A::::
2rAv

C3q66Q;;;;	sB	"b1f		B2a55A::::	B4&"q&	!	!B2qc77a<<<<<<r   c                      t                      } t          t          |                     }t          | |g| |z
            } |dd          dk    sJ d S )Nr   r   r   )r   r   r   rV   )r  dsymr   s      r   %test_lambdify_mixed_symbol_dummy_argsr(  M  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  r   r   r   r   )r   r~   rV   r   r   r  r   s    r   test_numpy_array_argr*  U  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   r   r      r   r   r   r   gvIh%<=)(r   r~   r:   r;   r<   r   rB   rC   rA   r?   r@   r'  expigammalnpsisicir   r  seedr   rV   r   rangeuniformr   r   r   r   r1   r3   r0   r2   rD   pochjvyvivkvr   int)single_arg_sympy_fnssingle_arg_scipy_fnssympy_fnscipy_fnr   r  tvrs  scipy_resultdouble_arg_sympy_fnsdouble_arg_scipy_fnstv1tv2s                r   test_scipy_fnsrG  _  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   &.>)rl  r<  rs  rB  r	   tol)r   r~   r   r  r4  r   rm   rn   ro   rp   rq   rr   rs   rt   ru   r   rV   r5  randinttupler6  r   r   r   r   AssertionErrorformatrepr)paramspolysmsgr?  
num_paramsr<  r   _tntparamsrA  valsrB  rs  atolr	   s                   r   test_scipy_polysrZ    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)rV   r   r  r  r   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   r3  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 )NFr  )rG  r}   r   fxs   r   r   z:test_lambdify_Derivative_arg_issue_16468.<locals>.<lambda>  s*    Y2w"e44455 r   Tr  r   )   r  )
r   r   r	   rV   rG  r}   r   r  r   r  ra  s   @@r   (test_lambdify_Derivative_arg_issue_16468rd    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                                        t          d          } t          t          | dg          } |d          }t          d                                          t          d                                          z
  dz  }t          ||z
            t          |          z  dk     sJ t          t          dz                                t                    }t          t          |dg          } |d	          }d
|z  }t          ||z
            t          |          z  dk     sJ d S )NF)evaluater   r   r   gW   @r  gHz>g;f?g;f@)rE   r   r	   rV   r   r   )rt  r   ans1ref1ru  r   ans2r  s           r   test_lambdify_Derivative_zetarj    s
   GGLLUL++E	!UXJ	/	/	/B2a55DLL  a0$6Dtd{CII%,,,,AJJOOAE	!UXJ	/	/	/B2f::DD=DtDy>>#d))#d******r   c                     t          d          } t          d          } G d dt                     | t                                        t                    t	          t
          fd           t          t          g          } |d          dk    sJ  |t                                        t                    t	          t
          fd	           d S )
Nrz  r{  c                       e Zd Zd ZdS ):test_lambdify_Derivative_custom_printer.<locals>.MyPrinterc                     |\  }|\  }dS )N42r   )r  r<  
seq_ordersrl   orders        r   _print_Derivative_func1zRtest_lambdify_Derivative_custom_printer.<locals>.MyPrinter._print_Derivative_func1  s    DCFE4r   N)r  r  r  rr  r   r   r   	MyPrinterrm    s#        	 	 	 	 	r   rs  c                  0    t          t          g           S r   r   )rt  s   r   r   z9test_lambdify_Derivative_custom_printer.<locals>.<lambda>  s    8QC3G3G r   r  r  r  c                  4    t          t          g           S r  r   )rs  ru  s   r   r   z9test_lambdify_Derivative_custom_printer.<locals>.<lambda>  s    8QCPY3Z3Z3Z r   )r   r{   r   r	   r   ry   rV   )rz  r{  r   rs  rt  ru  s      @@@r   'test_lambdify_Derivative_custom_printerrv  	  s    WEWE    L    E!HHMM!E
)+G+G+G+GHHH	1#ui	0	0	0B2a55B;;;;E!HHMM!E
)+Z+Z+Z+Z+Z[[[[[r   c                  >   t          d          \  } }} t          d          |           }|                    | d          |                    |           |||f}||                    | d          z  ||                    |           z  z   ||z  |z  z   |dz  z   }d}d}||                    | d          z  ||                    |           z  z   ||z  |z  z
  |dz  z   |dz  z
  }d}	t          g ddd	g          D ]\  }
}t	          ||||

          } || }t          ||z
            dk     sJ t	          |||g||

          } || }t          |          dk    sJ t          |d         |z
            dk     sJ t          |d         |	z
            dk     sJ d S )Nzt, a, br   r   )r   r   r  rv  g      @   i)FNTFT)rO   r  g-q=r   r   )r   r   r	   r   rV   r   r  )r  r  r  r   r<  rt  num_argsrh  ru  r  r  _cserz  res1func12res12s                   r   3test_lambdify_derivative_and_functions_as_argumentsr~    s   i  GAq!aA66!Q<<Aq!+DaffQllNQqvvayy[(1Q3q501a47E&H#DaffQllNQqvvayy[(1Q3q501a47!Q$>E*D !4!4!4udmDD 	, 	,u$@@@uh4$;%''''$D'JJJ!5zzQ58d?##e++++58d?##e+++++	, 	,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      @       @)rV   r   r   rj   r   rk   imag)f_rer  f_ims      r   test_imag_realr  5  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   )r   r~   rw   r  rV   r@  )r  A0r   r  s       r   test_MatrixSymbol_issue_15578r  >  s     $"###S!QA	q!fq!f%	&	&BAGA>>!!B%%sBi#t-E!F!FGGGGGAqDA>>!!B%%r2hS	-B!C!CDDDDDDDr   c            	      X   t           st          d           ddlm} m}m}m} ddlm} d\  }}}}|	                    ||||          
                                }	t          | |||f|	                    | |||                    }
 |
||||          }t          |	|z
            dk     sJ d S )Nr,  r   )r  r  r   Z)hydrogen)r   r   r   r   r   )r   r~   	sympy.abcr  r  r   r  sympy.physicsr  R_nlr   rV   r   )r  r  r   r  r  nvlvrvZvsympy_valuer   scipy_values               r   test_issue_15654r  I  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  rP  )r   r   r  )r   r   r   r   )r   r   r   r   r   )x      ih  i  iX  )r   r~   rw   r   rV   array_equalr  object)	r  r  r  r  r  r   r  hr  s	            r   test_issue_15827r  U  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>u  s    1=1a4' r   r   r   r   )r   r~   r   rV   	constantsgolden_ratio)r   r   f_s      r   test_issue_16930r  p  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   r   r   r   )r   r~   r   rV   r   LambertWr   lambertw)r   r  s     r   test_issue_17898r  y  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   re  r   )r   r~   rV   r   r   r9   r   r  )r   r   r{  res2s       r   test_issue_13167_21411r    ss    $"###	!U_Q''	(	(B	!U_Q**	+	+B2jjj>>D2jjj>>DtAw<<>>e####tAw}!!E))))tAw{%''''tAw<<>>e####tAw{%''''tAw{%''''''r   c                  v    t          t          t                    }  | d          t          d          k    sJ d S )N   r   )rV   r   r
   r   r   s    r   test_single_er    s4    AA1R55CHHr   c                     t           st          d           t          d          } t          | t                    }t          | t          f|d          }t          t          dd           |dd          z
            dk    sJ t          | t                    }t          | t          f|d          }t          t          dd           |dd          z
            dk    sJ d S )Nr,  r  r   r   r   r   r  )r   r~   r   r   r   rV   r   r   )r  r   r  r   s       r   test_issue_16536r    s     $"###A	Aq		B!QW---Az!Q!!Aq'')**e3333	Aq		B!QW---Az!Q!!Aq'')**e333333r   c                     t           st          d           t          d          \  } }t          t          j        t          | |                    }t          || |f          }t          | |f|d          }| d|di}t          |
                    |           ||                                 z
            dk                                    sJ d S Nr  zx1 x2r   r   r   r   r  )r   r~   r   r!   r   Zeror"   rP   rV   r   r  valuesr  )x1x2r   r  r  points         r   test_issue_22726r    s     $"###WFBAFCBKK  AB8$$A"b1g...ABNEu5<<>> 2233u<AACCCCCCCr   c                  D   t           st          d           t          d          \  } }t          t	          | |                    }t          | |f|d          }| d|di}t          |                    |           ||                                 z
            dk    sJ d S r  )	r   r~   r   r9   r"   rV   r   r  r  )r  r  r   r  r  s        r   test_issue_22739r    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   r   r   r  )
r   r~   r   r   r)   r(   rV   r   r  r  )r  r  rk  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   r   r   )r   r~   rQ   r   rV   	__class__r  )rk  r   s     r   test_issue_19764r    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 installedr   T)nopythonr   g	T?)r   r~   rV   r   r*   jitr   s    r   test_issue_20070r    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,  r   r   ?r  )r   r~   r=   r   r>   rV   r   )r   r   F1F2s       r   test_fresnel_integrals_scipyr    s     $"###	!B	!B	!R	)	)	)B	!R	)	)	)Bx}}rr#ww&''50000x}}rr#ww&''5000000r   c                     t           st          d           t          t          t                    } t          t          t          f| d          }t          t          dd           |dd          z
            dk    sJ d S )Nr,  r   r   r  ffffff@r  )r   r~   r6   r   r   rV   r   r   r  s     r   test_beta_scipyr    st     $"###Q

A!QG,,,AtC~~#s+,,555555r   c                      t          t          t                    } t          t          t          f| d          }t	          t          dd           |dd          z
            dk    sJ d S )Nr   r   r  r  r  )r6   r   r   rV   r   r  s     r   test_beta_mathr    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,  r   r   gffffff?g@r   re  r  )	r   r~   r7   r   r   r   r   rV   r   r  s     r   test_betainc_scipyr    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,  r   r   r   r6  r   r   r  )	r   r~   r8   r   r   r   r   rV   r   r  s     r   test_betainc_regularized_scipyr    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   )r  g?r   )r  z:Need to handle other than unary & binary functions in testr   gJz5gn5g!z05g"}t3)r   r~   rZ   r[   r\   r]   r^   r_   rb   rc   r;  r   r   NotImplementedErrorrV   r  r  r   r   r@  r  r   )	funcsrl  rk  r<  ry  r   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,  r   r   g#B;gWw'&l7gN~h.r   )r   r   g333333?rJ  g-=gFFg<)r   r~   rV   r   rh   r   rM  mapr<  versionsplitr   ri   )cm1have_scipy_1_10pluscm2s      r   test_scipy_special_mathr  %  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,  r   r   r   re  )r   r~   rV   r   r   )berns    r   test_scipy_bernoullir  3  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,  r   r   r   r  g      ?)r   r~   rV   r   r   r   )hnhnms     r   test_scipy_harmonicr  ;  s     $"###	1$W	5	5	5B2a55C<<<<
Aq68Aq>>7
;
;
;C3q!99r   c                  2   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    }|dk    sJ dt          t          |                    v sJ d S )NCuPy not installedr   r   r   r   r   r~   rV   r   r   r  r   rK  r   r  s     r   test_cupy_array_argr  E  s     #!"""1a&1Q37F++AQtzz3*%%&&FQ;;;;Sf&&&&&&&&r   c                  2   t           st          d           t          t          t          ggt          t          z  t          z   d          }  | t                               ddg                    }|dk    sJ dt          t          |                    v sJ d S )Nr  r   r   r   r   r   r  r  s     r   test_cupy_array_arg_using_numpyr  O  s      #!"""1a&1Q37G,,AQtzz3*%%&&FQ;;;;Sf&&&&&&&&r   c                     t           st          d           t          t          t          t
          g          } t          t          t          t
          gt          | |           d          }t          t          t          t
          gt          | | j                  d          }t          t          t          t
          gt          | j        |           d          }t          t          t          t
          gt          | | j                  d          } |ddd           |ddd          cxk    rC |ddd          cxk    r1 |ddd          cxk    rt           	                    dg          k    sn J d S )Nr  r   r   r   r   r   r  )
r   r~   rv   r   r   r   rV   rM   r  r  r  s        r   test_cupy_dotproductr  [  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 installedr   r   r   r   	r   r~   rV   r   r   r   r  r   rK  r  s     r   test_jax_array_argr  l  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 )Nr  r   r   r   r   r   r  r  s     r   test_jax_array_arg_using_numpyr  v  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 )Nr  r   r   r   r   r   r  )r   r~   rv   r   r   r   rV   rM   r  r   r  r  s        r   test_jax_dotproductr    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_cse  s    5yr   c                 N    ddl m}  || t          t                              S )Nr   rN   clsr   )sympy.simplify.cse_mainrO   rW   r   )r  rO   s     r   	dummy_csez$test_lambdify_cse.<locals>.dummy_cse  s5    //////s5"2u"="="=>>>>r   c                 ,    ddl m}m}  || |          S )Nr   )cse_release_variablesrO   )postprocess)r  r
  rO   )r  r
  rO   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   ).0rG  	subs_dicts     r   
<listcomp>z<test_lambdify_cse.<locals>.Case.__init__.<locals>.<listcomp>  s1    AAAay))//11AAAr   )r<  r  ry  r  r   r   r  )r  r<  r  ry  r  r  s        @r   __init__z(test_lambdify_cse.<locals>.Case.__init__  s\    DIDJ$DMSDM::;;IAAAA5AAADH"0Dr   c                :    t          | j        | j        |          S )NrN   )rV   r<  r  )r  rO   s     r   rV   z(test_lambdify_cse.<locals>.Case.lambdify  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 )rP  )r  rY  N)r   r@  asarrayr  )r  r  r   r  r  r  s      r   	<genexpr>zAtest_lambdify_cse.<locals>.Case.assertAllClose.<locals>.<genexpr>  sm       < <#q! !>>&)U]]1E]5R5R/5F * D D < < < < < <r   r   )r  r  	enumerater   r   )r  r  r  r  r  r   abs_errs    ```   r   assertAllClosez.test_lambdify_cse.<locals>.Case.assertAllClose  s    "  < < < < < <'0':':< < < < < < < < !$(++ 3 31fQi!m,,66"V+++++"3q66>F222223 3r   N)r  r  r  r  rV   r  r   r   r   Caser    s_        DI 	1 	1 	1 	1 	1	< 	< 	< 49 	3 	3 	3 	3 	3 	3 	3r   r   r   )r   r   r  )r<  r  ry  r   )r   r   r  )r   r   r  r   )r   r   r   T)r<  r  ry  r  )r   r   FrN   )r   r   r   r   r9   r+   rv   r*   r   r  rV   ry  r  )	r  r  r  r   casescaserz  r   r  s	            r   test_lambdify_cser#    s     ? ? ?= = =3 3 3 3 3 3 3 36 	QUQYUQYqS1Q3Y]cAX1q 	 "		
 		
 		
 	Q""""""1%%%eoa###	 "		
 		
 		
 	QQKQKQK
 %	
 	
 	
 	QAaC3q66A:q!t"4566!CFF
1a4!SVVQT*++
  		
 		
 		
 	QEAI>1a!eUQqS1WQQ.1qAE0BD		
 	
 	
Q.E^  ( ( 	, 	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  rN   )rG  r  s    r   r   z"test_issue_25288.<locals>.<lambda>  s    c!T6J6J6J r   rN   )rW   r   rV   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   rV   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   r   r   r  r  r      r  )r   r~   rw   rV   r  r  r  )r+  r   r1  r2  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   TrN   )r   r   r   g     r@)r   r   r   expandrV   )r   r  rk  	eval_expranss        r   test_23536_lambdify_cse_dummyr2    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  r7  r8  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`))r8  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`))r8  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   rC  z,LambdifyDocstringTestCase.expected_docstring+  sL    %N% % !% %
  % % % 	 "!r   c                 *    t          | j                  S r   )r  rC  r  s    r   __len__z!LambdifyDocstringTestCase.__len__8  s    4*+++r   c                 @    | j         j         d| j         d| j         dS )Nz(docstring_limit=z, expected_redacted=))r  r  r7  r8  rE  s    r   __repr__z"LambdifyDocstringTestCase.__repr__;  s>    ~& ; ;#3; ;!%!7; ; ;	
r   )r  r  r  rB  r:  r>  r  propertyr<  r@  rC  rF  rI  r   r   r   r4  r4    s        ID
C3 3 3 N N XN L L XL 
" 
" X
", , ,
 
 
 
 
r   r4  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  rB  r:  r>  r   r   r   SimpleSymbolTestCaserM  E  s"        	 	r   rO  r   Fr6  r   r   r   Tr   r   r7  )r4  r   rV   r7  r  rC  )rO  r   
test_cases	test_caselambdified_exprs        r   0test_lambdify_docstring_size_limit_simple_symbolrT  C  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]
NrN  r   r   r   ExprListTestCaserW  b  s(        	 	
J 	r   rY  rX  r   Fr6     r   Tr   r   r   rP  )r4  r   r/  rV   r7  r  rC  )rY  r   r   r   rk  rQ  rR  rS  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>.MatrixTestCaserX  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]])
NrN  r   r   r   MatrixTestCaser^    s'        	 	
0 	r   r_  rX  r   Fr6  rZ  r   Tr   r   r   rP  )
r4  r   rv   r   r  r/  rV   r7  r  rC  )r_  r   r   r   rk  rQ  rR  rS  s           r   )test_lambdify_docstring_size_limit_matrixr`    sF   
 
 
 
 
2 
 
 
 i  GAq!AFA;Qa!eai!^,C,C,E,E FGHHD 	tuEEEseDDDrTBBBqDAAArTBBBJ   G G	"1I%5	
 
 
 &)*FFFFFFG Gr   c                      t          d          } d| ff}t          | |          } |d          }|dk    s
J d            d S )Nr  r   r   )r   r3  z2Lambdify did not handle the empty tuple correctly.r  )r  rk  r   r  s       r   test_lambdify_empty_tuplerb    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   re  r   r   r   gQ@te_޿gF#O3t9)rs   r   r   r   )rK  sympy_result_integersympy_result_complexmpmath_result_integermpmath_result_complexs        r   (test_assoc_legendre_numerical_evaluationrh    s    
C)!S#66<<>>)!Q2288::..q0)+@#FFFFF)+@#FFFFFFFr   c            
      p   t           g} t          r|                     d           | D ]}t          t          t          dt          t                    fd          |          } |t          d          
           dk    sJ  |t          d                     dk    sJ  |d          dk    sJ t          t          t          dt          t                    z  t          t                    fd          |          } |t          d          
           dk    sJ  |t          d                     dk    sJ  |d          dk    sJ t          t          t          dt          t                    fd          |          } |t          d                    dk    sJ  |d          dk    sJ d S )	Nr   g      @)r   Tr  g      E@r   g      r  )
r   r   r  rV   r   r$   ra   r  r   r`   )r   r  r   r   r  s        r   test_Piecewiserj    s   fG  w  Q	3a/;??EEq%,,4''''q%,,4''''qvv}}}}aCQKq#:KHH#NNr5<<-  D((((r5<<-  D((((r#ww#~~~~ Q	3a/;??EEqu#%%%%qvv}}}}} r   c                  ,   t           st          d           t          dd          } t          | |           }t                                |t                               g d                    t                               g d          k              sJ d S )Nr   r  )r   r   )r   r~   rR   rV   r  r  )r  r   s     r   test_array_symbolrl    s     %#$$$CA!aA99QQu{{777++,,GGG0D0DDEEEEEEEr   (`  	itertoolsr   r   r  r  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   r   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   r   r   #sympy.functions.elementary.integersr    (sympy.functions.elementary.miscellaneousr!   r"   r#   $sympy.functions.elementary.piecewiser$   (sympy.functions.elementary.trigonometricr%   r&   r'   r(   r)   r*   r+   r,   sympy.functionsr-   r.   r/   sympy.functions.special.besselr0   r1   r2   r3   r4   r5   &sympy.functions.special.beta_functionsr6   r7   r8   'sympy.functions.special.delta_functionsr9   'sympy.functions.special.error_functionsr:   r;   r<   r=   r>   r?   r@   'sympy.functions.special.gamma_functionsrA   rB   rC   rD   &sympy.functions.special.zeta_functionsrE   sympy.integrals.integralsrF   sympy.logic.boolalgrG   rH   rI   rJ   rK   rL   %sympy.matrices.expressions.dotproductrM   r  rO   sympy.tensor.arrayrP   rQ   sympy.tensor.array.expressionsrR   sympy.tensor.indexedrS   rT   r  rV   sympy.utilities.iterablesrW   sympy.vectorrX   sympy.core.exprrY   sympy.codegen.cfunctionsrZ   r[   r\   r]   r^   r_   r`   ra   sympy.codegen.numpy_nodesrb   rc   rd   re   rf   rg   sympy.codegen.scipy_nodesrh   ri   rj   rk   rl   #sympy.functions.special.polynomialsrm   rn   ro   rp   rq   rr   rs   rt   ru   sympy.matricesrv   rw   rx   sympy.printing.codeprinterry   r4  rz   sympy.printing.numpyr{   r|   r}   r~   sympy.utilities.decoratorr   sympy.utilities.exceptionsr   sympy.externalr   r   r   r   MutableDenseMatrixr   r   r   r   r   r   r   osenvironr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r#  r)  r+  r=  rE  rH  rK  rN  rP  rR  rU  rW  rY  r\  r_  ra  rc  rh  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r  r   r*  r4  r<  rD  rM  rZ  r_  rd  rg  ri  rk  rn  rp  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  r  r%  r(  r*  rG  rZ  r\  r^  rd  rj  rv  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r)  r-  r2  r4  rT  r[  r`  rb  rh  rj  rl  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 : : : : : : : : ; ; ; ; ; ; ; ; C C C C C C C C C C 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 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 7 7 7 7 7 7 . . . . . . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ < < < < < < ' ' ' ' ' ' 5 5 5 5 5 5 5 5 6 6 6 6 6 6 1 1 1 1 1 1 1 1 - - - - - - 6 6 6 6 6 6 # # # # # # + + + + + + Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 2 2 2 2 2 2 2 2 < < < < < < < < < <+ + + + + + + + + + + + + + + + + + + + + + > = = = = = = = = = E E E E E E 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  + + +.  . . ./ / // / // / /. . .. . .. . ./ / // / // / /0 0 00 0 00 0 0>* >* >*B	 	 	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 7*
+ 
+ 
+  @* * *5 5 5( ( (
* * *? ? ?
; ; ;&G &G &GTD D D1 1 1- - -- - -+ + ++ + +

 
 
  + + +6Y 6Y 6Yr9 9 9x* * *  $
? 
? 
?+ + +\ \ \(, , ,0! ! !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  0F F F F Fr   