| 
					
					
						
							
						
					
					
				 | 
				@ -185,6 +185,12 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                        // 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; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        if(gameNondetTs() && iter > 1) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            xOld() = xOldTemp; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            xNew() = xNewTemp; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                        if (convergenceCheckResult.isPrecisionAchieved) { | 
				 | 
				 | 
				                        if (convergenceCheckResult.isPrecisionAchieved) { | 
			
		
		
	
		
			
				 | 
				 | 
				                            break; | 
				 | 
				 | 
				                            break; | 
			
		
		
	
		
			
				 | 
				 | 
				                        } | 
				 | 
				 | 
				                        } | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -192,13 +198,11 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            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); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        if(!gameNondetTs()) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            prepareNextIteration(env); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                    if (maxIter.is_initialized() && iter == maxIter.get()) { | 
				 | 
				 | 
				                    if (maxIter.is_initialized() && iter == maxIter.get()) { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -211,17 +215,18 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                    if (choices) { | 
				 | 
				 | 
				                    if (choices) { | 
			
		
		
	
		
			
				 | 
				 | 
				                        // We will be doing one more iteration step and track scheduler choices this time.
 | 
				 | 
				 | 
				                        // We will be doing one more iteration step and track scheduler choices this time.
 | 
			
		
		
	
		
			
				 | 
				 | 
				                        prepareNextIteration(env); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        if(!gameNondetTs()) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            prepareNextIteration(env); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				                        performIterationStep(env, dir, choices); | 
				 | 
				 | 
				                        performIterationStep(env, dir, choices); | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::cout << "result (" << iter << " steps):" << std::endl; | 
				 | 
				 | 
				                    std::cout << "result (" << iter << " steps):" << std::endl; | 
			
		
		
	
		
			
				 | 
				 | 
				                    for(int i = 0; i < xNew().size() ; i++ ) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        std::cout << std::setprecision(4) << i << "\t: " << xNew().at(i) << "\t" << xNew().at(i) * _uniformizationRate << "\t" << std::setprecision(16) << xOld().at(i) *_uniformizationRate << std::endl; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        //if(i == 50) {std::cout << "only showing top 50 lines"; break; }
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    storm::utility::vector::applyPointwise<ValueType, ValueType>(xNew(), xNew(), [&iter] (ValueType const& x_i) -> ValueType { return x_i / (double)iter; }); | 
			
		
		
	
		
			
				 | 
				 | 
				                    for(int i = 0; i < xNew().size() ; i++ ) { | 
				 | 
				 | 
				                    for(int i = 0; i < xNew().size() ; i++ ) { | 
			
		
		
	
		
			
				 | 
				 | 
				                        std::cout << std::setprecision(4) << i << "\t: " << xNew().at(i) << "\t" << xNew().at(i) * _uniformizationRate << "\t" << std::setprecision(16) << xOld().at(i) *_uniformizationRate << std::endl; | 
				 | 
				 | 
				                        std::cout << std::setprecision(4) << i << "\t: " << xNew().at(i) << "\t" << xNew().at(i) * _uniformizationRate << "\t" << std::setprecision(16) << xOld().at(i) *_uniformizationRate << std::endl; | 
			
		
		
	
		
			
				 | 
				 | 
				                        //if(i == 50) {std::cout << "only showing top 50 lines"; break; }
 | 
				 | 
				 | 
				                        //if(i == 50) {std::cout << "only showing top 50 lines"; break; }
 | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    if(gameNondetTs()) result = xOld().at(0) * _uniformizationRate; // TODO is "init" always going to be .at(0) ?
 | 
			
		
		
	
		
			
				 | 
				 | 
				                    return result; | 
				 | 
				 | 
				                    return result; | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |