\frac{60 \cdot \left(x - y\right)}{z - t} + a \cdot 120\mathsf{fma}\left(120, a, \frac{60}{\frac{z - t}{x - y}}\right)double f(double x, double y, double z, double t, double a) {
double r428903 = 60.0;
double r428904 = x;
double r428905 = y;
double r428906 = r428904 - r428905;
double r428907 = r428903 * r428906;
double r428908 = z;
double r428909 = t;
double r428910 = r428908 - r428909;
double r428911 = r428907 / r428910;
double r428912 = a;
double r428913 = 120.0;
double r428914 = r428912 * r428913;
double r428915 = r428911 + r428914;
return r428915;
}
double f(double x, double y, double z, double t, double a) {
double r428916 = 120.0;
double r428917 = a;
double r428918 = 60.0;
double r428919 = z;
double r428920 = t;
double r428921 = r428919 - r428920;
double r428922 = x;
double r428923 = y;
double r428924 = r428922 - r428923;
double r428925 = r428921 / r428924;
double r428926 = r428918 / r428925;
double r428927 = fma(r428916, r428917, r428926);
return r428927;
}




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.1 |
Initial program 0.4
Simplified0.4
rmApplied associate-/l*0.1
Final simplification0.1
herbie shell --seed 2019326 +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)))