| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -113,11 +113,22 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            void repeatedMultiplyAndReduce(Environment const& env, OptimizationDirection const& dir, std::vector<ValueType>& x, std::vector<ValueType> const* b, uint64_t n) const; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            /*! | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * Multiplies the row with the given index with x and adds the given offset | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * Multiplies the row with the given index with x and adds the result to the provided value | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param rowIndex The index of the considered row | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param x The input vector with which the row is multiplied | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param value The multiplication result is added to this value. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            virtual ValueType multiplyRow(uint64_t const& rowIndex, std::vector<ValueType> const& x, ValueType const& offset) const = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            virtual void multiplyRow(uint64_t const& rowIndex, std::vector<ValueType> const& x, ValueType& value) const = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            /*! | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * Multiplies the row with the given index with x1 and x2 and adds the given offset o1 and o2, respectively | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param rowIndex The index of the considered row | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param x1 The first input vector with which the row is multiplied | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param val1 The first multiplication result is added to this value. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param x2 The second input vector with which the row is multiplied | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             * @param val2 The second multiplication result is added to this value. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            virtual void multiplyRow2(uint64_t const& rowIndex, std::vector<ValueType> const& x1, ValueType& val1, std::vector<ValueType> const& x2, ValueType& val2) const; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        protected: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            mutable std::unique_ptr<std::vector<ValueType>> cachedVector; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |