Transforming this into a generic function is proving to be a challenge
since most of the necessary methods are not in a trait. We also need to
cast between the signed and unsigned types, which is difficult to do
in a generic function.
This can be solved for example by adding the num crate as a dependency.
But adding a dependency just to solve this issue seems a bit much.