def _print_Add(self, expr):
if not (self._settings['use_autoeye'] or self._settings['py_solve']):
return super()._print_Add(expr)
prec = precedence(expr)
num_terms = [i for i in expr.args if i.is_number]
rest_terms = [i for i in expr.args if i not in num_terms]
if len(rest_terms) > 1:
rest = super()._print_Add(Add(*rest_terms))
elif len(rest_terms) == 1:
rest = self._print(rest_terms[0])
else:
if self._settings['py_solve']:
return super()._print_Add(expr)
rest = ''
if len(num_terms) > 1:
num = self.__class__({**self._settings, 'use_autoeye': False})._print_Add(Add(*num_terms))
elif len(num_terms) == 1:
num = self.__class__({**self._settings, 'use_autoeye': False})._print(num_terms[0])
else:
num = ''
if rest and num:
if self._settings['py_solve']:
return "diag_add(%s, %s)" % (self._print(rest_terms[0]), self._print(Add(*num_terms)))
return self.parenthesize(rest + ' + autoeye(%s)' % num, prec)
elif rest:
return self.parenthesize(rest, prec)
else:
if self._settings['use_autoeye']:
# No need to parenthesize
return 'autoeye(%s)' % num
else:
return self.parenthesize(num, prec)
评论列表
文章目录