\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\frac{2}{t} + \left(\frac{2}{t \cdot z} - 2\right)\right)double f(double x, double y, double z, double t) {
double r595010 = x;
double r595011 = y;
double r595012 = r595010 / r595011;
double r595013 = 2.0;
double r595014 = z;
double r595015 = r595014 * r595013;
double r595016 = 1.0;
double r595017 = t;
double r595018 = r595016 - r595017;
double r595019 = r595015 * r595018;
double r595020 = r595013 + r595019;
double r595021 = r595017 * r595014;
double r595022 = r595020 / r595021;
double r595023 = r595012 + r595022;
return r595023;
}
double f(double x, double y, double z, double t) {
double r595024 = x;
double r595025 = y;
double r595026 = r595024 / r595025;
double r595027 = 2.0;
double r595028 = t;
double r595029 = r595027 / r595028;
double r595030 = z;
double r595031 = r595028 * r595030;
double r595032 = r595027 / r595031;
double r595033 = r595032 - r595027;
double r595034 = r595029 + r595033;
double r595035 = r595026 + r595034;
return r595035;
}




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
Final simplification0.1
herbie shell --seed 2019199 +o rules:numerics
(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))))