\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y + \left(z + x\right) \cdot \frac{x - z}{y}}{2}double f(double x, double y, double z) {
double r384654 = x;
double r384655 = r384654 * r384654;
double r384656 = y;
double r384657 = r384656 * r384656;
double r384658 = r384655 + r384657;
double r384659 = z;
double r384660 = r384659 * r384659;
double r384661 = r384658 - r384660;
double r384662 = 2.0;
double r384663 = r384656 * r384662;
double r384664 = r384661 / r384663;
return r384664;
}
double f(double x, double y, double z) {
double r384665 = y;
double r384666 = z;
double r384667 = x;
double r384668 = r384666 + r384667;
double r384669 = r384667 - r384666;
double r384670 = r384669 / r384665;
double r384671 = r384668 * r384670;
double r384672 = r384665 + r384671;
double r384673 = 2.0;
double r384674 = r384672 / r384673;
return r384674;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.9
Simplified12.7
rmApplied *-un-lft-identity12.7
Applied difference-of-squares12.7
Applied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020042
(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)))