\frac{60 \cdot \left(x - y\right)}{z - t} + a \cdot 120\mathsf{fma}\left(120, a, \frac{x \cdot 60}{z - t} - \frac{y \cdot 60}{z - t}\right)double f(double x, double y, double z, double t, double a) {
double r937239 = 60.0;
double r937240 = x;
double r937241 = y;
double r937242 = r937240 - r937241;
double r937243 = r937239 * r937242;
double r937244 = z;
double r937245 = t;
double r937246 = r937244 - r937245;
double r937247 = r937243 / r937246;
double r937248 = a;
double r937249 = 120.0;
double r937250 = r937248 * r937249;
double r937251 = r937247 + r937250;
return r937251;
}
double f(double x, double y, double z, double t, double a) {
double r937252 = 120.0;
double r937253 = a;
double r937254 = x;
double r937255 = 60.0;
double r937256 = r937254 * r937255;
double r937257 = z;
double r937258 = t;
double r937259 = r937257 - r937258;
double r937260 = r937256 / r937259;
double r937261 = y;
double r937262 = r937261 * r937255;
double r937263 = r937262 / r937259;
double r937264 = r937260 - r937263;
double r937265 = fma(r937252, r937253, r937264);
return r937265;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 0.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.5 |
Initial program 0.5
Simplified0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Simplified0.5
Simplified0.5
rmApplied distribute-lft-neg-out0.5
Applied unsub-neg0.5
Applied div-sub0.5
Final simplification0.5
herbie shell --seed 2020042 +o rules:numerics
(FPCore (x y z t a)
:name "Data.Colour.RGB:hslsv from colour-2.3.3, B"
:precision binary64
:herbie-target
(+ (/ 60 (/ (- z t) (- x y))) (* a 120))
(+ (/ (* 60 (- x y)) (- z t)) (* a 120)))