Optimising Code Generation with haggies
Thomas Reiter
TL;DR
haggies is an open-source code-generation backend that converts large algebraic expressions into optimized, language-specific numerical code. It combines a type inference system with multivariate Horner factorization and common subexpression elimination, followed by linear-scan register allocation, to produce compact, fast executable code through flexible pattern-based templates. The approach scales to very large expressions typical in one-loop quantum field theory calculations and is demonstrated across diverse examples (RK integrator, Gaussian quadrature, color algebra, amplitude calculations, interval solvers). By separating the computer algebra from output templates, haggies enables re-use across languages and projects, facilitating integration with existing CAS workflows and large-scale computational pipelines.
Abstract
This article describes haggies, a program for the generation of optimised programs for the efficient numerical evaluation of mathematical expressions. It uses a multivariate Horner-scheme and Common Subexpression Elimination to reduce the overall number of operations. The package can serve as a back-end for virtually any general purpose computer algebra program. Built-in type inference that allows to deal with non-standard data types in strongly typed languages and a very flexible, pattern-based output specification ensure that haggies can produce code for a large variety of programming languages. We currently use haggies as part of an automated package for the calculation of one-loop scattering amplitudes in quantum field theories. The examples in this articles, however, demonstrate that its use is not restricted to the field of high energy physics.
