+
+ # number of bits that the product of two normalized signals needs to
+ # be shifted left to be normalized, e.g. the product of 2 8-bit
+ # numbers `0x80 * 0x80 == 0x4000` and `0x4000` needs to be shifted
+ # left by `PROD_STAY_NORM_SHIFT` bits to be normalized again:
+ # `0x4000 << 1 == 0x8000`
+ PROD_STAY_NORM_SHIFT = 1
+
+ extra_prod_exponent = (expanded_mantissa_shape(fpf).width
+ - product_mantissa_shape(fpf).width
+ + PROD_STAY_NORM_SHIFT
+ - EXPANDED_MANTISSA_EXTRA_LSBS)
+ m.d.comb += prod_exponent.eq(a_exponent + c_exponent
+ + extra_prod_exponent)