2015-05-19 3 views
0

Я создаю серию параметрических симплексных функций, зависящих от переменных x, y. Некоторые из функций оказываются зависящими только от некоторых переменных. поэтому, когда я называю «codegen», интерфейс создаваемых функций меняется (иногда он включает в себя все переменные, иногда нет). Тем не менее, я хочу, чтобы иметь возможность вызывать функции в равномерном образом в С.sympy codegen: force uniform signature

Чтобы сделать длинную историю Короче говоря, вот пример:

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 создать обе функции с равной подписью?

ответ

1

Я думаю, что вы ищете аргумент argument_sequence для codegen(). Он позволяет указать фиксированный порядок, а также принимать избыточные аргументы.

Документировано here.

+0

классный, спасибо - ссылка выглядит многообещающей! Это было какое-то время, но я дам ему попробовать в следующий раз :-) – zuuz