Thank you very much! You brought me 1 step closer to my PhD ;-) Regards, Tomasz. PS. I have been using GiNaC for just 1 week, but I have already become its supporter.
Hello,
On Sat, Sep 03, 2011 at 10:22:18PM +1000, Tomasz Rudny wrote:
I have the following problem - I have a polynomial P(x) and before I proceed with some calculations on it, I want to make sure it does not contain terms like for example:
10e-12 * x
(in my case x is from (0, 1) so this is safe).
I want to somehow get rid of such small terms. In another words for polynomial P(x) = 2.3 * x ^ 2 + 10e-12 * x + 3.76
I want to obtain polynomial Q(x) = 2.3 * x ^ 2 + 3.76 #include<iostream> #include<string> #include<ginac/ginac.h> using namespace GiNaC;
class drop_small_coeff : public map_function { const numeric small_val; public: ex operator()(const ex& e) { if (is_a<add>(e)) return e.map(*this); numeric c = e.integer_content(); if (c< small_val) return 0; else return e; } drop_small_coeff(const numeric& small_val_) : small_val(small_val_) { } };
int main(int argc, char** argv) { parser p; ex e = p(std::string("x^3 + 10*x^2 + 1/1000*x + 1/10")); drop_small_coeff d(numeric("1/100")); std::cout<< e<< " => "<< d(e)<< std::endl; return 0; }
By the way, the documentation [1] contains a similar example (look for map_rem_quad).
[1] http://www.ginac.de/tutorial/Applying-a-function-on-subexpressions.html#Appl...
Best regards, Alexei
_______________________________________________ GiNaC-list mailing list GiNaC-list@ginac.de https://www.cebix.net/mailman/listinfo/ginac-list