12template<
typename ValueType>
15template<
typename ValueType>
20template<
typename ValueType>
22 return nonDefaultStates;
25template<
typename ValueType>
27 if constexpr (std::is_same_v<ValueType, uint64_t>) {
29 if (values[state] == 0ull) {
30 nonDefaultStates.push_back(state);
32 values[state] |= 1ull << (value % 64ull);
36 nonDefaultStates.push_back(state);
37 values[state] = std::move(value);
39 values[state] += std::move(value);
44template<
typename ValueType>
46 for (
auto const& state : nonDefaultStates) {
47 values[state] = defaultValue();
49 nonDefaultStates.clear();
52template<
typename ValueType>
53ValueType SparseAccumulator<ValueType>::defaultValue() {
57template class SparseAccumulator<double>;
58template class SparseAccumulator<storm::RationalNumber>;
59template class SparseAccumulator<storm::RationalFunction>;
60template class SparseAccumulator<uint64_t>;
void clear()
Clears the set, i.e., writes the default value for all states.
std::vector< ValueType > const & getValues() const
SparseAccumulator(uint64_t const numStates)
std::vector< uint64_t > const & getNonDefaultStates() const
void addValue(uint64_t const state, ValueType value)
Adds value to the currently mapped value of the given state, i.e., inserts it into the set of that st...
#define STORM_LOG_ASSERT(cond, message)
bool isZero(ValueType const &a)