|  |  | @ -4,6 +4,7 @@ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/storage/expressions/BooleanLiteralExpression.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/utility/macros.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/utility/constants.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/exceptions/InvalidTypeException.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/storage/expressions/ExpressionVisitor.h"
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -48,28 +49,28 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |             std::shared_ptr<BaseExpression const> secondOperandSimplified = this->getSecondOperand()->simplify(); | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  |             if (firstOperandSimplified->isLiteral() && secondOperandSimplified->isLiteral()) { | 
			
		
	
		
			
				
					|  |  |  |                 boost::variant<int_fast64_t, double> firstOperandEvaluation; | 
			
		
	
		
			
				
					|  |  |  |                 boost::variant<int_fast64_t, double> secondOperandEvaluation; | 
			
		
	
		
			
				
					|  |  |  |                  | 
			
		
	
		
			
				
					|  |  |  |                 storm::RationalNumber firstOperandEvaluation; | 
			
		
	
		
			
				
					|  |  |  |                 storm::RationalNumber secondOperandEvaluation; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 if (firstOperandSimplified->hasIntegerType()) { | 
			
		
	
		
			
				
					|  |  |  |                     firstOperandEvaluation = firstOperandSimplified->evaluateAsInt(); | 
			
		
	
		
			
				
					|  |  |  |                     firstOperandEvaluation = storm::utility::convertNumber<storm::RationalNumber>(firstOperandSimplified->evaluateAsInt()); | 
			
		
	
		
			
				
					|  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |                     firstOperandEvaluation = firstOperandSimplified->evaluateAsDouble(); | 
			
		
	
		
			
				
					|  |  |  |                     firstOperandEvaluation = firstOperandSimplified->evaluateAsRational(); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 if (secondOperandSimplified->hasIntegerType()) { | 
			
		
	
		
			
				
					|  |  |  |                     secondOperandEvaluation = secondOperandSimplified->evaluateAsInt(); | 
			
		
	
		
			
				
					|  |  |  |                     secondOperandEvaluation = storm::utility::convertNumber<storm::RationalNumber>(secondOperandSimplified->evaluateAsInt()); | 
			
		
	
		
			
				
					|  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |                     secondOperandEvaluation = secondOperandSimplified->evaluateAsDouble(); | 
			
		
	
		
			
				
					|  |  |  |                     secondOperandEvaluation = secondOperandSimplified->evaluateAsRational(); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                  | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 bool truthValue = false; | 
			
		
	
		
			
				
					|  |  |  |                 switch (this->getRelationType()) { | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::Equal: truthValue = (firstOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(firstOperandEvaluation) : boost::get<double>(firstOperandEvaluation)) == (secondOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(secondOperandEvaluation) : boost::get<double>(secondOperandEvaluation)); break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::NotEqual: truthValue = (firstOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(firstOperandEvaluation) : boost::get<double>(firstOperandEvaluation)) != (secondOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(secondOperandEvaluation) : boost::get<double>(secondOperandEvaluation)); break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::Greater: truthValue = (firstOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(firstOperandEvaluation) : boost::get<double>(firstOperandEvaluation)) > (secondOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(secondOperandEvaluation) : boost::get<double>(secondOperandEvaluation)); break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::GreaterOrEqual: truthValue = (firstOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(firstOperandEvaluation) : boost::get<double>(firstOperandEvaluation)) >= (secondOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(secondOperandEvaluation) : boost::get<double>(secondOperandEvaluation)); break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::Less: truthValue = (firstOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(firstOperandEvaluation) : boost::get<double>(firstOperandEvaluation)) < (secondOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(secondOperandEvaluation) : boost::get<double>(secondOperandEvaluation)); break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::LessOrEqual: truthValue = (firstOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(firstOperandEvaluation) : boost::get<double>(firstOperandEvaluation)) <= (secondOperandSimplified->hasIntegerType() ? boost::get<int_fast64_t>(secondOperandEvaluation) : boost::get<double>(secondOperandEvaluation)); break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::Equal: truthValue = firstOperandEvaluation == secondOperandEvaluation; break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::NotEqual: truthValue = firstOperandEvaluation != secondOperandEvaluation; break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::Greater: truthValue = firstOperandEvaluation > secondOperandEvaluation; break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::GreaterOrEqual: truthValue = firstOperandEvaluation >= secondOperandEvaluation; break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::Less: truthValue = firstOperandEvaluation < secondOperandEvaluation; break; | 
			
		
	
		
			
				
					|  |  |  |                     case RelationType::LessOrEqual: truthValue = firstOperandEvaluation <= secondOperandEvaluation; break; | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 return std::shared_ptr<BaseExpression>(new BooleanLiteralExpression(this->getManager(), truthValue)); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
	
		
			
				
					|  |  | 
 |