Question about general functional bootstrapping using CKKS

Hi everyone,

I’ve been reading the paper on general functional bootstrapping using ckks(General Functional Bootstrapping using CKKS) and also looking at the accompanying implementation.
Both the paper and the code mention:

We work with an RLWE scheme that assumes the plaintext modulus and the ciphertext modulus to be powers of two (not RNS-friendly).

I have a few questions about this design choice:

  1. Modulus choice:
    Is it possible (in principle or in practice) to use prime moduli for the plaintext and ciphertext in the RLWE scheme instead of powers of two? Is this necessary for correctness of the bootstrapping, or simply a convenient design choice in the current implementation?

  2. Floating-point interpretation:
    The paper describes the mapping \frac{m}{p} + I \rightarrow f(m)
    If p is power of two, then \frac{m}{p} is a fixed-point number and we seek a polynomial approximation.
    If p were prime, then \frac{m}{p} would be a repeating decimal. Would the Hermite–trigonometric interpolation technique still approximate \frac{m}{p} + I \rightarrow f(m) correctly under that setting, or does the power-of-two modulus play a specific algebraic role?

Any clarification would be very helpful. Thanks!

Is it possible (in principle or in practice) to use prime moduli for the plaintext and ciphertext in the RLWE scheme instead of powers of two? Is this necessary for correctness of the bootstrapping, or simply a convenient design choice in the current implementation?

The use of powers of two moduli was a convenient choice for the current implementation, which easily extends to the multi-precision setting. Yes, it is possible to use prime moduli. See, e.g., 2025/346.

Thanks for the clarification! I’ll take a closer look at that reference