\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{2}{t} + \frac{\frac{2}{t}}{z}\right) - \left(2 - \frac{x}{y}\right)double f(double x, double y, double z, double t) {
double r874740 = x;
double r874741 = y;
double r874742 = r874740 / r874741;
double r874743 = 2.0;
double r874744 = z;
double r874745 = r874744 * r874743;
double r874746 = 1.0;
double r874747 = t;
double r874748 = r874746 - r874747;
double r874749 = r874745 * r874748;
double r874750 = r874743 + r874749;
double r874751 = r874747 * r874744;
double r874752 = r874750 / r874751;
double r874753 = r874742 + r874752;
return r874753;
}
double f(double x, double y, double z, double t) {
double r874754 = 2.0;
double r874755 = t;
double r874756 = r874754 / r874755;
double r874757 = z;
double r874758 = r874756 / r874757;
double r874759 = r874756 + r874758;
double r874760 = x;
double r874761 = y;
double r874762 = r874760 / r874761;
double r874763 = r874754 - r874762;
double r874764 = r874759 - r874763;
return r874764;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.3
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020042
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:precision binary64
:herbie-target
(- (/ (+ (/ 2 z) 2) t) (- 2 (/ x y)))
(+ (/ x y) (/ (+ 2 (* (* z 2) (- 1 t))) (* t z))))