\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 r822571 = x;
double r822572 = y;
double r822573 = r822571 / r822572;
double r822574 = 2.0;
double r822575 = z;
double r822576 = r822575 * r822574;
double r822577 = 1.0;
double r822578 = t;
double r822579 = r822577 - r822578;
double r822580 = r822576 * r822579;
double r822581 = r822574 + r822580;
double r822582 = r822578 * r822575;
double r822583 = r822581 / r822582;
double r822584 = r822573 + r822583;
return r822584;
}
double f(double x, double y, double z, double t) {
double r822585 = x;
double r822586 = y;
double r822587 = r822585 / r822586;
double r822588 = 2.0;
double r822589 = t;
double r822590 = z;
double r822591 = r822589 * r822590;
double r822592 = r822588 / r822591;
double r822593 = r822588 / r822589;
double r822594 = r822592 + r822593;
double r822595 = r822594 - r822588;
double r822596 = r822587 + r822595;
return r822596;
}




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 distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020056
(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))))