\left(\left(x \cdot y - y \cdot z\right) - y \cdot y\right) + y \cdot y
\mathsf{fma}\left(x, y, -z \cdot y\right) + 0 \cdot zdouble f(double x, double y, double z) {
double r292013 = x;
double r292014 = y;
double r292015 = r292013 * r292014;
double r292016 = z;
double r292017 = r292014 * r292016;
double r292018 = r292015 - r292017;
double r292019 = r292014 * r292014;
double r292020 = r292018 - r292019;
double r292021 = r292020 + r292019;
return r292021;
}
double f(double x, double y, double z) {
double r292022 = x;
double r292023 = y;
double r292024 = z;
double r292025 = r292024 * r292023;
double r292026 = -r292025;
double r292027 = fma(r292022, r292023, r292026);
double r292028 = 0.0;
double r292029 = r292028 * r292024;
double r292030 = r292027 + r292029;
return r292030;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 18.2 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 18.2
rmApplied prod-diff18.2
Applied associate--l+18.2
Applied associate-+l+8.3
Simplified0.0
Final simplification0.0
herbie shell --seed 2019325 +o rules:numerics
(FPCore (x y z)
:name "Linear.Quaternion:$c/ from linear-1.19.1.3, B"
:precision binary64
:herbie-target
(* (- x z) y)
(+ (- (- (* x y) (* y z)) (* y y)) (* y y)))