\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y - \left(z + x\right) \cdot \frac{z - x}{y}}{2}double f(double x, double y, double z) {
double r537609 = x;
double r537610 = r537609 * r537609;
double r537611 = y;
double r537612 = r537611 * r537611;
double r537613 = r537610 + r537612;
double r537614 = z;
double r537615 = r537614 * r537614;
double r537616 = r537613 - r537615;
double r537617 = 2.0;
double r537618 = r537611 * r537617;
double r537619 = r537616 / r537618;
return r537619;
}
double f(double x, double y, double z) {
double r537620 = y;
double r537621 = z;
double r537622 = x;
double r537623 = r537621 + r537622;
double r537624 = r537621 - r537622;
double r537625 = r537624 / r537620;
double r537626 = r537623 * r537625;
double r537627 = r537620 - r537626;
double r537628 = 2.0;
double r537629 = r537627 / r537628;
return r537629;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.4
Simplified12.6
rmApplied *-un-lft-identity12.6
Applied difference-of-squares12.6
Applied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019303
(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)))