14namespace expressions {
15template<
typename RationalType>
20 booleanValues(manager.getNumberOfBooleanVariables()),
21 integerValues(manager.getNumberOfIntegerVariables()),
22 rationalValues(manager.getNumberOfRationalVariables()) {
27 parser->settings().set_max_stack_depth(10000);
28 for (
auto const& variableTypePair : manager) {
29 if (variableTypePair.second.isBooleanType()) {
30 symbolTable->add_variable(
"v" + std::to_string(variableTypePair.first.getIndex()), this->booleanValues[variableTypePair.first.getOffset()]);
31 }
else if (variableTypePair.second.isIntegerType()) {
32 symbolTable->add_variable(
"v" + std::to_string(variableTypePair.first.getIndex()), this->integerValues[variableTypePair.first.getOffset()]);
33 }
else if (variableTypePair.second.isRationalType()) {
34 symbolTable->add_variable(
"v" + std::to_string(variableTypePair.first.getIndex()), this->rationalValues[variableTypePair.first.getOffset()]);
39template<
typename RationalType>
41 auto const& compiledExpression = getCompiledExpression(expression);
42 return compiledExpression.value() ==
ValueType(1);
45template<
typename RationalType>
47 auto const& compiledExpression = getCompiledExpression(expression);
48 return static_cast<int_fast64_t
>(compiledExpression.value());
51template<
typename RationalType>
56 compiledExpression.register_symbol_table(*symbolTable);
59 "Expression was not properly parsed by ExprTk: " << expression <<
". (Returned error: " << parser->error() <<
")");
65template<
typename RationalType>
70template<
typename RationalType>
75template<
typename RationalType>
86 return static_cast<double>(compiledExpression.value());
virtual bool isExprtkCompiledExpression() const
ExprtkCompiledExpression & asExprtkCompiledExpression()
void setCompiledExpression(std::shared_ptr< CompiledExpression > const &compiledExpression) const
Associates the given compiled expression with this expression object.
bool hasCompiledExpression() const
Retrieves whether this expression object has an associated compiled expression.
CompiledExpression const & getCompiledExpression() const
Retrieves the associated compiled expression object (if there is any).
This class is responsible for managing a set of typed variables and all expressions using these varia...
CompiledExpressionType const & getCompiledExpression() const
void setIntegerValue(storm::expressions::Variable const &variable, int_fast64_t value) override
ExprtkExpressionEvaluatorBase(storm::expressions::ExpressionManager const &manager)
bool asBool(Expression const &expression) const override
void setBooleanValue(storm::expressions::Variable const &variable, bool value) override
int_fast64_t asInt(Expression const &expression) const override
CompiledExpressionType const & getCompiledExpression(storm::expressions::Expression const &expression) const
Retrieves a compiled version of the given expression.
ExprtkCompiledExpression::CompiledExpressionType CompiledExpressionType
void setRationalValue(storm::expressions::Variable const &variable, double value) override
double asRational(Expression const &expression) const override
ExprtkExpressionEvaluator(storm::expressions::ExpressionManager const &manager)
Creates an expression evaluator that is capable of evaluating expressions managed by the given manage...
uint_fast64_t getOffset() const
Retrieves the offset of the variable in the group of all equally typed variables.
#define STORM_LOG_THROW(cond, exception, message)