def TruncRoundNearestAdjustOverflow(a, length, target_length, kappa): t = comparison.TruncRoundNearest(a, length, length - target_length, kappa) overflow = t.greater_equal(two_power(target_length), target_length + 1, kappa) if program.Program.prog.options.ring: s = (1 - overflow) * t + \ comparison.TruncZeroesInRing(overflow * t, length, 1, False) else: s = (1 - overflow) * t + overflow * t / 2 return s, overflow
def TruncRoundNearestAdjustOverflow(a, length, target_length, kappa): t = comparison.TruncRoundNearest(a, length, length - target_length, kappa) overflow = t.greater_equal(two_power(target_length), target_length + 1, kappa) s = (1 - overflow) * t + overflow * t / 2 return s, overflow