12template<storm::dd::DdType DdType,
typename ValueType>
17template<storm::dd::DdType DdType,
typename ValueType>
19 return this->allRows.getDdManager();
22template<storm::dd::DdType DdType,
typename ValueType>
24 this->allRows = allRows;
27template<storm::dd::DdType DdType,
typename ValueType>
32template<storm::dd::DdType DdType,
typename ValueType>
34 this->lowerBounds = lowerBounds;
37template<storm::dd::DdType DdType,
typename ValueType>
39 this->lowerBound = lowerBound;
42template<storm::dd::DdType DdType,
typename ValueType>
44 this->upperBounds = upperBounds;
47template<storm::dd::DdType DdType,
typename ValueType>
49 this->upperBound = upperBound;
52template<storm::dd::DdType DdType,
typename ValueType>
54 setLowerBound(lowerBound);
55 setUpperBound(upperBound);
58template<storm::dd::DdType DdType,
typename ValueType>
61 setLowerBounds(lowerBounds);
62 setUpperBounds(upperBounds);
65template<storm::dd::DdType DdType,
typename ValueType>
67 return static_cast<bool>(lowerBound);
70template<storm::dd::DdType DdType,
typename ValueType>
72 return lowerBound.get();
75template<storm::dd::DdType DdType,
typename ValueType>
77 return static_cast<bool>(lowerBounds);
80template<storm::dd::DdType DdType,
typename ValueType>
82 return lowerBounds.get();
85template<storm::dd::DdType DdType,
typename ValueType>
87 return static_cast<bool>(upperBound);
90template<storm::dd::DdType DdType,
typename ValueType>
92 return upperBound.get();
95template<storm::dd::DdType DdType,
typename ValueType>
97 return static_cast<bool>(upperBounds);
100template<storm::dd::DdType DdType,
typename ValueType>
102 return upperBounds.get();
105template<storm::dd::DdType DdType,
typename ValueType>
107 STORM_LOG_THROW(lowerBound || lowerBounds, storm::exceptions::UnmetRequirementException,
"Requiring lower bounds, but did not get any.");
109 return lowerBounds.get();
111 return this->allRows.ite(this->allRows.getDdManager().getConstant(lowerBound.get()), this->allRows.getDdManager().template getAddZero<ValueType>());
115template<storm::dd::DdType DdType,
typename ValueType>
117 STORM_LOG_THROW(upperBound || upperBounds, storm::exceptions::UnmetRequirementException,
"Requiring upper bounds, but did not get any.");
119 return upperBounds.get();
121 return this->allRows.ite(this->allRows.getDdManager().getConstant(upperBound.get()), this->allRows.getDdManager().template getAddZero<ValueType>());
128#ifdef STORM_HAVE_CARL
storm::dd::DdManager< DdType > & getDdManager() const
storm::dd::Add< DdType, ValueType > const & getLowerBounds() const
bool hasUpperBound() const
virtual void setUpperBound(ValueType const &lowerBound)
storm::dd::Add< DdType, ValueType > getUpperBoundsVector() const
Retrieves a vector of upper bounds for all values (if any lower bounds are known).
virtual void setLowerBounds(storm::dd::Add< DdType, ValueType > const &lowerBounds)
virtual void setUpperBounds(storm::dd::Add< DdType, ValueType > const &upperBounds)
ValueType const & getLowerBound() const
bool hasLowerBound() const
SymbolicEquationSolver()=default
virtual void setLowerBound(ValueType const &lowerBound)
storm::dd::Bdd< DdType > const & getAllRows() const
ValueType const & getUpperBound() const
bool hasLowerBounds() const
void setAllRows(storm::dd::Bdd< DdType > const &allRows)
storm::dd::Add< DdType, ValueType > getLowerBoundsVector() const
Retrieves a vector of lower bounds for all values (if any lower bounds are known).
storm::dd::Add< DdType, ValueType > const & getUpperBounds() const
bool hasUpperBounds() const
virtual void setBounds(ValueType const &lowerBound, ValueType const &upperBound)
#define STORM_LOG_THROW(cond, exception, message)