Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
RationalFunctionAdapter.h
Go to the documentation of this file.
1#pragma once
2
4
5#pragma clang diagnostic push
6#pragma clang diagnostic ignored "-Wmacro-redefined" // clash for likely() macro between Ginac and Sylvan
7#pragma clang diagnostic ignored "-Wthread-safety-negative"
8#pragma clang diagnostic ignored "-Wundefined-reinterpret-cast"
9#pragma clang diagnostic ignored "-Wunused-template"
10#pragma GCC diagnostic push
11#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
12#pragma GCC diagnostic ignored "-Wpessimizing-move"
13
14#include <carl/core/FactorizedPolynomial.h>
15#include <carl/core/MultivariatePolynomial.h>
16#include <carl/core/RationalFunction.h>
17#include <carl/core/Relation.h>
18#include <carl/core/VariablePool.h>
19
20#pragma GCC diagnostic pop
21#pragma clang diagnostic pop
22
23// Pin these carl types' visibility: consumers built with hidden visibility would otherwise instantiate them hidden.
24// Must precede any instantiation (GCC rejects a later visibility attribute).
25// Cache<PolynomialFactorizationPair<RawPolynomial>> is intentionally unpinned: it is only ever used via shared_ptr.
26namespace carl {
27extern template class __attribute__((visibility("default"))) MultivariatePolynomial<storm::RationalFunctionCoefficient>;
28extern template class __attribute__((visibility("default"))) FactorizedPolynomial<storm::RawPolynomial>;
29extern template class __attribute__((visibility("default"))) RationalFunction<storm::Polynomial, true>;
30} // namespace carl
31
32namespace carl {
33// Define hash values for all polynomials and rational function.
34// Needed for boost::hash_combine() and other functions
35template<typename C, typename O, typename P>
36inline size_t hash_value(carl::MultivariatePolynomial<C, O, P> const& p) {
37 std::hash<carl::MultivariatePolynomial<C, O, P>> h;
38 return h(p);
39}
40
41template<typename Pol>
43 std::hash<carl::FactorizedPolynomial<Pol>> h;
44 return h(p);
45}
46
47template<typename Pol, bool AutoSimplify>
49 std::hash<carl::RationalFunction<Pol, AutoSimplify>> h;
50 return h(f);
51}
52} // namespace carl
53
54namespace storm {
56typedef carl::Relation CompareRelation;
57
58RationalFunctionVariable createRFVariable(std::string const& name);
59
66RationalFunctionVariable findRFVariable(std::string const& name);
67
73
74} // namespace storm
size_t hash_value(carl::Interval< Number > const &i)
__attribute__((always_inline)) uint32_t fmix32(uint32_t h)
RationalFunctionVariable findRFVariable(std::string const &name)
Retrieves the (already existing) rational-function variable with the given name.
carl::Cache< carl::PolynomialFactorizationPair< RawPolynomial > > RawPolynomialCache
RationalFunctionVariable createRFVariable(std::string const &name)
carl::Relation CompareRelation
carl::Variable RationalFunctionVariable
void clearRFVariablePool()
Clears the global pool of rational-function variables.