Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExpressionEvaluator.cpp
Go to the documentation of this file.
3
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
37#ifdef STORM_HAVE_CARL
39 : ExprtkExpressionEvaluatorBase<RationalNumber>(manager), rationalNumberVisitor(*this) {
40 // Intentionally left empty.
41}
42
43void ExpressionEvaluator<RationalNumber>::setBooleanValue(storm::expressions::Variable const& variable, bool value) {
45
46 // Not forwarding value of variable to rational number visitor as it cannot treat boolean variables anyway.
47}
48
49void ExpressionEvaluator<RationalNumber>::setIntegerValue(storm::expressions::Variable const& variable, int_fast64_t value) {
51 rationalNumberVisitor.setMapping(variable, storm::utility::convertNumber<RationalNumber>(value));
52}
53
54void ExpressionEvaluator<RationalNumber>::setRationalValue(storm::expressions::Variable const& variable, double value) {
56 rationalNumberVisitor.setMapping(variable, storm::utility::convertNumber<RationalNumber>(value));
57}
58
59void ExpressionEvaluator<RationalNumber>::setRationalValue(storm::expressions::Variable const& variable, RationalNumber const& value) {
60 ExprtkExpressionEvaluatorBase<RationalNumber>::setRationalValue(variable, storm::utility::convertNumber<double>(value));
61 rationalNumberVisitor.setMapping(variable, value);
62}
63
64RationalNumber ExpressionEvaluator<RationalNumber>::asRational(Expression const& expression) const {
65 RationalNumber result = this->rationalNumberVisitor.toRationalNumber(expression);
66 return result;
67}
68
69ExpressionEvaluator<RationalFunction>::ExpressionEvaluator(storm::expressions::ExpressionManager const& manager)
70 : ExprtkExpressionEvaluatorBase<RationalFunction>(manager), rationalFunctionVisitor(*this) {
71 // Intentionally left empty.
72}
73
74void ExpressionEvaluator<RationalFunction>::setBooleanValue(storm::expressions::Variable const& variable, bool value) {
76
77 // Not forwarding value of variable to rational number visitor as it cannot treat boolean variables anyway.
78}
79
80void ExpressionEvaluator<RationalFunction>::setIntegerValue(storm::expressions::Variable const& variable, int_fast64_t value) {
82 rationalFunctionVisitor.setMapping(variable, storm::utility::convertNumber<RationalFunction>(value));
83}
84
85void ExpressionEvaluator<RationalFunction>::setRationalValue(storm::expressions::Variable const& variable, double value) {
87 rationalFunctionVisitor.setMapping(variable, storm::utility::convertNumber<RationalFunction>(value));
88}
89
90void ExpressionEvaluator<RationalFunction>::setRationalValue(storm::expressions::Variable const& variable, RationalFunction const& value) {
91 STORM_LOG_ASSERT(storm::utility::isConstant(value), "Value for rational variable is not a constant.");
92 ExprtkExpressionEvaluatorBase<RationalFunction>::setRationalValue(variable, storm::utility::convertNumber<double>(value));
93 rationalFunctionVisitor.setMapping(variable, value);
94}
95
96RationalFunction ExpressionEvaluator<RationalFunction>::asRational(Expression const& expression) const {
97 return this->rationalFunctionVisitor.toRationalFunction(expression);
98}
99
100template class ExpressionEvaluatorWithVariableToExpressionMap<RationalNumber>;
101template class ExpressionEvaluatorWithVariableToExpressionMap<RationalFunction>;
102#endif
103} // namespace expressions
104} // 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
SettingsManager const & manager()
Retrieves the settings manager.
bool isConstant(ValueType const &)
Definition constants.cpp:66
LabParser.cpp.
Definition cli.cpp:18
carl::RationalFunction< Polynomial, true > RationalFunction