\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} + \frac{1}{t} \cdot \frac{2}{z}\right) - 2\right)double f(double x, double y, double z, double t) {
double r786546 = x;
double r786547 = y;
double r786548 = r786546 / r786547;
double r786549 = 2.0;
double r786550 = z;
double r786551 = r786550 * r786549;
double r786552 = 1.0;
double r786553 = t;
double r786554 = r786552 - r786553;
double r786555 = r786551 * r786554;
double r786556 = r786549 + r786555;
double r786557 = r786553 * r786550;
double r786558 = r786556 / r786557;
double r786559 = r786548 + r786558;
return r786559;
}
double f(double x, double y, double z, double t) {
double r786560 = x;
double r786561 = y;
double r786562 = r786560 / r786561;
double r786563 = 2.0;
double r786564 = t;
double r786565 = r786563 / r786564;
double r786566 = 1.0;
double r786567 = r786566 / r786564;
double r786568 = z;
double r786569 = r786563 / r786568;
double r786570 = r786567 * r786569;
double r786571 = r786565 + r786570;
double r786572 = r786571 - r786563;
double r786573 = r786562 + r786572;
return r786573;
}




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
rmApplied *-un-lft-identity0.1
Applied times-frac0.1
Final simplification0.1
herbie shell --seed 2020045
(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))))