-
Notifications
You must be signed in to change notification settings - Fork 194
Open
Description
Line 113 in 1d70f2c
func (r Ring) DivRoundByLastModulus(p0, p1 Poly) { |
This method should not write on p0
.
func (r Ring) DivRoundByLastModulus(p0, p1 Poly) {
level := r.level
// Center by (p-1)/2
pHalf := (r.SubRings[level].Modulus - 1) >> 1
r.SubRings[level].AddScalar(p0.Coeffs[level], pHalf, p0.Coeffs[level])
for i, s := range r.SubRings[:level] {
// p0 is modified
s.AddScalarLazyThenNegTwoModulusLazy(p0.Coeffs[i], s.Modulus-BRedAdd(pHalf, s.Modulus, s.BRedConstant), p0.Coeffs[i])
s.AddLazyThenMulScalarMontgomery(p0.Coeffs[level], p0.Coeffs[i], r.RescaleConstants[level-1][i], p1.Coeffs[i])
}
}
Metadata
Metadata
Assignees
Labels
No labels