def _print_Mul(self, expr):
prec = precedence(expr)
pows = [i for i in expr.args if i.is_Pow and i.exp < 0]
if len(pows) > 1:
raise NotImplementedError("Need exactly one inverted Pow, not %s" % len(pows))
if not pows:
no_autoeye = self.__class__({**self._settings, 'use_autoeye': False})
num_terms = [no_autoeye._print(no_autoeye.parenthesize(i, prec)) for i in
expr.args if i.is_number]
mat_terms = [self._print(self.parenthesize(i, prec)) for i in
expr.args if not i.is_number]
if len(mat_terms) >= 2 and self._settings['py_solve']:
raise NotImplementedError("matrix multiplication is not yet supported with py_solve")
if num_terms and mat_terms:
return '*'.join(num_terms) + '*' + '@'.join(mat_terms)
else:
if self._settings['use_autoeye']:
if num_terms:
return ('autoeye(%s)' % '*'.join(num_terms)) + '@'.join(mat_terms)
return '@'.join(mat_terms)
return '*'.join(num_terms) + '@'.join(mat_terms)
[pow] = pows
rest = Mul(*[i for i in expr.args if i != pow])
return 'solve(%s, %s)' % (self._print(1/pow), self._print(rest))
评论列表
文章目录