Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
LinearCoefficientVisitor.h
Go to the documentation of this file.
1#ifndef STORM_STORAGE_EXPRESSIONS_LINEARCOEFFICIENTVISITOR_H_
2#define STORM_STORAGE_EXPRESSIONS_LINEARCOEFFICIENTVISITOR_H_
3
4#include <stack>
5
10
11namespace storm {
12namespace expressions {
14 public:
16 public:
17 VariableCoefficients(double constantPart = 0);
18
23
28
29 void negate();
30 void setCoefficient(storm::expressions::Variable const& variable, double coefficient);
31 double getCoefficient(storm::expressions::Variable const& variable);
32 double getConstantPart() const;
33
43
44 // Propagate the iterators to variable-coefficient pairs.
45 std::map<storm::expressions::Variable, double>::const_iterator begin() const;
46 std::map<storm::expressions::Variable, double>::const_iterator end() const;
47
48 size_t size() const;
49
50 private:
51 std::map<storm::expressions::Variable, double> variableToCoefficientMapping;
52 double constantPart;
53 };
54
59
68
69 virtual boost::any visit(IfThenElseExpression const& expression, boost::any const& data) override;
70 virtual boost::any visit(BinaryBooleanFunctionExpression const& expression, boost::any const& data) override;
71 virtual boost::any visit(BinaryNumericalFunctionExpression const& expression, boost::any const& data) override;
72 virtual boost::any visit(BinaryRelationExpression const& expression, boost::any const& data) override;
73 virtual boost::any visit(VariableExpression const& expression, boost::any const& data) override;
74 virtual boost::any visit(UnaryBooleanFunctionExpression const& expression, boost::any const& data) override;
75 virtual boost::any visit(UnaryNumericalFunctionExpression const& expression, boost::any const& data) override;
76 virtual boost::any visit(BooleanLiteralExpression const& expression, boost::any const& data) override;
77 virtual boost::any visit(IntegerLiteralExpression const& expression, boost::any const& data) override;
78 virtual boost::any visit(RationalLiteralExpression const& expression, boost::any const& data) override;
79};
80} // namespace expressions
81} // namespace storm
82
83#endif /* STORM_STORAGE_EXPRESSIONS_LINEARCOEFFICIENTVISITOR_H_ */
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
LabParser.cpp.
Definition cli.cpp:18
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)