Browse Source

added less-/greater-equal utility functions

main
Stefan Pranger 4 years ago
parent
commit
1b19b28a0d
  1. 38
      src/storm/utility/constants.h

38
src/storm/utility/constants.h

@ -47,6 +47,22 @@ namespace storm {
typedef DoubleLess type;
};
template<typename ValueType>
struct ElementLessEqual {
typedef std::less_equal<ValueType> type;
};
struct DoubleLessEqual {
bool operator()(double a, double b) const {
return (a == 0.0 && b >= 0.0) || (b - a >= 1e-17);
}
};
template<>
struct ElementLessEqual<double> {
typedef DoubleLessEqual type;
};
template<typename ValueType>
struct ElementGreater {
typedef std::greater<ValueType> type;
@ -62,6 +78,22 @@ namespace storm {
struct ElementGreater<double> {
typedef DoubleGreater type;
};
template<typename ValueType>
struct ElementGreaterEqual {
typedef std::greater_equal<ValueType> type;
};
struct DoubleGreaterEqual {
bool operator()(double a, double b) const {
return (b == 0.0 && a >= 0.0) || (a - b >= 1e-17);
}
};
template<>
struct ElementGreaterEqual<double> {
typedef DoubleGreaterEqual type;
};
}
template<typename ValueType>
@ -70,6 +102,12 @@ namespace storm {
template<typename ValueType>
using ElementGreater = typename detail::ElementGreater<ValueType>::type;
template<typename ValueType>
using ElementLessEqual = typename detail::ElementLessEqual<ValueType>::type;
template<typename ValueType>
using ElementGreaterEqual = typename detail::ElementGreaterEqual<ValueType>::type;
template<typename ValueType>
ValueType one();

Loading…
Cancel
Save