\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(\left(y + \frac{{x}^{1}}{\frac{y}{x}}\right) - \left|z\right| \cdot \frac{\left|z\right|}{y}\right)double f(double x, double y, double z) {
double r693885 = x;
double r693886 = r693885 * r693885;
double r693887 = y;
double r693888 = r693887 * r693887;
double r693889 = r693886 + r693888;
double r693890 = z;
double r693891 = r693890 * r693890;
double r693892 = r693889 - r693891;
double r693893 = 2.0;
double r693894 = r693887 * r693893;
double r693895 = r693892 / r693894;
return r693895;
}
double f(double x, double y, double z) {
double r693896 = 0.5;
double r693897 = y;
double r693898 = x;
double r693899 = 1.0;
double r693900 = pow(r693898, r693899);
double r693901 = r693897 / r693898;
double r693902 = r693900 / r693901;
double r693903 = r693897 + r693902;
double r693904 = z;
double r693905 = fabs(r693904);
double r693906 = r693905 / r693897;
double r693907 = r693905 * r693906;
double r693908 = r693903 - r693907;
double r693909 = r693896 * r693908;
return r693909;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 28.5
Taylor expanded around 0 12.7
Simplified12.7
rmApplied sqr-pow12.7
Applied associate-/l*6.9
Simplified6.9
rmApplied *-un-lft-identity6.9
Applied add-sqr-sqrt6.9
Applied times-frac6.9
Simplified6.9
Simplified0.1
Final simplification0.1
herbie shell --seed 2019353
(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)))