\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 r347701 = x;
double r347702 = y;
double r347703 = r347701 * r347702;
double r347704 = z;
double r347705 = r347702 * r347704;
double r347706 = r347703 - r347705;
double r347707 = r347702 * r347702;
double r347708 = r347706 - r347707;
double r347709 = r347708 + r347707;
return r347709;
}
double f(double x, double y, double z) {
double r347710 = x;
double r347711 = y;
double r347712 = z;
double r347713 = r347712 * r347711;
double r347714 = -r347713;
double r347715 = fma(r347710, r347711, r347714);
double r347716 = 0.0;
double r347717 = r347716 * r347712;
double r347718 = r347715 + r347717;
return r347718;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 17.6 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 17.6
rmApplied prod-diff17.6
Applied associate--l+17.6
Applied associate-+l+8.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019326 +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)))