\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{\frac{2}{z} + 2}{t} + \frac{x}{y}\right) - 2double f(double x, double y, double z, double t) {
double r734032 = x;
double r734033 = y;
double r734034 = r734032 / r734033;
double r734035 = 2.0;
double r734036 = z;
double r734037 = r734036 * r734035;
double r734038 = 1.0;
double r734039 = t;
double r734040 = r734038 - r734039;
double r734041 = r734037 * r734040;
double r734042 = r734035 + r734041;
double r734043 = r734039 * r734036;
double r734044 = r734042 / r734043;
double r734045 = r734034 + r734044;
return r734045;
}
double f(double x, double y, double z, double t) {
double r734046 = 2.0;
double r734047 = z;
double r734048 = r734046 / r734047;
double r734049 = r734048 + r734046;
double r734050 = t;
double r734051 = r734049 / r734050;
double r734052 = x;
double r734053 = y;
double r734054 = r734052 / r734053;
double r734055 = r734051 + r734054;
double r734056 = r734055 - r734046;
return r734056;
}




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
Taylor expanded around 0 0.1
Simplified0.1
rmApplied sub-neg0.1
Applied associate-+r+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 1978988140
(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))))