[英]Sympy: C code from logical expression
從一個同情的邏輯表達式,我想獲得等效的C代碼。 首先,我注意到你不能使用像and
那樣的本機邏輯運算符, or
因為sympy以某種方式將它們剝離。 很公平,有&
朋友 。 我試過了
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表達式。
任何提示?
錯誤消息基於硬編碼的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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.