50 double firstOperandEvaluated = this->
getFirstOperand()->evaluateAsDouble(valuation);
51 double secondOperandEvaluated = this->
getSecondOperand()->evaluateAsDouble(valuation);
55 result = firstOperandEvaluated == secondOperandEvaluated;
58 result = firstOperandEvaluated != secondOperandEvaluated;
61 result = firstOperandEvaluated > secondOperandEvaluated;
64 result = firstOperandEvaluated >= secondOperandEvaluated;
67 result = firstOperandEvaluated < secondOperandEvaluated;
70 result = firstOperandEvaluated <= secondOperandEvaluated;
77 std::shared_ptr<BaseExpression const> firstOperandSimplified = this->
getFirstOperand()->simplify();
78 std::shared_ptr<BaseExpression const> secondOperandSimplified = this->
getSecondOperand()->simplify();
80 if (firstOperandSimplified->isLiteral() && secondOperandSimplified->isLiteral()) {
81 storm::RationalNumber firstOperandEvaluation;
82 storm::RationalNumber secondOperandEvaluation;
84 if (firstOperandSimplified->hasIntegerType()) {
85 firstOperandEvaluation = storm::utility::convertNumber<storm::RationalNumber>(firstOperandSimplified->evaluateAsInt());
87 firstOperandEvaluation = firstOperandSimplified->evaluateAsRational();
89 if (secondOperandSimplified->hasIntegerType()) {
90 secondOperandEvaluation = storm::utility::convertNumber<storm::RationalNumber>(secondOperandSimplified->evaluateAsInt());
92 secondOperandEvaluation = secondOperandSimplified->evaluateAsRational();
95 bool truthValue =
false;
98 truthValue = firstOperandEvaluation == secondOperandEvaluation;
101 truthValue = firstOperandEvaluation != secondOperandEvaluation;
104 truthValue = firstOperandEvaluation > secondOperandEvaluation;
107 truthValue = firstOperandEvaluation >= secondOperandEvaluation;
110 truthValue = firstOperandEvaluation < secondOperandEvaluation;
113 truthValue = firstOperandEvaluation <= secondOperandEvaluation;
119 if (firstOperandSimplified.get() == this->getFirstOperand().get() && secondOperandSimplified.get() == this->getSecondOperand().get()) {
120 return this->shared_from_this();
122 return std::shared_ptr<BaseExpression>(
BinaryRelationExpression(ExpressionManager const &manager, Type const &type, std::shared_ptr< BaseExpression const > const &firstOperand, std::shared_ptr< BaseExpression const > const &secondOperand, RelationType relationType)
Creates a binary relation expression with the given return type, operands and relation type.