Browse Source

use gmpxx mpq_class for rational numbers

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

4
src/storage/expressions/ToRationalFunctionVisitor.cpp

@ -87,12 +87,12 @@ namespace storm {
template<typename RationalFunctionType> template<typename RationalFunctionType>
boost::any ToRationalFunctionVisitor<RationalFunctionType>::visit(IntegerLiteralExpression const& expression) { 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> template<typename RationalFunctionType>
boost::any ToRationalFunctionVisitor<RationalFunctionType>::visit(DoubleLiteralExpression const& expression) { 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>; template class ToRationalFunctionVisitor<storm::RationalFunction>;

2
src/utility/constants.cpp

@ -25,7 +25,7 @@ namespace storm {
template<> template<>
storm::RationalFunction infinity() { storm::RationalFunction infinity() {
// FIXME: this does not work. // 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 #endif

|||||||
100:0
Loading…
Cancel
Save