Skip to content

Commit 02c3944

Browse files
committed
Class AssocOp and methods _from_args and make_args
1 parent 445559e commit 02c3944

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

symengine/lib/symengine_wrapper.pyx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1740,7 +1740,28 @@ class NaN(Number):
17401740
import sage.all as sage
17411741
return sage.NaN
17421742

1743-
class Add(Basic):
1743+
1744+
class AssocOp(Basic):
1745+
1746+
@classmethod
1747+
def _from_args(cls, args):
1748+
if len(args) == 0:
1749+
return cls.identity
1750+
elif len(args) == 1:
1751+
return args[0]
1752+
1753+
obj = super(AssocOp, cls).__new__(cls, *args)
1754+
return obj
1755+
1756+
@classmethod
1757+
def make_args(cls, expr):
1758+
if isinstance(expr, cls):
1759+
return expr.args
1760+
else:
1761+
return (sympify(expr),)
1762+
1763+
1764+
class Add(AssocOp):
17441765

17451766
def __new__(cls, *args, **kwargs):
17461767
cdef symengine.vec_basic v_
@@ -1783,7 +1804,7 @@ class Add(Basic):
17831804
inc(iter)
17841805
return d
17851806

1786-
class Mul(Basic):
1807+
class Mul(AssocOp):
17871808

17881809
def __new__(cls, *args, **kwargs):
17891810
cdef symengine.vec_basic v_

0 commit comments

Comments
 (0)