| 
					
					
						
							
						
					
					
				 | 
				@ -6,12 +6,13 @@ | 
			
		
		
	
		
			
				 | 
				 | 
				#include "tbb/tbb.h" | 
				 | 
				 | 
				#include "tbb/tbb.h" | 
			
		
		
	
		
			
				 | 
				 | 
				#endif | 
				 | 
				 | 
				#endif | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "constants.h" | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				#include <iostream> | 
				 | 
				 | 
				#include <iostream> | 
			
		
		
	
		
			
				 | 
				 | 
				#include <algorithm> | 
				 | 
				 | 
				#include <algorithm> | 
			
		
		
	
		
			
				 | 
				 | 
				#include <functional> | 
				 | 
				 | 
				#include <functional> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include <numeric> | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "src/storage/BitVector.h" | 
				 | 
				 | 
				#include "src/storage/BitVector.h" | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include "src/utility/constants.h" | 
			
		
		
	
		
			
				 | 
				 | 
				#include "src/utility/macros.h" | 
				 | 
				 | 
				#include "src/utility/macros.h" | 
			
		
		
	
		
			
				 | 
				 | 
				#include "src/solver/OptimizationDirection.h" | 
				 | 
				 | 
				#include "src/solver/OptimizationDirection.h" | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -347,32 +348,15 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				             | 
			
		
		
	
		
			
				 | 
				 | 
				            /*! | 
				 | 
				 | 
				            /*! | 
			
		
		
	
		
			
				 | 
				 | 
				             * Converts the numbers in the given vector to the target representation | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				             * | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				             * @param target The target vector in which the resulting numbers are written. | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				             * @param source The source vector whose numbers are converted | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				             */ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<class SourceType, class TargetType> | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            void convertVector(std::vector<SourceType> const& source, std::vector<TargetType>& target) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                applyPointwise<SourceType, TargetType>(source, target, [&] (SourceType const& argument) -> TargetType { return convertNumber<TargetType>(argument); }); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            /*! | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				             * Multiplies the two given vectors (scalar product) and returns the result | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             * Computes the dot product (aka scalar product) and returns the result | 
			
		
		
	
		
			
				 | 
				 | 
				             * | 
				 | 
				 | 
				             * | 
			
		
		
	
		
			
				 | 
				 | 
				             * @param firstOperand The first operand. | 
				 | 
				 | 
				             * @param firstOperand The first operand. | 
			
		
		
	
		
			
				 | 
				 | 
				             * @param secondOperand The second operand | 
				 | 
				 | 
				             * @param secondOperand The second operand | 
			
		
		
	
		
			
				 | 
				 | 
				             * @return firstOperand*secondOperand | 
				 | 
				 | 
				             * @return firstOperand*secondOperand | 
			
		
		
	
		
			
				 | 
				 | 
				             */ | 
				 | 
				 | 
				             */ | 
			
		
		
	
		
			
				 | 
				 | 
				            template<class T> | 
				 | 
				 | 
				            template<class T> | 
			
		
		
	
		
			
				 | 
				 | 
				            T multiplyVectors(std::vector<T> const& firstOperand, std::vector<T> const& secondOperand) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                T res = storm::utility::zero<T>(); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                auto it1 = firstOperand.begin(); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                auto it2 = secondOperand.begin(); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                for(; it1<firstOperand.end(); ++it1, ++it2){ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    res += (*it1) * (*it2); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                return res; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            T dotProduct(std::vector<T> const& firstOperand, std::vector<T> const& secondOperand) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                return std::inner_product(firstOperand.begin(), firstOperand.end(), secondOperand.begin(), storm::utility::zero<T>()); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				             | 
			
		
		
	
		
			
				 | 
				 | 
				            /*! | 
				 | 
				 | 
				            /*! | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -733,6 +717,11 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                return result; | 
				 | 
				 | 
				                return result; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				             | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            template<typename T> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            bool hasNegativeEntries(std::vector<T> const& v){ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                return std::any_of(v.begin(), v.end(), [](T value){return value < storm::utility::zero<T>();}); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             | 
			
		
		
	
		
			
				 | 
				 | 
				            /*! | 
				 | 
				 | 
				            /*! | 
			
		
		
	
		
			
				 | 
				 | 
				             * Output vector as string. | 
				 | 
				 | 
				             * Output vector as string. | 
			
		
		
	
		
			
				 | 
				 | 
				             * | 
				 | 
				 | 
				             * | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |