\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 r379907 = x;
double r379908 = y;
double r379909 = r379907 * r379908;
double r379910 = z;
double r379911 = r379910 * r379910;
double r379912 = r379909 + r379911;
double r379913 = r379912 + r379911;
double r379914 = r379913 + r379911;
return r379914;
}
double f(double x, double y, double z) {
double r379915 = x;
double r379916 = y;
double r379917 = r379915 * r379916;
double r379918 = z;
double r379919 = r379918 * r379918;
double r379920 = r379917 + r379919;
double r379921 = r379920 + r379919;
double r379922 = r379921 + r379919;
return r379922;
}




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