\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\frac{1}{t} \cdot \left(\frac{2}{z} + 2\right) - 2\right)double f(double x, double y, double z, double t) {
double r881585 = x;
double r881586 = y;
double r881587 = r881585 / r881586;
double r881588 = 2.0;
double r881589 = z;
double r881590 = r881589 * r881588;
double r881591 = 1.0;
double r881592 = t;
double r881593 = r881591 - r881592;
double r881594 = r881590 * r881593;
double r881595 = r881588 + r881594;
double r881596 = r881592 * r881589;
double r881597 = r881595 / r881596;
double r881598 = r881587 + r881597;
return r881598;
}
double f(double x, double y, double z, double t) {
double r881599 = x;
double r881600 = y;
double r881601 = r881599 / r881600;
double r881602 = 1.0;
double r881603 = t;
double r881604 = r881602 / r881603;
double r881605 = 2.0;
double r881606 = z;
double r881607 = r881605 / r881606;
double r881608 = r881607 + r881605;
double r881609 = r881604 * r881608;
double r881610 = r881609 - r881605;
double r881611 = r881601 + r881610;
return r881611;
}




Bits error versus x




Bits error versus y




Bits error versus z




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