Hi,
I am reading the function EvalBootstrapSetup
for ckks, and I was wondering if scaleEnc and scaleDec is necessary for general homomorphic slots-coeff switching.
Thanks for your time!
Hi,
I am reading the function EvalBootstrapSetup
for ckks, and I was wondering if scaleEnc and scaleDec is necessary for general homomorphic slots-coeff switching.
Thanks for your time!
If you only want to do the homomorphic transformation between the slots/coefficients encodings, you do not need to be concerned with K, which is the number of overflows in the sine approximation inside bootstrapping. The other parts are for precision reasons in the context of bootstrapping.
Thank you for your response.
I would like to confirm one point: in typical application-level computations that involve homomorphic encoding and decoding, should both scaleEnc
and scaleDec
be set to 1?
Additionally, I noticed that during the bootstrapping process, there is a multiplication by a constant called constantEvalMult
. Is this constant not incorporated into scaleEnc
because the resulting product would be too small and could cause precision issues?
Lastly, I’m planning to implement a bootstrapping procedure that begins with an S2C (Slot-to-Coefficient) operation. In this case, how should I appropriately handle scaleEnc
and scaleDec
for the preceding S2C step?
I would greatly appreciate any insights or suggestions. Thank you in advance!
EvalLinearTransformPrecompute
and EvalCoeffsToSlotsPrecompute
, EvalSlotsToCoeffsPrecompute
. For instance, the encoding-related matrix does not contain 1/N.The high-level idea behind scaleEnc
and scaleDec
is to embed the multiplication by a double into the generation of precomputed linear maps. The motivation is to reduce the multiplicative depth consumed by the multiplication by a double. This embedding
approach is used a couple of times in CKKS bootstrapping to avoid explicit multiplications wherever possible.
I understand! Thanks for your help!