22 for (
auto var : varsFunction) {
23 auto varsManager = manager->getVariables();
24 bool found = find_if(varsManager.begin(), varsManager.end(), [&](
auto val) ->
bool { return val.getName() == var.name(); }) != varsManager.end();
26 manager->declareRationalVariable(var.name());
30 auto denominator = function.denominator();
31 if (!denominator.isConstant()) {
36 if (function.isConstant()) {
37 result = manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(function.constantPart()));
39 auto nominator = function.nominatorAsPolynomial().polynomialWithCoefficient();
40 result = manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(nominator.constantPart()));
41 for (
auto itr = nominator.begin(); itr != nominator.end(); ++itr) {
43 itr->gatherVariables(varsFunction);
46 manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(itr->coeff()));
47 for (
auto var : varsFunction) {
51 manager->rational(storm::utility::convertNumber<storm::RationalNumber>(itr->monomial()->exponentOfVariable(var))));
53 if (varsFunction.size() >= 1) {
54 result = result + nominatorPartExpr;
58 manager->rational(storm::utility::convertNumber<storm::RationalNumber, storm::RationalFunctionCoefficient>(denominator.constantPart()));
59 result = result / denominatorVal;