\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\left(\frac{2}{t \cdot z} + \frac{2}{t}\right) - 2\right)double f(double x, double y, double z, double t) {
double r804090 = x;
double r804091 = y;
double r804092 = r804090 / r804091;
double r804093 = 2.0;
double r804094 = z;
double r804095 = r804094 * r804093;
double r804096 = 1.0;
double r804097 = t;
double r804098 = r804096 - r804097;
double r804099 = r804095 * r804098;
double r804100 = r804093 + r804099;
double r804101 = r804097 * r804094;
double r804102 = r804100 / r804101;
double r804103 = r804092 + r804102;
return r804103;
}
double f(double x, double y, double z, double t) {
double r804104 = x;
double r804105 = y;
double r804106 = r804104 / r804105;
double r804107 = 2.0;
double r804108 = t;
double r804109 = z;
double r804110 = r804108 * r804109;
double r804111 = r804107 / r804110;
double r804112 = r804107 / r804108;
double r804113 = r804111 + r804112;
double r804114 = r804113 - r804107;
double r804115 = r804106 + r804114;
return r804115;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.2
Taylor expanded around 0 0.1
Simplified0.1
rmApplied distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020001
(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))))