PIP 5.6.1
Platform-Independent Primitives
Public Member Functions | List of all members
PIEvaluator Class Reference

Expression evaluator with reusable compiled instructions. More...

#include <pievaluator.h>

Public Member Functions

 PIEvaluator ()
 Constructs an empty evaluator.
 
 ~PIEvaluator ()
 Destroys the evaluator.
 
void * data ()
 Returns custom user data passed to callback functions.
 
void setData (void *_data)
 Sets custom user data for callback functions.
 
bool check (const PIString &string)
 Checks and compiles an expression.
 
bool isCorrect () const
 Returns true if the last check() succeeded.
 
int setVariable (const PIString &name, complexd value=complexd(0.))
 Sets a named variable and creates it if needed.
 
void setVariable (int index, complexd value=0.)
 Sets a variable by index.
 
complexd evaluate ()
 Evaluates the last successfully compiled expression.
 
void clearCustomVariables ()
 Removes user-added variables and keeps built-in constants.
 
int variableIndex (const PIString &name) const
 Returns variable index by name, or -1.
 
const PIStringListunknownVariables () const
 Returns unknown variables found during the last check().
 
const PIStringListusedVariables () const
 Returns variables used in the last checked expression.
 
const PIStringexpression () const
 Returns the normalized form of the last checked expression.
 
const PIStringerror () const
 Returns the last status or error text from check().
 
const complexdlastResult () const
 Returns the last evaluation result.
 
PIByteArray save () const
 Serializes evaluator state.
 
void load (PIByteArray ba)
 Restores evaluator state from serialized data.
 

Detailed Description

Expression evaluator with reusable compiled instructions.

This class provide mathematical evaluations of custom expression.

The evaluator prepares an expression with check(), keeps the processed form and instruction list, and then reevaluates it after variable updates. Built-in constants include i, pi, and e.

Synopsis

PIEvaluator developed for stream evaluations of once set expression. It`s create internal list of instructions on function check() and executes very fast on function evaluate(). Once given expression can be evaluated any times with different variable values. Evaluator supports many common mathematic functions described below. Also it`s automatic puts unnecessarily signs and bracets. Processed expression can be obtains with function expression(). If there is an error in expression you can get it with function error(). Last evaluated result you can get with function lastResult().

Using

First you should set your variables with function setVariable(). Next give your expression with function check() and check for error with functions isCorrect() and error(). If expression is correct you can get processed expression with function expression() and evaluate it with function evaluate(). You can change variable values without rechecking expression.

Functions

PIEvaluator supports arithmetical operations with complex numbers, this is their list in priority order:

In addition there are compare and logical operations:

Compare and logical functions works with real operators part and returns 0 or 1.

Mathematical functions:

There are some built-in constans:

All trigonometric functions takes angle in radians.

Example

eval.check("2*sin(pi/2)");
piCout << eval.expression() << "=" << eval.evaluate().real();
// 2*sin(pi/2) = 2
eval.check("10x");
piCout << eval.error() << eval.unknownVariables();
// Unknown variables: "x" {"x"}
eval.setVariable("x", complexd(1, 2));
eval.check("10x");
piCout << eval.error() << eval.unknownVariables();
// Correct {}
piCout << eval.expression() << "=" << eval.evaluate();
// 10*x = (10; 20)
eval.setVariable("x", complexd(-2, 0));
piCout << eval.expression() << "=" << eval.evaluate();
// 10*x = (-20; 0)
Expression evaluator with reusable compiled instructions.
Definition: pievaluator.h:261
bool check(const PIString &string)
Checks and compiles an expression.
Definition: pievaluator.cpp:1206
const PIString & error() const
Returns the last status or error text from check().
Definition: pievaluator.h:326
int setVariable(const PIString &name, complexd value=complexd(0.))
Sets a named variable and creates it if needed.
Definition: pievaluator.cpp:1218
const PIStringList & unknownVariables() const
Returns unknown variables found during the last check().
Definition: pievaluator.h:314
const PIString & expression() const
Returns the normalized form of the last checked expression.
Definition: pievaluator.h:322
complexd evaluate()
Evaluates the last successfully compiled expression.
Definition: pievaluator.cpp:1233
#define piCout
Definition: picout.h:36
complex< double > complexd
Complex double-precision type.
Definition: pimathcomplex.h:65