Hello, On Fri, 12 Dec 2003, Volker Vogel wrote:
I'am trying to define composite functions, for example this one:
/ 1 for all x > 1 f(x) =| x*x for all 1 >= x >= -1 \ 1 for all x <-1
Later I want to evaluate this function with different x. I tried to do this allready using
symbol x("x"); string polystr="if (abs(x)>1) {1}else{x*x}"; ex poly; poly=ex(polystr,x); cout << poly;
Try the following untested-so-may-contain-errors code DECLARE_FUNCTION_1P(f) static ex f_eval(const ex&x) { if(is_a<numeric>(x)) return abs(x)<1 ? x*x : 1; return f(x).hold(); } REGISTER_FUNCTION(f,eval_func(f_eval)) Perhaps you may later want to add more smartness to your f_eval. Perhaps you would want it to be capable of doing f(atan(x)) -> atan(x)^2. This kind of thing can be added. Good luck, Chris Dams