\left(\left(x \cdot y + z \cdot z\right) + z \cdot z\right) + z \cdot z
x \cdot y + \left(3 \cdot z\right) \cdot z
double f(double x, double y, double z) {
double r350937 = x;
double r350938 = y;
double r350939 = r350937 * r350938;
double r350940 = z;
double r350941 = r350940 * r350940;
double r350942 = r350939 + r350941;
double r350943 = r350942 + r350941;
double r350944 = r350943 + r350941;
return r350944;
}
double f(double x, double y, double z) {
double r350945 = x;
double r350946 = y;
double r350947 = r350945 * r350946;
double r350948 = 3.0;
double r350949 = z;
double r350950 = r350948 * r350949;
double r350951 = r350950 * r350949;
double r350952 = r350947 + r350951;
return r350952;
}




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
Simplified0.1
rmApplied associate-*r*0.1
Final simplification0.1
herbie shell --seed 2019323
(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)))