U
    L?h                  5   @   s  d dl Z e ddZe dkZer:d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z; d dlm<Z< dd	d
dZej=ej=>dd e_=ndd dl?m2Z2 d dl@m8Z8 d dlAm)Z)m/Z/m<Z<m.Z.m4Z4 d dlBm3Z3 d dlCm;Z; d dlDmZmZmZm7Z7mZ d dlEm	Z	 d dlFmZm1Z1m0Z0 d dlGm
Z
mZ d dlHmZmZ d dlIm"Z"mZm$Z$m&Z&m!Z!m#Z#m%Z%m Z  d dlJmZ d dlKmZmZmZmZmZmZmZmZmZmZmZmZ d dlLmZ d dlMm+Z+m*Z*m,Z,mZm-Z-m(Z( d dlNm5Z5 d dlOm6Z6 d dlPm'Z' d d! ZQd"d#dd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUg5ZRdS )V    NUSE_SYMENGINE0)1ttrue)3SymbolIntegersympifySSympifyErrorexploggammasqrtIEpiMatrixsincostancotcscsecasinacosatanacotacscasecsinhcoshtanhcothasinhacoshatanhacothlambdifysymarraydiffzeroseyediagonesexpandFunctionsymbolsvarAddMul
DerivativeImmutableMatrix
MatrixBaseRationalBasic)gcd)AppliedUndefF)strictc                C   s   |rt | trt| t| S )a  
        Notes
        =====

        SymEngine's ``sympify`` does not accept keyword arguments and is
        therefore not compatible with SymPy's ``sympify`` with ``strict=True``
        (which ensures that only the types for which an explicit conversion has
        been defined are converted). This wrapper adds an addiotional parameter
        ``strict`` (with default ``False``) that will raise a ``SympifyError``
        if ``strict=True`` and the argument passed to the parameter ``a`` is a
        string.

        See Also
        ========

        sympify: Converts an arbitrary expression to a type that can be used
            inside SymPy.

        )
isinstancestrr   sympify_symengine)ar<    rA   D/var/www/html/venv/lib/python3.8/site-packages/sympy/core/backend.pyr	      s    r	   z        z    )r3   )r9   )r*   r0   r;   r/   r5   )r4   )igcd)r   r   r   r8   r   )r
   )r   r2   r1   )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)   )r6   )r7   )r(   c                 C   s<   t | ttfstd|  }|  t | tr8| }|S )z(Return a simplified copy of the matrix Mz=The matrix M must be an instance of Matrix or ImmutableMatrix)r=   r   r6   	TypeErrorZ
as_mutablesimplifyZas_immutable)MZMnewrA   rA   rB   _simplify_matrixe   s    
rG   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   rC   r;   )Sosgetenvr   lowerZ	symenginer   r   r	   r?   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Zsymengine.lib.symengine_wrapperr:   rC   r;   __doc__replaceZsympy.core.addZsympy.core.basicZsympy.core.functionZsympy.core.mulZsympy.core.intfuncZsympy.core.numbersZsympy.core.singletonZsympy.core.symbolZsympy.core.sympifyZ&sympy.functions.elementary.exponentialZ%sympy.functions.elementary.hyperbolicZ(sympy.functions.elementary.miscellaneousZ(sympy.functions.elementary.trigonometricZ'sympy.functions.special.gamma_functionsZsympy.matrices.denseZsympy.matrices.immutableZsympy.matrices.matrixbaseZsympy.utilities.lambdifyrG   __all__rA   rA   rA   rB   <module>   s   (8                                               