x + \left(\left(y - x\right) \cdot 6\right) \cdot z
\mathsf{fma}\left(z, 6 \cdot y, x\right) + \left(-6\right) \cdot \left(x \cdot z\right)double f(double x, double y, double z) {
double r33822960 = x;
double r33822961 = y;
double r33822962 = r33822961 - r33822960;
double r33822963 = 6.0;
double r33822964 = r33822962 * r33822963;
double r33822965 = z;
double r33822966 = r33822964 * r33822965;
double r33822967 = r33822960 + r33822966;
return r33822967;
}
double f(double x, double y, double z) {
double r33822968 = z;
double r33822969 = 6.0;
double r33822970 = y;
double r33822971 = r33822969 * r33822970;
double r33822972 = x;
double r33822973 = fma(r33822968, r33822971, r33822972);
double r33822974 = -r33822969;
double r33822975 = r33822972 * r33822968;
double r33822976 = r33822974 * r33822975;
double r33822977 = r33822973 + r33822976;
return r33822977;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 0.3
Taylor expanded around inf 0.2
Simplified0.2
rmApplied sub-neg0.2
Applied distribute-lft-in0.2
Applied distribute-rgt-in0.2
Applied associate-+r+0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019171 +o rules:numerics
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, E"
:herbie-target
(- x (* (* 6.0 z) (- x y)))
(+ x (* (* (- y x) 6.0) z)))