Herbie reports

The Herbie report

Herbie can generate HTML reports which give its output expression and also how Herbie found it.

Summary numbers

First, a brief summary of the results. For most uses, the “Average Error” number, which summarizes how accurate the input and output expressions are, is the most important number in this section. The other numbers list time Herbie took to improve the program and the precision of floating-point operations.

Summary numbers from a Herbie report.

Input and output programs

Second, the input and output programs themselves. These are printed in standard mathematical syntax. In the top-right corner, the drop-down can be used to change to C syntax or raw TeX.

Input and output program from a Herbie report.

Error graph

Third, under Error, a graph of floating-point error versus input value. This is helpful for understanding the sorts of inputs Herbie is improving accuracy on. Sometimes, Herbie improved accuracy on some inputs at the cost of accuracy on other inputs that you care more about. In these cases, you can add a :precondition to restrict the inputs Herbie reasons about.

On these graphs, the red line is the error of the input program, while the blue line is the error of the output program (both can be toggled). For expressions with multiple variables, the variable on the horizontal axis can be selected. If Herbie decided to insert an if statement into the program, the locations of those if statements will be marked with vertical bars.

An error graph from a Herbie report. Note the variable selector (x is selected) and the toggles for the input and output program (both are toggled on).

Interactive inputs

Fourth, a form where you can try out specific inputs on the input program and Herbie's output program. Enter the argument values on the left, and the input and output programs will be evaulated on those arguments and the results printed on the right.

Try it out section on a simple program.

Derivation

Fifth, a derivation of the output from the input. For complex or unexpected programs, these can be helpful. Each substantive step in the derivation also lists the error, in bits, of that step's output.

The derivations may name rules built into Herbie, or may claim derivation steps are done by simplification, series expansion, or other Herbie strategies. The derivation will also call out splits of the input into regimes, and strategies Herbie is invoking. When one part of the term is colored blue, that is the only part of the term modified by the operation.

A short derivation from a Herbie report. Note the error at each step, in bits, in gray.

Reproduction

Sixth, a command you can use to reproduce this Herbie result. If you find a bug, include the code snippet in this section when filing the bug. Please also include the debug log linked at the top of the page.

Reproduction information for a Herbie run.

The top of the page has a right-hand menu bar with additional links. “Log” you to a detailed debug log. “Profile” gives a gprof-style profile. and “Metrics” gives detailed internal metrics on Herbie's results.

We expect the report to grow more informative with future versions. Please get in touch if there is more information you'd like to see.