2.0 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}\sqrt{\left(y + z\right) \cdot x + z \cdot y} \cdot 2.0double f(double x, double y, double z) {
double r35351819 = 2.0;
double r35351820 = x;
double r35351821 = y;
double r35351822 = r35351820 * r35351821;
double r35351823 = z;
double r35351824 = r35351820 * r35351823;
double r35351825 = r35351822 + r35351824;
double r35351826 = r35351821 * r35351823;
double r35351827 = r35351825 + r35351826;
double r35351828 = sqrt(r35351827);
double r35351829 = r35351819 * r35351828;
return r35351829;
}
double f(double x, double y, double z) {
double r35351830 = y;
double r35351831 = z;
double r35351832 = r35351830 + r35351831;
double r35351833 = x;
double r35351834 = r35351832 * r35351833;
double r35351835 = r35351831 * r35351830;
double r35351836 = r35351834 + r35351835;
double r35351837 = sqrt(r35351836);
double r35351838 = 2.0;
double r35351839 = r35351837 * r35351838;
return r35351839;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 18.8 |
|---|---|
| Target | 18.0 |
| Herbie | 18.8 |
Initial program 18.8
Simplified18.8
Final simplification18.8
herbie shell --seed 2019163
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
:herbie-target
(if (< z 7.636950090573675e+176) (* 2.0 (sqrt (+ (* (+ x y) z) (* x y)))) (* (* (+ (* 1/4 (* (* (pow y -3/4) (* (pow z -3/4) x)) (+ y z))) (* (pow z 1/4) (pow y 1/4))) (+ (* 1/4 (* (* (pow y -3/4) (* (pow z -3/4) x)) (+ y z))) (* (pow z 1/4) (pow y 1/4)))) 2.0))
(* 2.0 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))