diff --git a/include/mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp b/include/mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp index 30c67df18..ee5901d5b 100644 --- a/include/mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp +++ b/include/mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp @@ -16,8 +16,10 @@ #include "ir/parsers/qasm3_parser/NestedEnvironment.hpp" #include "ir/parsers/qasm3_parser/Statement.hpp" +#include #include #include +#include #include #include #include @@ -65,7 +67,8 @@ struct ConstEvalValue { case ConstUint: return std::get<0>(value) == std::get<0>(rhs.value); case ConstFloat: - return std::get<1>(value) == std::get<1>(rhs.value); + return std::abs(std::get<1>(value) - std::get<1>(rhs.value)) < + std::numeric_limits::epsilon() * 1024; case ConstBool: return std::get<2>(value) == std::get<2>(rhs.value); } diff --git a/test/ir/test_qfr_functionality.cpp b/test/ir/test_qfr_functionality.cpp index 6aa8f665d..dd51395d6 100644 --- a/test/ir/test_qfr_functionality.cpp +++ b/test/ir/test_qfr_functionality.cpp @@ -714,10 +714,10 @@ TEST_F(QFRFunctionality, addControlStandardOperation) { op.addControl(1); op.addControl(2); ASSERT_EQ(op.getNcontrols(), 2); - const auto expectedControls = Controls{1, 2}; + const auto expectedControls = Controls{1U, 2U}; EXPECT_EQ(op.getControls(), expectedControls); op.removeControl(1); - const auto expectedControlsAfterRemove = Controls{2}; + const auto expectedControlsAfterRemove = Controls{2U}; EXPECT_EQ(op.getControls(), expectedControlsAfterRemove); op.clearControls(); EXPECT_EQ(op.getNcontrols(), 0); @@ -735,10 +735,10 @@ TEST_F(QFRFunctionality, addControlSymbolicOperation) { op.addControl(2); ASSERT_EQ(op.getNcontrols(), 2); - auto expectedControls = Controls{1, 2}; + auto expectedControls = Controls{1U, 2U}; EXPECT_EQ(op.getControls(), expectedControls); op.removeControl(1); - auto expectedControlsAfterRemove = Controls{2}; + auto expectedControlsAfterRemove = Controls{2U}; EXPECT_EQ(op.getControls(), expectedControlsAfterRemove); op.clearControls(); EXPECT_EQ(op.getNcontrols(), 0); @@ -757,10 +757,10 @@ TEST_F(QFRFunctionality, addControlClassicControlledOperation) { op.addControl(2); ASSERT_EQ(op.getNcontrols(), 2); - auto expectedControls = Controls{1, 2}; + auto expectedControls = Controls{1U, 2U}; EXPECT_EQ(op.getControls(), expectedControls); op.removeControl(1); - auto expectedControlsAfterRemove = Controls{2}; + auto expectedControlsAfterRemove = Controls{2U}; EXPECT_EQ(op.getControls(), expectedControlsAfterRemove); op.clearControls(); EXPECT_EQ(op.getNcontrols(), 0);