Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
LinearCoefficientVisitor.h
Go to the documentation of this file.
1#pragma once
2
3#include <stack>
4
9
10namespace storm {
11namespace expressions {
13 public:
15 public:
16 VariableCoefficients(double constantPart = 0);
17
22
27
28 void negate();
29 void setCoefficient(storm::expressions::Variable const& variable, double coefficient);
30 double getCoefficient(storm::expressions::Variable const& variable);
31 double getConstantPart() const;
32
42
43 // Propagate the iterators to variable-coefficient pairs.
44 std::map<storm::expressions::Variable, double>::const_iterator begin() const;
45 std::map<storm::expressions::Variable, double>::const_iterator end() const;
46
47 size_t size() const;
48
49 private:
50 std::map<storm::expressions::Variable, double> variableToCoefficientMapping;
51 double constantPart;
52 };
53
58
67
68 virtual boost::any visit(IfThenElseExpression const& expression, boost::any const& data) override;
69 virtual boost::any visit(BinaryBooleanFunctionExpression const& expression, boost::any const& data) override;
70 virtual boost::any visit(BinaryNumericalFunctionExpression const& expression, boost::any const& data) override;
71 virtual boost::any visit(BinaryRelationExpression const& expression, boost::any const& data) override;
72 virtual boost::any visit(VariableExpression const& expression, boost::any const& data) override;
73 virtual boost::any visit(UnaryBooleanFunctionExpression const& expression, boost::any const& data) override;
74 virtual boost::any visit(UnaryNumericalFunctionExpression const& expression, boost::any const& data) override;
75 virtual boost::any visit(BooleanLiteralExpression const& expression, boost::any const& data) override;
76 virtual boost::any visit(IntegerLiteralExpression const& expression, boost::any const& data) override;
77 virtual boost::any visit(RationalLiteralExpression const& expression, boost::any const& data) override;
78};
79} // namespace expressions
80} // namespace storm
LinearCoefficientVisitor()=default
Creates a linear coefficient visitor.
VariableCoefficients getLinearCoefficients(Expression const &expression)
Computes the (double) coefficients of all identifiers appearing in the expression if the expression w...
virtual boost::any visit(IfThenElseExpression const &expression, boost::any const &data) override
VariableCoefficients & operator-=(VariableCoefficients &&other)
std::map< storm::expressions::Variable, double >::const_iterator end() const
void separateVariablesFromConstantPart(VariableCoefficients &rhs)
Brings all variables of the right-hand side coefficients to the left-hand side by negating them and m...
double getCoefficient(storm::expressions::Variable const &variable)
VariableCoefficients & operator*=(VariableCoefficients &&other)
VariableCoefficients(VariableCoefficients const &other)=default
std::map< storm::expressions::Variable, double >::const_iterator begin() const
void setCoefficient(storm::expressions::Variable const &variable, double coefficient)
VariableCoefficients & operator/=(VariableCoefficients &&other)
VariableCoefficients & operator=(VariableCoefficients &&other)=default
VariableCoefficients & operator=(VariableCoefficients const &other)=default
VariableCoefficients & operator+=(VariableCoefficients &&other)