\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y + \frac{x - z}{\frac{y}{z + x}}}{2}double f(double x, double y, double z) {
double r461752 = x;
double r461753 = r461752 * r461752;
double r461754 = y;
double r461755 = r461754 * r461754;
double r461756 = r461753 + r461755;
double r461757 = z;
double r461758 = r461757 * r461757;
double r461759 = r461756 - r461758;
double r461760 = 2.0;
double r461761 = r461754 * r461760;
double r461762 = r461759 / r461761;
return r461762;
}
double f(double x, double y, double z) {
double r461763 = y;
double r461764 = x;
double r461765 = z;
double r461766 = r461764 - r461765;
double r461767 = r461765 + r461764;
double r461768 = r461763 / r461767;
double r461769 = r461766 / r461768;
double r461770 = r461763 + r461769;
double r461771 = 2.0;
double r461772 = r461770 / r461771;
return r461772;
}




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.5
rmApplied *-un-lft-identity12.5
Applied difference-of-squares12.5
Applied times-frac0.2
Simplified0.2
rmApplied sub-neg0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019306
(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)))