Double hoisting is already implemented in OpenFHE. The simplest instance is provided at openfhe-development/src/pke/lib/scheme/ckksrns/ckksrns-fhe.cpp at v1.4.0 · openfheorg/openfhe-development · GitHub This instance corresponds to Algorithm 6 (with some optimizations). The number of ModDown calls is reduced just like in Algorithm 6. Note that to support double hoisting, the automorphism key generation is done differently (see EvalAutomorphismKeyGen ModInverse index and LeveledSHEBase<Element>::EvalAutomorphism code order for more details)
2 Likes