\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 r313837 = x;
double r313838 = y;
double r313839 = r313837 * r313838;
double r313840 = z;
double r313841 = r313840 * r313840;
double r313842 = r313839 + r313841;
double r313843 = r313842 + r313841;
double r313844 = r313843 + r313841;
return r313844;
}
double f(double x, double y, double z) {
double r313845 = x;
double r313846 = y;
double r313847 = r313845 * r313846;
double r313848 = z;
double r313849 = r313848 * r313848;
double r313850 = r313847 + r313849;
double r313851 = r313850 + r313849;
double r313852 = r313851 + r313849;
return r313852;
}




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