#ifndef STORM_ADAPTERS_CARLADAPTER_H_ #define STORM_ADAPTERS_CARLADAPTER_H_ // Include config to know whether CARL is available or not. #include "storm-config.h" #include #ifdef STORM_HAVE_CARL #include #include #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 cln { inline size_t hash_value(cl_RA const& n) { std::hash h; return h(n); } } namespace storm { #if defined STORM_HAVE_CLN && defined USE_CLN_NUMBERS typedef cln::cl_RA RationalNumber; #else typedef mpq_class RationalNumber; #endif typedef carl::Variable RationalFunctionVariable; typedef carl::MultivariatePolynomial RawPolynomial; typedef carl::FactorizedPolynomial Polynomial; typedef carl::Cache> RawPolynomialCache; typedef carl::Relation CompareRelation; typedef carl::RationalFunction RationalFunction; typedef carl::Interval Interval; template using ArithConstraint = carl::SimpleConstraint; } #endif #endif /* STORM_ADAPTERS_CARLADAPTER_H_ */