This seems to be handled properly now.
Bring better consistency to return type naming
Make all the arithmetic terms symmetric.

Here we are doing checks on types, and then the else case for error
handling (except for div, which requires numbers period end of story).
Fix performance issue with batching and n == -1.

If n == -1 here, the old version requests a batch size of 0, which is
obviously wrong and can affect performance.  In that case we should
use a "normal" batch size.
More else cleanup, for clarity.
Make comment clearer