72 std::string name() {
return _name;};
77 virtual double evaluate(
const double * vars,
const double * args) = 0;
113 virtual ~
CFunc() {;};
116 virtual double evaluate(
const double * vars,
const double * args);
127 {
if(nb)
return NULL;
return deriv; };
155 virtual double evaluate(
const double * vars,
const double * args);
157 void * param() {
return _param;};
158 void set_param(
void * p) {
_param = p;};
164 std::map<int, FuncDef *> cached_derivatives;
170 FuncDef(s, nb_args) { exp = expr;};
181 {
return exp->
evaluate(vars, args);};
Definition: functions.hh:131
FuncDef * deriv
Definition: functions.hh:143
c_function_t func
The C function to be called.
Definition: functions.hh:138
virtual double evaluate(const double *vars, const double *args)
The function doing the actual job...
double(* c_function_t)(void *, double)
The type of arguments it accepts.
Definition: functions.hh:134
void * _param
The parameter !
Definition: functions.hh:146
Definition: functions.hh:95
double(* c_function_t)(double)
The type of arguments it accepts.
Definition: functions.hh:98
virtual void destroy_anonymous_derivatives()
Delete the derivative if anonymous.
virtual double evaluate(const double *vars, const double *args)
The function doing the actual job...
c_function_t func
The C function to be called.
Definition: functions.hh:102
virtual FuncDef * derivative(int nb)
Gets the derivative.
Definition: functions.hh:126
FuncDef * deriv
Definition: functions.hh:107
void set_derivative(FuncDef *d)
Definition: functions.hh:120
Definition: functions.hh:162
virtual void destroy_anonymous_derivatives()
Delete the derivative if anonymous.
virtual double evaluate(const double *vars, const double *args)
The function doing the actual job... pretty easy, isn't it ?
Definition: functions.hh:179
virtual FuncDef * derivative(int nb)
The derivative with regards to the argument nb.
ExprFunc(Session *s, Expression *expr, int nb_args)
construction of the function.
Definition: functions.hh:169
virtual std::string pretty_print()
Pretty printing of the result ?
An expression !
Definition: expression.hh:131
virtual double evaluate(const double *values, const double *s=NULL)=0
Evaluate the expression.
A function definition with any number of parameters.
Definition: functions.hh:39
int register_self()
Register the function to the session if it has a name.
virtual void destroy_anonymous_derivatives()
Delete the derivative if anonymous.
Definition: functions.hh:87
int nb_params()
The number of params the function takes.
Definition: functions.hh:65
std::string _name
Definition: functions.hh:50
virtual double evaluate(const double *vars, const double *args)=0
static void register_common_functions(Session *sess)
This function registers common functions to the given session.
virtual FuncDef * derivative(int nb)=0
The derivative with regards to the argument nb.
virtual int is_func_def()
Yes, this is a function definition.
Definition: functions.hh:56
virtual std::string pretty_print()
Pretty printing of the result ?
void set_name(const char *name)
Definition: functions.hh:70
virtual int can_delete()
Definition: functions.hh:91
The result of an SCalc::Session::eval().
Definition: expression.hh:36
A class representing a whole session.
Definition: session.hh:75