codegen.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:transmutagen 作者: ergs 项目源码 文件源码
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))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号