【发布时间】:2016-07-28 05:56:59
【问题描述】:
从一个 sympy 逻辑表达式,我想得到等效的 C 代码。首先,我注意到您不能使用像 and 和 or 这样的本机逻辑运算符,因为 sympy 会以某种方式将它们剥离。很公平,有& and friends。我试过了
from sympy import *
from sympy.utilities.codegen import codegen
x = Symbol('x')
is_valid = Symbol('is_valid')
# f = x > 0 and is_valid # TypeError: cannot determine truth value of
f = (x > 0) & is_valid # And(is_valid, x > 0)
# TypeError: The first argument must be a sympy expression.
[(c_name, c_code), (h_name, c_header)] = codegen(("f", f), "C")
但由于某种原因,我得到了
TypeError: 第一个参数必须是 sympy 表达式。
有什么提示吗?
【问题讨论】:
-
Sympy 不会删除
and和or。这些运算符在 Python 中是“硬编码”的,不能被类型重载,因此 Python 会尝试执行它们,但会失败或不会产生您想要的结果。 -
@Nico - 我想删除我的答案。你能把它取消标记为正确吗?
标签: python code-generation sympy