\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{\frac{x + z}{y} \cdot \left(x - z\right) + y}{2}double f(double x, double y, double z) {
double r497349 = x;
double r497350 = r497349 * r497349;
double r497351 = y;
double r497352 = r497351 * r497351;
double r497353 = r497350 + r497352;
double r497354 = z;
double r497355 = r497354 * r497354;
double r497356 = r497353 - r497355;
double r497357 = 2.0;
double r497358 = r497351 * r497357;
double r497359 = r497356 / r497358;
return r497359;
}
double f(double x, double y, double z) {
double r497360 = x;
double r497361 = z;
double r497362 = r497360 + r497361;
double r497363 = y;
double r497364 = r497362 / r497363;
double r497365 = r497360 - r497361;
double r497366 = r497364 * r497365;
double r497367 = r497366 + r497363;
double r497368 = 2.0;
double r497369 = r497367 / r497368;
return r497369;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.4
Simplified0.2
rmApplied fma-udef0.2
Final simplification0.2
herbie shell --seed 2019303 +o rules:numerics
(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)))