a function without any arguments with GiNaC?
Hallo, how can I make a function without any arguments with GiNaC? I just need a function returned a symbolic matrix. It's the same matrix every time. How I have to declare such a function? minimal example: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <math.h> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; REGISTER_FUNCTION (symbolic_matrix, dummy()); { symbol a("a"), b("b"), c("c"); GiNaC::matrix D(2,2), E(2,2); D = a, b, 0, c; E = sin(a), cos(b), -sin(c), cos(a); GiNaC::ex h = D.mul(E) ; return h; } Thank you very match, Michael Hoffmann P.S. : sorry for my english!
Hi, when you declare a new function on GiNaC you has to declare it with DECLARE_FUNCTION_xP (where x is the number of parameters), there is no DECLARE_FUNCTION_0P, and basically, there is no need for it (i think :), you won't derivate that function, or expand it, so, you don't need that support to a function of 0 args ). Why don't you declare it like a normal function? #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; ex myfcn(void) { symbol a("a"), b("b"), c("c"); GiNaC::matrix D(2,2), E(2,2); D = a, b, 0, c; E = sin(a), cos(b), -sin(c), cos(a); return D.mul(E); } int main(void) { ex r = myfcn(); cout << r << endl; } /tmp$ g++ -lginac -o test test.cpp /tmp$ ./test [[-sin(c)*b+a*sin(a),cos(a)*b+a*cos(b)],[-c*sin(c),c*cos(a)]] I hope that you find this useful. Bye. 2009/7/27 Michael Hoffmann <michael.hoffmann@unibw.de>:
Hallo, how can I make a function without any arguments with GiNaC? I just need a function returned a symbolic matrix. It's the same matrix every time. How I have to declare such a function?
minimal example:
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <math.h> #include <ginac/ginac.h> using namespace std; using namespace GiNaC;
REGISTER_FUNCTION (symbolic_matrix, dummy()); { symbol a("a"), b("b"), c("c");
GiNaC::matrix D(2,2), E(2,2);
D = a, b, 0, c;
E = sin(a), cos(b), -sin(c), cos(a);
GiNaC::ex h = D.mul(E) ;
return h; }
Thank you very match, Michael Hoffmann
P.S. : sorry for my english!
_______________________________________________ GiNaC-list mailing list GiNaC-list@ginac.de https://www.cebix.net/mailman/listinfo/ginac-list
-- Jorge Eduardo Cardona jorgeecardona@gmail.com jorgeecardona.blogspot.com ------------------------------------------------ Linux registered user #391186 Registered machine #291871 ------------------------------------------------
participants (2)
-
Jorge Cardona
-
Michael Hoffmann