From bf6bdcfec247d4bba8f425f0565efffe3e961d97 Mon Sep 17 00:00:00 2001 From: rudy Date: Fri, 19 Aug 2022 17:30:54 +0200 Subject: [PATCH] fix: bug converting manp to variance factor --- concrete-optimizer/src/optimization/dag/solo_key/analyze.rs | 3 ++- concrete-optimizer/src/optimization/dag/solo_key/optimize.rs | 4 ++-- .../src/optimization/dag/solo_key/symbolic_variance.rs | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/concrete-optimizer/src/optimization/dag/solo_key/analyze.rs b/concrete-optimizer/src/optimization/dag/solo_key/analyze.rs index 7e6874475..e5460f1c1 100644 --- a/concrete-optimizer/src/optimization/dag/solo_key/analyze.rs +++ b/concrete-optimizer/src/optimization/dag/solo_key/analyze.rs @@ -769,7 +769,8 @@ mod tests { let input1 = graph.add_input(3, Shape::number()); let cpx_dot = LevelledComplexity::ADDITION; let weights = Weights::vector([1, 2]); - let manp = 1.0 * 1.0 + 2.0 * 2_f64; + #[allow(clippy::imprecise_flops)] + let manp = (1.0 * 1.0 + 2.0 * 2_f64).sqrt(); let dot = graph.add_levelled_op([input1, input1], cpx_dot, manp, Shape::number(), "dot"); let analysis = analyze(&graph); let one_lut_cost = 100.0; diff --git a/concrete-optimizer/src/optimization/dag/solo_key/optimize.rs b/concrete-optimizer/src/optimization/dag/solo_key/optimize.rs index 2082f5b2f..624eb9224 100644 --- a/concrete-optimizer/src/optimization/dag/solo_key/optimize.rs +++ b/concrete-optimizer/src/optimization/dag/solo_key/optimize.rs @@ -15,7 +15,6 @@ use crate::optimization::config::NoiseBoundConfig; use crate::parameters::{BrDecompositionParameters, GlweParameters, KsDecompositionParameters}; use crate::pareto; use crate::security::glwe::minimal_variance; -use crate::utils::square; use super::analyze; @@ -308,7 +307,7 @@ pub fn optimize_v0( ) -> OptimizationState { use crate::dag::operator::{FunctionTable, Shape}; let same_scale_manp = 0.0; - let manp = square(noise_factor); + let manp = noise_factor; let out_shape = &Shape::number(); let complexity = LevelledComplexity::ADDITION * sum_size; let comment = "dot"; @@ -344,6 +343,7 @@ mod tests { use super::*; use crate::optimization::atomic_pattern; + use crate::utils::square; fn small_relative_diff(v1: f64, v2: f64) -> bool { f64::abs(v1 - v2) / f64::max(v1, v2) <= f64::EPSILON diff --git a/concrete-optimizer/src/optimization/dag/solo_key/symbolic_variance.rs b/concrete-optimizer/src/optimization/dag/solo_key/symbolic_variance.rs index f336c0423..b0dea5545 100644 --- a/concrete-optimizer/src/optimization/dag/solo_key/symbolic_variance.rs +++ b/concrete-optimizer/src/optimization/dag/solo_key/symbolic_variance.rs @@ -73,7 +73,7 @@ impl SymbolicVariance { } pub fn manp_to_variance_factor(manp: f64) -> f64 { - manp + manp * manp } pub fn dominate_or_equal(&self, other: &Self) -> bool {