| 
					
					
						
							
						
					
					
				 | 
				@ -306,6 +306,10 @@ public: | 
			
		
		
	
		
			
				 | 
				 | 
						// Create resulting vector. | 
				 | 
				 | 
						// Create resulting vector. | 
			
		
		
	
		
			
				 | 
				 | 
						std::vector<Type>* result = new std::vector<Type>(this->getModel().getNumberOfStates()); | 
				 | 
				 | 
						std::vector<Type>* result = new std::vector<Type>(this->getModel().getNumberOfStates()); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						// Get the starting row indices for the non-deterministic choices to reduce the resulting | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						// vector properly. | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						std::shared_ptr<std::vector<uint_fast64_t>> nondeterministicChoiceIndices = this->getModel().getNondeterministicChoiceIndices(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
						// Check whether there are states for which we have to compute the result. | 
				 | 
				 | 
						// Check whether there are states for which we have to compute the result. | 
			
		
		
	
		
			
				 | 
				 | 
						const int maybeStatesSetBitCount = maybeStates.getNumberOfSetBits(); | 
				 | 
				 | 
						const int maybeStatesSetBitCount = maybeStates.getNumberOfSetBits(); | 
			
		
		
	
		
			
				 | 
				 | 
						if (maybeStatesSetBitCount > 0) { | 
				 | 
				 | 
						if (maybeStatesSetBitCount > 0) { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -332,7 +336,7 @@ public: | 
			
		
		
	
		
			
				 | 
				 | 
								// side to the vector resulting from summing the rows of the pointwise product | 
				 | 
				 | 
								// side to the vector resulting from summing the rows of the pointwise product | 
			
		
		
	
		
			
				 | 
				 | 
								// of the transition probability matrix and the transition reward matrix. | 
				 | 
				 | 
								// of the transition probability matrix and the transition reward matrix. | 
			
		
		
	
		
			
				 | 
				 | 
								std::vector<Type>* pointwiseProductRowSumVector = this->getModel().getTransitionMatrix()->getPointwiseProductRowSumVector(*this->getModel().getTransitionRewardMatrix()); | 
				 | 
				 | 
								std::vector<Type>* pointwiseProductRowSumVector = this->getModel().getTransitionMatrix()->getPointwiseProductRowSumVector(*this->getModel().getTransitionRewardMatrix()); | 
			
		
		
	
		
			
				 | 
				 | 
								storm::utility::selectVectorValues(&b, maybeStates, *pointwiseProductRowSumVector); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								storm::utility::selectVectorValues(&b, maybeStates, *nondeterministicChoiceIndices, *pointwiseProductRowSumVector); | 
			
		
		
	
		
			
				 | 
				 | 
								delete pointwiseProductRowSumVector; | 
				 | 
				 | 
								delete pointwiseProductRowSumVector; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
								if (this->getModel().hasStateRewards()) { | 
				 | 
				 | 
								if (this->getModel().hasStateRewards()) { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -340,8 +344,8 @@ public: | 
			
		
		
	
		
			
				 | 
				 | 
									// as well. As the state reward vector contains entries not just for the states | 
				 | 
				 | 
									// as well. As the state reward vector contains entries not just for the states | 
			
		
		
	
		
			
				 | 
				 | 
									// that we still consider (i.e. maybeStates), we need to extract these values | 
				 | 
				 | 
									// that we still consider (i.e. maybeStates), we need to extract these values | 
			
		
		
	
		
			
				 | 
				 | 
									// first. | 
				 | 
				 | 
									// first. | 
			
		
		
	
		
			
				 | 
				 | 
									std::vector<Type>* subStateRewards = new std::vector<Type>(maybeStatesSetBitCount); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
									storm::utility::setVectorValues(subStateRewards, maybeStates, *this->getModel().getStateRewardVector()); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
									std::vector<Type>* subStateRewards = new std::vector<Type>(b.size()); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
									storm::utility::selectVectorValuesRepeatedly(subStateRewards, maybeStates, *nondeterministicChoiceIndices, *this->getModel().getStateRewardVector()); | 
			
		
		
	
		
			
				 | 
				 | 
									gmm::add(*subStateRewards, b); | 
				 | 
				 | 
									gmm::add(*subStateRewards, b); | 
			
		
		
	
		
			
				 | 
				 | 
									delete subStateRewards; | 
				 | 
				 | 
									delete subStateRewards; | 
			
		
		
	
		
			
				 | 
				 | 
								} | 
				 | 
				 | 
								} | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -350,7 +354,7 @@ public: | 
			
		
		
	
		
			
				 | 
				 | 
								// right-hand side. As the state reward vector contains entries not just for the | 
				 | 
				 | 
								// right-hand side. As the state reward vector contains entries not just for the | 
			
		
		
	
		
			
				 | 
				 | 
								// states that we still consider (i.e. maybeStates), we need to extract these values | 
				 | 
				 | 
								// states that we still consider (i.e. maybeStates), we need to extract these values | 
			
		
		
	
		
			
				 | 
				 | 
								// first. | 
				 | 
				 | 
								// first. | 
			
		
		
	
		
			
				 | 
				 | 
								storm::utility::selectVectorValues(&b, maybeStates, *subNondeterministicChoiceIndices, *this->getModel().getStateRewardVector()); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								storm::utility::selectVectorValuesRepeatedly(&b, maybeStates, *nondeterministicChoiceIndices, *this->getModel().getStateRewardVector()); | 
			
		
		
	
		
			
				 | 
				 | 
							} | 
				 | 
				 | 
							} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
							// Solve the corresponding system of equations. | 
				 | 
				 | 
							// Solve the corresponding system of equations. | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |