@@ -146,6 +146,30 @@ cdef c2py(RCP[const symengine.Basic] o):
146
146
r = Function.__new__ (ASech)
147
147
elif (symengine.is_a_ATan2(deref(o))):
148
148
r = Function.__new__ (ATan2)
149
+ elif (symengine.is_a_LambertW(deref(o))):
150
+ r = Function.__new__ (LambertW)
151
+ elif (symengine.is_a_Zeta(deref(o))):
152
+ r = Function.__new__ (zeta)
153
+ elif (symengine.is_a_DirichletEta(deref(o))):
154
+ r = Function.__new__ (dirichlet_eta)
155
+ elif (symengine.is_a_KroneckerDelta(deref(o))):
156
+ r = Function.__new__ (KroneckerDelta)
157
+ elif (symengine.is_a_LeviCivita(deref(o))):
158
+ r = Function.__new__ (LeviCivita)
159
+ elif (symengine.is_a_Erf(deref(o))):
160
+ r = Function.__new__ (erf)
161
+ elif (symengine.is_a_Erfc(deref(o))):
162
+ r = Function.__new__ (erfc)
163
+ elif (symengine.is_a_LowerGamma(deref(o))):
164
+ r = Function.__new__ (lowergamma)
165
+ elif (symengine.is_a_UpperGamma(deref(o))):
166
+ r = Function.__new__ (uppergamma)
167
+ elif (symengine.is_a_LogGamma(deref(o))):
168
+ r = Function.__new__ (loggamma)
169
+ elif (symengine.is_a_Beta(deref(o))):
170
+ r = Function.__new__ (beta)
171
+ elif (symengine.is_a_PolyGamma(deref(o))):
172
+ r = Function.__new__ (polygamma)
149
173
elif (symengine.is_a_PyNumber(deref(o))):
150
174
r = PyNumber.__new__ (PyNumber)
151
175
else :
@@ -190,6 +214,12 @@ def sympy2symengine(a, raise_error=False):
190
214
return E
191
215
elif a is sympy.pi:
192
216
return pi
217
+ elif a is sympy.GoldenRatio:
218
+ return GoldenRatio
219
+ elif a is sympy.Catalan:
220
+ return Catalan
221
+ elif a is sympy.EulerGamma:
222
+ return EulerGamma
193
223
elif a is sympy.S.NegativeInfinity:
194
224
return - oo
195
225
elif a is sympy.S.Infinity:
@@ -271,6 +301,30 @@ def sympy2symengine(a, raise_error=False):
271
301
return le(* a.args)
272
302
elif isinstance (a, sympy.StrictLessThan):
273
303
return lt(* a.args)
304
+ elif isinstance (a, sympy.LambertW):
305
+ return LambertW(a.args[0 ])
306
+ elif isinstance (a, sympy.zeta):
307
+ return zeta(* a.args)
308
+ elif isinstance (a, sympy.dirichlet_eta):
309
+ return dirichlet_eta(a.args[0 ])
310
+ elif isinstance (a, sympy.KroneckerDelta):
311
+ return KroneckerDelta(* a.args)
312
+ elif isinstance (a, sympy.LeviCivita):
313
+ return LeviCivita(* a.args)
314
+ elif isinstance (a, sympy.erf):
315
+ return erf(a.args[0 ])
316
+ elif isinstance (a, sympy.erfc):
317
+ return erfc(a.args[0 ])
318
+ elif isinstance (a, sympy.lowergamma):
319
+ return lowergamma(* a.args)
320
+ elif isinstance (a, sympy.uppergamma):
321
+ return uppergamma(* a.args)
322
+ elif isinstance (a, sympy.loggamma):
323
+ return loggamma(a.args[0 ])
324
+ elif isinstance (a, sympy.beta):
325
+ return beta(* a.args)
326
+ elif isinstance (a, sympy.polygamma):
327
+ return polygamma(* a.args)
274
328
elif isinstance (a, sympy.gamma):
275
329
return gamma(a.args[0 ])
276
330
elif isinstance (a, sympy.Derivative):
@@ -860,6 +914,12 @@ cdef class Constant(Basic):
860
914
return sympy.E
861
915
elif self == pi:
862
916
return sympy.pi
917
+ elif self == GoldenRatio:
918
+ return sympy.GoldenRatio
919
+ elif self == Catalan:
920
+ return sympy.Catalan
921
+ elif self == EulerGamma:
922
+ return sympy.EulerGamma
863
923
else :
864
924
raise Exception (" Unknown Constant" )
865
925
@@ -869,6 +929,12 @@ cdef class Constant(Basic):
869
929
return sage.e
870
930
elif self == pi:
871
931
return sage.pi
932
+ elif self == GoldenRatio:
933
+ return sage.golden_ratio
934
+ elif self == Catalan:
935
+ return sage.catalan
936
+ elif self == EulerGamma:
937
+ return sage.euler_gamma
872
938
else :
873
939
raise Exception (" Unknown Constant" )
874
940
@@ -1521,7 +1587,7 @@ class OneArgFunction(Function):
1521
1587
1522
1588
def _sympy_ (self ):
1523
1589
import sympy
1524
- return getattr (sympy, self .__class__ .__name__ .lower() )(self .get_arg()._sympy_())
1590
+ return getattr (sympy, self .__class__.__name__ )(self .get_arg()._sympy_())
1525
1591
1526
1592
def _sage_ (self ):
1527
1593
import sage.all as sage
@@ -1539,6 +1605,130 @@ class gamma(OneArgFunction):
1539
1605
cdef Basic X = sympify(x)
1540
1606
return c2py(symengine.gamma(X.thisptr))
1541
1607
1608
+ class LambertW (OneArgFunction ):
1609
+ def __new__ (cls , x ):
1610
+ cdef Basic X = sympify(x)
1611
+ return c2py(symengine.lambertw(X.thisptr))
1612
+
1613
+ def _sage_ (self ):
1614
+ import sage.all as sage
1615
+ return sage.lambert_w(self .get_arg()._sage_())
1616
+
1617
+ class zeta (Function ):
1618
+ def __new__ (cls , s , a = None ):
1619
+ cdef Basic S = sympify(s)
1620
+ if a == None :
1621
+ return c2py(symengine.zeta(S.thisptr))
1622
+ cdef Basic A = sympify(a)
1623
+ return c2py(symengine.zeta(S.thisptr, A.thisptr))
1624
+
1625
+ def _sympy_ (self ):
1626
+ import sympy
1627
+ return sympy.zeta(* self .args_as_sympy())
1628
+
1629
+ class dirichlet_eta (OneArgFunction ):
1630
+ def __new__ (cls , x ):
1631
+ cdef Basic X = sympify(x)
1632
+ return c2py(symengine.dirichlet_eta(X.thisptr))
1633
+
1634
+ class KroneckerDelta (Function ):
1635
+ def __new__ (cls , x , y ):
1636
+ cdef Basic X = sympify(x)
1637
+ cdef Basic Y = sympify(y)
1638
+ return c2py(symengine.kronecker_delta(X.thisptr, Y.thisptr))
1639
+
1640
+ def _sympy_ (self ):
1641
+ import sympy
1642
+ return sympy.KroneckerDelta(* self .args_as_sympy())
1643
+
1644
+ def _sage_ (self ):
1645
+ import sage.all as sage
1646
+ return sage.kronecker_delta(* self .args_as_sage())
1647
+
1648
+ class LeviCivita (Function ):
1649
+ def __new__ (cls , *args ):
1650
+ cdef symengine.vec_basic v
1651
+ cdef Basic e_
1652
+ for e in args:
1653
+ e_ = sympify(e)
1654
+ v.push_back(e_.thisptr)
1655
+ return c2py(symengine.levi_civita(v))
1656
+
1657
+ def _sympy_ (self ):
1658
+ import sympy
1659
+ return sympy.LeviCivita(* self .args_as_sympy())
1660
+
1661
+ class erf (OneArgFunction ):
1662
+ def __new__ (cls , x ):
1663
+ cdef Basic X = sympify(x)
1664
+ return c2py(symengine.erf(X.thisptr))
1665
+
1666
+ class erfc (OneArgFunction ):
1667
+ def __new__ (cls , x ):
1668
+ cdef Basic X = sympify(x)
1669
+ return c2py(symengine.erfc(X.thisptr))
1670
+
1671
+ class lowergamma (Function ):
1672
+ def __new__ (cls , x , y ):
1673
+ cdef Basic X = sympify(x)
1674
+ cdef Basic Y = sympify(y)
1675
+ return c2py(symengine.lowergamma(X.thisptr, Y.thisptr))
1676
+
1677
+ def _sympy_ (self ):
1678
+ import sympy
1679
+ return sympy.lowergamma(* self .args_as_sympy())
1680
+
1681
+ def _sage_ (self ):
1682
+ import sage.all as sage
1683
+ return sage.gamma_inc_lower(* self .args_as_sage())
1684
+
1685
+ class uppergamma (Function ):
1686
+ def __new__ (cls , x , y ):
1687
+ cdef Basic X = sympify(x)
1688
+ cdef Basic Y = sympify(y)
1689
+ return c2py(symengine.uppergamma(X.thisptr, Y.thisptr))
1690
+
1691
+ def _sympy_ (self ):
1692
+ import sympy
1693
+ return sympy.uppergamma(* self .args_as_sympy())
1694
+
1695
+ def _sage_ (self ):
1696
+ import sage.all as sage
1697
+ return sage.gamma_inc(* self .args_as_sage())
1698
+
1699
+ class loggamma (OneArgFunction ):
1700
+ def __new__ (cls , x ):
1701
+ cdef Basic X = sympify(x)
1702
+ return c2py(symengine.loggamma(X.thisptr))
1703
+
1704
+ def _sage_ (self ):
1705
+ import sage.all as sage
1706
+ return sage.log_gamma(self .get_arg()._sage_())
1707
+
1708
+ class beta (Function ):
1709
+ def __new__ (cls , x , y ):
1710
+ cdef Basic X = sympify(x)
1711
+ cdef Basic Y = sympify(y)
1712
+ return c2py(symengine.beta(X.thisptr, Y.thisptr))
1713
+
1714
+ def _sympy_ (self ):
1715
+ import sympy
1716
+ return sympy.beta(* self .args_as_sympy())
1717
+
1718
+ def _sage_ (self ):
1719
+ import sage.all as sage
1720
+ return sage.beta(* self .args_as_sage())
1721
+
1722
+ class polygamma (Function ):
1723
+ def __new__ (cls , x , y ):
1724
+ cdef Basic X = sympify(x)
1725
+ cdef Basic Y = sympify(y)
1726
+ return c2py(symengine.polygamma(X.thisptr, Y.thisptr))
1727
+
1728
+ def _sympy_ (self ):
1729
+ import sympy
1730
+ return sympy.polygamma(* self .args_as_sympy())
1731
+
1542
1732
class log (OneArgFunction ):
1543
1733
def __new__ (cls , x , y = None ):
1544
1734
cdef Basic X = sympify(x)
@@ -2701,15 +2891,18 @@ cdef class Sieve_iterator:
2701
2891
I = c2py(symengine.I)
2702
2892
E = c2py(symengine.E)
2703
2893
pi = c2py(symengine.pi)
2894
+ GoldenRatio = c2py(symengine.GoldenRatio)
2895
+ Catalan = c2py(symengine.Catalan)
2896
+ EulerGamma = c2py(symengine.EulerGamma)
2704
2897
oo = c2py(symengine.Inf)
2705
2898
zoo = c2py(symengine.ComplexInf)
2706
2899
nan = c2py(symengine.Nan)
2707
2900
true = c2py(symengine.boolTrue)
2708
2901
false = c2py(symengine.boolFalse)
2709
2902
2710
2903
def module_cleanup ():
2711
- global I, E, pi, oo, zoo, nan, true, false, sympy_module, sage_module
2712
- del I, E, pi, oo, zoo, nan, true, false, sympy_module, sage_module
2904
+ global I, E, pi, oo, zoo, nan, true, false, GoldenRatio, Catalan, EulerGamma, sympy_module, sage_module
2905
+ del I, E, pi, oo, zoo, nan, true, false, GoldenRatio, Catalan, EulerGamma, sympy_module, sage_module
2713
2906
2714
2907
import atexit
2715
2908
atexit.register(module_cleanup)
@@ -2796,6 +2989,14 @@ def lt(lhs, rhs):
2796
2989
cdef Basic Y = sympify(rhs)
2797
2990
return c2py(< RCP[const symengine.Basic]> (symengine.Lt(X.thisptr, Y.thisptr)))
2798
2991
2992
+ def digamma (x ):
2993
+ cdef Basic X = sympify(x)
2994
+ return c2py(symengine.digamma(X.thisptr))
2995
+
2996
+ def trigamma (x ):
2997
+ cdef Basic X = sympify(x)
2998
+ return c2py(symengine.trigamma(X.thisptr))
2999
+
2799
3000
def eval_double (x ):
2800
3001
cdef Basic X = sympify(x)
2801
3002
return c2py(< RCP[const symengine.Basic]> (symengine.real_double(symengine.eval_double(deref(X.thisptr)))))
0 commit comments