hello, i'm new to ginac and got some problems with parsing own functions: #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; DECLARE_FUNCTION_3P(myfct) REGISTER_FUNCTION(myfct,dummy()) int main(int argc, char **argv){ symbol x("x"),y("y"); lst all; all = x,y; string str = "myfct(x,y,2)"; ex e(str, all); cout << e << endl; return 0; } ---> terminate called after throwing an instance of 'GiNaC::parse_error' what(): GiNaC: parse error at line 0, column 0: no function "myfct" with 3 arguments [GiNaC::ex GiNaC::parser::parse_identifier_expr()(parser/parser.cpp:66)] have i forgot something? thanks in advance. jan -- View this message in context: http://www.nabble.com/parse-own-function-tp24001248p24001248.html Sent from the Ginac - General mailing list archive at Nabble.com.
Hi Jan, what you see is a bug in GiNaC (or at least in the documentation because it doesn't describe a possible though ugly work-around), your code is fine. A working version would be: #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; DECLARE_FUNCTION_3P(myfct) REGISTER_FUNCTION(myfct,dummy()) ex myfct_reader(const exvector& ev) { return myfct(ev[0], ev[1], ev[2]); } int main(int argc, char **argv) { symbol x("x"),y("y"); symtab table; table["x"] = x; table["y"] = y; prototype_table funcs = get_default_reader(); funcs[make_pair("myfct", 3)] = myfct_reader; parser reader(table, false, funcs); string str = "myfct(x,y,2)"; ex e = reader(str); cout << e << endl; return 0; } Anyway, thanks for the "bug"-report. We'll try to fix it. Regards, Jens Jan.M schrieb:
hello,
i'm new to ginac and got some problems with parsing own functions:
#include <iostream> #include <ginac/ginac.h>
using namespace std; using namespace GiNaC;
DECLARE_FUNCTION_3P(myfct) REGISTER_FUNCTION(myfct,dummy())
int main(int argc, char **argv){ symbol x("x"),y("y"); lst all;
all = x,y;
string str = "myfct(x,y,2)"; ex e(str, all); cout << e << endl;
return 0; }
---> terminate called after throwing an instance of 'GiNaC::parse_error' what(): GiNaC: parse error at line 0, column 0: no function "myfct" with 3 arguments [GiNaC::ex GiNaC::parser::parse_identifier_expr()(parser/parser.cpp:66)]
have i forgot something? thanks in advance.
jan
participants (2)
-
Jan.M
-
Jens Vollinga