Function sp_arithmetic::helpers_128bit::multiply_by_rational[][src]

pub fn multiply_by_rational(
    mut a: u128,
    mut b: u128,
    mut c: u128
) -> Result<u128, &'static str>

Safely and accurately compute a * b / c. The approach is:

  • Simply try a * b / c.
  • Else, convert them both into big numbers and re-try. Err is returned if the result cannot be safely casted back to u128.

Invariant: c must be greater than or equal to 1.