FloatingPointRounder constructor

FloatingPointRounder(
  1. Logic inp,
  2. int lsb, {
  3. required FloatingPointRoundingMode roundingMode,
  4. Logic? sign,
  5. Logic? extraSticky,
})

Determines rounding for inp, retaining bits from lsb upward.

extraSticky includes discarded information no longer present in inp. sign is required for the directed rounding modes.

Implementation

FloatingPointRounder(Logic inp, int lsb,
    {required FloatingPointRoundingMode roundingMode,
    Logic? sign,
    Logic? extraSticky}) {
  if (lsb < 0 || lsb >= inp.width) {
    throw RangeError.range(lsb, 0, inp.width - 1, 'lsb');
  }
  _configure(
      retainedLsb: inp[lsb],
      guard: (lsb > 0) ? inp[lsb - 1] : Const(0),
      roundBit: (lsb > 1) ? inp[lsb - 2] : Const(0),
      sticky: (lsb > 2) ? inp.getRange(0, lsb - 2).or() : Const(0),
      extraSticky: extraSticky,
      roundingMode: roundingMode,
      sign: sign);
}