#ifndef STORM_UTILITY_CONSTANTS_H_ #define STORM_UTILITY_CONSTANTS_H_ #ifdef max # undef max #endif #ifdef min # undef min #endif #include #include #include #include #include namespace storm { // Forward-declare MatrixEntry class. namespace storage { template class MatrixEntry; } namespace utility { template ValueType one(); template ValueType zero(); template ValueType infinity(); template bool isOne(ValueType const& a); template bool isZero(ValueType const& a); template bool isConstant(ValueType const& a); template bool isInfinity(ValueType const& a); template bool isInteger(ValueType const& number); template TargetType convertNumber(SourceType const& number); template std::pair asFraction(ValueType const& number); template ValueType simplify(ValueType value); template storm::storage::MatrixEntry& simplify(storm::storage::MatrixEntry& matrixEntry); template storm::storage::MatrixEntry&& simplify(storm::storage::MatrixEntry&& matrixEntry); template std::pair minmax(std::vector const& values); template ValueType minimum(std::vector const& values); template ValueType maximum(std::vector const& values); template< typename K, typename ValueType> std::pair minmax(std::map const& values); template< typename K, typename ValueType> ValueType minimum(std::map const& values); template ValueType maximum(std::map const& values); template ValueType pow(ValueType const& value, uint_fast64_t exponent); template ValueType sqrt(ValueType const& number); template ValueType abs(ValueType const& number); template ValueType floor(ValueType const& number); template ValueType ceil(ValueType const& number); template std::string to_string(ValueType const& value); } } #endif /* STORM_UTILITY_CONSTANTS_H_ */