簡體   English   中英

Sympy:來自邏輯表達式的C代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM