\left(\left(x \cdot x + y \cdot y\right) + y \cdot y\right) + y \cdot y
y \cdot y + \left(y \cdot y + \left(x \cdot x + y \cdot y\right)\right)
double f(double x, double y) {
double r24620909 = x;
double r24620910 = r24620909 * r24620909;
double r24620911 = y;
double r24620912 = r24620911 * r24620911;
double r24620913 = r24620910 + r24620912;
double r24620914 = r24620913 + r24620912;
double r24620915 = r24620914 + r24620912;
return r24620915;
}
double f(double x, double y) {
double r24620916 = y;
double r24620917 = r24620916 * r24620916;
double r24620918 = x;
double r24620919 = r24620918 * r24620918;
double r24620920 = r24620919 + r24620917;
double r24620921 = r24620917 + r24620920;
double r24620922 = r24620917 + r24620921;
return r24620922;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Final simplification0.1
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y)
:name "Linear.Quaternion:$c/ from linear-1.19.1.3, E"
:herbie-target
(+ (* x x) (* y (+ y (+ y y))))
(+ (+ (+ (* x x) (* y y)) (* y y)) (* y y)))