#pragma once #include "storm/adapters/RationalNumberAdapter.h" #include #include #include #include #include #include namespace carl { // Define hash values for all polynomials and rational function. template inline size_t hash_value(carl::MultivariatePolynomial const& p) { std::hash> h; return h(p); } template inline size_t hash_value(carl::FactorizedPolynomial const& p) { std::hash> h; return h(p); } template inline size_t hash_value(carl::RationalFunction const& f) { std::hash h; return h(f.nominator()) ^ h(f.denominator()); } template inline size_t hash_value(carl::Interval const& i) { std::hash> h; return h(i); } } namespace storm { typedef carl::Variable RationalFunctionVariable; #if defined(STORM_HAVE_CLN) && defined(STORM_USE_CLN_RF) typedef cln::cl_RA RationalFunctionCoefficient; #elif defined(STORM_HAVE_GMP) && !defined(STORM_USE_CLN_RF) typedef mpq_class RationalFunctionCoefficient; #elif defined(STORM_USE_CLN_RF) #error CLN is to be used, but is not available. #else #error GMP is to be used, but is not available. #endif typedef carl::MultivariatePolynomial RawPolynomial; typedef carl::FactorizedPolynomial Polynomial; typedef carl::Cache> RawPolynomialCache; typedef carl::Relation CompareRelation; typedef carl::RationalFunction RationalFunction; typedef carl::Interval Interval; }