Hello, I have a question related to TFHE.

What are the best approaches to work with modulo greater than 4? I mean, when using larger values, do we have a way to, for instance, sum or multiply values?

For instance, how do we easily evaluate such as 10 + 4 in TFHE? Examples are all in binary, but afaik we can use TFHE with Integers, no? Thank you

Typically it is more efficient to use a large-word scheme, e.g., CKKS, for arithmetic operations and switch to TFHE for (large-precision) comparisons. Examples of these are provided in https://github.com/openfheorg/openfhe-development/blob/v1.1.1/src/pke/examples/scheme-switching.cpp

It is possible to add larger numbers directly in TFHE using EvalAdd for LWE (see https://github.com/openfheorg/openfhe-development/blob/v1.1.1/src/binfhe/include/lwe-pke.h#L144). Larger plaintext moduli have to be used. Functional bootstrapping is also supported for moduli up to 8 (can be extended using a tree method to larger plaintexts but has to be done at the application level). The multiplication for LWE ciphertexts (not based on functional bootstrapping, i.e., a cheaper multiplication) is not currently supported (as it is more efficient to do it in CKKS rather than in GSW). So for scenarios with multiplication, I would suggest CKKS with scheme switching to/from TFHE.

1 Like