# Herbie 1.5 Release Notes

The Herbie developers are excited to announce Herbie 1.5! This release focuses on multiple precisions, new syntax, and higher accuracy. Our favorite features are below.

What is Herbie? Herbie automatically improves the accuracy of floating point expressions. This avoids the bugs, errors, and surprises that so often occur with floating point arithmetic.

Join us! Join the Herbie developers on the FPBench Slack, at the monthly FPBench community meetings, and at FPTalks 2021, where Brett will be talking about Herbie 1.5.

## New Pareto mode

Traditionally, Herbie has been all about giving you the most accurate way possible to evaluate some mathematical expression. But many of our users need to balance accuracy with speed.

So Herbie 1.5 has an experimental new pareto mode. When the pareto mode is turned on, Herbie produces multiple outputs that trade off speed for accuracy. Run Herbie with --pareto to try it out, and if you're interested in more details of how it works, check out our paper at ARITH'21.

## Symmetric expressions

We've been working hard improving Herbie's results on its traditional task: finding the most accurate way to evaluate a mathematical expression. In Herbie 1.5, several improvements landed, but the most exciting is the symmetric expressions mode.

Simply put, it's pretty common for Herbie to be asked to improve the accuracy of an expression where reordering the variables leaves the expression unchanged—something like log(exp(x) + exp(y)). Often the best way to evaluate that expression requires determining which of x and y is larger.

With symmetric expressions, Herbie can detect when variable order doesn't matter and sort the variables up front. That often lets Herbie's other components find a clever way to improve accuracy.

## Function definitions

While most people use Herbie via the web interface, Herbie also supports the standard FPCore format. FPCore offers more control over Herbie, and it's also a good output format for other tools. In this release, we extended Herbie to support function definitions.

In short, an FPCore can now include a function name between the FPCore keyword and the list of variables. That core can then be referenced by other cores in the same file. Herbie will automatically expand those calls before improving the expression.

## Other improvements

• Herbie now supports more pluggable number representations, including arbitrary-precision floating-point numbers and also fixed-point numbers. We're still working on better-exposing this to users.
• Herbie will now introduce some temporary variables to make its output more readable.
• The series expansion engine was substantially improved, which both reduces timeouts and improves results substantially.
• A new "retirement community" data structure allows Herbie to consider more candidate programs, and thus produces better, simpler results.
• You can now give Herbie FPCore input in the web interface.
• The Herbie timeline data structure (which powers "Metrics" pages) has been dramatically improved, making it easier to add more metrics in the future.

## Deprecations and removals

• Support for the Racket 7-series is deprecated and will be removed in the next release. Please upgrade.
• The egg-herbie support package has been merged into Herbie proper. This means that if you want to install Herbie from source, you will now need a Rust compiler.
• Support for complex numbers has been deprecated and will be removed in the next release. Please let us know if you are using it. We hope to reimplement this eventually, but with a better architecture.
• The precision:double flag has been deprecated, and no longer does anything. Use the :precision flag instead.
• The setup:early-exit flag has been deprecated, and no longer does anything. Herbie is fast enough now that it's not that important any more!

## Try it out!

We want Herbie to be more useful to scientists, engineers, and programmers around the world. We've got a lot of features we're excited to work on in the coming months. Please report bugs, join the mailing list, or contribute.

If you find Herbie useful, let us know!