\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 r437847 = x;
double r437848 = y;
double r437849 = r437847 * r437848;
double r437850 = z;
double r437851 = r437848 * r437850;
double r437852 = r437849 - r437851;
double r437853 = r437848 * r437848;
double r437854 = r437852 - r437853;
double r437855 = r437854 + r437853;
return r437855;
}
double f(double x, double y, double z) {
double r437856 = x;
double r437857 = y;
double r437858 = z;
double r437859 = r437858 * r437857;
double r437860 = -r437859;
double r437861 = fma(r437856, r437857, r437860);
double r437862 = 0.0;
double r437863 = r437862 * r437858;
double r437864 = r437861 + r437863;
return r437864;
}




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