Skip to content

Commit dfe6154

Browse files
committed
Wrapped sech, csch, asech and acsch functions
1 parent 43c9e24 commit dfe6154

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed

symengine/lib/symengine.pxd

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,14 @@ cdef extern from "<symengine/basic.h>" namespace "SymEngine":
241241
bool is_a_Cosh "SymEngine::is_a<SymEngine::Cosh>"(const Basic &b) nogil
242242
bool is_a_Tanh "SymEngine::is_a<SymEngine::Tanh>"(const Basic &b) nogil
243243
bool is_a_Coth "SymEngine::is_a<SymEngine::Coth>"(const Basic &b) nogil
244+
bool is_a_Csch "SymEngine::is_a<SymEngine::Csch>"(const Basic &b) nogil
245+
bool is_a_Sech "SymEngine::is_a<SymEngine::Sech>"(const Basic &b) nogil
244246
bool is_a_ASinh "SymEngine::is_a<SymEngine::ASinh>"(const Basic &b) nogil
245247
bool is_a_ACosh "SymEngine::is_a<SymEngine::ACosh>"(const Basic &b) nogil
246248
bool is_a_ATanh "SymEngine::is_a<SymEngine::ATanh>"(const Basic &b) nogil
247249
bool is_a_ACoth "SymEngine::is_a<SymEngine::ACoth>"(const Basic &b) nogil
250+
bool is_a_ACsch "SymEngine::is_a<SymEngine::ACsch>"(const Basic &b) nogil
251+
bool is_a_ASech "SymEngine::is_a<SymEngine::ASech>"(const Basic &b) nogil
248252
bool is_a_FunctionSymbol "SymEngine::is_a<SymEngine::FunctionSymbol>"(const Basic &b) nogil
249253
bool is_a_Abs "SymEngine::is_a<SymEngine::Abs>"(const Basic &b) nogil
250254
bool is_a_Gamma "SymEngine::is_a<SymEngine::Gamma>"(const Basic &b) nogil
@@ -419,10 +423,14 @@ cdef extern from "<symengine/functions.h>" namespace "SymEngine":
419423
cdef RCP[const Basic] cosh(RCP[const Basic] &arg) nogil except+
420424
cdef RCP[const Basic] tanh(RCP[const Basic] &arg) nogil except+
421425
cdef RCP[const Basic] coth(RCP[const Basic] &arg) nogil except+
426+
cdef RCP[const Basic] csch(RCP[const Basic] &arg) nogil except+
427+
cdef RCP[const Basic] sech(RCP[const Basic] &arg) nogil except+
422428
cdef RCP[const Basic] asinh(RCP[const Basic] &arg) nogil except+
423429
cdef RCP[const Basic] acosh(RCP[const Basic] &arg) nogil except+
424430
cdef RCP[const Basic] atanh(RCP[const Basic] &arg) nogil except+
425431
cdef RCP[const Basic] acoth(RCP[const Basic] &arg) nogil except+
432+
cdef RCP[const Basic] acsch(RCP[const Basic] &arg) nogil except+
433+
cdef RCP[const Basic] asech(RCP[const Basic] &arg) nogil except+
426434
cdef RCP[const Basic] function_symbol(string name, const vec_basic &arg) nogil except+
427435
cdef RCP[const Basic] abs(RCP[const Basic] &arg) nogil except+
428436
cdef RCP[const Basic] gamma(RCP[const Basic] &arg) nogil except+
@@ -485,6 +493,12 @@ cdef extern from "<symengine/functions.h>" namespace "SymEngine":
485493
cdef cppclass Coth(HyperbolicFunction):
486494
pass
487495

496+
cdef cppclass Csch(HyperbolicFunction):
497+
pass
498+
499+
cdef cppclass Sech(HyperbolicFunction):
500+
pass
501+
488502
cdef cppclass ASinh(HyperbolicFunction):
489503
pass
490504

@@ -497,6 +511,12 @@ cdef extern from "<symengine/functions.h>" namespace "SymEngine":
497511
cdef cppclass ACoth(HyperbolicFunction):
498512
pass
499513

514+
cdef cppclass ACsch(HyperbolicFunction):
515+
pass
516+
517+
cdef cppclass ASech(HyperbolicFunction):
518+
pass
519+
500520
cdef cppclass FunctionSymbol(Function):
501521
string get_name() nogil
502522

symengine/lib/symengine_wrapper.pxd

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ cdef class Tanh(HyperbolicFunction):
9797
cdef class Coth(HyperbolicFunction):
9898
pass
9999

100+
cdef class Csch(HyperbolicFunction):
101+
pass
102+
103+
cdef class Sech(HyperbolicFunction):
104+
pass
105+
100106
cdef class ASinh(HyperbolicFunction):
101107
pass
102108

@@ -109,6 +115,12 @@ cdef class ATanh(HyperbolicFunction):
109115
cdef class ACoth(HyperbolicFunction):
110116
pass
111117

