Hello, I’m trying to choose the right parameters for my application (in ckks). I am using

security = 128 bit

ring = 2^16

full packing

levelBudget = {3, 3}

approxBootstrapDepth = 4

levelsUsedBeforeBootstrap = 11

So the depth of the circuit is 15+11=26.

When i bootstrap though, the result is at level 20. Is that right or am i missing something? I think it should be at 15.

Thank you

I am not sure I follow your calculations. Why is `approxBootstrapDepth`

set to 4, and where do you get 15?

I suggest looking at the simple CKKS bootstrapping example. Below is the relevant code.

```
std::vector<uint32_t> levelBudget = {4, 4};
uint32_t approxBootstrapDepth = 8;
uint32_t levelsUsedBeforeBootstrap = 10;
usint depth =
levelsUsedBeforeBootstrap + FHECKKSRNS::GetBootstrapDepth(approxBootstrapDepth, levelBudget, secretKeyDist);
parameters.SetMultiplicativeDepth(depth);
```

15 is approxBootstrapDepth + levelBudget[0] + levelBudget[1] + 5 (just like is computed by FHECKKSRNS::GetBootstrapDepth)

I thought approxBootstrapDepth can be chosen by the user, so 8 is a fixed value?

8 is a fixed value. We will simplify the bootstrapping interface in a later version where `approxBootstrapDepth`

is automatically chosen by OpenFHE.

1 Like