Skip to content

Commit e6c8b45

Browse files
committed
div for matrices
1 parent 5bb89c0 commit e6c8b45

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

symengine/lib/symengine_wrapper.pyx

+15
Original file line numberDiff line numberDiff line change
@@ -3087,6 +3087,21 @@ cdef class DenseMatrixBase(MatrixBase):
30873087
else:
30883088
return NotImplemented
30893089

3090+
def __div__(a, b):
3091+
a = _sympify(a, False)
3092+
b = _sympify(b, False)
3093+
if isinstance(a, MatrixBase):
3094+
if isinstance(b, MatrixBase):
3095+
return a.mul_matrix(b.inv())
3096+
elif isinstance(b, Basic):
3097+
return a.mul_scalar(1/b)
3098+
else:
3099+
return NotImplemented
3100+
else:
3101+
return NotImplemented
3102+
3103+
__truediv__ = __div__
3104+
30903105
def __sub__(a, b):
30913106
a = _sympify(a, False)
30923107
b = _sympify(b, False)

symengine/tests/test_matrices.py

+13
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,19 @@ def test_sub():
217217
raises(TypeError, lambda: 5 - A)
218218

219219

220+
def test_div():
221+
w, x, y, z = symbols("w, x, y, z")
222+
A = DenseMatrix([[w, x], [y, z]])
223+
B = DenseMatrix([[1, 1], [1, 0]])
224+
C = DenseMatrix([[x, w - x], [z, y - z]])
225+
226+
assert A / 2 == DenseMatrix([[w/2, x/2], [y/2, z/2]])
227+
assert C * B == A
228+
assert A / B == C
229+
230+
raises(TypeError, lambda: 2/A)
231+
232+
220233
def test_transpose():
221234
A = DenseMatrix(3, 3, [1, 2, 3, 4, 5, 6, 7, 8, 9])
222235

0 commit comments

Comments
 (0)