minimize
Whether that is the case depends on the CPU. I hit memory bandwidth limits before adc becomes a problem. But I concede that you have a valid point and that there are definitely cases where leaving sufficient space for carries is the better strategy.
Anyway, we can probably both agree that "% 1000000000" is not a great idea.
You can also implement it in C if you want a more portable solution: https://github.com/983/bigint/blob/ee0834c65a27d18fa628e6c52...
If you scroll around, you can also find my implementations for multiplication and such.
You can verify this by comparing the sales by country to the number of searches for the term "yerba mate" by country: https://trends.google.com/trends/explore?q=yerba%20mate The distributions are very similar.