- Research Article
- 10.1145/3734692
Algorithm XXXX: FunC – A minimally invasive C++ library for the generation and analysis of univariate lookup tables
- May 06, 2025
- ACM Transactions on Mathematical Software
- Shawn S.c Mcadam + 1 more +1
A lookup table (LUT) is a computationally inexpensive piecewise function used to approximate computationally expensive mathematical functions. Evaluating a LUT can be as quick as using Horner’s method to evaluate a polynomial after looking up its coefficients. A common choice of LUT is a piecewise constant or piecewise linear function; however, high-degree interpolating polynomials can also be valuable. Here, we describe the functionality of FunC 2.0 , a C++ library designed to streamline the process of building, comparing, and implementing univariate LUTs in practical applications. In particular, FunC 2.0 can build relatively small LUTs satisfying user-provided absolute and relative tolerances for error. Furthermore, FunC 2.0 can build nonuniform LUTs, it provides utilities to quickly determine reasonable LUT bounds and tolerances for error, and it provides a way to quickly profile a set of LUTs. We demonstrate FunC ’s utility in application by reducing the total runtime of a simulation performed by the Canadian Hydrological Model (CHM). This simulation modelled the snow mass distribution across Western Canada over one month. Now, CHM can evaluate the mathematical function of interest about \(28\) times faster, allowing the necessary algorithm to finish \(2\) times faster, and the overall simulation is about \(9\%\) faster.
Read more