\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}\frac{y + \frac{x - z}{\frac{y}{x + z}}}{2.0}double f(double x, double y, double z) {
double r35455577 = x;
double r35455578 = r35455577 * r35455577;
double r35455579 = y;
double r35455580 = r35455579 * r35455579;
double r35455581 = r35455578 + r35455580;
double r35455582 = z;
double r35455583 = r35455582 * r35455582;
double r35455584 = r35455581 - r35455583;
double r35455585 = 2.0;
double r35455586 = r35455579 * r35455585;
double r35455587 = r35455584 / r35455586;
return r35455587;
}
double f(double x, double y, double z) {
double r35455588 = y;
double r35455589 = x;
double r35455590 = z;
double r35455591 = r35455589 - r35455590;
double r35455592 = r35455589 + r35455590;
double r35455593 = r35455588 / r35455592;
double r35455594 = r35455591 / r35455593;
double r35455595 = r35455588 + r35455594;
double r35455596 = 2.0;
double r35455597 = r35455595 / r35455596;
return r35455597;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 27.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 27.4
Simplified0.1
rmApplied +-commutative0.1
Final simplification0.1
herbie shell --seed 2019163 +o rules:numerics
(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)))