Does multiplication by double or plaintext always require Rescale?

Hello,

I’m hoping to clarify something regarding CKKS multiplication in OpenFHE, that was discussed in the following topic. From what I understand, performing a multiplication by a double or plaintext consumes one multiplication level, and each multiplication requires a rescaling afterward.

I have a couple of questions related to this:

  1. Is the need to rescale after scalar and plaintext multiplications a theoretical requirement, or is it an implementation constraint in OpenFHE?
    In other words, is it theoretically possible in CKKS to multiply a ciphertext by a scalar/plaintext without rescaling afterwards and still obtain a correct result?
  2. If I work in FIXEDMANUAL mode and choose not to rescale after scalar or plaintext multiplications, will the results still be accurate? Or could this lead to incorrect results or potential overflow?

Thank you in advance for your help!

Best regards,
Arseniy

cc @sloede

It it not a theoretical requirement. But whenever you multiply by a (scaled-up and rounded) scalar, the approximation noise increases by this (scaled-up and rounded) scalar. You can still multiply the resulting ciphertext after this w/o causing double-exponential growth in the approximation error (in contrast to homomorphic multiplication, where you have to rescale).

Yes, it will still be accurate as long as the total multiplicative depth does not exceed the depth set during CryptoContext generation.

For a more in-depth intrdouction, I suggest reading the Introduction of Approximate Homomorphic Encryption with Reduced Approximation Error

I see, the scaling factor of double value will cause the fast error growth, that can be decreased only by Rescale.
Thank you very much!