\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 r24277018 = x;
double r24277019 = y;
double r24277020 = r24277018 * r24277019;
double r24277021 = z;
double r24277022 = r24277021 * r24277021;
double r24277023 = r24277020 + r24277022;
double r24277024 = r24277023 + r24277022;
double r24277025 = r24277024 + r24277022;
return r24277025;
}
double f(double x, double y, double z) {
double r24277026 = x;
double r24277027 = y;
double r24277028 = r24277026 * r24277027;
double r24277029 = z;
double r24277030 = r24277029 * r24277029;
double r24277031 = r24277028 + r24277030;
double r24277032 = r24277031 + r24277030;
double r24277033 = r24277032 + r24277030;
return r24277033;
}




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 2019158 +o rules:numerics
(FPCore (x y z)
:name "Linear.Quaternion:$c/ from linear-1.19.1.3, A"
:herbie-target
(+ (* (* 3 z) z) (* y x))
(+ (+ (+ (* x y) (* z z)) (* z z)) (* z z)))