Can i use BFV/BGV instead of CKKS for float numbers

Hello together,

let’s think of a use case where we need to process vectors of floating point numbers. The first thought is to use CKKS. What CKKS is doing under the hood is scaling up to operate on integers.
Theoretically we can use BGV/BFV for the same use case by just scaling up the float vectors right? Or is there a significant advantage that CKKS brings for that use case?

That’s roughly right. CKKS allows scaling down efficiently after homomorphic multiplication. That’s its main advantage over BFV/BGV where scaling is complex and less efficient than in CKKS.

To appreciate the difficulty of performing fixed-point arithmetic under BFV/BGV, check this paper which implements logistic regression training in BFV and utilizes bootstrapping for scaling.

1 Like