Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExpressionEvaluator.cpp
Go to the documentation of this file.
2
5
6namespace storm {
7namespace expressions {
11
12template<typename RationalType>
18
19template<typename RationalType>
22 this->variableToExpressionMap[variable] = this->getManager().boolean(value);
23}
24
25template<typename RationalType>
28 this->variableToExpressionMap[variable] = this->getManager().integer(value);
29}
30
31template<typename RationalType>
34 this->variableToExpressionMap[variable] = this->getManager().rational(value);
35}
36
38 : ExprtkExpressionEvaluatorBase<RationalNumber>(manager), rationalNumberVisitor(*this) {
39 // Intentionally left empty.
40}
41
44
45 // Not forwarding value of variable to rational number visitor as it cannot treat boolean variables anyway.
46}
47
50 rationalNumberVisitor.setMapping(variable, storm::utility::convertNumber<RationalNumber>(value));
51}
52
55 rationalNumberVisitor.setMapping(variable, storm::utility::convertNumber<RationalNumber>(value));
56}
57
58void ExpressionEvaluator<RationalNumber>::setRationalValue(storm::expressions::Variable const& variable, RationalNumber const& value) {
59 ExprtkExpressionEvaluatorBase<RationalNumber>::setRationalValue(variable, storm::utility::convertNumber<double>(value));
60 rationalNumberVisitor.setMapping(variable, value);
61}
62
63RationalNumber ExpressionEvaluator<RationalNumber>::asRational(Expression const& expression) const {
64 RationalNumber result = this->rationalNumberVisitor.toRationalNumber(expression);
65 return result;
66}
67
69 : ExprtkExpressionEvaluatorBase<RationalFunction>(manager), rationalFunctionVisitor(*this) {
70 // Intentionally left empty.
71}
72
75
76 // Not forwarding value of variable to rational number visitor as it cannot treat boolean variables anyway.
77}
78
81 rationalFunctionVisitor.setMapping(variable, storm::utility::convertNumber<RationalFunction>(value));
82}
83
86 rationalFunctionVisitor.setMapping(variable, storm::utility::convertNumber<RationalFunction>(value));
87}
88
90 STORM_LOG_ASSERT(storm::utility::isConstant(value), "Value for rational variable is not a constant.");
91 ExprtkExpressionEvaluatorBase<RationalFunction>::setRationalValue(variable, storm::utility::convertNumber<double>(value));
92 rationalFunctionVisitor.setMapping(variable, value);
93}
94
96 return this->rationalFunctionVisitor.toRationalFunction(expression);
97}
98
101} // namespace expressions
102} // namespace storm
void setRationalValue(storm::expressions::Variable const &variable, double value) override
void setBooleanValue(storm::expressions::Variable const &variable, bool value) override
void setIntegerValue(storm::expressions::Variable const &variable, int_fast64_t value) override
ExpressionEvaluatorWithVariableToExpressionMap(storm::expressions::ExpressionManager const &manager)
This class is responsible for managing a set of typed variables and all expressions using these varia...
void setIntegerValue(storm::expressions::Variable const &variable, int_fast64_t value) override
void setBooleanValue(storm::expressions::Variable const &variable, bool value) override
void setRationalValue(storm::expressions::Variable const &variable, double value) override
#define STORM_LOG_ASSERT(cond, message)
Definition macros.h:11
bool isConstant(ValueType const &)