Herbie: Automatically improve imprecise floating point formulas
51 points
3 days ago
| 4 comments
| herbie.uwplse.org
| HN
reikonomusha
12 minutes ago
[-]
This is an awesome piece of software, one of my favorite little pieces of magic. Finding more precise or more stable floating point formulas is often arduous and requires a lot of familiarity with the behavior of floats. This finds good formulas completely automatically. Super useful for numerical computation.
reply
bee_rider
1 hour ago
[-]
I wonder, is there a way to only request reformulations that don’t involve branches? The tool already seems quite nice, but that might be a good feature.

Also, I’m not sure I understand the speedup. Is it latency or throughput?

reply
fluorinerocket
2 hours ago
[-]
How useful is this when you are using numbers in a reasonable range, like 10^-12 to 10^12? Generally I try to scale my numbers to be in this range, whether by picking the right units or scaling constraints and objectives when doing nonlinear programming/ optimization.

Like looking at this example,

https://herbie.uwplse.org/demo/b070b371a661191752fe37ce0321c...

It is claimed that for the function f(x) =sqrt(x+1) -1

Accuracy is increased by from 8.5% accuracy to 98% for alternative 5 Which has f(x) = 0.5x

Ok so x=99, the right answer is sqrt(100) -1 = 9

But 0.5 * 99 = 49.5 which doesn't seem too accurate to me.

reply
yossi_peti
2 hours ago
[-]
The precondition on the link you shared has -1 <= x && x <= 1, so 99 is way outside of that range. But even so, testing for x=1, which is supposed to be inside that range, 0.5 doesn't seem tolerably close to 0.4142.
reply
hmpc
2 hours ago
[-]
Check the specification at the top. The range for x is [-1, 1]. For the range you provided the accuracy of the 0.5x alternative is reported as only 33%: https://herbie.uwplse.org/demo/570b973df0f1f4a78fe791858038a...
reply
fluorinerocket
1 hour ago
[-]
You're right I misread the graph. That said though I have played around with Herbie before, trying it out on a few of the more gnarly expressions I had in my code (analytical partial derivatives if equations of motion if launch vehicle in rotating spherical frame) and didn't see much appreciable improvement over the expected range of values, but then again I didn't check every single one.

What would be cool is if you could some how have this kind of analysis done automatically for your whole program where it finds the needle in the haystack expression that can be improved, assuming you gave expected ranges for your variables

reply
lutusp
1 hour ago
[-]
> Herbie: Automatically improve imprecise floating point formulas

Some responses seem obvious:

* A useful exposition would describe what problems are being addressed and how an improvement is achieved, rather than offering examples without analysis.

* Robust, meaningful accuracy improvements should be made part of the underlying language, not attached to each application program in the form of a special-purpose library.

* If the issue is that people write bad floating-point expressions, a code-writing tutorial would be a better solution.

* If a programmer thinks a special-purpose library is a meaningful alternative to understanding floating-point code issues, then what stops Herbie from being a source of additional errors?

reply