If I'm not mistaken, it seems like the current way the geometric noiser is implemented (via rounding the laplace r.v.) is incorrect. For example, if sensitivity = epsilon = 1, then the geometric mechanism would put a mass of (1 - 1/e) / (1 + 1/e) = 0.462 at zero noise. However, the rounded laplace has mass of CDF(0.5) - CDF(-0.5) = 0.393 at zero. This change should fix this issue. (Note that the fix will result in smaller noise in expectation compared to before.)
If I'm not mistaken, it seems like the current way the geometric noiser is implemented (via rounding the laplace r.v.) is incorrect. For example, if sensitivity = epsilon = 1, then the geometric mechanism would put a mass of (1 - 1/e) / (1 + 1/e) = 0.462 at zero noise. However, the rounded laplace has mass of CDF(0.5) - CDF(-0.5) = 0.393 at zero. This change should fix this issue. (Note that the fix will result in smaller noise in expectation compared to before.)