#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_CLN #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wmismatched-tags" #pragma GCC diagnostic push #include #pragma GCC diagnostic pop #pragma clang diagnostic pop #endif #ifdef STORM_HAVE_CARL #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); } } inline size_t hash_value(mpq_class const& q) { std::hash h; return h(q); } #if defined STORM_HAVE_CLN && defined STORM_USE_CLN_NUMBERS namespace cln { inline size_t hash_value(cl_RA const& n) { std::hash h; return h(n); } } #endif #include "NumberAdapter.h" namespace storm { typedef carl::Variable RationalFunctionVariable; typedef carl::MultivariatePolynomial RawPolynomial; typedef carl::FactorizedPolynomial Polynomial; typedef carl::Relation CompareRelation; typedef carl::RationalFunction RationalFunction; typedef carl::Interval Interval; template using ArithConstraint = carl::SimpleConstraint; } #endif #endif /* STORM_ADAPTERS_CARLADAPTER_H_ */