{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,28]],"date-time":"2025-06-28T12:40:04Z","timestamp":1751114404506,"version":"3.41.0"},"reference-count":14,"publisher":"Association for Computing Machinery (ACM)","issue":"2","funder":[{"name":"Natural Sciences and Engineering Research Council of Canada Discover","award":["RGPN-2020-04467"],"award-info":[{"award-number":["RGPN-2020-04467"]}]},{"name":"Natural Sciences and Engineering Research Council of Canada Undergraduate Student Research Awards, Global Water Futures Program, University of Saskatchewan"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Math. Softw."],"published-print":{"date-parts":[[2025,6,30]]},"abstract":"<jats:p>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\u2019s 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.<\/jats:p>\n          <jats:p>\n            Here, we describe the functionality of\n            <jats:monospace>FunC<\/jats:monospace>\n            2.0, a C++ library designed to streamline the process of building, comparing, and implementing univariate LUTs in practical applications. In particular,\n            <jats:monospace>FunC<\/jats:monospace>\n            2.0 can build relatively small LUTs satisfying user-provided absolute and relative tolerances for error. Furthermore,\n            <jats:monospace>FunC<\/jats:monospace>\n            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\n            <jats:monospace>FunC<\/jats:monospace>\n            \u2019s utility in application by reducing the total runtime of a simulation performed by the Canadian Hydrological Model (CHM). This simulation modeled the snow mass distribution across Western Canada over 1 month. Now, the CHM can evaluate the mathematical function of interest about 28 times faster, allowing the necessary algorithm to finish two times faster, and the overall simulation is about 9% faster.\n          <\/jats:p>","DOI":"10.1145\/3734692","type":"journal-article","created":{"date-parts":[[2025,5,6]],"date-time":"2025-05-06T14:45:18Z","timestamp":1746542718000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Algorithm 1057: FunC: A Minimally Invasive C++ Library for the Generation and Analysis of Univariate Lookup Tables"],"prefix":"10.1145","volume":"51","author":[{"ORCID":"https:\/\/orcid.org\/0009-0006-8219-6343","authenticated-orcid":false,"given":"Shawn S. C.","family":"McAdam","sequence":"first","affiliation":[{"name":"Mathematics and Statistics, University of Saskatchewan, Saskatoon, Saskatchewan, Canada"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3513-6237","authenticated-orcid":false,"given":"Raymond J.","family":"Spiteri","sequence":"additional","affiliation":[{"name":"Computer Science, University of Saskatchewan, Saskatoon, Saskatchewan, Canada"}]}],"member":"320","published-online":{"date-parts":[[2025,6,28]]},"reference":[{"key":"e_1_3_3_2_2","first-page":"169","volume-title":"Sequences and Series of Functions","author":"Abbott S.","year":"2015","unstructured":"S. Abbott. 2015. Sequences and Series of Functions. Springer New York, New York, NY, 169\u2013213."},{"key":"e_1_3_3_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/210089.210111"},{"key":"e_1_3_3_4_2","unstructured":"Boost. 2017. Boost C++ Libraries. Retrieved June 26 2023 from http:\/\/www.boost.org\/"},{"key":"e_1_3_3_5_2","volume-title":"Algorithms for Minimization Without Derivatives","author":"Brent R.","year":"1973","unstructured":"R. Brent. 1973. Algorithms for Minimization Without Derivatives. Prentice-Hall, Inc., Englewood Cliffs, NJ."},{"key":"e_1_3_3_6_2","doi-asserted-by":"crossref","first-page":"28","DOI":"10.1007\/978-3-642-15582-6_5","volume-title":"Mathematical Software\u2014ICMS 2010","author":"Chevillard S.","year":"2010","unstructured":"S. Chevillard, M. Jolde\u015f, and C. Lauter. 2010. Sollya: An environment for the development of numerical codes. In Mathematical Software\u2014ICMS 2010. Springer Berlin, Berlin, 28\u201331."},{"key":"e_1_3_3_7_2","doi-asserted-by":"publisher","DOI":"10.1137\/18M1201421"},{"key":"e_1_3_3_8_2","unstructured":"N. Lohmann. 2022. JSON for Modern C++. Retrieved from https:\/\/github.com\/nlohmann"},{"key":"e_1_3_3_9_2","doi-asserted-by":"publisher","DOI":"10.5194\/gmd-13-225-2020"},{"key":"e_1_3_3_10_2","unstructured":"C. B. Marsh and V. Vionnet. 2021. Snowcast v2. Retrieved June 26 2023 from http:\/\/www.snowcast.ca\/"},{"key":"e_1_3_3_11_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4899-7983-4_5"},{"key":"e_1_3_3_12_2","unstructured":"University of Saskatchewan Numerical Simulation Laboratory. 2023. FunC Source Code. Retrieved from https:\/\/github.com\/uofs-simlab\/func"},{"key":"e_1_3_3_13_2","doi-asserted-by":"publisher","DOI":"10.21105\/joss.00026"},{"key":"e_1_3_3_14_2","doi-asserted-by":"publisher","DOI":"10.5555\/3384673"},{"key":"e_1_3_3_15_2","doi-asserted-by":"publisher","DOI":"10.1137\/S1064827503430126"}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3734692","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,28]],"date-time":"2025-06-28T12:10:20Z","timestamp":1751112620000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3734692"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,28]]},"references-count":14,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2025,6,30]]}},"alternative-id":["10.1145\/3734692"],"URL":"https:\/\/doi.org\/10.1145\/3734692","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2025,6,28]]},"assertion":[{"value":"2023-09-26","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-04-19","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-06-28","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}