\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\left(\frac{2}{t} - 2\right) + \frac{\frac{2}{z}}{t}\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r524763 = x;
double r524764 = y;
double r524765 = r524763 / r524764;
double r524766 = 2.0;
double r524767 = z;
double r524768 = r524767 * r524766;
double r524769 = 1.0;
double r524770 = t;
double r524771 = r524769 - r524770;
double r524772 = r524768 * r524771;
double r524773 = r524766 + r524772;
double r524774 = r524770 * r524767;
double r524775 = r524773 / r524774;
double r524776 = r524765 + r524775;
return r524776;
}
double f(double x, double y, double z, double t) {
double r524777 = 2.0;
double r524778 = t;
double r524779 = r524777 / r524778;
double r524780 = r524779 - r524777;
double r524781 = z;
double r524782 = r524777 / r524781;
double r524783 = r524782 / r524778;
double r524784 = r524780 + r524783;
double r524785 = x;
double r524786 = y;
double r524787 = r524785 / r524786;
double r524788 = r524784 + r524787;
return r524788;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.4 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.4
Taylor expanded around 0 0.1
Simplified0.1
rmApplied div-inv0.1
rmApplied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019196
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:herbie-target
(- (/ (+ (/ 2.0 z) 2.0) t) (- 2.0 (/ x y)))
(+ (/ x y) (/ (+ 2.0 (* (* z 2.0) (- 1.0 t))) (* t z))))