\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 r593109 = x;
double r593110 = y;
double r593111 = r593109 / r593110;
double r593112 = 2.0;
double r593113 = z;
double r593114 = r593113 * r593112;
double r593115 = 1.0;
double r593116 = t;
double r593117 = r593115 - r593116;
double r593118 = r593114 * r593117;
double r593119 = r593112 + r593118;
double r593120 = r593116 * r593113;
double r593121 = r593119 / r593120;
double r593122 = r593111 + r593121;
return r593122;
}
double f(double x, double y, double z, double t) {
double r593123 = 2.0;
double r593124 = z;
double r593125 = r593123 / r593124;
double r593126 = r593125 + r593123;
double r593127 = t;
double r593128 = r593126 / r593127;
double r593129 = x;
double r593130 = y;
double r593131 = r593129 / r593130;
double r593132 = r593128 + r593131;
double r593133 = r593132 - r593123;
return r593133;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.5
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 2019297
(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))))