\frac{60 \cdot \left(x - y\right)}{z - t} + a \cdot 120\mathsf{fma}\left(120, a, \frac{\frac{60}{z - t}}{\frac{1}{x - y}}\right)double f(double x, double y, double z, double t, double a) {
double r876708 = 60.0;
double r876709 = x;
double r876710 = y;
double r876711 = r876709 - r876710;
double r876712 = r876708 * r876711;
double r876713 = z;
double r876714 = t;
double r876715 = r876713 - r876714;
double r876716 = r876712 / r876715;
double r876717 = a;
double r876718 = 120.0;
double r876719 = r876717 * r876718;
double r876720 = r876716 + r876719;
return r876720;
}
double f(double x, double y, double z, double t, double a) {
double r876721 = 120.0;
double r876722 = a;
double r876723 = 60.0;
double r876724 = z;
double r876725 = t;
double r876726 = r876724 - r876725;
double r876727 = r876723 / r876726;
double r876728 = 1.0;
double r876729 = x;
double r876730 = y;
double r876731 = r876729 - r876730;
double r876732 = r876728 / r876731;
double r876733 = r876727 / r876732;
double r876734 = fma(r876721, r876722, r876733);
return r876734;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 0.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 0.4
Simplified0.4
rmApplied associate-/l*0.1
rmApplied div-inv0.2
Applied associate-/r*0.2
Final simplification0.2
herbie shell --seed 2020100 +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)))