After a year of work, the Herbie developers
are excited to announce Herbie 1.2! This release focuses on making
Herbie more accurate and reliable, including more accurate
conditionals and new, higher-accuracy default values. This release
has also restructured major internal components, Making Herbie
easier to maintain.
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
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
Improvement to core algorithm
Herbie has a higher default value for
the --num-iters parameter.
Users should expect Herbie to be slower but produce more
Herbie now uses a more rigorous algorithm to evaluate its results,
both increasing reproducibility of its results and better measuring
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
Herbie now outputs the input expression in cases of timeout or
crash, instead of outputing a confusing special value.
Herbie will now type-check inputs and report errors for
mismatches, helping further cut down on confusing error
Herbie's web output now includes additional descriptive text,
such as color keys, and additional intuitive interactions, such
as making arrows on report pages clickable.
Herbie's FPCore output now includes its error estimates,
making it easier for other FPBench tools to compare Herbie's
error estimates to those of other tools.
User errors and Herbie crashes now look different in
Taylor series no longer add two identical (but confusingly
phrased) steps to Herbie's derivations of its results.
let statements and variary arithmetic operators
are now supported in preconditions.
Many bugs were fixed, including adding missing rules, several
infinite loops, and a few crashes in exceptional
The components of Herbie that output HTML now use the Racket
XML library, eliminating the possibility of generating invalid
There is a new mechanism for defining the functions Herbie supports,
which should make it easier to add new functions in the future.
More unit tests continue to be written, including more tests
of utility functions that are used throughout the codebase.
The syntax and type checkers have been make more readable,
allowing for the discovery and correction of several bugs.
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