|
Storm 1.14.0.1
A Modern Probabilistic Model Checker
|
#include <functional>#include <limits>#include <ostream>#include <type_traits>#include <utility>#include <vector>#include "storm/exceptions/InvalidOperationException.h"#include "storm/exceptions/NotSupportedException.h"#include "storm/utility/NumberTraits.h"#include "storm/utility/constants.h"#include "storm/utility/macros.h"

Go to the source code of this file.
Classes | |
| class | storm::utility::ExtendedNumber< ValueType > |
| A value of ValueType extended with the two infinities -infinity and +infinity. More... | |
| struct | storm::utility::detail::IsExtendedNumber< T > |
| struct | storm::utility::detail::IsExtendedNumber< ExtendedNumber< T > > |
| struct | storm::utility::detail::FiniteValueType< T > |
| The finite value type underlying a (possibly extended) type. More... | |
| struct | storm::utility::detail::FiniteValueType< ExtendedNumber< T > > |
| struct | storm::NumberTraits< storm::utility::ExtendedNumber< ValueType > > |
| An extended number is exactly as exact as what it extends, and it is the type that does have infinity – that is the whole point of it. More... | |
| struct | std::hash< storm::utility::ExtendedNumber< ValueType > > |
| struct | std::numeric_limits< storm::utility::ExtendedNumber< ValueType > > |
| Reports the infinity that ExtendedNumber adds, so that the generic storm::utility::infinity and storm::utility::isInfinity work on it without a special case. More... | |
Namespaces | |
| namespace | storm |
| namespace | storm::utility |
| namespace | storm::utility::detail |
| namespace | std |
Typedefs | |
| template<typename ValueType> | |
| using | storm::utility::ExtendedValueType = std::conditional_t<storm::NumberTraits<ValueType>::HasInfinity, ValueType, ExtendedNumber<ValueType>> |
| The type to use for values that may be infinite. | |
| template<typename ValueType> | |
| using | storm::utility::FiniteValueType = typename detail::FiniteValueType<ValueType>::type |
| The finite value type underlying a (possibly extended) type. | |
| using | storm::ExtendedRationalNumber = storm::utility::ExtendedValueType<RationalNumber> |
| The rational number type extended with the two infinities. | |
| using | storm::ExtendedRationalFunction = storm::utility::ExtendedValueType<RationalFunction> |
| The rational function type extended with the two infinities. | |
Functions | |
| template<typename ValueType> | |
| ExtendedValueType< ValueType > | storm::utility::positiveInfinity () |
| template<typename ValueType> | |
| ExtendedValueType< ValueType > | storm::utility::negativeInfinity () |
| template<typename ValueType> | |
| ValueType const & | storm::utility::getFinite (ExtendedNumber< ValueType > const &value) |
| template<typename ValueType> requires (!detail::IsExtendedNumber<ValueType>::value) | |
| ValueType const & | storm::utility::getFinite (ValueType const &value) |
| template<typename ValueType> | |
| bool | storm::utility::isFinite (ExtendedNumber< ValueType > const &value) |
| template<typename ValueType> requires (!detail::IsExtendedNumber<ValueType>::value) | |
| bool | storm::utility::isFinite (ValueType const &value) |
| template<typename ValueType> | |
| std::vector< ValueType > | storm::utility::narrowFinite (std::vector< ExtendedValueType< ValueType > > &&values) |
| The counterpart of widen for a vector all of whose values are finite. | |
| template<typename ValueType> | |
| std::vector< ValueType > | storm::utility::narrowFinite (std::vector< ExtendedValueType< ValueType > > const &values) |
| The counterpart of widen for a vector all of whose values are finite. | |
| template<typename ValueType> | |
| std::vector< ValueType > | storm::utility::narrowFinite (std::vector< ExtendedValueType< ValueType > > &&values, ValueType const &defaultValue) |
| The counterpart of widen for a vector, falling back to the given value wherever a value is infinite. | |
| template<typename ValueType> | |
| ValueType | storm::utility::narrow (ExtendedValueType< ValueType > const &value) |
| Narrows an extended value back into the plain value type, for the interfaces that cannot hold an infinite one – a coordinate of a polytope, say. | |
| template<typename ValueType> | |
| std::vector< ExtendedValueType< ValueType > > | storm::utility::widen (std::vector< ValueType > &&values) |
| Widens a vector of finite values into the extended value type. | |
| template<typename ValueType> requires (!std::is_reference_v<ValueType>) | |
| ExtendedValueType< ValueType > | storm::utility::fromSentinel (ValueType &&value) |
| Recognises the value that storm::utility::infinity still yields for the value types that have no infinity of their own – the literal 100000000000 – and turns it into a real infinity. | |
| template<typename ValueType> | |
| std::vector< ExtendedValueType< ValueType > > | storm::utility::fromSentinel (std::vector< ValueType > &&values) |
| The vector form. | |
| template<typename ValueType> | |
| ExtendedValueType< ValueType > | storm::utility::fromSentinel (ValueType const &value) |
| template<typename ValueType> | |
| ValueType | storm::utility::toSentinel (ExtendedValueType< ValueType > const &value) |
| The counterpart of fromSentinel: hands an extended value back to a part of Storm that still expects the sentinel, most of all a decision diagram leaf. | |
| template<typename ValueType> requires (detail::IsExtendedNumber<ValueType>::value) | |
| ValueType | storm::utility::zero () |
| The generic storm::utility::zero, one and infinity are declared for every value type but defined only for the ones that are explicitly instantiated. | |
| template<typename ValueType> requires (detail::IsExtendedNumber<ValueType>::value) | |
| ValueType | storm::utility::one () |
| template<typename ValueType> requires (detail::IsExtendedNumber<ValueType>::value) | |
| ValueType | storm::utility::infinity () |
| template<typename ValueType> | |
| bool | storm::utility::isInfinity (ExtendedNumber< ValueType > const &number) |
| template<typename ValueType> | |
| bool | storm::utility::isNegativeInfinity (ExtendedNumber< ValueType > const &number) |
| template<typename ValueType> requires (!detail::IsExtendedNumber<ValueType>::value) | |
| bool | storm::utility::isNegativeInfinity (ValueType const &value) |
| template<typename ValueType> | |
| bool | storm::utility::isZero (ExtendedNumber< ValueType > const &number) |
| template<typename ValueType> | |
| bool | storm::utility::isOne (ExtendedNumber< ValueType > const &number) |
| template<typename ValueType> | |
| bool | storm::utility::isConstant (ExtendedNumber< ValueType > const &number) |
| template<typename ValueType> | |
| ExtendedNumber< ValueType > | storm::utility::abs (ExtendedNumber< ValueType > const &number) |
| template<typename TargetType, typename SourceType> | |
| TargetType | storm::utility::convertNumber (ExtendedNumber< SourceType > const &number) |
| Converts a possibly infinite value to another type, which may itself be an ExtendedNumber or a type that has its own infinity. | |
| template<typename TargetType, typename SourceType> requires (detail::IsExtendedNumber<TargetType>::value && !detail::IsExtendedNumber<SourceType>::value) | |
| TargetType | storm::utility::convertNumber (SourceType const &number) |
| Converts a value into an extended one. | |