\frac{60 \cdot \left(x - y\right)}{z - t} + a \cdot 120\left(x \cdot \frac{60}{z - t} - \frac{60 \cdot y}{z - t}\right) + a \cdot 120double f(double x, double y, double z, double t, double a) {
double r541735 = 60.0;
double r541736 = x;
double r541737 = y;
double r541738 = r541736 - r541737;
double r541739 = r541735 * r541738;
double r541740 = z;
double r541741 = t;
double r541742 = r541740 - r541741;
double r541743 = r541739 / r541742;
double r541744 = a;
double r541745 = 120.0;
double r541746 = r541744 * r541745;
double r541747 = r541743 + r541746;
return r541747;
}
double f(double x, double y, double z, double t, double a) {
double r541748 = x;
double r541749 = 60.0;
double r541750 = z;
double r541751 = t;
double r541752 = r541750 - r541751;
double r541753 = r541749 / r541752;
double r541754 = r541748 * r541753;
double r541755 = y;
double r541756 = r541749 * r541755;
double r541757 = r541756 / r541752;
double r541758 = r541754 - r541757;
double r541759 = a;
double r541760 = 120.0;
double r541761 = r541759 * r541760;
double r541762 = r541758 + r541761;
return r541762;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 0.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Simplified0.5
rmApplied distribute-rgt-neg-out0.5
Applied unsub-neg0.5
Applied div-sub0.5
rmApplied *-un-lft-identity0.5
Applied times-frac0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020042
(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)))