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:
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?
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?
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.