24 for (
auto var : varsFunction) {
25 auto varsManager = manager->getVariables();
26 bool found = find_if(varsManager.begin(), varsManager.end(), [&](
auto val) ->
bool { return val.getName() == var.name(); }) != varsManager.end();
28 manager->declareRationalVariable(var.name());
32 auto denominator = function.denominator();
33 if (!denominator.isConstant()) {
38 if (function.isConstant()) {
39 result = manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(function.constantPart()));
41 auto nominator = function.nominatorAsPolynomial().polynomialWithCoefficient();
42 result = manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(nominator.constantPart()));
43 for (
auto itr = nominator.begin(); itr != nominator.end(); ++itr) {
45 itr->gatherVariables(varsFunction);
48 manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(itr->coeff()));
49 for (
auto var : varsFunction) {
53 manager->rational(storm::utility::convertNumber<storm::RationalNumber>(itr->monomial()->exponentOfVariable(var))));
55 if (varsFunction.size() >= 1) {
56 result = result + nominatorPartExpr;
60 manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(denominator.constantPart()));
61 result = result / denominatorVal;