Skip to main content

fp64_mul_make_round_base

Function fp64_mul_make_round_base 

Source
pub fn fp64_mul_make_round_base(
    b: &CircuitBuilder,
    m_a: Wire,
    m_b: Wire,
) -> (Wire, Wire)
Expand description

[Block M2] Compute round-base geometry from the 128-bit product.

We compute p = m_a * m_b (128-bit hi, lo) and detect whether the product ≥ 2 (i.e., top bit at index 105 set). If yes, we normalize by 1-bit right shift (effective overall right shift s = 42), else s = 41.

Build a 64-bit “round-base” word sig_round_base = (p >> s).lo64 with:

  • Integer bit at bit 63
  • LSB-of-mantissa at bit 11
  • Guard at bit 10, Round at bit 9
  • Sticky folded into bit 0 (OR with bit0)

§Parameters

  • m_a, m_b: 53-bit multiplicands from fp64_mul_prepare

§Returns

  • (sig_round_base, norm_shift1_bit01) where:
    • sig_round_base: 64-bit value with round-base geometry
    • norm_shift1_bit01: 0/1 indicating whether normalization shift occurred (s==42)