Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
parametric.cpp
Go to the documentation of this file.
2
3#include <string>
4
10
11namespace storm {
12namespace utility {
13namespace parametric {
14
15// Partially instantiated function
16template<typename ReturnType>
18 if constexpr (std::is_same<ReturnType, typename CoefficientType<storm::RationalFunction>::type>::value) {
19 return function.evaluate(valuation);
20 } else {
21 return storm::utility::convertNumber<ReturnType>(function.evaluate(valuation));
22 }
23}
24
25template<>
26double evaluate(storm::RationalFunction const& function, Valuation<storm::RationalFunction> const& valuation) {
27 return evaluateRationalFunction<double>(function, valuation);
28}
29
30#if defined(STORM_HAVE_CLN)
31template<>
32ClnRationalNumber evaluate(storm::RationalFunction const& function, Valuation<storm::RationalFunction> const& valuation) {
33 return evaluateRationalFunction<ClnRationalNumber>(function, valuation);
34}
35#endif
36
37#if defined(STORM_HAVE_GMP)
38template<>
39GmpRationalNumber evaluate(storm::RationalFunction const& function, Valuation<storm::RationalFunction> const& valuation) {
40 return evaluateRationalFunction<GmpRationalNumber>(function, valuation);
41}
42#endif
43
44template<>
46 Valuation<storm::RationalFunction> const& valuation) {
47 return function.substitute(valuation);
48}
49
50template<>
52 std::set<typename VariableType<storm::RationalFunction>::type>& variableSet) {
53 function.gatherVariables(variableSet);
54}
55
56template<>
58 return storm::utility::isConstant(function.denominator()) && function.nominator().isLinear();
59}
60
61template<>
63 if (!storm::utility::isConstant(function.denominator())) {
64 return false;
65 }
66 auto varInfos = function.nominator().getVarInfo<false>();
67 for (auto const& varInfo : varInfos) {
68 if (varInfo.second.maxDegree() > 1) {
69 return false;
70 }
71 }
72 return true;
73}
74} // namespace parametric
75} // namespace utility
76} // 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:38
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 &)
Definition constants.cpp:66
LabParser.cpp.
Definition cli.cpp:18