Skip to content

Commit bf388b5

Browse files
authored
Merge pull request #145 from isuruf/compat
Make symengine.lib.symengine_wrapper compatible with sympy
2 parents 4c73dc4 + 245ccab commit bf388b5

10 files changed

+618
-945
lines changed

symengine/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ add_subdirectory(lib)
22
add_subdirectory(tests)
33

44
set(PY_PATH ${PYTHON_INSTALL_PATH}/symengine)
5-
install(FILES __init__.py utilities.py compatibility.py sympy_compat.py
5+
install(FILES __init__.py utilities.py compatibility.py sympy_compat.py functions.py
66
DESTINATION ${PY_PATH}
77
)

symengine/__init__.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
from .lib.symengine_wrapper import (Symbol, Integer, sympify, SympifyError,
2-
Add, Mul, Pow, exp, log, gamma, sqrt, function_symbol, I, E, pi,
3-
have_mpfr, have_mpc, have_flint, have_piranha, have_llvm,
4-
RealDouble, ComplexDouble, MutableDenseMatrix, ImmutableDenseMatrix,
5-
DenseMatrix, Matrix, sin, cos, tan, cot, csc, sec, asin, acos, atan,
6-
acot, acsc, asec, sinh, cosh, tanh, coth, asinh, acosh, atanh, acoth,
7-
Lambdify, LambdifyCSE, DictBasic, series, symarray, diff, zeros, eye,
8-
diag, ones, zeros, add, expand, has_symbol, UndefFunction)
1+
from .lib.symengine_wrapper import (Symbol, sympify as S, sympify,
2+
SympifyError, Add, Mul, Pow, function_symbol, I, E, pi,
3+
have_mpfr, have_mpc, have_flint, have_piranha, have_llvm,
4+
Integer, Rational, Float, Number, RealNumber, RealDouble,
5+
ComplexDouble, Max, Min, DenseMatrix, Matrix, ImmutableMatrix,
6+
ImmutableDenseMatrix, MutableDenseMatrix, MatrixBase, Basic,
7+
Lambdify, LambdifyCSE, Lambdify as lambdify, DictBasic, symarray,
8+
series, diff, zeros, eye, diag, ones, Derivative, Subs,
9+
add, expand, has_symbol, UndefFunction, Function,
10+
FunctionSymbol as AppliedUndef)
911
from .utilities import var, symbols
12+
from .functions import *
1013

1114
if have_mpfr:
1215
from .lib.symengine_wrapper import RealMPFR

symengine/functions.py

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from .lib.symengine_wrapper import (sin, cos, tan, cot, csc, sec,
2+
asin, acos, atan, acot, acsc, asec,
3+
sinh, cosh, tanh, coth, sech, csch,
4+
asinh, acosh, atanh, acoth, asech, acsch,
5+
gamma, log, atan2, sqrt, exp, Abs)

symengine/lib/symengine.pxd

+17-15
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ cdef extern from "<symengine/symengine_rcp.h>" namespace "SymEngine":
138138
RCP[const Add] rcp_static_cast_Add "SymEngine::rcp_static_cast<const SymEngine::Add>"(RCP[const Basic] &b) nogil
139139
RCP[const Mul] rcp_static_cast_Mul "SymEngine::rcp_static_cast<const SymEngine::Mul>"(RCP[const Basic] &b) nogil
140140
RCP[const Pow] rcp_static_cast_Pow "SymEngine::rcp_static_cast<const SymEngine::Pow>"(RCP[const Basic] &b) nogil
141-
RCP[const TrigFunction] rcp_static_cast_TrigFunction "SymEngine::rcp_static_cast<const SymEngine::TrigFunction>"(RCP[const Basic] &b) nogil
142-
RCP[const HyperbolicFunction] rcp_static_cast_HyperbolicFunction "SymEngine::rcp_static_cast<const SymEngine::HyperbolicFunction>"(RCP[const Basic] &b) nogil
141+
RCP[const OneArgFunction] rcp_static_cast_OneArgFunction "SymEngine::rcp_static_cast<const SymEngine::OneArgFunction>"(RCP[const Basic] &b) nogil
143142
RCP[const FunctionSymbol] rcp_static_cast_FunctionSymbol "SymEngine::rcp_static_cast<const SymEngine::FunctionSymbol>"(RCP[const Basic] &b) nogil
144143
RCP[const FunctionWrapper] rcp_static_cast_FunctionWrapper "SymEngine::rcp_static_cast<const SymEngine::FunctionWrapper>"(RCP[const Basic] &b) nogil
145144
RCP[const Abs] rcp_static_cast_Abs "SymEngine::rcp_static_cast<const SymEngine::Abs>"(RCP[const Basic] &b) nogil
@@ -445,9 +444,12 @@ cdef extern from "<symengine/functions.h>" namespace "SymEngine":
445444
cdef cppclass Function(Basic):
446445
pass
447446

448-
cdef cppclass TrigFunction(Function):
447+
cdef cppclass OneArgFunction(Function):
449448
RCP[const Basic] get_arg() nogil
450449

450+
cdef cppclass TrigFunction(OneArgFunction):
451+
pass
452+
451453
cdef cppclass Sin(TrigFunction):
452454
pass
453455

@@ -484,8 +486,8 @@ cdef extern from "<symengine/functions.h>" namespace "SymEngine":
484486
cdef cppclass ASec(TrigFunction):
485487
pass
486488

487-
cdef cppclass HyperbolicFunction(Function):
488-
RCP[const Basic] get_arg() nogil
489+
cdef cppclass HyperbolicFunction(OneArgFunction):
490+
pass
489491

490492
cdef cppclass Sinh(HyperbolicFunction):
491493
pass
@@ -542,16 +544,16 @@ cdef extern from "<symengine/functions.h>" namespace "SymEngine":
542544
vec_basic get_variables() nogil
543545
vec_basic get_point() nogil
544546

545-
cdef cppclass Abs(Function):
546-
RCP[const Basic] get_arg() nogil
547+
cdef cppclass Abs(OneArgFunction):
548+
pass
547549

548550
cdef cppclass Max(Function):
549551
pass
550552

551553
cdef cppclass Min(Function):
552554
pass
553555

554-
cdef cppclass Gamma(Function):
556+
cdef cppclass Gamma(OneArgFunction):
555557
pass
556558

557559
cdef cppclass ATan2(Function):
@@ -656,17 +658,17 @@ cdef extern from "<symengine/matrix.h>" namespace "SymEngine":
656658
bool is_a_DenseMatrix "SymEngine::is_a<SymEngine::DenseMatrix>"(const MatrixBase &b) nogil
657659
DenseMatrix* static_cast_DenseMatrix "static_cast<SymEngine::DenseMatrix*>"(const MatrixBase *a)
658660
void inverse_FFLU "SymEngine::inverse_fraction_free_LU"(const DenseMatrix &A,
659-
DenseMatrix &B) nogil
660-
void pivoted_LU (const DenseMatrix &A, DenseMatrix &L, DenseMatrix &U, vector[int] &P) nogil
661-
void pivoted_LU_solve (const DenseMatrix &A, const DenseMatrix &b, DenseMatrix &x) nogil
661+
DenseMatrix &B) nogil except +
662+
void pivoted_LU (const DenseMatrix &A, DenseMatrix &L, DenseMatrix &U, vector[int] &P) nogil except +
663+
void pivoted_LU_solve (const DenseMatrix &A, const DenseMatrix &b, DenseMatrix &x) nogil except +
662664
void inverse_GJ "SymEngine::inverse_gauss_jordan"(const DenseMatrix &A,
663-
DenseMatrix &B) nogil
665+
DenseMatrix &B) nogil except +
664666
void FFLU_solve "SymEngine::fraction_free_LU_solve"(const DenseMatrix &A,
665-
const DenseMatrix &b, DenseMatrix &x) nogil
667+
const DenseMatrix &b, DenseMatrix &x) nogil except +
666668
void FFGJ_solve "SymEngine::fraction_free_gauss_jordan_solve"(const DenseMatrix &A,
667-
const DenseMatrix &b, DenseMatrix &x) nogil
669+
const DenseMatrix &b, DenseMatrix &x) nogil except +
668670
void LDL_solve "SymEngine::LDL_solve"(const DenseMatrix &A, const DenseMatrix &b,
669-
DenseMatrix &x) nogil
671+
DenseMatrix &x) nogil except +
670672
void jacobian "SymEngine::sjacobian"(const DenseMatrix &A,
671673
const DenseMatrix &x, DenseMatrix &result) nogil except +
672674
void diff "SymEngine::sdiff"(const DenseMatrix &A,

symengine/lib/symengine_wrapper.pxd

-150
Original file line numberDiff line numberDiff line change
@@ -4,159 +4,9 @@ from symengine cimport RCP, map_basic_basic
44
cdef class Basic(object):
55
cdef RCP[const symengine.Basic] thisptr
66

7-
cdef class Number(Basic):
8-
pass
9-
10-
cdef class Integer(Number):
11-
pass
12-
13-
cdef class Rational(Number):
14-
pass
15-
16-
cdef class Complex(Number):
17-
pass
18-
19-
cdef class RealDouble(Number):
20-
pass
21-
22-
cdef class ComplexDouble(Number):
23-
pass
24-
25-
cdef class RealMPFR(Number):
26-
pass
27-
28-
cdef class ComplexMPC(Number):
29-
pass
30-
31-
cdef class PyNumber(Number):
32-
pass
33-
34-
cdef class Add(Basic):
35-
pass
36-
37-
cdef class Mul(Basic):
38-
pass
39-
40-
cdef class Pow(Basic):
41-
pass
42-
43-
cdef class Function(Basic):
44-
pass
45-
46-
cdef class TrigFunction(Function):
47-
pass
48-
49-
cdef class Sin(TrigFunction):
50-
pass
51-
52-
cdef class Cos(TrigFunction):
53-
pass
54-
55-
cdef class Tan(TrigFunction):
56-
pass
57-
58-
cdef class Cot(TrigFunction):
59-
pass
60-
61-
cdef class Csc(TrigFunction):
62-
pass
63-
64-
cdef class Sec(TrigFunction):
65-
pass
66-
67-
cdef class ASin(TrigFunction):
68-
pass
69-
70-
cdef class ACos(TrigFunction):
71-
pass
72-
73-
cdef class ATan(TrigFunction):
74-
pass
75-
76-
cdef class ACot(TrigFunction):
77-
pass
78-
79-
cdef class ACsc(TrigFunction):
80-
pass
81-
82-
cdef class ASec(TrigFunction):
83-
pass
84-
85-
cdef class HyperbolicFunction(Function):
86-
pass
87-
88-
cdef class Sinh(HyperbolicFunction):
89-
pass
90-
91-
cdef class Cosh(HyperbolicFunction):
92-
pass
93-
94-
cdef class Tanh(HyperbolicFunction):
95-
pass
96-
97-
cdef class Coth(HyperbolicFunction):
98-
pass
99-
100-
cdef class Csch(HyperbolicFunction):
101-
pass
102-
103-
cdef class Sech(HyperbolicFunction):
104-
pass
105-
106-
cdef class ASinh(HyperbolicFunction):
107-
pass
108-
109-
cdef class ACosh(HyperbolicFunction):
110-
pass
111-
112-
cdef class ATanh(HyperbolicFunction):
113-
pass
114-
115-
cdef class ACoth(HyperbolicFunction):
116-
pass
117-
118-
cdef class ACsch(HyperbolicFunction):
119-
pass
120-
121-
cdef class ASech(HyperbolicFunction):
122-
pass
123-
124-
cdef class FunctionSymbol(Function):
125-
pass
126-
127-
cdef class PyFunction(FunctionSymbol):
128-
pass
129-
130-
cdef class Abs(Function):
131-
pass
132-
133-
cdef class Gamma(Function):
134-
pass
135-
136-
cdef class ATan2(Function):
137-
pass
138-
139-
cdef class Derivative(Basic):
140-
pass
141-
142-
cdef class Subs(Basic):
143-
pass
144-
1457
cdef class MatrixBase(object):
1468
cdef symengine.MatrixBase* thisptr
1479

148-
cdef class DenseMatrixBase(MatrixBase):
149-
pass
150-
151-
cdef class MutableDenseMatrix(DenseMatrixBase):
152-
pass
153-
154-
cdef class ImmutableDenseMatrix(DenseMatrixBase):
155-
pass
156-
157-
cdef class Log(Function):
158-
pass
159-
16010
cdef class PyFunctionClass(object):
16111
cdef RCP[const symengine.PyFunctionClass] thisptr
16212

0 commit comments

Comments
 (0)