Hello,
I have a question regarding the BGV Scheme,
is it necessary to call modReduce after every EvalMult call?
I saw it was not needed in the CKKS Scheme,
as it is perfomed automatically.
Thank you in advance.
Hello,
I have a question regarding the BGV Scheme,
is it necessary to call modReduce after every EvalMult call?
I saw it was not needed in the CKKS Scheme,
as it is perfomed automatically.
Thank you in advance.
modReduce
decreases the noise after a ciphertext-ciphertext multiplication (if it is not applied, the noise growth will be exponential). So typically you need to call modReduce
whenever you have such a multiplication.
modReduce
is not needed after a ciphertext-plaintext multiplication (it does not reduce the relative noise).
In the automated modes of both BGV and CKKS, we do not distinguish between ciphertext-ciphertext and ciphertext-plaintext multiplications (mostly for simplicity/usability reasons). So OpenFHE always call them in the automated modes.
If you use the FIXEDMANUAL
mode, you can control where modReduce
is called, but this is only advised for FHE experts as improper application of modReduce
can lead to incorrect results.