\left(\left(x \cdot y + z \cdot z\right) + z \cdot z\right) + z \cdot z
\left(\left(x \cdot y + z \cdot z\right) + z \cdot z\right) + z \cdot z
double f(double x, double y, double z) {
double r443769 = x;
double r443770 = y;
double r443771 = r443769 * r443770;
double r443772 = z;
double r443773 = r443772 * r443772;
double r443774 = r443771 + r443773;
double r443775 = r443774 + r443773;
double r443776 = r443775 + r443773;
return r443776;
}
double f(double x, double y, double z) {
double r443777 = x;
double r443778 = y;
double r443779 = r443777 * r443778;
double r443780 = z;
double r443781 = r443780 * r443780;
double r443782 = r443779 + r443781;
double r443783 = r443782 + r443781;
double r443784 = r443783 + r443781;
return r443784;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Final simplification0.1
herbie shell --seed 2019235
(FPCore (x y z)
:name "Linear.Quaternion:$c/ from linear-1.19.1.3, A"
:precision binary64
:herbie-target
(+ (* (* 3 z) z) (* y x))
(+ (+ (+ (* x y) (* z z)) (* z z)) (* z z)))