2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}\sqrt{\left(y + z\right) \cdot x + z \cdot y} \cdot 2double f(double x, double y, double z) {
double r36355775 = 2.0;
double r36355776 = x;
double r36355777 = y;
double r36355778 = r36355776 * r36355777;
double r36355779 = z;
double r36355780 = r36355776 * r36355779;
double r36355781 = r36355778 + r36355780;
double r36355782 = r36355777 * r36355779;
double r36355783 = r36355781 + r36355782;
double r36355784 = sqrt(r36355783);
double r36355785 = r36355775 * r36355784;
return r36355785;
}
double f(double x, double y, double z) {
double r36355786 = y;
double r36355787 = z;
double r36355788 = r36355786 + r36355787;
double r36355789 = x;
double r36355790 = r36355788 * r36355789;
double r36355791 = r36355787 * r36355786;
double r36355792 = r36355790 + r36355791;
double r36355793 = sqrt(r36355792);
double r36355794 = 2.0;
double r36355795 = r36355793 * r36355794;
return r36355795;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.6 |
|---|---|
| Target | 19.0 |
| Herbie | 19.6 |
Initial program 19.6
Simplified19.6
Final simplification19.6
herbie shell --seed 2019168
(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)))) (* (* (+ (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z))) (* (pow z 0.25) (pow y 0.25))) (+ (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z))) (* (pow z 0.25) (pow y 0.25)))) 2.0))
(* 2.0 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))