|  | @ -174,6 +174,13 @@ namespace storm { | 
		
	
		
			
				|  |  |                         ++iter; |  |  |                         ++iter; | 
		
	
		
			
				|  |  |                         performIterationStep(env, dir); |  |  |                         performIterationStep(env, dir); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |                         std::vector<ValueType> xOldTemp = xOld(); | 
		
	
		
			
				|  |  |  |  |  |                         std::vector<ValueType> xNewTemp = xNew(); | 
		
	
		
			
				|  |  |  |  |  |                         if(gameNondetTs() && iter > 1) { | 
		
	
		
			
				|  |  |  |  |  |                             // Weight values with current iteration step
 | 
		
	
		
			
				|  |  |  |  |  |                             storm::utility::vector::applyPointwise<ValueType, ValueType>(xOld(), xOld(), [&iter] (ValueType const& x_i) -> ValueType { return x_i / (double)(iter - 1); }); | 
		
	
		
			
				|  |  |  |  |  |                             storm::utility::vector::applyPointwise<ValueType, ValueType>(xNew(), xNew(), [&iter] (ValueType const& x_i) -> ValueType { return x_i / (double)iter; }); | 
		
	
		
			
				|  |  |  |  |  |                         } | 
		
	
		
			
				|  |  |                         // Check if we are done
 |  |  |                         // Check if we are done
 | 
		
	
		
			
				|  |  |                         auto convergenceCheckResult = checkConvergence(relative, precision); |  |  |                         auto convergenceCheckResult = checkConvergence(relative, precision); | 
		
	
		
			
				|  |  |                         result = convergenceCheckResult.currentValue; |  |  |                         result = convergenceCheckResult.currentValue; | 
		
	
	
		
			
				|  | @ -183,6 +190,12 @@ namespace storm { | 
		
	
		
			
				|  |  |                         if (storm::utility::resources::isTerminate()) { |  |  |                         if (storm::utility::resources::isTerminate()) { | 
		
	
		
			
				|  |  |                             break; |  |  |                             break; | 
		
	
		
			
				|  |  |                         } |  |  |                         } | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |                         if(gameNondetTs() && iter > 1) { | 
		
	
		
			
				|  |  |  |  |  |                             xOld() = xOldTemp; | 
		
	
		
			
				|  |  |  |  |  |                             xNew() = xNewTemp; | 
		
	
		
			
				|  |  |  |  |  |                         } | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |                         // If there will be a next iteration, we have to prepare it.
 |  |  |                         // If there will be a next iteration, we have to prepare it.
 | 
		
	
		
			
				|  |  |                         prepareNextIteration(env); |  |  |                         prepareNextIteration(env); | 
		
	
		
			
				|  |  |                          |  |  |                          | 
		
	
	
		
			
				|  | @ -350,7 +363,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     // The result of this ongoing computation will be stored in xNew()
 |  |  |                     // The result of this ongoing computation will be stored in xNew()
 | 
		
	
		
			
				|  |  |                      |  |  |                      | 
		
	
		
			
				|  |  |                     // Compute the values obtained by a single uniformization step between timed states only
 |  |  |                     // Compute the values obtained by a single uniformization step between timed states only
 | 
		
	
		
			
				|  |  |                     if (nondetTs()) { |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     if (nondetTs() && !gameNondetTs()) { | 
		
	
		
			
				|  |  |                         if (choices == nullptr) { |  |  |                         if (choices == nullptr) { | 
		
	
		
			
				|  |  |                             _TsMultiplier->multiplyAndReduce(env, *dir, xOld(), &_TsChoiceValues, xNew()); |  |  |                             _TsMultiplier->multiplyAndReduce(env, *dir, xOld(), &_TsChoiceValues, xNew()); | 
		
	
		
			
				|  |  |                         } else { |  |  |                         } else { | 
		
	
	
		
			
				|  | @ -362,6 +375,14 @@ namespace storm { | 
		
	
		
			
				|  |  |                             STORM_LOG_ASSERT(!_hasInstantStates, "Nondeterministic timed states are only supported if there are no instant states."); |  |  |                             STORM_LOG_ASSERT(!_hasInstantStates, "Nondeterministic timed states are only supported if there are no instant states."); | 
		
	
		
			
				|  |  |                             setInputModelChoices(*choices, tsChoices); |  |  |                             setInputModelChoices(*choices, tsChoices); | 
		
	
		
			
				|  |  |                         } |  |  |                         } | 
		
	
		
			
				|  |  |  |  |  |                     } else if(gameNondetTs()) { // TODO DRYness? exact same behaviour as case above?
 | 
		
	
		
			
				|  |  |  |  |  |                         if (choices == nullptr) { | 
		
	
		
			
				|  |  |  |  |  |                             _TsMultiplier->multiplyAndReduce(env, *dir, xOld(), &_TsChoiceValues, xNew()); | 
		
	
		
			
				|  |  |  |  |  |                         } else { | 
		
	
		
			
				|  |  |  |  |  |                             std::vector<uint64_t> tsChoices(_TsTransitions.getRowGroupCount()); | 
		
	
		
			
				|  |  |  |  |  |                             _TsMultiplier->multiplyAndReduce(env, *dir, xOld(), &_TsChoiceValues, xNew(), &tsChoices); | 
		
	
		
			
				|  |  |  |  |  |                             setInputModelChoices(*choices, tsChoices); // no components -> no need for that call?
 | 
		
	
		
			
				|  |  |  |  |  |                         } | 
		
	
		
			
				|  |  |                     } else { |  |  |                     } else { | 
		
	
		
			
				|  |  |                         _TsMultiplier->multiply(env, xOld(), &_TsChoiceValues, xNew()); |  |  |                         _TsMultiplier->multiply(env, xOld(), &_TsChoiceValues, xNew()); | 
		
	
		
			
				|  |  |                     } |  |  |                     } | 
		
	
	
		
			
				|  | 
 |