From d1cf65081732bca69abbd396032168ead8d229b1 Mon Sep 17 00:00:00 2001 From: rudy Date: Thu, 5 Jan 2023 09:18:32 +0100 Subject: [PATCH] fix: overflow on high log norm2 --- compiler/lib/Dialect/FHE/Analysis/ConcreteOptimizer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/lib/Dialect/FHE/Analysis/ConcreteOptimizer.cpp b/compiler/lib/Dialect/FHE/Analysis/ConcreteOptimizer.cpp index 603c717eb..978760b71 100644 --- a/compiler/lib/Dialect/FHE/Analysis/ConcreteOptimizer.cpp +++ b/compiler/lib/Dialect/FHE/Analysis/ConcreteOptimizer.cpp @@ -183,7 +183,8 @@ struct FunctionToDag { auto smanp_int = op.getAttrOfType("SMANP"); auto loc = loc_to_string(op.getLoc()); assert(smanp_int && "Missing manp value on a crypto operation"); - double manp = sqrt((double)smanp_int.getValue().getZExtValue()); + // TODO: use APIFloat.sqrt when it's available + double manp = sqrt(smanp_int.getValue().roundToDouble()); auto comment = std::string(op.getName().getStringRef()) + " " + loc; index[val] = dag->add_levelled_op(slice(inputs), lwe_dim_cost_factor, fixed_cost,