\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{1}{2} \cdot \left(\frac{x \cdot x}{y} + \left(y - \frac{z}{\frac{y}{z}}\right)\right)double f(double x, double y, double z) {
double r476362 = x;
double r476363 = r476362 * r476362;
double r476364 = y;
double r476365 = r476364 * r476364;
double r476366 = r476363 + r476365;
double r476367 = z;
double r476368 = r476367 * r476367;
double r476369 = r476366 - r476368;
double r476370 = 2.0;
double r476371 = r476364 * r476370;
double r476372 = r476369 / r476371;
return r476372;
}
double f(double x, double y, double z) {
double r476373 = 1.0;
double r476374 = 2.0;
double r476375 = r476373 / r476374;
double r476376 = x;
double r476377 = r476376 * r476376;
double r476378 = y;
double r476379 = r476377 / r476378;
double r476380 = z;
double r476381 = r476378 / r476380;
double r476382 = r476380 / r476381;
double r476383 = r476378 - r476382;
double r476384 = r476379 + r476383;
double r476385 = r476375 * r476384;
return r476385;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.4 |
|---|---|
| Target | 0.2 |
| Herbie | 7.2 |
Initial program 28.4
Taylor expanded around 0 12.9
Simplified12.9
rmApplied unpow212.9
Applied associate-/l*7.2
rmApplied unpow27.2
Applied associate-/l*0.2
rmApplied clear-num0.2
Final simplification7.2
herbie shell --seed 2019304
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, A"
:precision binary64
:herbie-target
(- (* y 0.5) (* (* (/ 0.5 y) (+ z x)) (- z x)))
(/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)))