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 r29500132 = 2.0;
double r29500133 = x;
double r29500134 = y;
double r29500135 = r29500133 * r29500134;
double r29500136 = z;
double r29500137 = r29500133 * r29500136;
double r29500138 = r29500135 + r29500137;
double r29500139 = r29500134 * r29500136;
double r29500140 = r29500138 + r29500139;
double r29500141 = sqrt(r29500140);
double r29500142 = r29500132 * r29500141;
return r29500142;
}
double f(double x, double y, double z) {
double r29500143 = y;
double r29500144 = z;
double r29500145 = r29500143 + r29500144;
double r29500146 = x;
double r29500147 = r29500145 * r29500146;
double r29500148 = r29500144 * r29500143;
double r29500149 = r29500147 + r29500148;
double r29500150 = sqrt(r29500149);
double r29500151 = 2.0;
double r29500152 = r29500150 * r29500151;
return r29500152;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 18.6 |
|---|---|
| Target | 18.0 |
| Herbie | 18.6 |
Initial program 18.6
Simplified18.6
Final simplification18.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)))) (* (* (+ (* 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)))))