From 3ebd48a11c540ad8c63d3cf73835e6c99a5edddc Mon Sep 17 00:00:00 2001 From: burgholzer Date: Tue, 21 Jan 2025 17:18:46 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20use=20fuzzy=20comparison=20for?= =?UTF-8?q?=20floating=20point=20in=20const=20evaluation=20equality=20chec?= =?UTF-8?q?k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: burgholzer --- .../mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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..293018630 100644 --- a/include/mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp +++ b/include/mqt-core/ir/parsers/qasm3_parser/passes/ConstEvalPass.hpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -65,7 +66,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); }