Browse Source

use gmpxx mpq_class for rational numbers

Former-commit-id: e79dac21df
tempestpy_adaptions
sjunges 9 years ago
parent
commit
7cbab6a260
  1. 13
      src/adapters/CarlAdapter.h
  2. 4
      src/storage/expressions/ToRationalFunctionVisitor.cpp
  3. 2
      src/utility/constants.cpp

13
src/adapters/CarlAdapter.h

@ -7,11 +7,13 @@
#ifdef STORM_HAVE_CARL
#include <cln/cln.h>
#include <gmpxx.h>
#include <carl/core/MultivariatePolynomial.h>
#include <carl/core/RationalFunction.h>
#include <carl/core/VariablePool.h>
#include <carl/core/Constraint.h>
#include <carl/core/FactorizedPolynomial.h>
#include <carl/formula/Relation.h>
#include <carl/formula/Formula.h>
namespace carl {
// Define hash values for all polynomials and rational function.
@ -35,11 +37,12 @@ namespace carl {
}
namespace storm {
typedef carl::Variable Variable;
typedef carl::MultivariatePolynomial<cln::cl_RA> RawPolynomial;
typedef mpq_class RationalNumber;
typedef carl::Variable Variable;
typedef carl::MultivariatePolynomial<RationalNumber> RawPolynomial;
typedef carl::FactorizedPolynomial<RawPolynomial> Polynomial;
typedef carl::CompareRelation CompareRelation;
typedef carl::RationalFunction<Polynomial> RationalFunction;
typedef carl::Relation CompareRelation;
typedef carl::RationalFunction<Polynomial> RationalFunction;
}
#endif

4
src/storage/expressions/ToRationalFunctionVisitor.cpp

@ -87,12 +87,12 @@ namespace storm {
template<typename RationalFunctionType>
boost::any ToRationalFunctionVisitor<RationalFunctionType>::visit(IntegerLiteralExpression const& expression) {
return RationalFunctionType(typename RationalFunctionType::PolyType(typename RationalFunctionType::CoeffType(expression.getValue())));
return RationalFunctionType(carl::rationalize<storm::RationalNumber>(static_cast<size_t>(expression.getValue())));
}
template<typename RationalFunctionType>
boost::any ToRationalFunctionVisitor<RationalFunctionType>::visit(DoubleLiteralExpression const& expression) {
return RationalFunctionType(carl::rationalize<cln::cl_RA>(expression.getValue()));
return RationalFunctionType(carl::rationalize<storm::RationalNumber>(expression.getValue()));
}
template class ToRationalFunctionVisitor<storm::RationalFunction>;

2
src/utility/constants.cpp

@ -25,7 +25,7 @@ namespace storm {
template<>
storm::RationalFunction infinity() {
// FIXME: this does not work.
return storm::RationalFunction(carl::rationalize<cln::cl_RA>(std::numeric_limits<double>::infinity()));
return storm::RationalFunction(carl::rationalize<storm::RationalNumber>(std::numeric_limits<double>::infinity()));
}
#endif

Loading…
Cancel
Save