Skip to content

Commit 49e52da

Browse files
committed
Make srepr work correctly on Add and Mul subclasses
Fixes sympy#16430.
1 parent cc692d9 commit 49e52da

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

sympy/printing/repr.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@ def _print_Add(self, expr, order=None):
4848
args = self._as_ordered_terms(expr, order=order)
4949
nargs = len(args)
5050
args = map(self._print, args)
51+
clsname = type(expr).__name__
5152
if nargs > 255: # Issue #10259, Python < 3.7
52-
return "Add(*[%s])" % ", ".join(args)
53-
return "Add(%s)" % ", ".join(args)
53+
return clsname + "(*[%s])" % ", ".join(args)
54+
return clsname + "(%s)" % ", ".join(args)
5455

5556
def _print_Cycle(self, expr):
5657
return expr.__repr__()
@@ -138,9 +139,10 @@ def _print_Mul(self, expr, order=None):
138139

139140
nargs = len(args)
140141
args = map(self._print, args)
142+
clsname = type(expr).__name__
141143
if nargs > 255: # Issue #10259, Python < 3.7
142-
return "Mul(*[%s])" % ", ".join(args)
143-
return "Mul(%s)" % ", ".join(args)
144+
return clsname + "(*[%s])" % ", ".join(args)
145+
return clsname + "(%s)" % ", ".join(args)
144146

145147
def _print_Rational(self, expr):
146148
return 'Rational(%s, %s)' % (self._print(expr.p), self._print(expr.q))

sympy/printing/tests/test_repr.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from sympy.utilities.pytest import raises
22
from sympy import (symbols, Function, Integer, Matrix, Abs,
33
Rational, Float, S, WildFunction, ImmutableDenseMatrix, sin, true, false, ones,
4-
sqrt, root, AlgebraicNumber, Symbol, Dummy, Wild)
4+
sqrt, root, AlgebraicNumber, Symbol, Dummy, Wild, MatrixSymbol)
55
from sympy.core.compatibility import exec_
66
from sympy.geometry import Point, Ellipse
77
from sympy.printing import srepr
@@ -274,3 +274,11 @@ def test_Naturals0():
274274

275275
def test_Reals():
276276
sT(S.Reals, "Reals")
277+
278+
def test_matrix_expressions():
279+
n = symbols('n', integer=True)
280+
A = MatrixSymbol("A", n, n)
281+
B = MatrixSymbol("B", n, n)
282+
sT(A, "MatrixSymbol(Symbol('A'), Symbol('n', integer=True), Symbol('n', integer=True))")
283+
sT(A*B, "MatMul(MatrixSymbol(Symbol('A'), Symbol('n', integer=True), Symbol('n', integer=True)), MatrixSymbol(Symbol('B'), Symbol('n', integer=True), Symbol('n', integer=True)))")
284+
sT(A + B, "MatAdd(MatrixSymbol(Symbol('A'), Symbol('n', integer=True), Symbol('n', integer=True)), MatrixSymbol(Symbol('B'), Symbol('n', integer=True), Symbol('n', integer=True)))")

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy