|
@ -78,7 +78,7 @@ namespace storm { |
|
|
storm::storage::BitVector sccRowGroupsAsBitVector(x.size(), false); |
|
|
storm::storage::BitVector sccRowGroupsAsBitVector(x.size(), false); |
|
|
storm::storage::BitVector sccRowsAsBitVector(b.size(), false); |
|
|
storm::storage::BitVector sccRowsAsBitVector(b.size(), false); |
|
|
for (auto const& scc : *this->sortedSccDecomposition) { |
|
|
for (auto const& scc : *this->sortedSccDecomposition) { |
|
|
if (scc.isTrivial()) { |
|
|
|
|
|
|
|
|
if (scc.size() == 1) { |
|
|
returnValue = solveTrivialScc(*scc.begin(), dir, x, b) && returnValue; |
|
|
returnValue = solveTrivialScc(*scc.begin(), dir, x, b) && returnValue; |
|
|
} else { |
|
|
} else { |
|
|
sccRowGroupsAsBitVector.clear(); |
|
|
sccRowGroupsAsBitVector.clear(); |
|
@ -142,8 +142,18 @@ namespace storm { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if (hasDiagonalEntry) { |
|
|
if (hasDiagonalEntry) { |
|
|
|
|
|
if (storm::utility::isZero(denominator)) { |
|
|
|
|
|
if (!storm::utility::isZero(rowValue)) { |
|
|
|
|
|
if (rowValue > storm::utility::zero<ValueType>()) { |
|
|
|
|
|
rowValue = storm::utility::infinity<ValueType>(); |
|
|
|
|
|
} else { |
|
|
|
|
|
rowValue = -storm::utility::infinity<ValueType>(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
rowValue /= denominator; |
|
|
rowValue /= denominator; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
if (firstRow) { |
|
|
if (firstRow) { |
|
|
xi = std::move(rowValue); |
|
|
xi = std::move(rowValue); |
|
|
bestRow = row; |
|
|
bestRow = row; |
|
|