\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y + \left(\frac{x}{\frac{y}{x}} - \frac{\frac{z}{y}}{\frac{1}{z}}\right)}{2}double f(double x, double y, double z) {
double r802479 = x;
double r802480 = r802479 * r802479;
double r802481 = y;
double r802482 = r802481 * r802481;
double r802483 = r802480 + r802482;
double r802484 = z;
double r802485 = r802484 * r802484;
double r802486 = r802483 - r802485;
double r802487 = 2.0;
double r802488 = r802481 * r802487;
double r802489 = r802486 / r802488;
return r802489;
}
double f(double x, double y, double z) {
double r802490 = y;
double r802491 = x;
double r802492 = r802490 / r802491;
double r802493 = r802491 / r802492;
double r802494 = z;
double r802495 = r802494 / r802490;
double r802496 = 1.0;
double r802497 = r802496 / r802494;
double r802498 = r802495 / r802497;
double r802499 = r802493 - r802498;
double r802500 = r802490 + r802499;
double r802501 = 2.0;
double r802502 = r802500 / r802501;
return r802502;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 28.6
Simplified0.1
Taylor expanded around 0 13.2
Simplified0.1
rmApplied div-inv0.1
Applied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019196 +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)))