\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{\left(y + \frac{\frac{x}{y}}{\frac{1}{x}}\right) - \frac{z}{\frac{y}{z}}}{2}double f(double x, double y, double z) {
double r28497458 = x;
double r28497459 = r28497458 * r28497458;
double r28497460 = y;
double r28497461 = r28497460 * r28497460;
double r28497462 = r28497459 + r28497461;
double r28497463 = z;
double r28497464 = r28497463 * r28497463;
double r28497465 = r28497462 - r28497464;
double r28497466 = 2.0;
double r28497467 = r28497460 * r28497466;
double r28497468 = r28497465 / r28497467;
return r28497468;
}
double f(double x, double y, double z) {
double r28497469 = y;
double r28497470 = x;
double r28497471 = r28497470 / r28497469;
double r28497472 = 1.0;
double r28497473 = r28497472 / r28497470;
double r28497474 = r28497471 / r28497473;
double r28497475 = r28497469 + r28497474;
double r28497476 = z;
double r28497477 = r28497469 / r28497476;
double r28497478 = r28497476 / r28497477;
double r28497479 = r28497475 - r28497478;
double r28497480 = 2.0;
double r28497481 = r28497479 / r28497480;
return r28497481;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.5
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied associate-/r*0.1
Simplified0.1
Taylor expanded around 0 12.7
Simplified0.1
rmApplied div-inv0.2
Applied associate-/r*0.2
Final simplification0.2
herbie shell --seed 2019174 +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)))