The README uses the term "underflow" incorrectly: underflow is essentially rounding, when rounding loses bits. "overflow" includes going below the minimum representable value.
Fixed-point arithmetic can underflow whenever you're adding two numbers with different precision and want to represent the output with the coarser precision. It's not relevant for integer arithmetic because all integers act like fixed-point numbers with the decimal place just after the 1 position.
Here are links to two relevant wikipedia pages:
https://en.wikipedia.org/wiki/Integer_overflow (note the first paragraph: "attempts to create a numeric value that is outside of the range that can be represented with a given number of digits – either higher than the maximum or lower than the minimum representable value.")
The README uses the term "underflow" incorrectly: underflow is essentially rounding, when rounding loses bits. "overflow" includes going below the minimum representable value.
Fixed-point arithmetic can underflow whenever you're adding two numbers with different precision and want to represent the output with the coarser precision. It's not relevant for integer arithmetic because all integers act like fixed-point numbers with the decimal place just after the 1 position.
Here are links to two relevant wikipedia pages: