
Herbie: Automatically rewrites expressions to minimize floating point error - santaclaus
https://github.com/uwplse/herbie
======
adamjs
The OP copied only half my tweet, full title should be "...to minimize
floating-point precision errors". This tool is specifically for improving the
numerical accuracy of equations when translated into floating-point code--
"minimizing errors" makes no sense without the qualifiers.

I do a lot of procedural graphics on the GPU and am constantly plagued by
precision issues (you cannot copy equations verbatim into code, you must
observe overflow/underflow and other numerical issues). Herbie is pretty
magical in that it can _automatically_ translate math expressions into a form
that's friendlier for computers.

Also the reason why the GitHub site source was linked is because the website
[1] crashed under traffic earlier today (full site contains an interactive
solver and examples).

[1] [http://herbie.uwplse.org/](http://herbie.uwplse.org/)

~~~
jacobolus
Do you have an example of a graphics algorithm that you were helped with by
this tool / a description of how that went?

~~~
adamjs
There's actually a great write-up on how Herbie was used in the real-world to
fix and improve math.js: [https://pavpanchekha.com/blog/casio-
mathjs.html](https://pavpanchekha.com/blog/casio-mathjs.html)

I've personally used it for improving some distance-field approximation code
on the GPU (made it easier to translate the math into numerically-stable
code).

~~~
pavpanchekha
Adam, I'm one of the authors of Herbie. I'd love to hear about the distance-
field approximation code you improved using Herbie. Is there any chance you
can email me some details? You can use my personal email (on my profile) or
the herbie@cs.washington.edu mailing list.

------
OxO4
Looks quite interesting. Is there a paper/tech report that describes the
approach? The website [1] seems to be down at the moment.

[1] [http://herbie.uwplse.org/](http://herbie.uwplse.org/)

~~~
davmre
Yes, this was a best paper award at PLDI '15:
[http://homes.cs.washington.edu/~jrw12/herbie.pdf](http://homes.cs.washington.edu/~jrw12/herbie.pdf)

------
drinknderive
The heck is Racket?

~~~
mahmud
The language that this site is written in.

~~~
TazeTSchnitzel
Huh? Isn't HN written in Arc?

~~~
mahmud
Right, meant to say "the platform that powers this site".

Arc itself is an interpreter written in Racket. The site runs on racket.

