\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) + \left(-2\right)double f(double x, double y, double z, double t) {
double r899405 = x;
double r899406 = y;
double r899407 = r899405 / r899406;
double r899408 = 2.0;
double r899409 = z;
double r899410 = r899409 * r899408;
double r899411 = 1.0;
double r899412 = t;
double r899413 = r899411 - r899412;
double r899414 = r899410 * r899413;
double r899415 = r899408 + r899414;
double r899416 = r899412 * r899409;
double r899417 = r899415 / r899416;
double r899418 = r899407 + r899417;
return r899418;
}
double f(double x, double y, double z, double t) {
double r899419 = 2.0;
double r899420 = z;
double r899421 = r899419 / r899420;
double r899422 = r899421 + r899419;
double r899423 = t;
double r899424 = r899422 / r899423;
double r899425 = x;
double r899426 = y;
double r899427 = r899425 / r899426;
double r899428 = r899424 + r899427;
double r899429 = -r899419;
double r899430 = r899428 + r899429;
return r899430;
}




Bits error versus x




Bits error versus y




Bits error versus z




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