The Herbie developers are excited to announce
Herbie 1.3! This release focuses on speed and
transparency: Herbie 1.3 is nearly twice as fast as
Herbie 1.2, and includes cleaner, more comprehensive HTML output.
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.
Major features of this release
Speed: Herbie is roughly twice as fast as in
previous releases. Making this happen has involved changes large and
small: a clever change to how we use simplification, a new sampling
algorithm, and also lots of work tracking down especially slow
expressions.
Transparency: Herbie's web output has become
cleaner and more comprehensive. Herbie can now show you its output
in C and TeX as well as mathematical notation. You can now specify
preconditions and precisions when inputting expressions. And Herbie
has a new "Metrics" tab to show in-depth internal information, which
will help us continue to improve Herbie.
Beta features in this release
Windows support has graduated from beta. We
intend to support Windows going forward; if you run into any bugs,
please let us
know.
Plugins can now
define new number systems and then teach
Herbie to use them. There's a new plugin to add support
for posit arithmetic. Right now
the plugin system is still in flux, so if you'd like to use it,
please write
to us.
Improvement to core algorithm
Careful performance work has made Herbie nearly three times
faster than the 1.2 release.
Herbie now uses interval arithmetic to compute "ground truth"
values. This makes Herbie's accuracy estimate for a
program more correct.
Support for single-precision mode has been significantly improved.
Series expansion of pows with constant exponents
is now much faster.
Complex numbers are now handled significantly more quickly.
Various fixes have eliminated rare but large slowdowns.
Usability improvements
Herbie's web interface now allows you to change preconditions
and precisions (click “additional options” below the formula bar).
You can now see C code for Herbie's output—use the drop-down
above and to the right of the program box.
Herbie has a new website!
Hopefully it's a little easier to learn about what Herbie is and
how to use it.
Herbie now shows preconditions in its HTML output.
Herbie now produces somewhat simpler output, for example by
simplifying exact constant expressions like (+ 2
2).
You can now input if statements on the web using
conditional-expression syntax.
Herbie will now show warnings in its HTML output, including
links to more documentation.
Herbie now indents and breaks lines when it prints FPCores in
the terminal.
Herbie now uses KaTeX to
render math in the browser, which is significantly faster than
the previous MathJax
library.
Error and timeout pages now show the input program.
Code Cleanup
Reports now link to an extensive collection of quality and
performance metrics. This should help improve Herbie's speed and
accuracy over time.
Documentation has been improved, with tables of content and
explanations of preconditions and precisions.
The new reproduce tool allows rerunning a
report.
The timebar on the metrics page now separates regime inference
from binary search.
Herbie's JavaScript code has been refactored, making it much
easier to maintain.
Lots of old, unused code has been deleted, including a lot of
support code for the
obsolete Herbie
Visualizer.
Glue code has been moved into a single file, clarifying
responsibilities for a lot of modules.
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.