LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
sym_engine.h File Reference

Computer algebra operations LINE needs, as seen by this port. More...

#include <map>
#include <string>
#include <vector>
#include "line/util/error.h"
Include dependency graph for sym_engine.h:

Go to the source code of this file.

Classes

class  line::sym::SymEngineError
 The symbolic backend is unreachable, or rejected the request. More...
struct  line::sym::CtmcSolution
 Symbolic stationary distribution of a CTMC. More...
struct  line::sym::SymSensitivity
 Exact parametric sensitivity, following Trivedi and Bobbio (2017), Sec. More...
struct  line::sym::FluidODEs
 Symbolic analysis of a fluid vector field. More...
class  line::sym::SymEngine
 A computer algebra backend. More...

Namespaces

namespace  line
namespace  line::sym

Detailed Description

Computer algebra operations LINE needs, as seen by this port.

Port of jline.api.sym.SymEngine. C++ has no computer algebra system any more than Java does, so every operation here is delegated to an external engine; SageRestEngine is the SageMath implementation and is resolved by sym_engines.h. Expressions cross the interface as plain ASCII infix strings, e.g. "2*x1 - 3*x2".

EXPRESSION STRINGS ARE NOT COMPARABLE ACROSS CODEBASES, and not even across engine versions: the symbol numbering x1..xE follows event enumeration order and printed normal forms depend on the engine. Compare by substituting values with eval() and comparing numbers; a string diff against the JAR's output is a false failure waiting to happen.

ABSENT VALUES. Java returns null for a field the request did not ask for. Here an absent scalar is the empty string and an absent list or matrix is empty, with an explicit has* flag where emptiness would otherwise be ambiguous.

Definition in file sym_engine.h.