gpt4 book ai didi

python - Sympy:来自逻辑表达式的 C 代码

转载 作者:行者123 更新时间:2023-11-28 17:28:32 25 4
gpt4 key购买 nike

从一个 sympy 逻辑表达式,我想得到等效的 C 代码。首先,我注意到您不能使用像 andor 这样的原生逻辑运算符,因为 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: The first argument must be a sympy expression.

有什么提示吗?

最佳答案

错误消息基于硬编码的 isinstance 检查。如果它被删除,我得到

#include "f.h"
#include <math.h>

double f(double is_valid, double x) {

double f_result;
f_result = is_valid && x > 0;
return f_result;

}

但是请注意,这可能仍然不是您想要的,因为 is_valid 被设置为 double 型,而您可能希望它是一个 int(或 C99 bool)。

我的建议:直接在你的表达式上使用ccode,然后手动编写函数包装器。您也可以使用 pycodeexport如果您需要更具可扩展性的东西。

关于python - Sympy:来自逻辑表达式的 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36474708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com