Files
tea3-py/src/tea3/pretty_print.py
T

49 lines
1023 B
Python

def pretty_print(poly):
R_terms = []
r_terms = []
x_terms = []
mixed_terms = []
if isinstance(poly, int):
return str(poly)
has_const = bool(poly.constant_coefficient())
for monom in poly:
vars_in_term = [str(v) for v in monom.variables()]
if not vars_in_term:
continue
term = "*".join(vars_in_term)
families = {v[0] for v in vars_in_term}
if families == {"R"}:
R_terms.append(term)
elif families == {"r"}:
r_terms.append(term)
elif families == {"x"}:
x_terms.append(term)
else:
mixed_terms.append(term)
parts = []
if has_const:
parts.append("1")
if R_terms:
parts.append("f(Ri)")
if r_terms:
parts.append("f(ri)")
parts.extend(x_terms)
parts.extend(mixed_terms)
return " + ".join(parts) if parts else "0"
def pretty_print_vec(vec):
return "[" + ",\n ".join(pretty_print(p) for p in vec) + "]"