Noise reduction in CKKS

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

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…

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.

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.

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