python - 同情代码生成 : force uniform signature

标签 python c++ sympy codegen

我正在创建一系列依赖于 x,y 变量的参数化 sympy 函数。一些函数结果只依赖于一些变量。因此,当我调用“codegen”时,创建的函数的接口(interface)会发生变化(有时它包括所有变量,有时不包括)。但是,我希望能够在 C 中以统一方式调用函数。

长话短说,这里是例子:

x,y = sympy.symbols("x,y")
S1 = x + y
S2 = x
d = {'S1':S1,'S2':S2}
for k in d.keys():
    [(c_name, c_code), (h_name, c_header)] = codegen((k, d[k]),  ...\
    "C",func_name,header=False, empty=False)
print(c_code)

哪些输出:

#include "S2.h"
#include <math.h>
double S2(double x) {
   double S2_result;
   S2_result = x;
   return S2_result;
}

#include "S1.h"
#include <math.h>
double S1(double x, double y) {
   double S1_result;
   S1_result = x + y;
   return S1_result;
}

我的问题是:如何让 codegen create 两个具有相同签名的函数?

最佳答案

我认为您正在寻找 codegen()argument_sequence 参数。它允许您指定一个固定的顺序,它也将接受冗余参数。

已记录 here .

关于python - 同情代码生成 : force uniform signature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325827/

相关文章:

c++ - 从 C 到 C++

python - sympy 函数图下方的颜色区域

python - 从 FiniteSet 中删除一个元素

python - 如何绘制日期列表的直方图?

使用 numpy 执行 elementwise "in"的 Pythonic 和有效方法

python - 在 try block 中获取

c++ - 在不丢失索引信息的情况下对 std::vector 进行排序

python - jsonrpc 的导入错误

c++ - 使用 C++ 进行图像处理

python - Sympy:如何将乘积的对数简化为对数和?