\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y}{2} - \frac{z - x}{y \cdot 2} \cdot \left(z + x\right)double f(double x, double y, double z) {
double r575548 = x;
double r575549 = r575548 * r575548;
double r575550 = y;
double r575551 = r575550 * r575550;
double r575552 = r575549 + r575551;
double r575553 = z;
double r575554 = r575553 * r575553;
double r575555 = r575552 - r575554;
double r575556 = 2.0;
double r575557 = r575550 * r575556;
double r575558 = r575555 / r575557;
return r575558;
}
double f(double x, double y, double z) {
double r575559 = y;
double r575560 = 2.0;
double r575561 = r575559 / r575560;
double r575562 = z;
double r575563 = x;
double r575564 = r575562 - r575563;
double r575565 = r575559 * r575560;
double r575566 = r575564 / r575565;
double r575567 = r575562 + r575563;
double r575568 = r575566 * r575567;
double r575569 = r575561 - r575568;
return r575569;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 28.5
Simplified0.1
rmApplied div-sub0.1
Simplified0.1
rmApplied associate-/r/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019174
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, A"
:herbie-target
(- (* y 0.5) (* (* (/ 0.5 y) (+ z x)) (- z x)))
(/ (- (+ (* x x) (* y y)) (* z z)) (* y 2.0)))