假设我有一个表达式

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.ccode或sympy.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;
}

关于python - 为sympy表达式“e1 op e2”生成C代码,其中op是算术比较运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34121023/

10-12 18:13