\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 r608835 = x;
double r608836 = y;
double r608837 = r608835 * r608836;
double r608838 = z;
double r608839 = r608838 * r608838;
double r608840 = r608837 + r608839;
double r608841 = r608840 + r608839;
double r608842 = r608841 + r608839;
return r608842;
}
double f(double x, double y, double z) {
double r608843 = x;
double r608844 = y;
double r608845 = r608843 * r608844;
double r608846 = z;
double r608847 = r608846 * r608846;
double r608848 = r608845 + r608847;
double r608849 = r608848 + r608847;
double r608850 = r608849 + r608847;
return r608850;
}




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 2020047
(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)))