pub fn mul_double_add_add_carry_by_value(
    a: u64,
    b: u64,
    c: u64,
    carry: u64
) -> (u64, u64, u64)