Although COMPOSINGSCALINGAUTO is expected to have the same precision as FLEXIBLEAUTO for bootstrapping, lower precision was observed in several scenarios. One can modify simple-ckks-bootstrapping-composing-scaling.cpp to try these scenarios.
Scenario 1. For scalingModSize = 59, firstModSize = 60, registerWordSize = 32, levelBudget={4,4}, levelsAfterBootstrap = 10, ring dimension = 2^14 (no security enforcement), full packing, and other parameters set to default, COMPOSINGSCALINGAUTO has a lower precision than FLEXIBLEAUTO by about 5 bits.
Scenario 2. For scalindModSize = 55, FirstModSize = 60, 8 slots, and ring dimension = 2^12, levelBudget={3,3}, the precision of COMPOSINGSCALINGAUTO is lower than for FLEXIBLEAUTO, by 3-5 bits.
Although COMPOSINGSCALINGAUTO is expected to have the same precision as FLEXIBLEAUTO for bootstrapping, lower precision was observed in several scenarios. One can modify simple-ckks-bootstrapping-composing-scaling.cpp to try these scenarios.
Scenario 1. For scalingModSize = 59, firstModSize = 60, registerWordSize = 32, levelBudget={4,4}, levelsAfterBootstrap = 10, ring dimension = 2^14 (no security enforcement), full packing, and other parameters set to default, COMPOSINGSCALINGAUTO has a lower precision than FLEXIBLEAUTO by about 5 bits.
Scenario 2. For scalindModSize = 55, FirstModSize = 60, 8 slots, and ring dimension = 2^12, levelBudget={3,3}, the precision of COMPOSINGSCALINGAUTO is lower than for FLEXIBLEAUTO, by 3-5 bits.