2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}2 \cdot \sqrt{x \cdot \left(y + z\right) + y \cdot z}double f(double x, double y, double z) {
double r504576 = 2.0;
double r504577 = x;
double r504578 = y;
double r504579 = r504577 * r504578;
double r504580 = z;
double r504581 = r504577 * r504580;
double r504582 = r504579 + r504581;
double r504583 = r504578 * r504580;
double r504584 = r504582 + r504583;
double r504585 = sqrt(r504584);
double r504586 = r504576 * r504585;
return r504586;
}
double f(double x, double y, double z) {
double r504587 = 2.0;
double r504588 = x;
double r504589 = y;
double r504590 = z;
double r504591 = r504589 + r504590;
double r504592 = r504588 * r504591;
double r504593 = r504589 * r504590;
double r504594 = r504592 + r504593;
double r504595 = sqrt(r504594);
double r504596 = r504587 * r504595;
return r504596;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.9 |
|---|---|
| Target | 19.0 |
| Herbie | 19.9 |
Initial program 19.9
rmApplied distribute-lft-out19.9
Final simplification19.9
herbie shell --seed 2020003
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< z 7.636950090573675e+176) (* 2 (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))
(* 2 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))