Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
parametric.cpp
Go to the documentation of this file.
2
5
6namespace storm {
7namespace utility {
8namespace parametric {
9
10// Partially instantiated function
11template<typename ReturnType>
13 if constexpr (std::is_same<ReturnType, typename CoefficientType<storm::RationalFunction>::type>::value) {
14 return function.evaluate(valuation);
15 } else {
16 return storm::utility::convertNumber<ReturnType>(function.evaluate(valuation));
17 }
18}
19
20template<>
21double evaluate(storm::RationalFunction const& function, Valuation<storm::RationalFunction> const& valuation) {
22 return evaluateRationalFunction<double>(function, valuation);
23}
24
25#if defined(STORM_HAVE_CLN)
26template<>
27ClnRationalNumber evaluate(storm::RationalFunction const& function, Valuation<storm::RationalFunction> const& valuation) {
28 return evaluateRationalFunction<ClnRationalNumber>(function, valuation);
29}
30#endif
31
32#if defined(STORM_HAVE_GMP)
33template<>
34GmpRationalNumber evaluate(storm::RationalFunction const& function, Valuation<storm::RationalFunction> const& valuation) {
35 return evaluateRationalFunction<GmpRationalNumber>(function, valuation);
36}
37#endif
38
39template<>
41 Valuation<storm::RationalFunction> const& valuation) {
42 return function.substitute(valuation);
43}
44
45template<>
47 std::set<typename VariableType<storm::RationalFunction>::type>& variableSet) {
48 function.gatherVariables(variableSet);
49}
50
51template<>
53 return storm::utility::isConstant(function.denominator()) && function.nominator().isLinear();
54}
55
56template<>
58 if (!storm::utility::isConstant(function.denominator())) {
59 return false;
60 }
61 auto varInfos = function.nominator().getVarInfo<false>();
62 for (auto const& varInfo : varInfos) {
63 if (varInfo.second.maxDegree() > 1) {
64 return false;
65 }
66 }
67 return true;
68}
69} // namespace parametric
70} // namespace utility
71} // namespace storm
void gatherOccurringVariables< storm::RationalFunction >(storm::RationalFunction const &function, std::set< typename VariableType< storm::RationalFunction >::type > &variableSet)
bool isMultiLinearPolynomial< storm::RationalFunction >(storm::RationalFunction const &function)
ReturnType evaluateRationalFunction(storm::RationalFunction const &function, Valuation< storm::RationalFunction > const &valuation)
std::map< typename VariableType< FunctionType >::type, typename CoefficientType< FunctionType >::type > Valuation
Definition parametric.h:43
storm::RationalFunction substitute< storm::RationalFunction >(storm::RationalFunction const &function, Valuation< storm::RationalFunction > const &valuation)
bool isLinear< storm::RationalFunction >(storm::RationalFunction const &function)
double evaluate(storm::RationalFunction const &function, Valuation< storm::RationalFunction > const &valuation)
bool isConstant(ValueType const &)