(most of this text was written using google translate. english is not good at me. so there's a possibility that the meaning is not transmitted.) there may be unnecessary operation and defects. however, it is forced by this operation, but it have confirmed the operation of the tutorial examples. * step 0, dependencies. gmp 5.0.1 cln (gmp) 1.3.3 gcc 4.7.2 ld 2.23.1 m4 1.4.16 autoconf 2.68 autoreconf 2.68 automake 1.11 libtool 2.4 python 2.7.3 bison 2.4.2 flex 2.5.35 * step 1. $ git clone git://www.ginac.de/ginac.git * step 2, modify the 'ginac/config/config.rpath'. line 67: replace mingw* | pw32* | os2*) -> pw32* | os2*) line 57: insert mingw*) wl='Wl,' ;; line 135: replace cygwin* | mingw* | pw32*) -> cygwin* | pw32*) line 185: replace cygwin* | mingw* | pw32*) -> cygwin* | pw32*) line 199: replace linux*) -> linux* | mingw*) * step 3. $ cd ginac $ autoreconf -i * step 4, modify the 'ginac/configure'. line 15539: delete * step 5, modify the 'ginsh/ginsh_lexer.lpp'. line 37: replace #include "ginsh_parser.hpp" -> #include "ginsh_parser.h" * step 6. $ export CLN_LIBS="-L/usr/local/lib -lcln -lgmp" $ export CLN_CFLAGS="-I/usr/local/include" $ ./configure $ make $ make install * test 1. // hello.cpp ---------------- #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; int main() { symbol x("x"), y("y"); ex poly; for (int i=0; i<3; ++i) poly += factorial(i+16)*pow(x,i)*pow(y,2-i); cout << poly << endl; return 0; } $ g++ -c -O3 -I/usr/local/include -L/usr/local/bin hello.cpp $ g++ -o hello hello.o -lginac -lcln -lgmp &> result.txt $ ./hello 355687428096000*x*y+20922789888000*y^2+6402373705728000*x^2 * test 2. // hello2.cpp ---------------- #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; ex HermitePoly(const symbol & x, int n) { ex HKer=exp(-pow(x, 2)); // uses the identity H_n(x) == (-1)^n exp(x^2) (d/dx)^n exp(-x^2) return normal(pow(-1, n) * diff(HKer, x, n) / HKer); } int main() { symbol z("z"); for (int i=0; i<6; ++i) cout << "H_" << i << "(z) == " << HermitePoly(z,i) << endl; return 0; } $ g++ -c -O3 -I/usr/local/include -L/usr/local/bin hello2.cpp $ g++ -o hello2 hello2.o -lginac -lcln -lgmp &> result.txt $ ./hello2 H_0(z) == 1 H_1(z) == 2*z H_2(z) == -2+4*z^2 H_3(z) == -12*z+8*z^3 H_4(z) == 12+16*z^4-48*z^2 H_5(z) == 120*z+32*z^5-160*z^3
participants (1)
-
testhandle