# Herbie 1.2 Release Notes

The Herbie developers are excited to announce Herbie 1.2! This release focuses on accuracy and reliability, including better conditionals, more accurate defaults, and significant bug fixes to the core algorithms.

Herbie automatically improves the accuracy of floating point expressions. This avoids the bugs, errors, and surprises that so often occur when working with floating point. Since our PLDI'15 paper, we've been hard at work making Herbie more versatile and easier to use.

## Breaking Changes and Deprecations

• This release fixes a significant and important bug in Herbie's measurement of program accuracy. Herbie's prior results had a small chance of recommending an inaccurate program as accurate.
• In line with FPCore 1.0, we have deprecated the sqr and cube functions.
• Herbie no longer supports Racket versions prior to 6.7. Future Herbie releases may continue to step up supported Racket versions to make better use of recent language features.

## Improvement to core algorithm

• Herbie now uses a more rigorous algorithm to evaluate its results, both increasing reproducibility of its results and better measuring its output.
• Herbie has become much more inventive in what expressions it can branch on. This leads to more accurate results in many cases. The reduce:branch-expressions option controls this feature.
• Herbie now uses a binary search algorithm to choose more accurate values for conditionals in if statements. This should make different runs of Herbie produce more similar results. The reduce:binary-search option controls this feature.
• Herbie has a higher default value for the --num-iters parameter. Users should expect Herbie to be slower but to produce more accurate results.
• A significant bug in the series expansion algorithm has been fixed, improving Herbie's performance in the presence of logarithms.
• A small tweak to the simplification algorithm results in simpler and more accurate output from Herbie.

## Beta-quality features

• Herbie now supports basic operations on complex numbers, using the complex, re, and im functions. We look forward to releasing high-quality complex number support in the future.
• Herbie now supports Windows. Note that the Bessel functions are not available in the Windows math.h library and use a fallback. The precision:fallback option controls this feature.

## Usability improvements

• A new Try It feature in reports lets you run the input program and Herbie's suggested version on argument values of your choice.
• Herbie can now efficiently sample from preconditions such as (or (< 1 x 2) (< 1001 x 1002)). Previously such preconditions would produce to the dreaded “could not sample” error message.
• Herbie's web output now includes additional descriptive text, such as color keys, and additional intuitive interactions, such as clicking on report page arrows.
• Herbie's FPCore output now includes its error estimates, making this information easier for other tools to access.
• let statements and variary arithmetic operators are now supported in preconditions.
• Herbie will now type-check inputs and report errors for mismatches, helping further cut down on confusing error messages.
• User errors and Herbie crashes now look different in reports.

## Code Cleanup

• Many bugs fixed, including adding missing rules, infinite loops, and a few crashes in exceptional circumstances.
• Herbie’s HTML output now uses the Racket XML library, eliminating the possibility of generating invalid HTML.
• Herbie uses a new mechanism for defining supported functions, which should adding functions in the future easier.

## Try it out!

We're excited to continue to improve Herbie and make it 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!