# Noise reduction in CKKS

**URL:** <https://openfhe.discourse.group/t/noise-reduction-in-ckks/1805>\
**Category:** FHE Questions\
**Created:** [December 24, 2024, 5:12am UTC](https://openfhe.discourse.group/t/noise-reduction-in-ckks/1805 "2024-12-24T05:12:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gogo9th](https://avatars.discourse-cdn.com/v4/letter/g/ccd318/32.png) [@gogo9th](https://openfhe.discourse.group/u/gogo9th)\
**Post date:** [December 24, 2024, 5:12am UTC](https://openfhe.discourse.group/t/noise-reduction-in-ckks/1805/1 "2024-12-24T05:12:15Z")

</div>

Hi,

I read this article about CKKS noise reduction, explaining that we cannot reduce the noise ratio within a CKKS ciphertext relative to its ciphertext modulus:  
[https://openfhe.discourse.group/t/ckks-relations-between-bootstrapping-noise-and-precision/1493](https://openfhe.discourse.group/t/ckks-relations-between-bootstrapping-noise-and-precision/1493)

However, what if we instead use BFV’s bootstrapping method (e.g., digit extraction) to remove the noise of CKKS ciphertexts? Like CKKS, BFV also uses the same structure of modulus chain. Suppose we have a CKKS ciphertext whose modulus is q\_0 (is the lowest multiplicative level’s ciphertext modulus). We can do the following:

1. Do mod-switch from q\_0 \rightarrow p^e , choosing some prime p and some integer e such that p^e \approx q\_L (the highest multiplicative level’s ciphertext modulus in the modulus chain)
2. Do CoeffToSlot
3. Do digit extraction
4. Do SlotToCoeff
5. Do another modulus switch back to q\_L.

This way, we can both mod-raise CKKS’s ciphertext from q\_0 \rightarrow p^e \rightarrow q\_L and also reset the noise. Not sure if I am missing something here…

---

<div class="post-metadata">

**Author:** ![ypolyakov](https://yyz1.discourse-cdn.com/flex031/user_avatar/openfhe.discourse.group/ypolyakov/32/47_2.png) [@ypolyakov](https://openfhe.discourse.group/u/ypolyakov)\
**Post date:** [December 24, 2024, 8:09pm UTC](https://openfhe.discourse.group/t/noise-reduction-in-ckks/1805/2 "2024-12-24T20:09:29Z")

</div>

Recent papers show that the message noise ratio (approximation error to message, which is what the cited Discourse topic referred to) can be reduced using Hermite interpolations, either as part of functional bootstrapping (trigonometric Hermite interpolation) or using polynomial Hermite interpolation. For example, see [General Functional Bootstrapping using CKKS](https://eprint.iacr.org/2024/1623).

The ratio between ciphertext modulus and noisy CKKS message, including CKKS noise, is already increased using regular CKKS bootstrapping. No need to use BFV bootstrapping for it.

---

<div class="post-metadata">

**Author:** ![gogo9th](https://avatars.discourse-cdn.com/v4/letter/g/ccd318/32.png) [@gogo9th](https://openfhe.discourse.group/u/gogo9th)\
**Post date:** [December 26, 2024, 7:04am UTC](https://openfhe.discourse.group/t/noise-reduction-in-ckks/1805/3 "2024-12-26T07:04:01Z")

</div>

Got it, thanks for the links and notes on the latest CKKS techniques of reducing the noise ratio relative to the plaintext message.
