Hello @Caesar ! I was a little confused about the composition of the modular chain. I set the multDepth=22, scalingModSize = 40, firstModSize = 60, and I used the function print_moduli_chain to output the modular chain, the output showed that q_0,q_1,…q_22 is 40bit, q_23 is 19bit, and q_24,q_25,…,q_29 is 60bit. I want to know why q_23 is 19bit and why there are six 60bit modules.
The moduli q_0 \ldots q_{22} are the main moduli in a CKKS ciphertext coefficient chosen at a size that matches scalingModSize
(except q_0 of size firstModSize
). Think of them as functional moduli.
The modulus q_{23} is a special auxiliary modulus used in CKKS with ScalingTechnique = FLEXIBLEAUTOEXT
, the default technique in OpenFHE for CKKS. This modulus was introduced in this work and it is used to reduce the internal noise in CKKS ciphertexts.
The 60-bit moduli are also auxiliary and are used in key switching, hybrid key switching in your case, the default in OpenFHE.
1 Like