Separated higher-level functions (for evaluating the range of a function over an interval by splitting it into subintervals, etc.) into interval_tools.py