\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{\left(z + x\right) \cdot \frac{x - z}{y} + y}{2}double f(double x, double y, double z) {
double r998853 = x;
double r998854 = r998853 * r998853;
double r998855 = y;
double r998856 = r998855 * r998855;
double r998857 = r998854 + r998856;
double r998858 = z;
double r998859 = r998858 * r998858;
double r998860 = r998857 - r998859;
double r998861 = 2.0;
double r998862 = r998855 * r998861;
double r998863 = r998860 / r998862;
return r998863;
}
double f(double x, double y, double z) {
double r998864 = z;
double r998865 = x;
double r998866 = r998864 + r998865;
double r998867 = r998865 - r998864;
double r998868 = y;
double r998869 = r998867 / r998868;
double r998870 = r998866 * r998869;
double r998871 = r998870 + r998868;
double r998872 = 2.0;
double r998873 = r998871 / r998872;
return r998873;
}




Bits error versus x




Bits error versus y




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