簡體   English   中英

生成用於sympy表達式“ e1 op e2”的C代碼,其中op是算術比較運算符

[英]Generate C code for sympy expression “e1 op e2” where op is an arithmetic comparison operator

假設我有一個sympy表達

e1 op e2

其中op是任何算術比較運算符,例如<, >, <=等。

我想生成一個C代碼

double f(double x1,double x2,..., double xn){
  if (e1 op e2) return 0 else return 1;
}

其中x1,...,x2是e1或e2中的自由變量。 我可以使用sympy.printing.ccodesympy.utlilities.codegen簡化此代碼生成嗎?

這是一個使用ccodePiecewise的示例(您需要提供函數主體作為模板):

>>> from sympy import symbols, Piecewise, ccode
>>> x, y, z = symbols('x y z')
>>> e1 = x + 2
>>> e2 = y - 5
>>> rel = e1 < e2
>>> pw = Piecewise((0, rel), (1, True))
>>> print(ccode(pw, assign_to=z))
if (x + 2 < y - 5) {
   z = 0;
}
else {
   z = 1;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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