\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y - \left(z - x\right) \cdot \frac{x + z}{y}}{2}double f(double x, double y, double z) {
double r35424676 = x;
double r35424677 = r35424676 * r35424676;
double r35424678 = y;
double r35424679 = r35424678 * r35424678;
double r35424680 = r35424677 + r35424679;
double r35424681 = z;
double r35424682 = r35424681 * r35424681;
double r35424683 = r35424680 - r35424682;
double r35424684 = 2.0;
double r35424685 = r35424678 * r35424684;
double r35424686 = r35424683 / r35424685;
return r35424686;
}
double f(double x, double y, double z) {
double r35424687 = y;
double r35424688 = z;
double r35424689 = x;
double r35424690 = r35424688 - r35424689;
double r35424691 = r35424689 + r35424688;
double r35424692 = r35424691 / r35424687;
double r35424693 = r35424690 * r35424692;
double r35424694 = r35424687 - r35424693;
double r35424695 = 2.0;
double r35424696 = r35424694 / r35424695;
return r35424696;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 28.8
Simplified0.1
rmApplied associate-/r/0.1
Final simplification0.1
herbie shell --seed 2019200
(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)))