2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}2 \cdot \sqrt{y \cdot z + \left(x \cdot y + x \cdot z\right)}double f(double x, double y, double z) {
double r636996 = 2.0;
double r636997 = x;
double r636998 = y;
double r636999 = r636997 * r636998;
double r637000 = z;
double r637001 = r636997 * r637000;
double r637002 = r636999 + r637001;
double r637003 = r636998 * r637000;
double r637004 = r637002 + r637003;
double r637005 = sqrt(r637004);
double r637006 = r636996 * r637005;
return r637006;
}
double f(double x, double y, double z) {
double r637007 = 2.0;
double r637008 = y;
double r637009 = z;
double r637010 = r637008 * r637009;
double r637011 = x;
double r637012 = r637011 * r637008;
double r637013 = r637011 * r637009;
double r637014 = r637012 + r637013;
double r637015 = r637010 + r637014;
double r637016 = sqrt(r637015);
double r637017 = r637007 * r637016;
return r637017;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 20.2 |
|---|---|
| Target | 19.6 |
| Herbie | 20.2 |
Initial program 20.2
rmApplied +-commutative20.2
Final simplification20.2
herbie shell --seed 2019305 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< z 7.6369500905736745e176) (* 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)))))