x + \frac{y \cdot \left(z - x\right)}{t}x + \frac{y}{t} \cdot \left(z - x\right)double f(double x, double y, double z, double t) {
double r343754 = x;
double r343755 = y;
double r343756 = z;
double r343757 = r343756 - r343754;
double r343758 = r343755 * r343757;
double r343759 = t;
double r343760 = r343758 / r343759;
double r343761 = r343754 + r343760;
return r343761;
}
double f(double x, double y, double z, double t) {
double r343762 = x;
double r343763 = y;
double r343764 = t;
double r343765 = r343763 / r343764;
double r343766 = z;
double r343767 = r343766 - r343762;
double r343768 = r343765 * r343767;
double r343769 = r343762 + r343768;
return r343769;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 2.1 |
| Herbie | 2.1 |
Initial program 6.2
rmApplied clear-num6.3
rmApplied associate-/r*2.1
rmApplied div-inv2.1
Applied add-sqr-sqrt2.1
Applied times-frac2.3
Simplified2.2
Simplified2.1
Final simplification2.1
herbie shell --seed 2020064
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))