118+
cdef class ACsch(HyperbolicFunction):
119+
pass
120+
121+
cdef class ASech(HyperbolicFunction):
122+
pass
123+
112124
cdef class FunctionSymbol(Function):
113125
pass
114126

symengine/lib/symengine_wrapper.pyx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ cdef c2py(RCP[const symengine.Basic] o):
9393
r = Tanh.__new__(Tanh)
9494
elif (symengine.is_a_Coth(deref(o))):
9595
r = Coth.__new__(Coth)
96+
elif (symengine.is_a_Csch(deref(o))):
97+
r = Csch.__new__(Csch)
98+
elif (symengine.is_a_Sech(deref(o))):
99+
r = Sech.__new__(Sech)
96100
elif (symengine.is_a_ASinh(deref(o))):
97101
r = ASinh.__new__(ASinh)
98102
elif (symengine.is_a_ACosh(deref(o))):
@@ -101,6 +105,10 @@ cdef c2py(RCP[const symengine.Basic] o):
101105
r = ATanh.__new__(ATanh)
102106
elif (symengine.is_a_ACoth(deref(o))):
103107
r = ACoth.__new__(ACoth)
108+
elif (symengine.is_a_ACsch(deref(o))):
109+
r = ACsch.__new__(ACsch)
110+
elif (symengine.is_a_ASech(deref(o))):
111+
r = ASech.__new__(ASech)
104112
elif (symengine.is_a_ATan2(deref(o))):
105113
r = ATan2.__new__(ATan2)
106114
elif (symengine.is_a_PyNumber(deref(o))):
@@ -184,6 +192,10 @@ def sympy2symengine(a, raise_error=False):
184192
return tanh(a.args[0])
185193
elif isinstance(a, sympy.coth):
186194
return coth(a.args[0])
195+
elif isinstance(a, sympy.csch):
196+
return csch(a.args[0])
197+
elif isinstance(a, sympy.sech):
198+
return sech(a.args[0])
187199
elif isinstance(a, sympy.asinh):
188200
return asinh(a.args[0])
189201
elif isinstance(a, sympy.acosh):
@@ -192,6 +204,10 @@ def sympy2symengine(a, raise_error=False):
192204
return atanh(a.args[0])
193205
elif isinstance(a, sympy.acoth):
194206
return acoth(a.args[0])
207+
elif isinstance(a, sympy.acsch):
208+
return acsch(a.args[0])
209+
elif isinstance(a, sympy.asech):
210+
return asech(a.args[0])
195211
elif isinstance(a, sympy.log):
196212
return log(a.args[0])
197213
elif isinstance(a, sympy.Abs):
@@ -2207,6 +2223,14 @@ def coth(x):
22072223
cdef Basic X = sympify(x)
22082224
return c2py(symengine.coth(X.thisptr))
22092225

2226+
def sech(x):
2227+
cdef Basic X = sympify(x)
2228+
return c2py(symengine.sech(X.thisptr))
2229+
2230+
def csch(x):
2231+
cdef Basic X = sympify(x)
2232+
return c2py(symengine.csch(X.thisptr))
2233+
22102234
def asinh(x):
22112235
cdef Basic X = sympify(x)
22122236
return c2py(symengine.asinh(X.thisptr))
@@ -2223,6 +2247,14 @@ def acoth(x):
22232247
cdef Basic X = sympify(x)
22242248
return c2py(symengine.acoth(X.thisptr))
22252249

2250+
def asech(x):
2251+
cdef Basic X = sympify(x)
2252+
return c2py(symengine.asech(X.thisptr))
2253+
2254+
def acsch(x):
2255+
cdef Basic X = sympify(x)
2256+
return c2py(symengine.acsch(X.thisptr))
2257+
22262258
def function_symbol(name, *args):
22272259
cdef symengine.vec_basic v
22282260
cdef Basic e_

symengine/sympy_compat.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,19 @@ class coth(_RegisteredFunction):
216216
def __new__(cls, a):
217217
return symengine.coth(a)
218218

219+
class csch(_RegisteredFunction):
220+
_classes = (symengine.Csch,)
221+
222+
def __new__(cls, a):
223+
return symengine.csch(a)
224+
225+
226+
class sech(_RegisteredFunction):
227+
_classes = (symengine.Sech,)
228+
229+
def __new__(cls, a):
230+
return symengine.sech(a)
231+
219232

220233
class asinh(_RegisteredFunction):
221234
_classes = (symengine.ASinh,)
@@ -244,6 +257,18 @@ class acoth(_RegisteredFunction):
244257
def __new__(cls, a):
245258
return symengine.acoth(a)
246259

260+
class acsch(_RegisteredFunction):
261+
_classes = (symengine.ACsch,)
262+
263+
def __new__(cls, a):
264+
return symengine.acsch(a)
265+
266+
267+
class asech(_RegisteredFunction):
268+
_classes = (symengine.ASech,)
269+
270+
def __new__(cls, a):
271+
return symengine.asech(a)
247272

248273
class atan2(_RegisteredFunction):
249274
_classes = (symengine.ATan2,)

0 commit comments

Comments
 (0)