\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(\left(y + \frac{{1}^{1}}{\frac{\frac{y}{x}}{x}}\right) - z \cdot \frac{z}{y}\right)double f(double x, double y, double z) {
double r551359 = x;
double r551360 = r551359 * r551359;
double r551361 = y;
double r551362 = r551361 * r551361;
double r551363 = r551360 + r551362;
double r551364 = z;
double r551365 = r551364 * r551364;
double r551366 = r551363 - r551365;
double r551367 = 2.0;
double r551368 = r551361 * r551367;
double r551369 = r551366 / r551368;
return r551369;
}
double f(double x, double y, double z) {
double r551370 = 0.5;
double r551371 = y;
double r551372 = 1.0;
double r551373 = pow(r551372, r551372);
double r551374 = x;
double r551375 = r551371 / r551374;
double r551376 = r551375 / r551374;
double r551377 = r551373 / r551376;
double r551378 = r551371 + r551377;
double r551379 = z;
double r551380 = r551379 / r551371;
double r551381 = r551379 * r551380;
double r551382 = r551378 - r551381;
double r551383 = r551370 * r551382;
return r551383;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.6
Taylor expanded around 0 12.7
Simplified12.7
rmApplied *-un-lft-identity12.7
Applied add-sqr-sqrt38.3
Applied unpow-prod-down38.3
Applied times-frac35.6
Simplified35.6
Simplified6.9
rmApplied sqr-pow6.9
Applied associate-/l*0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied unpow-prod-down0.1
Applied associate-/l*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019294
(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)))